[PATCH v2 04/14] ARM: OMAP5: Add minimal support for OMAP5430 SOC
From: Hiremath, Vaibhav <hidden>
Date: 2012-07-10 06:25:49
Also in:
linux-omap
On Mon, Jul 09, 2012 at 18:41:58, Tony Lindgren wrote:
quoted hunk ↗ jump to hunk
* Vaibhav Hiremath [off-list ref] [120709 01:55]:quoted
On 7/6/2012 2:51 PM, Santosh Shilimkar wrote:quoted
--- a/arch/arm/plat-omap/include/plat/clkdev_omap.h +++ b/arch/arm/plat-omap/include/plat/clkdev_omap.h@@ -39,6 +39,7 @@ struct omap_clk { #define CK_443X (1 << 11) #define CK_TI816X (1 << 12) #define CK_446X (1 << 13) +#define CK_54XX (1 << 14)This is conflicting with AM33XX, you may want to rebase it again, since AM33xx clock tree is already pushed and available in linux-omap/devel-am33xx-part2.Heh these CK_XXXX defines are now running out of the u16 cpu_mask. They really should be replaced with SoC specific lists of clocks rather than bloating the cpu_mask and repeating it for every clock that's compiled in for 800+ times. Below (untested) is what could be done in the short term. I wonder if we could #define CK_OMAP_DUMMY 0 that's always set for non-shared clocks if they only get set in some *_data.c file in a unique way? Paul got any better ideas? Regards, Tony--- a/arch/arm/plat-omap/include/plat/clkdev_omap.h +++ b/arch/arm/plat-omap/include/plat/clkdev_omap.h@@ -26,26 +26,29 @@ struct omap_clk { } /* Platform flags for the clkdev-OMAP integration code */ + +#ifdef CONFIG_ARCH_OMAP1 #define CK_310 (1 << 0) #define CK_7XX (1 << 1) /* 7xx, 850 */ #define CK_1510 (1 << 2) #define CK_16XX (1 << 3) /* 16xx, 17xx, 5912 */ -#define CK_242X (1 << 4) -#define CK_243X (1 << 5) /* 243x, 253x */ -#define CK_3430ES1 (1 << 6) /* 34xxES1 only */ -#define CK_3430ES2PLUS (1 << 7) /* 34xxES2, ES3, non-Sitara 35xx only */ -#define CK_AM35XX (1 << 9) /* Sitara AM35xx */ -#define CK_36XX (1 << 10) /* 36xx/37xx-specific clocks */ -#define CK_443X (1 << 11) -#define CK_TI816X (1 << 12) -#define CK_446X (1 << 13) -#define CK_AM33XX (1 << 14) /* AM33xx specific clocks */ -#define CK_1710 (1 << 15) /* 1710 extra for rate selection */ - +#define CK_1710 (1 << 4) /* 1710 extra for rate selection */ +#endif +#ifdef CONFIG_ARCH_OMAP2PLUS +#define CK_242X (1 << 0) +#define CK_243X (1 << 1) /* 243x, 253x */ +#define CK_3430ES1 (1 << 2) /* 34xxES1 only */ +#define CK_3430ES2PLUS (1 << 3) /* 34xxES2, ES3, non-Sitara 35xx only */ +#define CK_AM35XX (1 << 4) /* Sitara AM35xx */ +#define CK_36XX (1 << 5) /* 36xx/37xx-specific clocks */ +#define CK_443X (1 << 6) +#define CK_TI816X (1 << 7) +#define CK_446X (1 << 8) +#define CK_AM33XX (1 << 9) /* AM33xx specific clocks */ #define CK_34XX (CK_3430ES1 | CK_3430ES2PLUS) #define CK_3XXX (CK_34XX | CK_AM35XX | CK_36XX) - +#endif #endif
This also will not scale up in the future and will end up again in the same
situation.
Just a quick thought, may work here,
I looked at the usage of cpu_mask and rates.flag and I believe we can
restrict both to given SoC, something like,
OMAP34XX ->
ES1
ES2PLUS
36XX
AM35XX
...
OMAP4 ->
443X
446X
AM33XX ->
AM335X
TI816X
TI814X
...
XYZ... ->
...
The proposal would be,
To make cpu_mask and rate.flags 32 bit wide and divide it in 16-16 bits -
Lower 16 bits => describe SoC it is applicable to
Upper 16 bit => describes silicon versions or families
Thanks,
Vaibhav