[coreboot] patch: fix USB ports on DBE62, and other cs5536-based platforms

ron minnich rminnich at gmail.com
Wed Jun 4 16:43:00 CEST 2008


Committed revision 689.

A little meta-note here. I am seeing, more frequently now than 20
years ago, this kind of style in drivers and bios code:

base = (u32 *)pci_read_config_long(whatever);
*(base + xyz) =

Somehow, in all the usage of pragmas, attributes, segment names, and
all the other gadgets that have been added to C in the last while,
we've completely lost track of one of the most important reasons to
use C in systems programming!

What's the right way to work on memory-mapped registers? Well, in this case:

struct usb_otg{
  u32 uoc;
  u32 uocmux;
  u32 _1; /* A Plan 9 trick, and  if it's good enough for the guys who
designed C,
                       it's good enough for me (this is a reserved register) */
  u32 uocctl;
};

and so on. So, just a note: don't forget about structs as templates
for memory mapped registers. That capability has been there and been
used since, oh, 1973 or so :-)

thanks

ron




More information about the coreboot mailing list