Subject: [PATCH RESEND] usb: gadget: lpc32xx_udc: Fix compatibility with STOTG04

The STOTG04 is an replacement for ISP1301.

Most of the registers on STOTG04 are the same as on ISP1301, but the
register ISP1301_I2C_OTG_CONTROL_2 (address 0x10) doesn't exist on the
ST part.

This is a work around for this by using the interrupt source register that
should behave the same on both parts and has the needed information.

Signed-off-by: Alexandre Pereira da Silva <[email protected]>
---

This patch is very important to LPC32xx users. IMHO this should go in for 3.7-rc2.

drivers/usb/gadget/lpc32xx_udc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
index f696fb9..21a9861 100644
--- a/drivers/usb/gadget/lpc32xx_udc.c
+++ b/drivers/usb/gadget/lpc32xx_udc.c
@@ -2930,10 +2930,10 @@ static void vbus_work(struct work_struct *work)

/* Get the VBUS status from the transceiver */
value = i2c_smbus_read_byte_data(udc->isp1301_i2c_client,
- ISP1301_I2C_OTG_CONTROL_2);
+ ISP1301_I2C_INTERRUPT_SOURCE);

/* VBUS on or off? */
- if (value & OTG_B_SESS_VLD)
+ if (value & INT_SESS_VLD)
udc->vbus = 1;
else
udc->vbus = 0;
--
1.7.10


Subject: [PATCH RESEND] usb: gadget: lpc32xx_udc: Disable setup request error

This message is an debugging message. It's useful for finding protocol
details but it's not necessarily an error.

Signed-off-by: Alexandre Pereira da Silva <[email protected]>
---
drivers/usb/gadget/lpc32xx_udc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
index 21a9861..d1cf1f4 100644
--- a/drivers/usb/gadget/lpc32xx_udc.c
+++ b/drivers/usb/gadget/lpc32xx_udc.c
@@ -2399,7 +2399,7 @@ static void udc_handle_ep0_setup(struct lpc32xx_udc *udc)

if (i < 0) {
/* setup processing failed, force stall */
- dev_err(udc->dev,
+ dev_dbg(udc->dev,
"req %02x.%02x protocol STALL; stat %d\n",
reqtype, req, i);
udc->ep0state = WAIT_FOR_SETUP;
--
1.7.10

2012-10-15 13:07:24

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: lpc32xx_udc: Fix compatibility with STOTG04

Hi,

On Mon, Oct 15, 2012 at 09:47:35AM -0300, Alexandre Pereira da Silva wrote:
> The STOTG04 is an replacement for ISP1301.
>
> Most of the registers on STOTG04 are the same as on ISP1301, but the
> register ISP1301_I2C_OTG_CONTROL_2 (address 0x10) doesn't exist on the
> ST part.
>
> This is a work around for this by using the interrupt source register that
> should behave the same on both parts and has the needed information.
>
> Signed-off-by: Alexandre Pereira da Silva <[email protected]>
> ---
>
> This patch is very important to LPC32xx users. IMHO this should go in for 3.7-rc2.
>
> drivers/usb/gadget/lpc32xx_udc.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
> index f696fb9..21a9861 100644
> --- a/drivers/usb/gadget/lpc32xx_udc.c
> +++ b/drivers/usb/gadget/lpc32xx_udc.c
> @@ -2930,10 +2930,10 @@ static void vbus_work(struct work_struct *work)
>
> /* Get the VBUS status from the transceiver */
> value = i2c_smbus_read_byte_data(udc->isp1301_i2c_client,
> - ISP1301_I2C_OTG_CONTROL_2);
> + ISP1301_I2C_INTERRUPT_SOURCE);
>
> /* VBUS on or off? */
> - if (value & OTG_B_SESS_VLD)
> + if (value & INT_SESS_VLD)

why isn't this using a PHY driver instead ?

> udc->vbus = 1;
> else
> udc->vbus = 0;
> --
> 1.7.10
>

--
balbi


Attachments:
(No filename) (1.36 kB)
signature.asc (836.00 B)
Digital signature
Download all attachments

2012-10-15 14:24:59

by Roland Stigge

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: lpc32xx_udc: Fix compatibility with STOTG04

On 10/15/2012 02:47 PM, Alexandre Pereira da Silva wrote:
> The STOTG04 is an replacement for ISP1301.
>
> Most of the registers on STOTG04 are the same as on ISP1301, but the
> register ISP1301_I2C_OTG_CONTROL_2 (address 0x10) doesn't exist on the
> ST part.
>
> This is a work around for this by using the interrupt source register that
> should behave the same on both parts and has the needed information.
>
> Signed-off-by: Alexandre Pereira da Silva <[email protected]>

Tested-by: Roland Stigge <[email protected]>

> ---
>
> This patch is very important to LPC32xx users. IMHO this should go in for 3.7-rc2.
>
> drivers/usb/gadget/lpc32xx_udc.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
> index f696fb9..21a9861 100644
> --- a/drivers/usb/gadget/lpc32xx_udc.c
> +++ b/drivers/usb/gadget/lpc32xx_udc.c
> @@ -2930,10 +2930,10 @@ static void vbus_work(struct work_struct *work)
>
> /* Get the VBUS status from the transceiver */
> value = i2c_smbus_read_byte_data(udc->isp1301_i2c_client,
> - ISP1301_I2C_OTG_CONTROL_2);
> + ISP1301_I2C_INTERRUPT_SOURCE);
>
> /* VBUS on or off? */
> - if (value & OTG_B_SESS_VLD)
> + if (value & INT_SESS_VLD)
> udc->vbus = 1;
> else
> udc->vbus = 0;

