armv8/ls2085ardb: add hwconfig setting for eSDHC
authorYangbo Lu <yangbo.lu at freescale.com>
Thu, 28 May 2015 09:23:55 +0000 (14:53 +0530)
committerYork Sun <yorksun@freescale.com>
Mon, 20 Jul 2015 18:44:33 +0000 (11:44 -0700)
Add hwconfig setting for eSDHC since it shares some pins with other
IP block.

Signed-off-by: Yangbo Lu <yangbo.lu at freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
board/freescale/ls2085ardb/ls2085ardb.c
include/configs/ls2085ardb.h

index 6cb7b1342251435bc54bbd5d63a927a83946921a..e0a8a4158ccbd46c1a13424145368331685b5321 100644 (file)
@@ -10,6 +10,7 @@
 #include <fsl_ifc.h>
 #include <fsl_ddr.h>
 #include <asm/io.h>
+#include <hwconfig.h>
 #include <fdt_support.h>
 #include <libfdt.h>
 #include <fsl_debug_server.h>
 #include "../common/qixis.h"
 #include "ls2085ardb_qixis.h"
 
+#define PIN_MUX_SEL_SDHC       0x00
+
+#define SET_SDHC_MUX_SEL(reg, value)   ((reg & 0xf0) | value)
 DECLARE_GLOBAL_DATA_PTR;
 
+enum {
+       MUX_TYPE_SDHC,
+};
+
 unsigned long long get_qixis_addr(void)
 {
        unsigned long long addr;
@@ -129,6 +137,34 @@ int board_early_init_f(void)
        return 0;
 }
 
+int config_board_mux(int ctrl_type)
+{
+       u8 reg5;
+
+       reg5 = QIXIS_READ(brdcfg[5]);
+
+       switch (ctrl_type) {
+       case MUX_TYPE_SDHC:
+               reg5 = SET_SDHC_MUX_SEL(reg5, PIN_MUX_SEL_SDHC);
+               break;
+       default:
+               printf("Wrong mux interface type\n");
+               return -1;
+       }
+
+       QIXIS_WRITE(brdcfg[5], reg5);
+
+       return 0;
+}
+
+int misc_init_r(void)
+{
+       if (hwconfig("sdhc"))
+               config_board_mux(MUX_TYPE_SDHC);
+
+       return 0;
+}
+
 void detail_board_ddr_info(void)
 {
        puts("\nDDR    ");
index 920560c64247a36fff9b1bcbf40070deafa5f3e9..ecc445e92398ea391dcfcc701226d8f85220f938 100644 (file)
@@ -284,6 +284,8 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_DOS_PARTITION
 #endif
 
+#define CONFIG_MISC_INIT_R
+
 /* Initial environment variables */
 #undef CONFIG_EXTRA_ENV_SETTINGS
 #define CONFIG_EXTRA_ENV_SETTINGS              \