ARM: dts: imx6ull-somdevices.dtsi add "somdevices,sai-mclk-direction-output" property.
authorJosep Orga <jorga@somdevices.com>
Tue, 21 Apr 2020 19:05:42 +0000 (21:05 +0200)
committerJosep Orga <jorga@somdevices.com>
Tue, 21 Apr 2020 19:05:42 +0000 (21:05 +0200)
Signed-off-by: Josep Orga <jorga@somdevices.com>
arch/arm/boot/dts/imx6ull-somdevices.dtsi
arch/arm/mach-imx/mach-imx6ul.c

index b3338f2..23ee539 100644 (file)
                          <&clks IMX6UL_CLK_SAI2>;
        assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
        assigned-clock-rates = <0>, <12288000>;
-
+       somdevices,sai-mclk-direction-output;
        status = "disabled";
 };
 
index 7f1cbeb..d49dd9b 100644 (file)
@@ -45,6 +45,31 @@ static void __init imx6ul_enet_clk_init(void)
 
 }
 
+void __init imx6ul_sai_clk_init(void)
+{
+       struct device_node *np;
+       np = of_find_node_with_property(NULL, "somdevices,sai-mclk-direction-output");
+       if (np) {
+               //If exist the property
+               if (of_device_is_available(np)) {
+                       //If the node is available
+                       struct regmap *gpr;
+                       volatile uint32_t* pad_mck;
+                       gpr = syscon_regmap_lookup_by_compatible("fsl,imx6ul-iomuxc-gpr");
+                       if (!IS_ERR(gpr)) {
+                               //Set SAI2_MCLK as output
+                               regmap_update_bits(gpr, IOMUXC_GPR1, IMX6UL_GPR1_SAI2_MCLK_DIR,
+                                                  MCLK_DIR(2));
+                               //Set MUX SAI2_MCLK to JTAG_TMS pin
+                               pad_mck = (volatile uint32_t*)ioremap(0x020e0048, 16);
+                               writel(0x2, pad_mck);
+                       }
+                       else
+                               pr_err("failed to find fsl,imx6ul-iomux-gpr regmap\n");
+               }
+       }
+}
+
 static int ksz8081_phy_fixup(struct phy_device *dev)
 {
        if (dev && dev->interface == PHY_INTERFACE_MODE_MII) {
@@ -99,6 +124,7 @@ static void __init imx6ul_init_machine(void)
        imx6ul_enet_init();
        imx_anatop_init();
        imx6ul_pm_init();
+       imx6ul_sai_clk_init();
 }
 
 static void __init imx6ul_init_irq(void)