[U-Boot] [PATCH 07/11] MX6: use macro building for MX6Q/MX6DL iomux regs

Tim Harvey
2014-04-24T05:21:18Z

On Wed, Apr 23, 2014 at 10:07 AM, Stefano Babic <sbabic@denx.de> wrote:
> Hi Tim, hi Nikita,
>
> On 10/04/2014 16:08, Nikita Kiryanov wrote:
>
>>> 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.
>>
>
> Reason to do in this way is the thought that the layout among the
> processsors can be completely different, thing that for other area is
> also true. This was discussed also in a previous RFC by Eric:
>
> http://lists.denx.de/pipermail/u-boot/2013-November/166665.html
>
> Tim, what about to repost in your patchset Eric's patch ? It completes
> your patchset and add documentation that is now missing (added Eric in
> CC if he will complain about this..)

The documentation portion of Eric's patch I agreed with for the most
part, but in my case I need to take a more flexible approach as I
support multiple board variants in a single bootloader that vary a bit
in pinmux and GPIO's. For this reason, I don't like the idea of
declaring all your iomux in a single structure (Eric's README section
4).

>
> However, if we can recognize the same layout for all three variations (I
> have only check some registers in 6Q and 6DL layout), using the same
> structure with a different base address can be even more readable. I
> admit I have not checked deeply, but it seems at first glance that
> mx6dq_ctrl and mx6sdl_ctrl in 7/11 share the same layout.
>
>> 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.
>
> If the layout is exactly the same, you could make the structure
> available to all imx6 flavors.
>
> Best regards,
> Stefano Babic
>

They do differ, but that isn't to say one can't just have two memory
mapped struct's and pick which one to use based on CPU, which is
exactly what Tapani proposed originally and is what is used in the
non-mainlined Wandboard. I will be moving to this method in v2.

Regards,

Tim