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

Igor Grinberg
2014-04-24T07:07:41Z

On 04/23/14 22:00, Eric Nelson wrote:
> Hi Stefano,
>
> On 04/23/2014 10:07 AM, Stefano Babic 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..)
>>
>
> I have no problem with this, but when I did some follow-on work to
> bring up SPL on Nitrogen6x boards, I recall finding some bugs in
> that patch set.
>
> I didn't follow up with updates because I ran into some other
> snags. In particular, our use of SPI-NOR makes it crucial that
> we be able to download a secondary U-Boot over USB.
>
>> 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.
>>
>
> There's a lot of commonality, but a quick diff of arch-mx6/mx6q-ddr.h
> and arch-mx6/mx6dl-ddr.h will show the problem areas.
>
>>> 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.
>>
>
> Unfortunately, I don't believe it is.

I also, remember it is not.
What Tim says actually makes sense, if layout is not the same,
define two structs and choose the right one in runtime.

--
Regards,
Igor.