From: Josep Orga Date: Tue, 21 Apr 2020 19:05:42 +0000 (+0200) Subject: ARM: dts: imx6ull-somdevices.dtsi add "somdevices,sai-mclk-direction-output" property. X-Git-Tag: rel_imx_4.19.35_1.1.0-somdevices.0~5 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=2af759a2f1a8bbfcbd44d20a589c787a3a4cf991;p=linux.git ARM: dts: imx6ull-somdevices.dtsi add "somdevices,sai-mclk-direction-output" property. Signed-off-by: Josep Orga --- diff --git a/arch/arm/boot/dts/imx6ull-somdevices.dtsi b/arch/arm/boot/dts/imx6ull-somdevices.dtsi index b3338f2632de..23ee539fdce7 100644 --- a/arch/arm/boot/dts/imx6ull-somdevices.dtsi +++ b/arch/arm/boot/dts/imx6ull-somdevices.dtsi @@ -706,7 +706,7 @@ <&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"; }; diff --git a/arch/arm/mach-imx/mach-imx6ul.c b/arch/arm/mach-imx/mach-imx6ul.c index 7f1cbebd5999..d49dd9bb36f7 100644 --- a/arch/arm/mach-imx/mach-imx6ul.c +++ b/arch/arm/mach-imx/mach-imx6ul.c @@ -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)