qe-tdm is muxed with diu, if hwconfig setted as qe-tdm,
assign muxed pins to qe-tdm, then delete diu node from
device tree.

Signed-off-by: Zhao Qiang <qiang.z...@freescale.com>
---
 board/freescale/t104xrdb/cpld.h     |  1 +
 board/freescale/t104xrdb/t104xrdb.c | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/board/freescale/t104xrdb/cpld.h b/board/freescale/t104xrdb/cpld.h
index 2fb4105..86de26c 100644
--- a/board/freescale/t104xrdb/cpld.h
+++ b/board/freescale/t104xrdb/cpld.h
@@ -44,3 +44,4 @@ void cpld_write(unsigned int reg, u8 value);
                cpld_write(offsetof(struct cpld_data, reg), value)
 #define MISC_CTL_SG_SEL                0x80
 #define MISC_CTL_AURORA_SEL    0x02
+#define MISC_MUX_QE_TDM                0xc0
diff --git a/board/freescale/t104xrdb/t104xrdb.c 
b/board/freescale/t104xrdb/t104xrdb.c
index d982dfc..1759d1f 100644
--- a/board/freescale/t104xrdb/t104xrdb.c
+++ b/board/freescale/t104xrdb/t104xrdb.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <hwconfig.h>
 #include <netdev.h>
 #include <linux/compiler.h>
 #include <asm/mmu.h>
@@ -110,6 +111,12 @@ int misc_init_r(void)
                                         MISC_CTL_SG_SEL | MISC_CTL_AURORA_SEL);
 
 #if defined(CONFIG_T1040D4RDB)
+       if (hwconfig("qe-tdm")) {
+               CPLD_WRITE(sfp_ctl_status, CPLD_READ(sfp_ctl_status) |
+                          MISC_MUX_QE_TDM);
+               printf("QECSR : 0x%02x, mux to qe-tdm\n",
+                      CPLD_READ(sfp_ctl_status));
+       }
        /* Mask all CPLD interrupt sources, except QSGMII interrupts */
        if (CPLD_READ(sw_ver) < 0x03) {
                debug("CPLD SW version 0x%02x doesn't support int_mask\n",
@@ -123,6 +130,16 @@ int misc_init_r(void)
        return 0;
 }
 
+void fdt_del_diu(void *blob)
+{
+       int nodeoff = 0;
+
+       while ((nodeoff = fdt_node_offset_by_compatible(blob, 0,
+                               "fsl,diu")) >= 0) {
+               fdt_del_node(blob, nodeoff);
+       }
+}
+
 int ft_board_setup(void *blob, bd_t *bd)
 {
        phys_addr_t base;
@@ -149,5 +166,7 @@ int ft_board_setup(void *blob, bd_t *bd)
        fdt_fixup_fman_ethernet(blob);
 #endif
 
+       if (hwconfig("qe-tdm"))
+               fdt_del_diu(blob);
        return 0;
 }
-- 
2.1.0.27.g96db324

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to