| From fcdf80367f7f00e1e642e1443d29c22be4f5f5d4 Mon Sep 17 00:00:00 2001 |
| From: Victor Dodon <printesoi@chromium.org> |
| Date: Wed, 27 Apr 2016 10:15:03 -0700 |
| Subject: [PATCH 9/9] usb: musb: enable double-buffering on the gadget port |
| |
| --- |
| drivers/usb/musb/musb_core.c | 39 +++++++++++++++++++++++++++++++++++++-- |
| 1 file changed, 37 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c |
| index ee9ff70..d06eaf2 100644 |
| --- a/drivers/usb/musb/musb_core.c |
| +++ b/drivers/usb/musb/musb_core.c |
| @@ -1205,6 +1205,36 @@ static struct musb_fifo_cfg mode_4_cfg[] = { |
| { .hw_ep_num = 15, .style = FIFO_RXTX, .maxpacket = 1024, }, |
| }; |
| |
| +static struct musb_fifo_cfg mode_4_gadget_cfg[] = { |
| +{ .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE, }, |
| +{ .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, .mode = BUF_DOUBLE, }, |
| +{ .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, .mode = BUF_DOUBLE, }, |
| +{ .hw_ep_num = 2, .style = FIFO_RX, .maxpacket = 512, .mode = BUF_DOUBLE, }, |
| +{ .hw_ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 4, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 4, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 5, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 5, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 6, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 6, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 7, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 7, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 8, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 8, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 9, .style = FIFO_TX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 9, .style = FIFO_RX, .maxpacket = 512, }, |
| +{ .hw_ep_num = 10, .style = FIFO_TX, .maxpacket = 256, }, |
| +{ .hw_ep_num = 10, .style = FIFO_RX, .maxpacket = 64, }, |
| +{ .hw_ep_num = 11, .style = FIFO_TX, .maxpacket = 256, }, |
| +{ .hw_ep_num = 11, .style = FIFO_RX, .maxpacket = 64, }, |
| +{ .hw_ep_num = 12, .style = FIFO_TX, .maxpacket = 256, }, |
| +{ .hw_ep_num = 12, .style = FIFO_RX, .maxpacket = 64, }, |
| +{ .hw_ep_num = 13, .style = FIFO_RXTX, .maxpacket = 2096, }, |
| +{ .hw_ep_num = 14, .style = FIFO_RXTX, .maxpacket = 1024, }, |
| +{ .hw_ep_num = 15, .style = FIFO_RXTX, .maxpacket = 1024, }, |
| +}; |
| + |
| /* mode 5 - fits in 8KB */ |
| static struct musb_fifo_cfg mode_5_cfg[] = { |
| { .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, }, |
| @@ -1351,8 +1381,13 @@ static int ep_config_from_table(struct musb *musb) |
| n = ARRAY_SIZE(mode_3_cfg); |
| break; |
| case 4: |
| - cfg = mode_4_cfg; |
| - n = ARRAY_SIZE(mode_4_cfg); |
| + if (musb->port_mode == MUSB_PORT_MODE_GADGET) { |
| + cfg = mode_4_gadget_cfg; |
| + n = ARRAY_SIZE(mode_4_gadget_cfg); |
| + } else { |
| + cfg = mode_4_cfg; |
| + n = ARRAY_SIZE(mode_4_cfg); |
| + } |
| break; |
| case 5: |
| cfg = mode_5_cfg; |
| -- |
| 2.8.0.rc3.226.g39d4020 |
| |