[U-Boot] [PATCH V3 1/4] add TI DA8xx support: DA8xx includes
Tom
Tom.Rix at windriver.com
Wed Oct 28 13:30:59 CET 2009
Nick Thompson wrote:
> Wolfgang Denk wrote:
>> Dear Nick Thompson,
>>
>> In message <4AE5DFFD.2090801 at gefanuc.com> you wrote:
>>> Provides initial support for TI OMAP-L1x/DA8xx SoC devices.
>>> See http://www.ti.com
>>>
>>> The DA8xx devices are similar to DaVinci devices but have a differing
>>> memory map and updated peripheral versions.
>>>
>>> Signed-off-by: Nick Thompson <nick.thompson at gefanuc.com>
>>> ---
>> ...
>>> +/* required by davinci drivers */
>> Is this really an essential comment? Drop it!
>>
>>> #define REG(addr) (*(volatile unsigned int *)(addr))
>>> -#define REG_P(addr) ((volatile unsigned int *)(addr))
>>>
>>> +/* required by davinci drivers */
>> Ditto.
>>
>>> typedef volatile unsigned int dv_reg;
>>> typedef volatile unsigned int * dv_reg_p;
>> ...
>>
>>> +/* for LPSCs in PSC1, 32 + actual id is being used for differentiation */
>>> +#define DAVINCI_LPSC_BASE 32
>>> +#define DAVINCI_LPSC_USB11 (DAVINCI_LPSC_BASE + 1)
>>> +#define DAVINCI_LPSC_USB20 (DAVINCI_LPSC_BASE + 2)
>>> +#define DAVINCI_LPSC_GPIO (DAVINCI_LPSC_BASE + 3)
>>> +#define DAVINCI_LPSC_UHPI (DAVINCI_LPSC_BASE + 4)
>>> +#define DAVINCI_LPSC_EMAC (DAVINCI_LPSC_BASE + 5)
>>> +#define DAVINCI_LPSC_DDR_EMIF (DAVINCI_LPSC_BASE + 6)
>>> +#define DAVINCI_LPSC_McASP0 (DAVINCI_LPSC_BASE + 7)
>>> +#define DAVINCI_LPSC_McASP1 (DAVINCI_LPSC_BASE + 8)
>>> +#define DAVINCI_LPSC_McASP2 (DAVINCI_LPSC_BASE + 9)
>>> +#define DAVINCI_LPSC_SPI1 (DAVINCI_LPSC_BASE + 10)
>>> +#define DAVINCI_LPSC_I2C1 (DAVINCI_LPSC_BASE + 11)
>>> +#define DAVINCI_LPSC_UART1 (DAVINCI_LPSC_BASE + 12)
>>> +#define DAVINCI_LPSC_UART2 (DAVINCI_LPSC_BASE + 13)
>>> +#define DAVINCI_LPSC_LCDC (DAVINCI_LPSC_BASE + 16)
>>> +#define DAVINCI_LPSC_ePWM (DAVINCI_LPSC_BASE + 17)
>>> +#define DAVINCI_LPSC_eCAP (DAVINCI_LPSC_BASE + 20)
>>> +#define DAVINCI_LPSC_eQEP (DAVINCI_LPSC_BASE + 21)
>>> +#define DAVINCI_LPSC_SCR_P0 (DAVINCI_LPSC_BASE + 22)
>>> +#define DAVINCI_LPSC_SCR_P1 (DAVINCI_LPSC_BASE + 23)
>>> +#define DAVINCI_LPSC_CR_P3 (DAVINCI_LPSC_BASE + 26)
>>> +#define DAVINCI_LPSC_L3_CBA_RAM (DAVINCI_LPSC_BASE + 31)
>> I think you actually want to use a C struct here, like in many other
>> places.
>>
>> Please do not access device registers using plain pointers like (base
>> address plus offet), but always use I/O accessors with C structs, so
>> we can have strict type checking by the compiler.
>
> As I mentioned in the patch introduction "[PATCH V3 0/4]..." there are
> several places where out of fashion code is present in these patches.
>
> DA8xx SoC's are considered a member of the DaVinci family of SoC's and
> so these headers need to maintain compatibility with the relevant
> drivers already in the U-Boot git tree.
>
> Those drivers do not use C structures and I/O accessors and so require
> the use of #defines as presented here.
>
> Where possible I have not used legacy code forms in new code, but in
> the case of new code that also has to use these same registers, I have
> again opted for compatibility.
>
> Of course I could duplicate the definitions as defines /and/ C structs,
> or even rewrite all the DaVinci family drivers, but I'm hoping neither
> of those options was the intention of your comments here.
>
> Can you please confirm whether my assumptions as correct and acceptable
> in this case? I.e. (as Tom Rix put it) Can I get a pass on this one?
>
> I think you have a point in the PINMUX cases below however, as I believe
> these #defines are only used in SoC specific code...
>
> Best Regards,
> Nick
>
There are a large number of #define's in davinci that could be
converted to structures. My opinion is that da8xx sharing code
with davinci is a big enough change. The reworking of basic
davici register calling through structs falls outside of what
I expect.
The cleanup on the calling I am looking for is switching
for direct access to registers to calling them through readl/writel.
Tom
More information about the U-Boot
mailing list