ulpi_check_integrity returning error

Philippe Rétornaz philippe.retornaz at epfl.ch
Tue Dec 14 12:44:37 EST 2010


Le mardi, 14 décembre 2010 15.47:59, Fabio Estevam a écrit :
> Hi Igor,
> 
> [Adding linux-arm-kernel]
> 
> On Tue, Dec 14, 2010 at 11:16 AM, Igor Grinberg <grinberg at compulab.co.il> 
wrote:
> > Hi Fabio,
> >
> > On 12/14/10 00:14, Fabio Estevam wrote:
> >> Hi,
> >>
> >> I am working on adding USB OTG host support for the mx31_3ds board
> >> (OTG PHY is a ISP1504).
> >
> > ISP1504 seems like ULPI compliant transceiver.
> >
> >> USB OTG in device mode works fine and I can only get OTG host mode to
> >> work if I force a 'return 0' into the ulpi_check_integrity function. I
> >> was wondering if anyone has any suggestions as to where to
> >> inspect/debug the fact that the read/write to the OTG PHY scratch
> >> register does not match.
> >
> > Both ULPI specifications (1.0 and 1.1) define the Scratch register as:
> > "an empty register byte for testing purposes. Software can read, write,
> > set and clear this register; and the functionality of the PHY will not be
> > affected." Therefore it should be implemented in the ISP1504 as such and
> > according to NXP's ISP1504 datasheet it should be there...
> >
> > What about the ID? Do you get the vendor/product ID value as expected?
> 
> No, I am getting only zeros when reading vendor/product ID:
> 
> ULPI transceiver vendor/product ID 0x0000/0x0000
> 
> Even though the ULPI integrity check fails, if I force a 'return 0' in
> this function, then I am able to mount a USB stick and it is
> functional.
> 
> There are other i.MX boards that support OTG in host mode via ULPI,
> such as pcm037, pca100, imx27_visstrim .
> 
> I am curious to know if any of this boards can work in host mode OTG
> with current mainline kernel.

mx31moboard_smartbot in "eyebot" mode, works. We also had some problem with 
the ULPI viewport not working. If you ignore the transceiver error it works. 
But you cannot talk directly to the transceiver, which is a problem if you 
want to switch on the external 5V using the isp1504.

This really seems to be an imx31 hardware bug, because if you change a bit the 
timing of io port setup and reset of the USB state machine it works.

If you are able to find an explanation to this bug (other than hardware) I'm 
really interested.

Regards,

Philippe



More information about the linux-arm-kernel mailing list