RE: [PATCH 2/3 v2] usb: chipidea: Fix Internal error: : 808 [#1]ARM related to STS flag

From: Peter Chen
Date: Sat Nov 30 2013 - 05:15:42 EST




> > {
> > u32 portsc, lpm, sts = 0;
> >
> > switch (ci->platdata->phy_mode) {
> > case USBPHY_INTERFACE_MODE_UTMI:
> > portsc = PORTSC_PTS(PTS_UTMI);
> > @@ -273,10 +275,12 @@ static void hw_phymode_configure(struct ci_hdrc
> *ci)
> >
> > if (ci->hw_bank.lpm) {
> > hw_write(ci, OP_DEVLC, DEVLC_PTS(7) | DEVLC_PTW, lpm);
> > - hw_write(ci, OP_DEVLC, DEVLC_STS, sts);
> > + if (sts)
> > + hw_write(ci, OP_DEVLC, DEVLC_STS, sts);
> > } else {
> > hw_write(ci, OP_PORTSC, PORTSC_PTS(7) | PORTSC_PTW, portsc);
> > - hw_write(ci, OP_PORTSC, PORTSC_STS, sts);
> > + if ( sts )
> > + hw_write(ci, OP_PORTSC, PORTSC_STS, sts);
>
> The conditions coding style is broken.
>
> > }
> > }
>
> Still don't get why a system with ehci compliant PORTSC register
> should not want to have the sts bit _explicitly_ set to 0 if
> we don't use serial phy mode. So NACK!
>

At current code the PORTSC_STS is set to unknown value due to sts is
uninitialized, and it causes ARM internal error at Chris's imx27 platform.

This patch just gives sts an initialized value, and only set PORTSC_STS
for serial phy, it follows the code original logic mostly.

Until now, no one reports problem due to the wrong value of PORTSC_STS, it means
both 1 and 0 are working for most of platforms. So, just keep its current logic
until someone blames.

The chipidea datasheet said "This bit has no effect unless Parallel Transceiver Select is set to UTMI+.",
my imx6 uses UTIM+, but the controller works fine whether PORTSC_STS is 0 or 1.
My original idea is just delete the code about PORTSC_STS, but chris
mentions it is used by serial phy at current logic, then, just keep current logic.

Peter

> Michael
>
> --
> Pengutronix e.K. |
> |
> Industrial Linux Solutions | http://www.pengutronix.de/
> |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0
> |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555
> |
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/