From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephan Linz Date: Thu, 24 Nov 2011 19:29:40 +0100 Subject: [U-Boot] [PATCH] microblaze: usable uart16550 for big endian systems In-Reply-To: <4ECD05EF.3020005@monstr.eu> References: <1321704237-10626-1-git-send-email-linz@li-pro.net> <4EC9FBDF.8070800@monstr.eu> <1321899537.3870.132.camel@keto> <4ECD05EF.3020005@monstr.eu> Message-ID: <1322159381.3870.195.camel@keto> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Am Mittwoch, den 23.11.2011, 15:40 +0100 schrieb Michal Simek: > Hi Stephan, > > >> Stephan Linz wrote: > >>> As a result of the commit 6833260 the uart16550 driver > >>> is broken for Microblaze big endian systems, because of > >>> the missing 3 byte offset. Other than as described, the > >>> U-Boot BSP does not treat properly the 3 byte offset. > >>> > >>> However, with the new 32 bit access to ns16550 registers > >>> we can enable correct register access for Microblaze big > >>> and little endian systems in the same manner. > >> The reason why I have applied that patch is that baseaddress generation > >> was moved to u-boot BSP out of u-boot configs. > >> > >> --snip-- > > > >> Anyway you solution looks interesting and I will test it. > > > > However since commit 79df120 we can use direct 32 bit access to 8 bit > > NS16550 registers without gap generation in ns16550.h ... we need sane > > in_*/out_* implementation. > > > > I have look at it and tested on BE/LE. For 32bit accesses we need to implement > in/out_le32 functions which we don't have right now Hi Michal, Oh yes, of course. There are no *_le32 operations, not yet. > that's why please remove this macro > from your patch. > > Our BSP generates/ed +3 offset that's why I prefer to mask it in the same patch > to be sure that baseaddr is correct and compatible with old versions. > > Here is patch I have used. Please add that changes to v2 patch. I'll do it this way. Give me a little time to change and test it. Currently I am sill working on refactoring of the LL TEMAC driver. I hope, the refactored driver than can merge in mainline ... Thanks, Stephan > diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h > index b740a28..8085130 100644 > --- a/include/configs/microblaze-generic.h > +++ b/include/configs/microblaze-generic.h > @@ -55,10 +55,16 @@ > #elif XILINX_UART16550_BASEADDR > # define CONFIG_SYS_NS16550 1 > # define CONFIG_SYS_NS16550_SERIAL > + > +#if defined(__MICROBLAZEEL__) > # define CONFIG_SYS_NS16550_REG_SIZE -4 > +#else > +# define CONFIG_SYS_NS16550_REG_SIZE 4 > +#endif > + > # define CONFIG_CONS_INDEX 1 > # define CONFIG_SYS_NS16550_COM1 \ > - (XILINX_UART16550_BASEADDR + 0x1000) > + ((XILINX_UART16550_BASEADDR & ~0xF) + 0x1000) > # define CONFIG_SYS_NS16550_CLK XILINX_UART16550_CLOCK_HZ > # define CONFIG_BAUDRATE 115200 > > > -- Viele Gr??e, Stephan Linz ______________________________________________________________________________ MB-Ref: http://www.li-pro.de/xilinx_mb:mbref:start OpenDCC: http://www.li-pro.net/opendcc.phtml PC/M: http://www.li-pro.net/pcm.phtml Sourceforge: http://sourceforge.net/users/slz Gitorious: https://gitorious.org/~slz