2012-10-15 14:27:07

by Roland Stigge

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: lpc32xx_udc: Disable setup request error

On 10/15/2012 02:47 PM, Alexandre Pereira da Silva wrote:
> This message is an debugging message. It's useful for finding protocol
> details but it's not necessarily an error.
>
> Signed-off-by: Alexandre Pereira da Silva <[email protected]>

Acked-by: Roland Stigge <[email protected]>

Was also confirmed by the NXP developers a while ago, I think.

> ---
> ---
> drivers/usb/gadget/lpc32xx_udc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
> index 21a9861..d1cf1f4 100644
> --- a/drivers/usb/gadget/lpc32xx_udc.c
> +++ b/drivers/usb/gadget/lpc32xx_udc.c
> @@ -2399,7 +2399,7 @@ static void udc_handle_ep0_setup(struct lpc32xx_udc *udc)
>
> if (i < 0) {
> /* setup processing failed, force stall */
> - dev_err(udc->dev,
> + dev_dbg(udc->dev,
> "req %02x.%02x protocol STALL; stat %d\n",
> reqtype, req, i);
> udc->ep0state = WAIT_FOR_SETUP;

2012-10-15 14:27:59

by Roland Stigge

[permalink] [raw]
Subject: Re: [PATCH RESEND] usb: gadget: lpc32xx_udc: Fix compatibility with STOTG04

On 10/15/2012 03:01 PM, Felipe Balbi wrote:
> On Mon, Oct 15, 2012 at 09:47:35AM -0300, Alexandre Pereira da
> Silva wrote:
>> The STOTG04 is an replacement for ISP1301.
>>
>> Most of the registers on STOTG04 are the same as on ISP1301, but
>> the register ISP1301_I2C_OTG_CONTROL_2 (address 0x10) doesn't
>> exist on the ST part.
>>
>> This is a work around for this by using the interrupt source
>> register that should behave the same on both parts and has the
>> needed information.
>>
>> Signed-off-by: Alexandre Pereira da Silva <[email protected]>
>> ---
>>
>> This patch is very important to LPC32xx users. IMHO this should
>> go in for 3.7-rc2.
>>
>> drivers/usb/gadget/lpc32xx_udc.c | 4 ++-- 1 file changed, 2
>> insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/lpc32xx_udc.c
>> b/drivers/usb/gadget/lpc32xx_udc.c index f696fb9..21a9861 100644
>> --- a/drivers/usb/gadget/lpc32xx_udc.c +++
>> b/drivers/usb/gadget/lpc32xx_udc.c @@ -2930,10 +2930,10 @@ static
>> void vbus_work(struct work_struct *work)
>>
>> /* Get the VBUS status from the transceiver */ value =
>> i2c_smbus_read_byte_data(udc->isp1301_i2c_client, -
>> ISP1301_I2C_OTG_CONTROL_2); +
>> ISP1301_I2C_INTERRUPT_SOURCE);
>>
>> /* VBUS on or off? */ - if (value & OTG_B_SESS_VLD) + if (value
>> & INT_SESS_VLD)
>
> why isn't this using a PHY driver instead ?

Right, should definitely be done in a subsequent patch.

Thanks for pointing this out.