diff options
author | Shengzhou Liu <Shengzhou.Liu@freescale.com> | 2014-11-24 17:11:58 +0800 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2014-12-05 08:06:15 -0800 |
commit | 355b3858471de1d3c7149a76f4ddd4ea78b9436d (patch) | |
tree | c91ca80eebb509bb9a34706625be46e0797077b4 /board/freescale/t102xqds/t102xqds.c | |
parent | cc19c25e2752bb8b446463eb627e258e659d73d9 (diff) | |
download | u-boot-355b3858471de1d3c7149a76f4ddd4ea78b9436d.tar.gz |
board/t1024qds: update pin multiplexing
Add multiplexing support among SPI flash, TDM riser card and SDXC.
it routes SPI pins to SPI flash by default.
Route SPI pins to SD slot if "adaptor=sdxc" is set in hwconfig.
Route SPI pins to TDM riser card and do fixup for dts if "pin_mux=tdm"
is set in hwconfig.
Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Signed-off-by: Xie Xiaobo <X.Xie@freescale.com>
Signed-off-by: Zhao Qiang <B45475@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
Diffstat (limited to 'board/freescale/t102xqds/t102xqds.c')
-rw-r--r-- | board/freescale/t102xqds/t102xqds.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/board/freescale/t102xqds/t102xqds.c b/board/freescale/t102xqds/t102xqds.c index 97ef95a650..335711bde4 100644 --- a/board/freescale/t102xqds/t102xqds.c +++ b/board/freescale/t102xqds/t102xqds.c @@ -165,6 +165,8 @@ static void board_mux_setup(void) /* Route QE_TDM multiplexed signals to TDM Riser slot */ QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_DIUSEL_TDM); QIXIS_WRITE(brdcfg[13], BRDCFG13_TDM_INTERFACE << 2); + QIXIS_WRITE(brdcfg[5], (QIXIS_READ(brdcfg[5]) & + ~BRDCFG5_SPIRTE_MASK) | BRDCFG5_SPIRTE_TDM); } else if (hwconfig_arg_cmp("pin_mux", "ucc")) { /* to UCC (ProfiBus) interface */ QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_DIUSEL_UCC); @@ -176,6 +178,11 @@ static void board_mux_setup(void) QIXIS_WRITE(brdcfg[15], brdcfg15 | BRDCFG15_LCDFM | BRDCFG15_LCDPD | BRDCFG15_DIUSEL_LCD); } + + if (hwconfig_arg_cmp("adaptor", "sdxc")) + /* Route SPI_CS multiplexed signals to SD slot */ + QIXIS_WRITE(brdcfg[5], (QIXIS_READ(brdcfg[5]) & + ~BRDCFG5_SPIRTE_MASK) | BRDCFG5_SPIRTE_SDHC); } #endif @@ -265,6 +272,24 @@ int misc_init_r(void) return 0; } +void fdt_fixup_spi_mux(void *blob) +{ + int nodeoff = 0; + + if (hwconfig_arg_cmp("pin_mux", "tdm")) { + while ((nodeoff = fdt_node_offset_by_compatible(blob, 0, + "eon,en25s64")) >= 0) { + fdt_del_node(blob, nodeoff); + } + } else { + /* remove tdm node */ + while ((nodeoff = fdt_node_offset_by_compatible(blob, 0, + "maxim,ds26522")) >= 0) { + fdt_del_node(blob, nodeoff); + } + } +} + int ft_board_setup(void *blob, bd_t *bd) { phys_addr_t base; @@ -291,6 +316,7 @@ int ft_board_setup(void *blob, bd_t *bd) fdt_fixup_fman_ethernet(blob); fdt_fixup_board_enet(blob); #endif + fdt_fixup_spi_mux(blob); return 0; } |