summaryrefslogtreecommitdiffstats
path: root/include/linux/usb
diff options
context:
space:
mode:
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>2015-11-18 14:34:09 +0900
committerFelipe Balbi <balbi@ti.com>2015-12-15 09:12:41 -0600
commit51f141a97a1406bb0b59d490e837a39ccb7c3999 (patch)
tree4766c47c6539a342a1c414b9098411e78c6932a2 /include/linux/usb
parent762d3a1a9cd7438a8453e005ee5b2bab3203d9c3 (diff)
downloadlinux-51f141a97a1406bb0b59d490e837a39ccb7c3999.tar.gz
linux-51f141a97a1406bb0b59d490e837a39ccb7c3999.tar.bz2
linux-51f141a97a1406bb0b59d490e837a39ccb7c3999.zip
usb: renesas_usbhs: Modify pipe configuration
The current code has info->bufnmb_last to calculate the BUFNMB bits of PIPEBUF register. However, since the bufnmb_last is initialized in the usbhs_pipe_init() only, this driver is possible to set unexpected value to the register if usb_ep_{enable,disable}() are called many times. So, this patch modifies the pipe configuration via struct renesas_usbhs_driver_param to simplify the code. Also this patch changes: - a double buffer configuration - isochronous buffer size from 512 to 1024 Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'include/linux/usb')
-rw-r--r--include/linux/usb/renesas_usbhs.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index bfb74723f151..4db191fe8c2c 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -105,12 +105,26 @@ struct renesas_usbhs_platform_callback {
* some register needs USB chip specific parameters.
* This struct show it to driver
*/
+
+struct renesas_usbhs_driver_pipe_config {
+ u8 type; /* USB_ENDPOINT_XFER_xxx */
+ u16 bufsize;
+ u8 bufnum;
+ bool double_buf;
+};
+#define RENESAS_USBHS_PIPE(_type, _size, _num, _double_buf) { \
+ .type = (_type), \
+ .bufsize = (_size), \
+ .bufnum = (_num), \
+ .double_buf = (_double_buf), \
+ }
+
struct renesas_usbhs_driver_param {
/*
* pipe settings
*/
- u32 *pipe_type; /* array of USB_ENDPOINT_XFER_xxx (from ep0) */
- int pipe_size; /* pipe_type array size */
+ struct renesas_usbhs_driver_pipe_config *pipe_configs;
+ int pipe_size; /* pipe_configs array size */
/*
* option: