2017-03-28 16:08:37

by Cristian Birsan

[permalink] [raw]
Subject: [PATCH linux-next v2 0/4] usb: gadget: udc: atmel: Endpoint allocation scheme fixes

From: Cristian Birsan <[email protected]>

This patch series provides fixes, based on the feedback received on the mailing list, for
the following:
- fifo table parameters validation against device tree values
- coding style
- message display for EP configuration error
- Kconfig comments for fifo_mode=0

Changes since v1:
- Removed static for usba_config_fifo_table() function from "Check fifo
configuration values against device tree" patch

Cristian Birsan (4):
usb: gadget: udc: atmel: Check fifo configuration values against
device tree
usb: gadget: udc: atmel: Minor code cleanup
usb: gadget: udc: atmel: Use dev_warn() to display EP configuration
error
usb: gadget: udc: atmel: Update Kconfig help for fifo_mode = 0

drivers/usb/gadget/udc/Kconfig | 5 ++--
drivers/usb/gadget/udc/atmel_usba_udc.c | 47 ++++++++++++++++++++++-----------
2 files changed, 35 insertions(+), 17 deletions(-)

--
2.7.4


2017-03-28 16:09:07

by Cristian Birsan

[permalink] [raw]
Subject: [PATCH linux-next v2 1/4] usb: gadget: udc: atmel: Check fifo configuration values against device tree

From: Cristian Birsan <[email protected]>

Check fifo configuration values against device tree values for endpoint fifo
in auto configuration mode (fifo_mode=0).

Signed-off-by: Cristian Birsan <[email protected]>
---
drivers/usb/gadget/udc/atmel_usba_udc.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
index 2035906b..3fd43fb 100644
--- a/drivers/usb/gadget/udc/atmel_usba_udc.c
+++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
@@ -2118,14 +2118,34 @@ static struct usba_ep * atmel_udc_of_init(struct platform_device *pdev,
dev_err(&pdev->dev, "of_probe: fifo-size error(%d)\n", ret);
goto err;
}
- ep->fifo_size = fifo_mode ? udc->fifo_cfg[i].fifo_size : val;
+ if (fifo_mode) {
+ if (val < udc->fifo_cfg[i].fifo_size) {
+ dev_warn(&pdev->dev,
+ "of_probe: fifo-size table value not supported by HW, using DT value\n");
+ ep->fifo_size = val;
+ } else {
+ ep->fifo_size = udc->fifo_cfg[i].fifo_size;
+ }
+ } else {
+ ep->fifo_size = val;
+ }

ret = of_property_read_u32(pp, "atmel,nb-banks", &val);
if (ret) {
dev_err(&pdev->dev, "of_probe: nb-banks error(%d)\n", ret);
goto err;
}
- ep->nr_banks = fifo_mode ? udc->fifo_cfg[i].nr_banks : val;
+ if (fifo_mode) {
+ if (val < udc->fifo_cfg[i].nr_banks) {
+ dev_warn(&pdev->dev,
+ "of_probe: nb-banks table value not supported by HW, using DT value\n");
+ ep->nr_banks = val;
+ } else {
+ ep->nr_banks = udc->fifo_cfg[i].nr_banks;
+ }
+ } else {
+ ep->nr_banks = val;
+ }

ep->can_dma = of_property_read_bool(pp, "atmel,can-dma");
ep->can_isoc = of_property_read_bool(pp, "atmel,can-isoc");
--
2.7.4

2017-03-28 16:10:00

by Cristian Birsan

[permalink] [raw]
Subject: [PATCH linux-next v2 3/4] usb: gadget: udc: atmel: Use dev_warn() to display EP configuration error

From: Cristian Birsan <[email protected]>

Use dev_warn() to display EP configuration error to avoid silent failure.

