From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hannes Schmelzer Date: Thu, 21 Jul 2016 08:10:12 +0200 Subject: [U-Boot] [PATCH] arch-mx6: fix MX6_PAD_DECLARE macro to work with MX6 duallite In-Reply-To: <578FE43B.1080406@schmelzer.or.at> References: <1466590066-15218-1-git-send-email-oe5hpm@oevsv.at> <15cd5631-3ce1-2193-e05b-1264493c2ba0@denx.de> <578FE43B.1080406@schmelzer.or.at> Message-ID: <57906744.8010205@schmelzer.or.at> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 07/20/2016 10:51 PM, Hannes Schmelzer wrote: > On 07/20/2016 09:30 AM, Stefano Babic wrote: >> Hi Hannes, > Hi Stefano, >> this patch breaks most i.MX6 boards (the not DL) and I revert it. Maybe >> I had to ask better before, anyway: > sorry for inconvenience, i should have done more testing on this. > I just tried to compile several i.mx6 boards and found out that I did > not covered the MX6S which are in trouble now. >> On 22/06/2016 12:07, Hannes Schmelzer wrote: >>> if we build for an i.mx6 (d)ual(l)ite CONFIC_MX6DL we shall use >>> MX6DL_PAD instead the common MX6_PAD. >>> >>> Signed-off-by: Hannes Schmelzer >>> --- >>> >>> arch/arm/include/asm/arch-mx6/mx6-pins.h | 4 ++-- >>> 1 file changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/arch/arm/include/asm/arch-mx6/mx6-pins.h >>> b/arch/arm/include/asm/arch-mx6/mx6-pins.h >>> index 4b6bb18..3465205 100644 >>> --- a/arch/arm/include/asm/arch-mx6/mx6-pins.h >>> +++ b/arch/arm/include/asm/arch-mx6/mx6-pins.h >>> @@ -18,7 +18,7 @@ enum { >>> #include "mx6q_pins.h" >>> #undef MX6_PAD_DECL >>> #define MX6_PAD_DECL(name, pco, mc, mm, sio, si, pc) \ >>> - MX6_PAD_DECLARE(MX6DL_PAD_,name, pco, mc, mm, sio, si, pc), >>> + MX6_PAD_DECLARE(MX6DL_PAD_, name, pco, mc, mm, sio, si, pc), >>> #include "mx6dl_pins.h" >>> }; >>> #elif defined(CONFIG_MX6Q) >>> @@ -30,7 +30,7 @@ enum { >>> #elif defined(CONFIG_MX6DL) || defined(CONFIG_MX6S) >>> enum { >>> #define MX6_PAD_DECL(name, pco, mc, mm, sio, si, pc) \ >>> - MX6_PAD_DECLARE(MX6_PAD_,name, pco, mc, mm, sio, si, pc), >>> + MX6_PAD_DECLARE(MX6DL_PAD_, name, pco, mc, mm, sio, si, pc), >>> #include "mx6dl_pins.h" >>> }; >> Can you better explain the problem you had ? The name is not decisive - >> the important thing is that the correct include file with the right >> layout is included, that means mx6dl_pins.h. And this was mainlined >> since a lot of time. > Maybe all the time nobody had to use I2C #4 on an i.mx6 duallite chip, > doing so i encountered this problem. > > The name is decisive for sure, have a closer look to the > "MX6_PAD_DECLARE" macro, > In conjunction with the correct include file the prefix used to form > the final register table declaration. > > Next the iomux-v3.h is from interest, > the "#define IOMUX_PADS" has dependency on CONFIG_MX6nn, here the > previous definition out from mx6-pins.h is used. > > I will send some V2 to address this topic fully, ok? >> We have several boards with 6DL into mainline, so I am missing which is >> your problem. >> >> Best regards, >> Stefano Babic > cheers, > Hannes Just looked around a bit more about this. Root cause for failing this patch is, that many boards do not use the 'IOMUX_PADS' macro, instead they just directly use the definition out of "mx6dl_pins.h" for example. So we get in trouble there if we change the MX6_PAD_DECLARE macro for having MX6DL pads instead MX6 pads. At one point of view it would make sense to me changing all boards to use the IOMUX_PADS macro for accessing pads register, because afterwards the real accessed register would be fully in dependence of CONFIG_MX6nn. On the other hand i cannot fully predict every case could happen if we simply change that with search/replace. So it would be OK for me to drop this patch and i will use on my board: MX6DL_PAD_ENET_TX_EN__I2C4_SCL MX6DL_PAD_ENET_TXD1__I2C4_SDA instead IOMUX_PADS(PAD_ENET_TX_EN__I2C4_SCL) IOMUX_PADS(MX6DL_PAD_ENET_TXD1__I2C4_SDA ) Whats your thinking about this? cheers, Hannes