From: Robert Beckett bob.beckett@collabora.com
Avoid LDB and IPU DI clocks both using the same parent. LDB requires pasthrough clock to avoid breaking timing while IPU DI does not.
Force IPU DI clocks to use IMX6QDL_CLK_PLL2_PFD0_352M as parent and LDB to use IMX6QDL_CLK_PLL5_VIDEO_DIV.
This fixes an issue where attempting atomic modeset while using HDMI and display port at the same time causes LDB clock programming to destroy the programming of HDMI that was done during the same modeset.
Cc: stable@vger.kernel.org Signed-off-by: Robert Beckett bob.beckett@collabora.com [Use IMX6QDL_CLK_PLL2_PFD0_352M instead of IMX6QDL_CLK_PLL2_PFD2_396M originally chosen by Robert Beckett to avoid affecting eMMC clock by DRM atomic updates] Signed-off-by: Ian Ray ian.ray@ge.com [Squash Robert's and Ian's commits for bisectability, update patch description and add stable tag] Signed-off-by: Sebastian Reichel sebastian.reichel@collabora.com --- arch/arm/boot/dts/imx6q-b450v3.dts | 7 ------- arch/arm/boot/dts/imx6q-b650v3.dts | 7 ------- arch/arm/boot/dts/imx6q-b850v3.dts | 11 ----------- arch/arm/boot/dts/imx6q-bx50v3.dtsi | 15 +++++++++++++++ 4 files changed, 15 insertions(+), 25 deletions(-)
diff --git a/arch/arm/boot/dts/imx6q-b450v3.dts b/arch/arm/boot/dts/imx6q-b450v3.dts index 95b8f2d71821..fb0980190aa0 100644 --- a/arch/arm/boot/dts/imx6q-b450v3.dts +++ b/arch/arm/boot/dts/imx6q-b450v3.dts @@ -65,13 +65,6 @@ panel_in_lvds0: endpoint { }; };
-&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>, - <&clks IMX6QDL_CLK_PLL3_USB_OTG>; -}; - &ldb { status = "okay";
diff --git a/arch/arm/boot/dts/imx6q-b650v3.dts b/arch/arm/boot/dts/imx6q-b650v3.dts index 611cb7ae7e55..8f762d9c5ae9 100644 --- a/arch/arm/boot/dts/imx6q-b650v3.dts +++ b/arch/arm/boot/dts/imx6q-b650v3.dts @@ -65,13 +65,6 @@ panel_in_lvds0: endpoint { }; };
-&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>, - <&clks IMX6QDL_CLK_PLL3_USB_OTG>; -}; - &ldb { status = "okay";
diff --git a/arch/arm/boot/dts/imx6q-b850v3.dts b/arch/arm/boot/dts/imx6q-b850v3.dts index e4cb118f88c6..1ea64ecf4291 100644 --- a/arch/arm/boot/dts/imx6q-b850v3.dts +++ b/arch/arm/boot/dts/imx6q-b850v3.dts @@ -53,17 +53,6 @@ chosen { }; };
-&clks { - assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, - <&clks IMX6QDL_CLK_LDB_DI1_SEL>, - <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>, - <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>; - assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, - <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, - <&clks IMX6QDL_CLK_PLL2_PFD2_396M>, - <&clks IMX6QDL_CLK_PLL2_PFD2_396M>; -}; - &ldb { fsl,dual-channel; status = "okay"; diff --git a/arch/arm/boot/dts/imx6q-bx50v3.dtsi b/arch/arm/boot/dts/imx6q-bx50v3.dtsi index fa27dcdf06f1..1938b04199c4 100644 --- a/arch/arm/boot/dts/imx6q-bx50v3.dtsi +++ b/arch/arm/boot/dts/imx6q-bx50v3.dtsi @@ -377,3 +377,18 @@ pci_root: root@0,0 { #interrupt-cells = <1>; }; }; + +&clks { + assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, + <&clks IMX6QDL_CLK_LDB_DI1_SEL>, + <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU1_DI1_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>, + <&clks IMX6QDL_CLK_IPU2_DI1_PRE_SEL>; + assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, + <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>, + <&clks IMX6QDL_CLK_PLL2_PFD0_352M>; +};
Hi
[This is an automated email]
This commit has been processed because it contains a -stable tag. The stable tag indicates that it's relevant for the following trees: all
The bot has tested the following trees: v5.6.13, v5.4.41, v4.19.123, v4.14.180, v4.9.223, v4.4.223.
v5.6.13: Build OK! v5.4.41: Build OK! v4.19.123: Build OK! v4.14.180: Failed to apply! Possible dependencies: e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
v4.9.223: Failed to apply! Possible dependencies: 1d0c7bb20c08 ("ARM: dts: imx: Correct B850v3 clock assignment") e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
v4.4.223: Failed to apply! Possible dependencies: 15ef03b86247 ("ARM: dts: imx: b450/b650v3: Move ldb_di clk assignment") 1d0c7bb20c08 ("ARM: dts: imx: Correct B850v3 clock assignment") 2252792b4677 ("ARM: dts: imx: Add support for Advantech/GE B850v3") 226d16c80c61 ("ARM: dts: imx: Add support for Advantech/GE Bx50v3") 547da6bbcf08 ("ARM: dts: imx: Add support for Advantech/GE B450v3") 987e71877ae6 ("ARM: dts: imx: Add support for Advantech/GE B650v3") b492b8744da9 ("ARM: dts: imx6q-b850v3: Update display clock source") e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
NOTE: The patch will not be queued to stable trees until it is upstream.
How should we proceed with this patch?
Hi,
On Tue, May 19, 2020 at 11:49:15AM +0000, Sasha Levin wrote:
[This is an automated email]
This commit has been processed because it contains a -stable tag. The stable tag indicates that it's relevant for the following trees: all
The bot has tested the following trees: v5.6.13, v5.4.41, v4.19.123, v4.14.180, v4.9.223, v4.4.223.
v5.6.13: Build OK! v5.4.41: Build OK! v4.19.123: Build OK!
v4.14.180: Failed to apply! Possible dependencies: e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
v4.9.223: Failed to apply! Possible dependencies: 1d0c7bb20c08 ("ARM: dts: imx: Correct B850v3 clock assignment") e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
v4.4.223: Failed to apply! Possible dependencies: 15ef03b86247 ("ARM: dts: imx: b450/b650v3: Move ldb_di clk assignment") 1d0c7bb20c08 ("ARM: dts: imx: Correct B850v3 clock assignment") 2252792b4677 ("ARM: dts: imx: Add support for Advantech/GE B850v3") 226d16c80c61 ("ARM: dts: imx: Add support for Advantech/GE Bx50v3") 547da6bbcf08 ("ARM: dts: imx: Add support for Advantech/GE B450v3") 987e71877ae6 ("ARM: dts: imx: Add support for Advantech/GE B650v3") b492b8744da9 ("ARM: dts: imx6q-b850v3: Update display clock source") e26dead44268 ("ARM: dts: imx6q-bx50v3: Add internal switch")
NOTE: The patch will not be queued to stable trees until it is upstream.
How should we proceed with this patch?
Applying it to v4.4 does not make sense (impacted devices are not supported on that version) and it should be fine to ignore it for v4.9 and v4.14. The impact is broken dual display setup. I tested the patch on 4.19 stable tree and I think it makes sense to apply it to 4.19 and newer.
-- Sebastian
On Thu, May 14, 2020 at 07:02:37PM +0200, Sebastian Reichel wrote:
From: Robert Beckett bob.beckett@collabora.com
Avoid LDB and IPU DI clocks both using the same parent. LDB requires pasthrough clock to avoid breaking timing while IPU DI does not.
Force IPU DI clocks to use IMX6QDL_CLK_PLL2_PFD0_352M as parent and LDB to use IMX6QDL_CLK_PLL5_VIDEO_DIV.
This fixes an issue where attempting atomic modeset while using HDMI and display port at the same time causes LDB clock programming to destroy the programming of HDMI that was done during the same modeset.
Cc: stable@vger.kernel.org Signed-off-by: Robert Beckett bob.beckett@collabora.com [Use IMX6QDL_CLK_PLL2_PFD0_352M instead of IMX6QDL_CLK_PLL2_PFD2_396M originally chosen by Robert Beckett to avoid affecting eMMC clock by DRM atomic updates] Signed-off-by: Ian Ray ian.ray@ge.com [Squash Robert's and Ian's commits for bisectability, update patch description and add stable tag] Signed-off-by: Sebastian Reichel sebastian.reichel@collabora.com
Applied, thanks.
linux-stable-mirror@lists.linaro.org