Signed-off-by: Cristian Birsan <[email protected]>
---
drivers/usb/gadget/udc/atmel_usba_udc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
index 2bd8410..942c9c9 100644
--- a/drivers/usb/gadget/udc/atmel_usba_udc.c
+++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
@@ -1851,7 +1851,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
* but it's clearly harmless...
*/
if (!(usba_ep_readl(ep0, CFG) & USBA_EPT_MAPPED))
- dev_dbg(&udc->pdev->dev,
+ dev_warn(&udc->pdev->dev,
"ODD: EP0 configuration is invalid!\n");

/* Preallocate other endpoints */
@@ -1860,8 +1860,8 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
ep = &udc->usba_ep[i];
usba_ep_writel(ep, CFG, ep->ept_cfg);
if (!(usba_ep_readl(ep, CFG) & USBA_EPT_MAPPED))
- dev_dbg(&udc->pdev->dev,
- "ODD: EP%d configuration is invalid!\n", i);
+ dev_warn(&udc->pdev->dev,
+ "ODD: EP%d configuration is invalid!\n", i);
}
}

--
2.7.4

2017-03-28 16:09:21

by Cristian Birsan

[permalink] [raw]
Subject: [PATCH linux-next v2 2/4] usb: gadget: udc: atmel: Minor code cleanup

From: Cristian Birsan <[email protected]>

Minor code cleanup based on feedback received on mailinglist.

Signed-off-by: Cristian Birsan <[email protected]>
---
drivers/usb/gadget/udc/atmel_usba_udc.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
index 3fd43fb..2bd8410 100644
--- a/drivers/usb/gadget/udc/atmel_usba_udc.c
+++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
@@ -321,7 +321,6 @@ static inline void usba_cleanup_debugfs(struct usba_udc *udc)

static ushort fifo_mode;

-/* "modprobe ... fifo_mode=1" etc */
module_param(fifo_mode, ushort, 0x0);
MODULE_PARM_DESC(fifo_mode, "Endpoint configuration mode");

@@ -371,7 +370,7 @@ static struct usba_fifo_cfg mode_4_cfg[] = {
};
/* Add additional configurations here */

