clk: imx6sl: ensure MMDC CH0 handshake is bypassed
authorAnson Huang <anson.huang@nxp.com>
Fri, 30 Nov 2018 07:23:47 +0000 (07:23 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Feb 2019 09:08:59 +0000 (10:08 +0100)
[ Upstream commit 0efcc2c0fd2001a83240a8c3d71f67770484917e ]

Same as other i.MX6 SoCs, ensure unused MMDC channel's
handshake is bypassed, this is to make sure no request
signal will be generated when periphe_clk_sel is changed
or SRC warm reset is triggered.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/arm/mach-imx/clk-imx6sl.c

index e982ebe..a99af8b 100644 (file)
@@ -18,6 +18,8 @@
 #include "clk.h"
 #include "common.h"
 
+#define CCDR                           0x4
+#define BM_CCM_CCDR_MMDC_CH0_MASK      (1 << 17)
 #define CCSR                   0xc
 #define BM_CCSR_PLL1_SW_CLK_SEL        (1 << 2)
 #define CACRR                  0x10
@@ -410,6 +412,10 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
        clks[IMX6SL_CLK_USDHC3]       = imx_clk_gate2("usdhc3",       "usdhc3_podf",       base + 0x80, 6);
        clks[IMX6SL_CLK_USDHC4]       = imx_clk_gate2("usdhc4",       "usdhc4_podf",       base + 0x80, 8);
 
+       /* Ensure the MMDC CH0 handshake is bypassed */
+       writel_relaxed(readl_relaxed(base + CCDR) |
+               BM_CCM_CCDR_MMDC_CH0_MASK, base + CCDR);
+
        imx_check_clocks(clks, ARRAY_SIZE(clks));
 
        clk_data.clks = clks;