From mboxrd@z Thu Jan 1 00:00:00 1970 From: Detlev Zundel Date: Thu, 30 Apr 2009 15:30:44 +0200 Subject: [U-Boot] [PATCH] include/ns16550.h: Unify structure declaration for registers In-Reply-To: <49F8A692.3070203@pobox.com> (Shinya Kuribayashi's message of "Thu, 30 Apr 2009 04:12:18 +0900") References: <1238769946-30370-1-git-send-email-dzu@denx.de> <49F2657D.5080706@ruby.dti.ne.jp> <49F5C0AA.2000401@ruby.dti.ne.jp> <49F8A196.60202@pobox.com> <49F8A692.3070203@pobox.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Shinya, > I might be unclear. I used to use REG_SIZE = -16, as 16550 registers > are located at 0, +0x10, +0x20, ..., . Actually, come to think of it, I have never seen what you used to use, as the REG_SIZE = -16 case was never in the official U-Boot sources. Theoretically extending the "-4 to -8" step from the old code to extrapolate to -16, I get exactly what my new version yields. > Looks to me like playing with macros... but, > this is better than before, and would work for my machine. 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]; ... 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). 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? This is somewhat hypothetical and outright ugly, but I still want to know if this works. Thanks Detlev -- #!/usr/bin/perl -l print ((1 x shift) !~ /^(11+?)\1+$/ ? "prime" : "not prime"); -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de