In sama5d3 SoC, there are 16 endpoints, which is different with
earlier SoCs (only have 7 endpoints). The USBA_NR_ENDPOINTS micro
is not suitable for sama5d3. So, get the endpoints number through
the udc->num_ep, which get from platform data for non-dt kernel,
or parse from dt node.
Signed-off-by: Bo Shen <[email protected]>
---
Changes in v2:
- Make the commit message more clearer.
drivers/usb/gadget/atmel_usba_udc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index 2cb52e0..7e67a81 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -1670,7 +1670,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
if (ep_status) {
int i;
- for (i = 0; i < USBA_NR_ENDPOINTS; i++)
+ for (i = 0; i < udc->num_ep; i++)
if (ep_status & (1 << i)) {
if (ep_is_control(&udc->usba_ep[i]))
usba_control_irq(udc, &udc->usba_ep[i]);
--
1.8.5.2
The SoCs earlier than sama5d3, they have the same number endpoints
and DMA channels. In driver code, they use the same definition
USBA_NR_ENDPOINTS for both endpoints and dma channels. However,
in sama5d3, it has different number for endpoints and DMA channels.
So, define a new micro USBA_NR_DMAs for DMA channels. And the
USBA_NR_ENDPOINS is not used anymore, remove it at the same time.
Signed-off-by: Bo Shen <[email protected]>
---
Changes in v2:
- Make the commit message more clearer.
drivers/usb/gadget/atmel_usba_udc.c | 2 +-
drivers/usb/gadget/atmel_usba_udc.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
index 7e67a81..5cded1c 100644
--- a/drivers/usb/gadget/atmel_usba_udc.c
+++ b/drivers/usb/gadget/atmel_usba_udc.c
@@ -1661,7 +1661,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
if (dma_status) {
int i;
- for (i = 1; i < USBA_NR_ENDPOINTS; i++)
+ for (i = 1; i < USBA_NR_DMAS; i++)
if (dma_status & (1 << i))
usba_dma_irq(udc, &udc->usba_ep[i]);
}
diff --git a/drivers/usb/gadget/atmel_usba_udc.h b/drivers/usb/gadget/atmel_usba_udc.h
index 2922db5..a70706e 100644
--- a/drivers/usb/gadget/atmel_usba_udc.h
+++ b/drivers/usb/gadget/atmel_usba_udc.h
@@ -210,7 +210,7 @@
#define USBA_FIFO_BASE(x) ((x) << 16)
/* Synth parameters */
-#define USBA_NR_ENDPOINTS 7
+#define USBA_NR_DMAS 7
#define EP0_FIFO_SIZE 64
#define EP0_EPT_SIZE USBA_EPT_SIZE_64
--
1.8.5.2
On 19/02/2014 03:07, Bo Shen :
> In sama5d3 SoC, there are 16 endpoints, which is different with
> earlier SoCs (only have 7 endpoints). The USBA_NR_ENDPOINTS micro
you should read "macro".
> is not suitable for sama5d3. So, get the endpoints number through
> the udc->num_ep, which get from platform data for non-dt kernel,
> or parse from dt node.
>
> Signed-off-by: Bo Shen <[email protected]>
Acked-by: Nicolas Ferre <[email protected]>
> ---
> Changes in v2:
> - Make the commit message more clearer.
>
> drivers/usb/gadget/atmel_usba_udc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
> index 2cb52e0..7e67a81 100644
> --- a/drivers/usb/gadget/atmel_usba_udc.c
> +++ b/drivers/usb/gadget/atmel_usba_udc.c
> @@ -1670,7 +1670,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
> if (ep_status) {
> int i;
>
> - for (i = 0; i < USBA_NR_ENDPOINTS; i++)
> + for (i = 0; i < udc->num_ep; i++)
> if (ep_status & (1 << i)) {
> if (ep_is_control(&udc->usba_ep[i]))
> usba_control_irq(udc, &udc->usba_ep[i]);
>
--
Nicolas Ferre
On 19/02/2014 03:07, Bo Shen :
> The SoCs earlier than sama5d3, they have the same number endpoints
> and DMA channels. In driver code, they use the same definition
> USBA_NR_ENDPOINTS for both endpoints and dma channels. However,
> in sama5d3, it has different number for endpoints and DMA channels.
> So, define a new micro USBA_NR_DMAs for DMA channels. And the
s/micro/macro/
> USBA_NR_ENDPOINS is not used anymore, remove it at the same time.
>
> Signed-off-by: Bo Shen <[email protected]>
Acked-by: Nicolas Ferre <[email protected]>
> ---
> Changes in v2:
> - Make the commit message more clearer.
>
> drivers/usb/gadget/atmel_usba_udc.c | 2 +-
> drivers/usb/gadget/atmel_usba_udc.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c
> index 7e67a81..5cded1c 100644
> --- a/drivers/usb/gadget/atmel_usba_udc.c
> +++ b/drivers/usb/gadget/atmel_usba_udc.c
> @@ -1661,7 +1661,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
> if (dma_status) {
> int i;
>
> - for (i = 1; i < USBA_NR_ENDPOINTS; i++)
> + for (i = 1; i < USBA_NR_DMAS; i++)
> if (dma_status & (1 << i))
> usba_dma_irq(udc, &udc->usba_ep[i]);
> }
> diff --git a/drivers/usb/gadget/atmel_usba_udc.h b/drivers/usb/gadget/atmel_usba_udc.h
> index 2922db5..a70706e 100644
> --- a/drivers/usb/gadget/atmel_usba_udc.h
> +++ b/drivers/usb/gadget/atmel_usba_udc.h
> @@ -210,7 +210,7 @@
> #define USBA_FIFO_BASE(x) ((x) << 16)
>
> /* Synth parameters */
> -#define USBA_NR_ENDPOINTS 7
> +#define USBA_NR_DMAS 7
>
> #define EP0_FIFO_SIZE 64
> #define EP0_EPT_SIZE USBA_EPT_SIZE_64
>
--
Nicolas Ferre