[U-Boot] [PATCH] usb: musb: add support for Blackfin MUSB
Remy Bohmer
linux at bohmer.net
Wed Sep 2 12:43:45 CEST 2009
Hello Mike,
> ping ... should still apply (or at least git-am should be able to handle it)
Well, this comment at least gave me the impression that you would
update your patch...
> i didnt add that, but adding packed would probably make sense
> -mike
Remy
2009/6/21 Mike Frysinger <vapier at gentoo.org>:
> On Sunday 21 June 2009 15:54:13 Remy Bohmer wrote:
>> Hello Mike,
>>
>> I got a remark about this patch:
>>
>> 2009/6/16 Mike Frysinger <vapier at gentoo.org>:
>> > From: Bryan Wu <bryan.wu at analog.com>
>> >
>> > Signed-off-by: Bryan Wu <bryan.wu at analog.com>
>> > Signed-off-by: Mike Frysinger <vapier at gentoo.org>
>> > ---
>> > drivers/usb/musb/Makefile | 1 +
>> > drivers/usb/musb/blackfin_usb.c | 152 +++++++++++++++
>> > drivers/usb/musb/blackfin_usb.h | 27 +++
>> > drivers/usb/musb/musb_core.h | 73 +++++++
>> > include/asm-blackfin/mach-common/bits/usb.h | 280
>> > +++++++++++++++++++++++++++ include/usb.h |
>> > 3 +-
>> > 6 files changed, 535 insertions(+), 1 deletions(-)
>> >
>> > --- a/drivers/usb/musb/musb_core.h
>> > +++ b/drivers/usb/musb/musb_core.h
>> > @@ -42,6 +42,68 @@
>> >
>> > /* Mentor USB core register overlay structure */
>> > struct musb_regs {
>> > +#if defined(CONFIG_USB_BLACKFIN)
>> > + /* Every register is 32bit aligned, but only 16bits in size */
>> > +# define ureg(name) u16 name; u16 __pad_##name;
>> > + /* common registers */
>> > + ureg(faddr)
>> > + ureg(power)
>> > + ureg(intrtx)
>> > + ureg(intrrx)
>> > + ureg(intrtxe)
>> > + ureg(intrrxe)
>> > + ureg(intrusb)
>> > + ureg(intrusbe)
>> > + ureg(frame)
>> > + ureg(index)
>> > + ureg(testmode)
>> > + ureg(globintr)
>> > + ureg(global_ctl)
>> > + u32 reserved0[3];
>> > + /* indexed registers */
>> > + ureg(txmaxp)
>> > + ureg(txcsr)
>> > + ureg(rxmaxp)
>> > + ureg(rxcsr)
>> > + ureg(rxcount)
>> > + ureg(txtype)
>> > + ureg(txinterval)
>> > + ureg(rxtype)
>> > + ureg(rxinterval)
>> > + u32 reserved1;
>> > + ureg(txcount)
>> > + u32 reserved2[5];
>> > + /* fifo */
>> > + u16 fifox[32];
>> > + /* OTG, dynamic FIFO, version & vendor registers */
>> > + u32 reserved3[16];
>> > + ureg(devctl)
>> > + ureg(vbus_irq)
>> > + ureg(vbus_mask)
>> > + u32 reserved4[15];
>> > + ureg(linkinfo)
>> > + ureg(vplen)
>> > + ureg(hseof1)
>> > + ureg(fseof1)
>> > + ureg(lseof1)
>> > + u32 reserved5[41];
>> > + /* target address registers */
>> > + struct musb_tar_regs {
>> > + ureg(txmaxp)
>> > + ureg(txcsr)
>> > + ureg(rxmaxp)
>> > + ureg(rxcsr)
>> > + ureg(rxcount)
>> > + ureg(txtype)
>> > + ureg(txinternal)
>> > + ureg(rxtype)
>> > + ureg(rxinternal)
>> > + u32 reserved6;
>> > + ureg(txcount)
>> > + u32 reserved7[5];
>> > + } tar[8];
>> > +# undef ureg
>> > +#else
>> > /* common registers */
>> > u8 faddr;
>> > u8 power;
>> > @@ -97,6 +159,7 @@ struct musb_regs {
>> > u8 rxhubaddr;
>> > u8 rxhubport;
>> > } tar[16];
>> > +#endif
>>
>> Can both branches of this ifdef be merged somehow, such that the ifdef
>> is much smaller?
>>
>> Both branches seem to contain the same elements, only type differs (
>> which could maybe be handled with ureg() constructions also)
>
> the layout isnt exactly the same, the sizes arent uniform enough for ureg(),
> and the registers available dont match either. we'd still have ifdefs, but
> interleaved, and i think that'd be much more likely to lead to breakage for
> architectures invovled.
>
>> > } __attribute__((aligned(32)));
>>
>> Shouldn't this be '__attribute__((packed))' too?
>
> i didnt add that, but adding packed would probably make sense
> -mike
>
More information about the U-Boot
mailing list