Hi All,
The dsi + panel is a parental relationship, so OF grpah is not needed. Therefore, the current dsi_parse_dt function will throw an error, because there is no linked OF graph for case such as fimd + dsi + panel.
So the 1/5 patch parse the Pll, burst and esc clock frequency properties in dsi_parse_dt and modified to create a bridge_node only if there is an OF graph associated with dsi.
Also fixed the dts, which depend on the 1/5 patch. So removed the ports node and move burst and esc clock frequency properties to the parent (DSI node).
Changes for V4: - Squashed patch 2, 3 and 4. - Added Reviewed-by: Andrzej Hajda a.hajda@samsung.com on all patches.
Changes for V3: - Split the patches considering the bisectability problem.
Changes for V2: - Added the clear explanation for commit. (1/5 patch) - Fixed it to the same subject as the actual work. (2/5 ~ 5/5 patches)
Best Regards, Hoegeun
Hoegeun Kwon (5): arm64: dts: exynos: Add the burst and esc clock frequency properties to DSI node arm: dts: Add the burst and esc clock frequency properties to DSI node drm/exynos: dsi: Fix the parse_dt function arm64: dts: exynos: Remove the OF graph from DSI node arm: dts: Remove the OF graph from DSI node
arch/arm/boot/dts/exynos3250-rinato.dts | 23 ++-------------- arch/arm/boot/dts/exynos4210-trats.dts | 23 ++-------------- arch/arm/boot/dts/exynos4412-trats2.dts | 23 ++-------------- .../boot/dts/exynos/exynos5433-tm2-common.dtsi | 16 ++--------- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 32 ++++++---------------- 5 files changed, 16 insertions(+), 101 deletions(-)
The OF graph is not needed because the panel is a child of dsi. Add the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com --- arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi index 6ce93a3..e31e20c 100644 --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi @@ -298,6 +298,8 @@ status = "okay"; vddcore-supply = <&ldo6_reg>; vddio-supply = <&ldo7_reg>; + samsung,burst-clock-frequency = <512000000>; + samsung,esc-clock-frequency = <16000000>; samsung,pll-clock-frequency = <24000000>; pinctrl-names = "default"; pinctrl-0 = <&te_irq>;
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:19PM +0900, Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Add the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
you forgot to put me in Cc and add my
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Andi
On 03/06/2017 01:49 PM, Andi Shyti wrote:
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:19PM +0900, Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Add the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
you forgot to put me in Cc and add my
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Sorry Andi, I mistake... :( Thanks for all your review.
Best Regards, Hoegeun
Andi
The OF graph is not needed because the panel is a child of dsi. Add the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com --- arch/arm/boot/dts/exynos3250-rinato.dts | 2 ++ arch/arm/boot/dts/exynos4210-trats.dts | 2 ++ arch/arm/boot/dts/exynos4412-trats2.dts | 2 ++ 3 files changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/exynos3250-rinato.dts b/arch/arm/boot/dts/exynos3250-rinato.dts index 548413e..c9f191c 100644 --- a/arch/arm/boot/dts/exynos3250-rinato.dts +++ b/arch/arm/boot/dts/exynos3250-rinato.dts @@ -215,6 +215,8 @@ &dsi_0 { vddcore-supply = <&ldo6_reg>; vddio-supply = <&ldo6_reg>; + samsung,burst-clock-frequency = <250000000>; + samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index 0ca1b4d..1743ca8 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts @@ -197,6 +197,8 @@ &dsi_0 { vddcore-supply = <&vusb_reg>; vddio-supply = <&vmipi_reg>; + samsung,burst-clock-frequency = <500000000>; + samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts index 41ecd6d..82221a0 100644 --- a/arch/arm/boot/dts/exynos4412-trats2.dts +++ b/arch/arm/boot/dts/exynos4412-trats2.dts @@ -385,6 +385,8 @@ &dsi_0 { vddcore-supply = <&ldo8_reg>; vddio-supply = <&ldo10_reg>; + samsung,burst-clock-frequency = <500000000>; + samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:20PM +0900, Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Add the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Andi
Hi,
On Mon, 06 Mar 2017 13:42:20 +0900 Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Add
This is obviously from your patch #5 and doesn't make sense in this context.
the burst and esc clock frequency properties to the parent (DSI node).
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
arch/arm/boot/dts/exynos3250-rinato.dts | 2 ++ arch/arm/boot/dts/exynos4210-trats.dts | 2 ++ arch/arm/boot/dts/exynos4412-trats2.dts | 2 ++ 3 files changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/exynos3250-rinato.dts b/arch/arm/boot/dts/exynos3250-rinato.dts index 548413e..c9f191c 100644 --- a/arch/arm/boot/dts/exynos3250-rinato.dts +++ b/arch/arm/boot/dts/exynos3250-rinato.dts @@ -215,6 +215,8 @@ &dsi_0 { vddcore-supply = <&ldo6_reg>; vddio-supply = <&ldo6_reg>;
- samsung,burst-clock-frequency = <250000000>;
- samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index 0ca1b4d..1743ca8 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts @@ -197,6 +197,8 @@ &dsi_0 { vddcore-supply = <&vusb_reg>; vddio-supply = <&vmipi_reg>;
- samsung,burst-clock-frequency = <500000000>;
- samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts index 41ecd6d..82221a0 100644 --- a/arch/arm/boot/dts/exynos4412-trats2.dts +++ b/arch/arm/boot/dts/exynos4412-trats2.dts @@ -385,6 +385,8 @@ &dsi_0 { vddcore-supply = <&ldo8_reg>; vddio-supply = <&ldo10_reg>;
- samsung,burst-clock-frequency = <500000000>;
- samsung,esc-clock-frequency = <20000000>; samsung,pll-clock-frequency = <24000000>; status = "okay";
Lothar Waßmann
The dsi + panel is a parental relationship, so OF grpah is not needed. Therefore, the current dsi_parse_dt function will throw an error, because there is no linked OF graph for case such as fimd + dsi + panel. So this patch parse the Pll, burst and esc clock frequency properties in dsi_parse_dt and modified to create a bridge_node only if there is an OF graph associated with dsi. So I think the ABI breakage is needed.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index f5c04d0..2d4e118 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1652,39 +1652,23 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi) if (ret < 0) return ret;
- ep = of_graph_get_endpoint_by_regs(node, DSI_PORT_OUT, 0); - if (!ep) { - dev_err(dev, "no output port with endpoint specified\n"); - return -EINVAL; - } - - ret = exynos_dsi_of_read_u32(ep, "samsung,burst-clock-frequency", + ret = exynos_dsi_of_read_u32(node, "samsung,burst-clock-frequency", &dsi->burst_clk_rate); if (ret < 0) - goto end; + return ret;
- ret = exynos_dsi_of_read_u32(ep, "samsung,esc-clock-frequency", + ret = exynos_dsi_of_read_u32(node, "samsung,esc-clock-frequency", &dsi->esc_clk_rate); if (ret < 0) - goto end; - - of_node_put(ep); + return ret;
ep = of_graph_get_next_endpoint(node, NULL); - if (!ep) { - ret = -EINVAL; - goto end; - } - - dsi->bridge_node = of_graph_get_remote_port_parent(ep); - if (!dsi->bridge_node) { - ret = -EINVAL; - goto end; + if (ep) { + dsi->bridge_node = of_graph_get_remote_port_parent(ep); + of_node_put(ep); } -end: - of_node_put(ep);
- return ret; + return 0; }
static int exynos_dsi_bind(struct device *dev, struct device *master,
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:21PM +0900, Hoegeun Kwon wrote:
The dsi + panel is a parental relationship, so OF grpah is not needed. Therefore, the current dsi_parse_dt function will throw an error, because there is no linked OF graph for case such as fimd + dsi + panel. So this patch parse the Pll, burst and esc clock frequency properties in dsi_parse_dt and modified to create a bridge_node only if there is an OF graph associated with dsi. So I think the ABI breakage is needed.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Andi
The OF graph is not needed because the panel is a child of dsi. Remove the ports node in DSI node.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com --- arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi | 14 -------------- 1 file changed, 14 deletions(-)
diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi index e31e20c..77ba238 100644 --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi @@ -303,20 +303,6 @@ samsung,pll-clock-frequency = <24000000>; pinctrl-names = "default"; pinctrl-0 = <&te_irq>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - dsi_out: endpoint { - samsung,burst-clock-frequency = <512000000>; - samsung,esc-clock-frequency = <16000000>; - }; - }; - }; };
&hdmi {
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:22PM +0900, Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Remove the ports node in DSI node.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Andi
The OF graph is not needed because the panel is a child of dsi. Remove the ports node in DSI node, and port node in panel node.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com --- arch/arm/boot/dts/exynos3250-rinato.dts | 21 --------------------- arch/arm/boot/dts/exynos4210-trats.dts | 21 --------------------- arch/arm/boot/dts/exynos4412-trats2.dts | 21 --------------------- 3 files changed, 63 deletions(-)
diff --git a/arch/arm/boot/dts/exynos3250-rinato.dts b/arch/arm/boot/dts/exynos3250-rinato.dts index c9f191c..82e676a 100644 --- a/arch/arm/boot/dts/exynos3250-rinato.dts +++ b/arch/arm/boot/dts/exynos3250-rinato.dts @@ -220,21 +220,6 @@ samsung,pll-clock-frequency = <24000000>; status = "okay";
- ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - dsi_out: endpoint { - remote-endpoint = <&dsi_in>; - samsung,burst-clock-frequency = <250000000>; - samsung,esc-clock-frequency = <20000000>; - }; - }; - }; - panel@0 { compatible = "samsung,s6e63j0x03"; reg = <0>; @@ -264,12 +249,6 @@ vsync-len = <2>; }; }; - - port { - dsi_in: endpoint { - remote-endpoint = <&dsi_out>; - }; - }; }; };
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index 1743ca8..9452bed 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts @@ -202,21 +202,6 @@ samsung,pll-clock-frequency = <24000000>; status = "okay";
- ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - dsi_out: endpoint { - remote-endpoint = <&dsi_in>; - samsung,burst-clock-frequency = <500000000>; - samsung,esc-clock-frequency = <20000000>; - }; - }; - }; - panel@0 { reg = <0>; compatible = "samsung,s6e8aa0"; @@ -244,12 +229,6 @@ vsync-len = <2>; }; }; - - port { - dsi_in: endpoint { - remote-endpoint = <&dsi_out>; - }; - }; }; };
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts index 82221a0..86ce5e5 100644 --- a/arch/arm/boot/dts/exynos4412-trats2.dts +++ b/arch/arm/boot/dts/exynos4412-trats2.dts @@ -390,21 +390,6 @@ samsung,pll-clock-frequency = <24000000>; status = "okay";
- ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - dsi_out: endpoint { - remote-endpoint = <&dsi_in>; - samsung,burst-clock-frequency = <500000000>; - samsung,esc-clock-frequency = <20000000>; - }; - }; - }; - panel@0 { compatible = "samsung,s6e8aa0"; reg = <0>; @@ -432,12 +417,6 @@ vsync-len = <2>; }; }; - - port { - dsi_in: endpoint { - remote-endpoint = <&dsi_out>; - }; - }; }; };
Hi Hoegeun,
On Mon, Mar 06, 2017 at 01:42:23PM +0900, Hoegeun Kwon wrote:
The OF graph is not needed because the panel is a child of dsi. Remove the ports node in DSI node, and port node in panel node.
Signed-off-by: Hoegeun Kwon hoegeun.kwon@samsung.com Reviewed-by: Andrzej Hajda a.hajda@samsung.com
Reviewed-by: Andi Shyti andi.shyti@samsung.com
Andi
dri-devel@lists.freedesktop.org