MLK-12996 imx: mx6dqp/dq: Fix SATA read/write fail after booting from SATA
authorYe Li <ye.li@nxp.com>
Thu, 28 Jul 2016 03:42:14 +0000 (11:42 +0800)
committerYe Li <ye.li@nxp.com>
Wed, 5 Apr 2017 06:04:43 +0000 (14:04 +0800)
We found a issue in PLL6 ENET that changing the bit[1:0] DIV_SELECT for ENET
ref clock will impact the SATA ref 100Mhz clock.  If SATA is initialized before
this changing, SATA read/write can't work after it. And we have to re-init SATA.

The issue can reproduce on both i.MX6DQP and i.MX6DQ. IC investigation is ongoing.

This patch is an work around that moves the ENET clock setting
(enable_fec_anatop_clock) from ethernet init to board_init which is prior
than SATA initialization. So there is no PLL6 change after SATA init.

Signed-off-by: Ye Li <ye.li@nxp.com>
(cherry picked from commit fd8fbf7fa0b10199ac89cd13cae851149f51accb)

board/freescale/mx6qsabreauto/mx6qsabreauto.c
board/freescale/mx6sabresd/mx6sabresd.c

index 2360c63..2c7b096 100644 (file)
@@ -463,13 +463,11 @@ static void setup_fec(void)
        ret = enable_fec_anatop_clock(0, ENET_125MHZ);
        if (ret)
                printf("Error fec anatop clock settings!\n");
-
-       setup_iomux_enet();
 }
 
 int board_eth_init(bd_t *bis)
 {
-       setup_fec();
+       setup_iomux_enet();
 
        return cpu_eth_init(bis);
 }
@@ -715,6 +713,11 @@ int board_init(void)
 #ifdef CONFIG_MTD_NOR_FLASH
        setup_iomux_eimnor();
 #endif
+
+#ifdef CONFIG_FEC_MXC
+       setup_fec();
+#endif
+
        return 0;
 }
 
index ee796bc..681de0d 100644 (file)
@@ -800,7 +800,7 @@ int overwrite_console(void)
        return 1;
 }
 
-int board_eth_init(bd_t *bis)
+static void setup_fec(void)
 {
        if (is_mx6dqp()) {
                int ret;
@@ -811,7 +811,10 @@ int board_eth_init(bd_t *bis)
                if (ret)
                    printf("Error fec anatop clock settings!\n");
        }
+}
 
+int board_eth_init(bd_t *bis)
+{
        setup_iomux_enet();
 
        return cpu_eth_init(bis);
@@ -920,6 +923,10 @@ int board_init(void)
        setup_sata();
 #endif
 
+#ifdef CONFIG_FEC_MXC
+       setup_fec();
+#endif
+
        return 0;
 }