2006-01-09 22:44:50

by Oliver Neukum

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] UDC support for MIPS/AU1200 and Geode/CS5536

Am Montag, 9. Januar 2006 19:03 schrieb Jordan Crouse:
> >From the "two-birds-one-stone" department, I am pleased to present USB UDC
> support for both the MIPS Au1200 SoC and the Geode CS5535 south bridge.
> Also, coming soon (in the next few days), OTG, which has been removed from
> the usb_host patch, and put into its own patch (as per David's comments).
>
> This patch is against current linux-mips git, but it should apply for Linus's
> tree as well.
>
> Regards,
> Jordan
>
+ VDBG("udc_read_bytes(): %d bytes\n", bytes);
+
+ /* dwords first */
+ for (i = 0; i < bytes / UDC_DWORD_BYTES; i++) {
+ *((u32*) (buf + (i<<2))) = readl(dev->rxfifo);
+ }

Is there any reason you don't increment by 4?

Regards
Oliver


2006-01-10 11:04:47

by Thomas Dahlmann

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] UDC support for MIPS/AU1200 and Geode/CS5536


Oliver Neukum wrote:

>Am Montag, 9. Januar 2006 19:03 schrieb Jordan Crouse:
>
>
>>>From the "two-birds-one-stone" department, I am pleased to present USB UDC
>>support for both the MIPS Au1200 SoC and the Geode CS5535 south bridge.
>>Also, coming soon (in the next few days), OTG, which has been removed from
>>the usb_host patch, and put into its own patch (as per David's comments).
>>
>>This patch is against current linux-mips git, but it should apply for Linus's
>>tree as well.
>>
>>Regards,
>>Jordan
>>
>>
>>
>+ VDBG("udc_read_bytes(): %d bytes\n", bytes);
>+
>+ /* dwords first */
>+ for (i = 0; i < bytes / UDC_DWORD_BYTES; i++) {
>+ *((u32*) (buf + (i<<2))) = readl(dev->rxfifo);
>+ }
>
>Is there any reason you don't increment by 4?
>
> Regards
> Oliver
>
>
>
>
>
The loop is for reading dwords only, so "i < bytes / UDC_DWORD_BYTES" cuts
off remaining 1,2 or 3 bytes which are handled by the next loop.
But you are right, incrementing by 4 may look better, as

for (i = 0; i < bytes - bytes % UDC_DWORD_BYTES; i+=4) {
*((u32*) (buf + i)) = readl(dev->rxfifo);
}


Thanks,
Thomas

2006-01-10 13:17:05

by David Vrabel

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] UDC support for MIPS/AU1200 and Geode/CS5536

Thomas Dahlmann wrote:
>
> The loop is for reading dwords only, so "i < bytes / UDC_DWORD_BYTES" cuts
> off remaining 1,2 or 3 bytes which are handled by the next loop.
> But you are right, incrementing by 4 may look better, as
>
> for (i = 0; i < bytes - bytes % UDC_DWORD_BYTES; i+=4) {

for (i = 0; i <= bytes - UDC_DWORD_BYTES; i += 4) {

?

David Vrabel

2006-01-10 13:40:32

by Oliver Neukum

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] UDC support for MIPS/AU1200 and Geode/CS5536

Am Dienstag, 10. Januar 2006 12:02 schrieb Thomas Dahlmann:
>
> Oliver Neukum wrote:
>
> >Am Montag, 9. Januar 2006 19:03 schrieb Jordan Crouse:
> >
> >
> >>>From the "two-birds-one-stone" department, I am pleased to present USB UDC
> >>support for both the MIPS Au1200 SoC and the Geode CS5535 south bridge.
> >>Also, coming soon (in the next few days), OTG, which has been removed from
> >>the usb_host patch, and put into its own patch (as per David's comments).
> >>
> >>This patch is against current linux-mips git, but it should apply for Linus's
> >>tree as well.
> >>
> >>Regards,
> >>Jordan
> >>
> >>
> >>
> >+ VDBG("udc_read_bytes(): %d bytes\n", bytes);
> >+
> >+ /* dwords first */
> >+ for (i = 0; i < bytes / UDC_DWORD_BYTES; i++) {
> >+ *((u32*) (buf + (i<<2))) = readl(dev->rxfifo);
> >+ }
> >
> >Is there any reason you don't increment by 4?
> >
> > Regards
> > Oliver
> >
> >
> >
> >
> >
> The loop is for reading dwords only, so "i < bytes / UDC_DWORD_BYTES" cuts
> off remaining 1,2 or 3 bytes which are handled by the next loop.
> But you are right, incrementing by 4 may look better, as
>
> for (i = 0; i < bytes - bytes % UDC_DWORD_BYTES; i+=4) {
> *((u32*) (buf + i)) = readl(dev->rxfifo);
> }

Not only will it look better, but it'll save you a shift operation.
You might even compute start and finish values before the loop and
save an addition in the body.

Regards
Oliver

2006-01-13 10:12:33

by Thomas Dahlmann

[permalink] [raw]
Subject: Re: [linux-usb-devel] [PATCH] UDC support for MIPS/AU1200 and Geode/CS5536

Oliver Neukum wrote:

>Am Dienstag, 10. Januar 2006 12:02 schrieb Thomas Dahlmann:
>
>
>>Oliver Neukum wrote:
>>
>>
>>
>>>Am Montag, 9. Januar 2006 19:03 schrieb Jordan Crouse:
>>>
>>>
>>>
>>>
>>>>>From the "two-birds-one-stone" department, I am pleased to present USB UDC
>>>>support for both the MIPS Au1200 SoC and the Geode CS5535 south bridge.
>>>>Also, coming soon (in the next few days), OTG, which has been removed from
>>>>the usb_host patch, and put into its own patch (as per David's comments).
>>>>
>>>>This patch is against current linux-mips git, but it should apply for Linus's
>>>>tree as well.
>>>>
>>>>Regards,
>>>>Jordan
>>>>
>>>>
>>>>
>>>>
>>>>
>>>+ VDBG("udc_read_bytes(): %d bytes\n", bytes);
>>>+
>>>+ /* dwords first */
>>>+ for (i = 0; i < bytes / UDC_DWORD_BYTES; i++) {
>>>+ *((u32*) (buf + (i<<2))) = readl(dev->rxfifo);
>>>+ }
>>>
>>>Is there any reason you don't increment by 4?
>>>
>>> Regards
>>> Oliver
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>The loop is for reading dwords only, so "i < bytes / UDC_DWORD_BYTES" cuts
>>off remaining 1,2 or 3 bytes which are handled by the next loop.
>>But you are right, incrementing by 4 may look better, as
>>
>> for (i = 0; i < bytes - bytes % UDC_DWORD_BYTES; i+=4) {
>> *((u32*) (buf + i)) = readl(dev->rxfifo);
>> }
>>
>>
>
>Not only will it look better, but it'll save you a shift operation.
>You might even compute start and finish values before the loop and
>save an addition in the body.
>
> Regards
> Oliver
>
>
>
>
>
I have changed this for the next patch release. Thanks for the input !

Regards,
Thomas