From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikita Kiryanov Date: Thu, 10 Apr 2014 17:08:52 +0300 Subject: [U-Boot] [PATCH 07/11] MX6: use macro building for MX6Q/MX6DL iomux regs In-Reply-To: References: <1396504871-1454-1-git-send-email-tharvey@gateworks.com> <1396504871-1454-8-git-send-email-tharvey@gateworks.com> <53455FDA.3020301@compulab.co.il> Message-ID: <5346A5F4.3020308@compulab.co.il> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 04/09/2014 06:46 PM, Tim Harvey wrote: > On Wed, Apr 9, 2014 at 7:57 AM, Nikita Kiryanov wrote: >> Hi Tim, >> >> >> On 04/03/2014 09:01 AM, Tim Harvey wrote: >>> >>> This is an attempt at using a macro to allow mx6dl-ddr.h and >>> mx6q-ddr.h registers to be used together which is needed for an SPL >>> bootloader >>> that can run on either CPU's and must configure MMDC iomux dynamically. >>> >>> I am trying to come up with a solution similar to Eric's approach with the >>> similar issue regarding IMX pinmux but this approach is broken in that >>> imximage >>> will choke on the cfgtmp file due to the fact that the pre-processor won't >>> use the enum's as it did the #defines. I'm looking for some positive >>> suggestions here or perhaps someone else can come up with a solution for >>> this >>> particular issue which I haven't been able to resolve. >> >> >> Why can't you just rename the register name #defines without enclosing >> them in an anonymous enum? Then they could coexist and will be usable >> by imximage. >> >> -- >> Regards, >> Nikita. > > Nikita, > > The cfg files are currently all written to use the IOMUX register > names as MX6_ (no Q vs DL) so that a single cfg file can be used for a > build-time configuration of IMX6Q or IMX6DL. OK now I understand. It seems to me that you only have this problem because you are using these address #defines as values for mx6_mmdc_ioregs structs to define a register mapping. You can also define this mapping by using a struct template that matches the register layout and a base address, both of which change between CPU types. You can find an example of this in the Wandboard SPL implementation. It's not in mainline ATM so you'll have to download their BSP. The template + base addr method also doesn't use up additional memory to define this layout, which is a point in its favor. > > Regards, > > Tim > -- Regards, Nikita.