Hi, Detlev Zundel wrote: > Thinking about it some more, I wonder about the following. You said, > this would work for you: > > struct NS16550 { > unsigned long rbr; > unsigned long postpad_rbr[3]; > .... > > while > > struct NS16550 { > unsigned char rbr; > unsigned char postpad_rbr[12]; 15? > ... > > doesn't. If we regard only the "significant" 8-bits, the first layout > is congruent to the second shifted by 2 bytes (on big-endian machines).
I think you mean 'at offset 0x3', right? My 16550 registers are like this: 0 1 2 3 +----+----+----+----+ 0x00 | reserved |rbr | +----+----+----+----+ 0x04 | reserved | +----+----+----+----+ 0x08 | reserved | +----+----+----+----+ 0x0c | reserved | +----+----+----+----+ 0x10 | reserved |ier | +----+----+----+----+ 0x14 | reserved | +----+----+----+----+ 0x18 | reserved | +----+----+----+----+ 0x1c | reserved | +----+----+----+----+ ... > So what about using +16 for your board and lower the base address by 2? > Does that work? What is your base address? Is that 64-bit aligned? With 64-bit (16 bytes) aligned base address, AND offset +0x3, AND struct NS16550 configured by -16 (below) struct NS16550 { unsigned char rbr; unsigned char postpad_rbr[15]; unsigned char ier; unsigned char postpad_ier[15]; ... }; , then yes, I think this probably works for sane hardwares who can handle byte read/write operations properly. As for my hardware, however, this still doesn't work. My processor (MIPS 4KEc) of couse supports byte read/write, on the other hand, the address decoder at UART module can not handle byte addresses properly; all byte read/write accesses with +1/+2/+3 offset, will be round-down to +0. Therefore, I can take 'offset +0x3' option. This is the reasony I said 'my hardware requires 32-bit word access to NS16550 registers'. > This is somewhat hypothetical and outright ugly, but I still want to > know if this works. I know the address decoder of my UART hardware sucks, but it's not unusual. I'll reply to remaining mails shortly. Thanks, Shinya _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot