mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag
@ 2013-11-29  2:07 Chris Ruehl
  2013-11-29  3:27 ` Peter Chen
  2013-11-29 10:50 ` Michael Grzeschik
  0 siblings, 2 replies; 5+ messages in thread
From: Chris Ruehl @ 2013-11-29  2:07 UTC (permalink / raw)
  To: alexander.shishkin, gregkh; +Cc: linux-usb, linux-kernel, Chris Ruehl

* init the sts flag to 0 (missed)
* set the sts flag only if not 0

Signed-off-by: Chris Ruehl <chris.ruehl@gtsys.com.hk>
---
 drivers/usb/chipidea/core.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index 5075407..1a6010e 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -245,6 +245,8 @@ static void hw_phymode_configure(struct ci_hdrc *ci)
 {
 	u32 portsc, lpm, sts;
 
+	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);
 	}
 }
 
-- 
1.7.10.4


^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag
  2013-11-29  2:07 [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag Chris Ruehl
@ 2013-11-29  3:27 ` Peter Chen
  2013-11-29  4:40   ` Chris Ruehl
  2013-11-29 10:50 ` Michael Grzeschik
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Chen @ 2013-11-29  3:27 UTC (permalink / raw)
  To: Chris Ruehl, alexander.shishkin, gregkh; +Cc: linux-usb, linux-kernel

 
> 
> * init the sts flag to 0 (missed)
> * set the sts flag only if not 0
> 

does PORTSC_STS bit as 1 or 0 affect your case?
If not, please remove hw_write(ci, OP_DEVLC, DEVLC_STS, sts),
since it is useless at current code logic.

Peter

> Signed-off-by: Chris Ruehl <chris.ruehl@gtsys.com.hk>
> ---
>  drivers/usb/chipidea/core.c |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 5075407..1a6010e 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -245,6 +245,8 @@ static void hw_phymode_configure(struct ci_hdrc *ci)
>  {
>  	u32 portsc, lpm, sts;
> 
> +	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);
>  	}
>  }
> 
> --
> 1.7.10.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag
  2013-11-29  3:27 ` Peter Chen
@ 2013-11-29  4:40   ` Chris Ruehl
  2013-11-29  4:47     ` Peter Chen
  0 siblings, 1 reply; 5+ messages in thread
From: Chris Ruehl @ 2013-11-29  4:40 UTC (permalink / raw)
  To: Peter Chen; +Cc: alexander.shishkin, gregkh, linux-usb, linux-kernel

On Friday, November 29, 2013 11:27 AM, Peter Chen wrote:
>   
>> * init the sts flag to 0 (missed)
>> * set the sts flag only if not 0
>>
> does PORTSC_STS bit as 1 or 0 affect your case?
> If not, please remove hw_write(ci, OP_DEVLC, DEVLC_STS, sts),
> since it is useless at current code logic.
>
> Peter

Peter,

in the switch statement sts is set to 1 therefore I think its used.

        case USBPHY_INTERFACE_MODE_SERIAL:
                 portsc = PORTSC_PTS(PTS_SERIAL);
                 lpm = DEVLC_PTS(PTS_SERIAL);
                 sts = 1;
                 break;

Regards
Chris


>
>> Signed-off-by: Chris Ruehl <chris.ruehl@gtsys.com.hk>
>> ---
>>   drivers/usb/chipidea/core.c |    8 ++++++--
>>   1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
>> index 5075407..1a6010e 100644
>> --- a/drivers/usb/chipidea/core.c
>> +++ b/drivers/usb/chipidea/core.c
>> @@ -245,6 +245,8 @@ static void hw_phymode_configure(struct ci_hdrc *ci)
>>   {
>>   	u32 portsc, lpm, sts;
>>
>> +	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);
>>   	}
>>   }
>>
>> --
>> 1.7.10.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag
  2013-11-29  4:40   ` Chris Ruehl
@ 2013-11-29  4:47     ` Peter Chen
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Chen @ 2013-11-29  4:47 UTC (permalink / raw)
  To: Chris Ruehl; +Cc: alexander.shishkin, gregkh, linux-usb, linux-kernel



 
> 
> On Friday, November 29, 2013 11:27 AM, Peter Chen wrote:
> >
> >> * init the sts flag to 0 (missed)
> >> * set the sts flag only if not 0
> >>
> > does PORTSC_STS bit as 1 or 0 affect your case?
> > If not, please remove hw_write(ci, OP_DEVLC, DEVLC_STS, sts),
> > since it is useless at current code logic.
> >
> > Peter
> 
> Peter,
> 
> in the switch statement sts is set to 1 therefore I think its used.
> 
>         case USBPHY_INTERFACE_MODE_SERIAL:
>                  portsc = PORTSC_PTS(PTS_SERIAL);
>                  lpm = DEVLC_PTS(PTS_SERIAL);
>                  sts = 1;
>                  break;
> 
> Regards
> Chris
> 
> 

Yes, you are right. It is just not showed at the patch.

Would you move the sts = 0 to sts declaration, it can reduce the code line.

u32 portsc, lpm, sts = 0;

> >
> >> Signed-off-by: Chris Ruehl <chris.ruehl@gtsys.com.hk>
> >> ---
> >>   drivers/usb/chipidea/core.c |    8 ++++++--
> >>   1 file changed, 6 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> >> index 5075407..1a6010e 100644
> >> --- a/drivers/usb/chipidea/core.c
> >> +++ b/drivers/usb/chipidea/core.c
> >> @@ -245,6 +245,8 @@ static void hw_phymode_configure(struct ci_hdrc
> *ci)
> >>   {
> >>   	u32 portsc, lpm, sts;
> >>
> >> +	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);
> >>   	}
> >>   }
> >>
> >> --
 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag
  2013-11-29  2:07 [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag Chris Ruehl
  2013-11-29  3:27 ` Peter Chen
@ 2013-11-29 10:50 ` Michael Grzeschik
  1 sibling, 0 replies; 5+ messages in thread
From: Michael Grzeschik @ 2013-11-29 10:50 UTC (permalink / raw)
  To: Chris Ruehl; +Cc: alexander.shishkin, gregkh, linux-usb, linux-kernel

On Fri, Nov 29, 2013 at 10:07:49AM +0800, Chris Ruehl wrote:
> * init the sts flag to 0 (missed)
> * set the sts flag only if not 0
> 
> Signed-off-by: Chris Ruehl <chris.ruehl@gtsys.com.hk>
> ---
>  drivers/usb/chipidea/core.c |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 5075407..1a6010e 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -245,6 +245,8 @@ static void hw_phymode_configure(struct ci_hdrc *ci)
>  {
>  	u32 portsc, lpm, sts;
>  
> +	sts = 0;
> +

This makes sense, but should be moved up to the
variable declartion:

-  	u32 portsc, lpm, sts;
+  	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);

What is wrong with explicit setting DEVLC_STS to 0 if we
know that we don't use serial phy mode?

>  	} 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);
>  	}
>  }

ditto

Regards,
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 |

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-11-29 10:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-29  2:07 [PATCH 2/3] usb: chipidea: Fix Internal error: : 808 [#1] ARM related to STS flag Chris Ruehl
2013-11-29  3:27 ` Peter Chen
2013-11-29  4:40   ` Chris Ruehl
2013-11-29  4:47     ` Peter Chen
2013-11-29 10:50 ` Michael Grzeschik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®