-int usba_config_fifo_table(struct usba_udc *udc)
+static int usba_config_fifo_table(struct usba_udc *udc)
{
int n;

@@ -1076,11 +1075,9 @@ static int atmel_usba_start(struct usb_gadget *gadget,
struct usb_gadget_driver *driver);
static int atmel_usba_stop(struct usb_gadget *gadget);

-static struct usb_ep *atmel_usba_match_ep(
- struct usb_gadget *gadget,
- struct usb_endpoint_descriptor *desc,
- struct usb_ss_ep_comp_descriptor *ep_comp
-)
+static struct usb_ep *atmel_usba_match_ep(struct usb_gadget *gadget,
+ struct usb_endpoint_descriptor *desc,
+ struct usb_ss_ep_comp_descriptor *ep_comp)
{
struct usb_ep *_ep;
struct usba_ep *ep;
@@ -1100,7 +1097,6 @@ static struct usb_ep *atmel_usba_match_ep(
ep = to_usba_ep(_ep);

switch (usb_endpoint_type(desc)) {
-
case USB_ENDPOINT_XFER_CONTROL:
break;

@@ -1141,7 +1137,7 @@ static struct usb_ep *atmel_usba_match_ep(
ep->udc->configured_ep++;
}

-return _ep;
+ return _ep;
}

static const struct usb_gadget_ops usba_udc_ops = {
@@ -2089,8 +2085,9 @@ static struct usba_ep * atmel_udc_of_init(struct platform_device *pdev,
while ((pp = of_get_next_child(np, pp)))
udc->num_ep++;
udc->configured_ep = 1;
- } else
+ } else {
udc->num_ep = usba_config_fifo_table(udc);
+ }

eps = devm_kzalloc(&pdev->dev, sizeof(struct usba_ep) * udc->num_ep,
GFP_KERNEL);
--
2.7.4

2017-03-28 16:09:58

by Cristian Birsan

[permalink] [raw]
Subject: [PATCH linux-next v2 4/4] usb: gadget: udc: atmel: Update Kconfig help for fifo_mode = 0

From: Cristian Birsan <[email protected]>

Update Kconfig help for fifo_mode = 0 to explain the behavior better.

Signed-off-by: Cristian Birsan <[email protected]>
---
drivers/usb/gadget/udc/Kconfig | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig
index c6cc9d3..1fd3fe9 100644
--- a/drivers/usb/gadget/udc/Kconfig
+++ b/drivers/usb/gadget/udc/Kconfig
@@ -62,8 +62,9 @@ config USB_ATMEL_USBA

The fifo_mode parameter is used to select endpoint allocation mode.
fifo_mode = 0 is used to let the driver autoconfigure the endpoints.
- In this case 2 banks are allocated for isochronous endpoints and
- only one bank is allocated for the rest of the endpoints.
+ In this case, for ep1 2 banks are allocated if it works in isochronous
+ mode and only 1 bank otherwise. For the rest of the endpoints
+ only 1 bank is allocated.

fifo_mode = 1 is a generic maximum fifo size (1024 bytes) configuration
allowing the usage of ep1 - ep6
--
2.7.4

2017-03-29 08:49:00

by Nicolas Ferre

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 0/4] usb: gadget: udc: atmel: Endpoint allocation scheme fixes

Le 28/03/2017 ? 18:07, [email protected] a ?crit :
> From: Cristian Birsan <[email protected]>
>
> This patch series provides fixes, based on the feedback received on the mailing list, for
> the following:
> - fifo table parameters validation against device tree values
> - coding style
> - message display for EP configuration error
> - Kconfig comments for fifo_mode=0
>
> Changes since v1:
> - Removed static for usba_config_fifo_table() function from "Check fifo
> configuration values against device tree" patch

As for previous revision, the whole series:
Acked-by: Nicolas Ferre <[email protected]>

Regards,

> Cristian Birsan (4):
> usb: gadget: udc: atmel: Check fifo configuration values against
> device tree
> usb: gadget: udc: atmel: Minor code cleanup
> usb: gadget: udc: atmel: Use dev_warn() to display EP configuration
> error
> usb: gadget: udc: atmel: Update Kconfig help for fifo_mode = 0
>
> drivers/usb/gadget/udc/Kconfig | 5 ++--
> drivers/usb/gadget/udc/atmel_usba_udc.c | 47 ++++++++++++++++++++++-----------
> 2 files changed, 35 insertions(+), 17 deletions(-)
>


--
Nicolas Ferre

2017-03-30 10:38:51

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 1/4] usb: gadget: udc: atmel: Check fifo configuration values against device tree


Hi,

[email protected] writes:
> From: Cristian Birsan <[email protected]>
>
> Check fifo configuration values against device tree values for endpoint fifo
> in auto configuration mode (fifo_mode=0).
>
> Signed-off-by: Cristian Birsan <[email protected]>
> ---
> drivers/usb/gadget/udc/atmel_usba_udc.c | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
> index 2035906b..3fd43fb 100644
> --- a/drivers/usb/gadget/udc/atmel_usba_udc.c
> +++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
> @@ -2118,14 +2118,34 @@ static struct usba_ep * atmel_udc_of_init(struct platform_device *pdev,
> dev_err(&pdev->dev, "of_probe: fifo-size error(%d)\n", ret);
> goto err;
> }
> - ep->fifo_size = fifo_mode ? udc->fifo_cfg[i].fifo_size : val;
> + if (fifo_mode) {
> + if (val < udc->fifo_cfg[i].fifo_size) {
> + dev_warn(&pdev->dev,
> + "of_probe: fifo-size table value not supported by HW, using DT value\n");

114 characters long. Is this even worth a warning? probably not.

--
balbi


Attachments:
signature.asc (832.00 B)

2017-03-30 10:40:00

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH linux-next v2 3/4] usb: gadget: udc: atmel: Use dev_warn() to display EP configuration error


Hi,

[email protected] writes:
> From: Cristian Birsan <[email protected]>
>
> Use dev_warn() to display EP configuration error to avoid silent failure.
>
> Signed-off-by: Cristian Birsan <[email protected]>
> ---
> drivers/usb/gadget/udc/atmel_usba_udc.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
> index 2bd8410..942c9c9 100644
> --- a/drivers/usb/gadget/udc/atmel_usba_udc.c
> +++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
> @@ -1851,7 +1851,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid)
> * but it's clearly harmless...
> */
> if (!(usba_ep_readl(ep0, CFG) & USBA_EPT_MAPPED))
> - dev_dbg(&udc->pdev->dev,
> + dev_warn(&udc->pdev->dev,

seems like dev_err() would've been more fitting.

--
balbi


Attachments:
signature.asc (832.00 B)