powerpc/p4080: Fix warning in serdes code from early use of hwconfig
authorYork Sun <yorksun@freescale.com>
Mon, 10 Jan 2011 22:10:28 +0000 (14:10 -0800)
committerKumar Gala <galak@kernel.crashing.org>
Thu, 20 Jan 2011 04:58:24 +0000 (22:58 -0600)
Hwconfig is called before relocating. Use the new hwconfig APIs.

Signed-off-by: York Sun <yorksun@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c

index 5bcf91a..7fc00d8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009-2010 Freescale Semiconductor, Inc.
+ * Copyright 2009-2011 Freescale Semiconductor, Inc.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -33,6 +33,8 @@
 
 static u32 serdes_prtcl_map;
 
+#define HWCONFIG_BUFFER_SIZE   128
+
 #ifdef DEBUG
 static const char *serdes_prtcl_str[] = {
        [NONE] = "NA",
@@ -277,6 +279,15 @@ void fsl_serdes_init(void)
        const char *srds_lpd_arg;
        size_t arglen;
 #endif
+       char buffer[HWCONFIG_BUFFER_SIZE];
+       char *buf = NULL;
+
+       /*
+        * Extract hwconfig from environment since we have not properly setup
+        * the environment but need it for ddr config params
+        */
+       if (getenv_f("hwconfig", buffer, sizeof(buffer)) > 0)
+               buf = buffer;
 
        /* Is serdes enabled at all? */
        if (!(in_be32(&gur->rcwsr[5]) & FSL_CORENET_RCWSR5_SRDS_EN))
@@ -295,8 +306,8 @@ void fsl_serdes_init(void)
        if (!IS_SVR_REV(get_svr(), 1, 0))
                for (bank = 1; bank < ARRAY_SIZE(srds_lpd_b); bank++) {
                        sprintf(srds_lpd_opt, "fsl_srds_lpd_b%u", bank + 1);
-                       srds_lpd_arg = hwconfig_subarg("serdes", srds_lpd_opt,
-                                                      &arglen);
+                       srds_lpd_arg = hwconfig_subarg_f("serdes", srds_lpd_opt,
+                                                      &arglen, buf);
                        if (srds_lpd_arg)
                                srds_lpd_b[bank] = simple_strtoul(srds_lpd_arg,
                                                                  NULL, 0);