If hwconfig does not contains "en_cpc" then by default all cpcs are enabled
If this config is defined then only those individual cpcs which are defined
in the subargument of "en_cpc" will be enabled e.g en_cpc:cpc1,cpc2; (this
will enable cpc1 and cpc2) or en_cpc:cpc2; (this enables just cpc2)

Signed-off-by: Shaveta Leekha <[email protected]>
Signed-off-by: Sandeep Singh <[email protected]>
---
 arch/powerpc/cpu/mpc85xx/cpu_init.c |   27 +++++++++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c 
b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 78316a6..ecde00b 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -254,11 +254,38 @@ static void enable_tdm_law(void)
 static void enable_cpc(void)
 {
        int i;
+       int ret;
        u32 size = 0;
 
        cpc_corenet_t *cpc = (cpc_corenet_t *)CONFIG_SYS_FSL_CPC_ADDR;
+       char buffer[HWCONFIG_BUFFER_SIZE];
+       char cpc_subarg[16];
+       bool have_hwconfig = false;
+       int cpc_args = 0;
+
+       /*
+        * Extract hwconfig from environment since environmen
+        * is not setup properly yet
+        */
+       ret = getenv_f("hwconfig", buffer, sizeof(buffer));
+       if (ret > 0) {
+               /*
+                * If "en_cpc" is not defined in hwconfig then by default all
+                * cpcs are enable. If this config is defined then individual
+                * cpcs which have to be enabled should also be defined.
+                * e.g en_cpc:cpc1,cpc2;
+                */
+               if (hwconfig_f("en_cpc", buffer))
+                       have_hwconfig = true;
+       }
 
        for (i = 0; i < CONFIG_SYS_NUM_CPC; i++, cpc++) {
+               if (have_hwconfig) {
+                       sprintf(cpc_subarg, "cpc%u", i + 1);
+                       cpc_args = hwconfig_sub_f("en_cpc", cpc_subarg, buffer);
+                       if (cpc_args == 0)
+                               continue;
+               }
                u32 cpccfg0 = in_be32(&cpc->cpccfg0);
                size += CPC_CFG0_SZ_K(cpccfg0);
 
-- 
1.7.6.GIT

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to