2019-04-03 08:19:25

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 0/5] Add supply property for DSI controller

The DSI controller needs a new property that powers its physical layer.
Binding has been updated to documented this property.
Device tree of stm32mp157c soc.
Move reg18 & reg11 to stm32mp157c device tree file.
Remove property phy-dsi-supply property to stm32mp157c-dk2.dts file.

Yannick Fertré (5):
dt-bindings: display: stm32: add supply property to DSI controller
drm/stm: dw_mipi_dsi-stm: add support of an optional regulator
ARM: dts: stm32: add phy-dsi-supply property on stm32mp157c
ARM: dts: stm32: move fixe regulators reg11 & reg18
ARM: dts: stm32: remove phy-dsi-supply property on stm32mp157c-dk2
board

.../devicetree/bindings/display/st,stm32-ltdc.txt | 3 +++
arch/arm/boot/dts/stm32mp157c-dk2.dts | 9 ---------
arch/arm/boot/dts/stm32mp157c-ed1.dts | 16 ----------------
arch/arm/boot/dts/stm32mp157c.dtsi | 17 +++++++++++++++++
drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 20 ++++++++++++++++++++
5 files changed, 40 insertions(+), 25 deletions(-)

--
2.7.4


2019-04-03 08:18:20

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 1/5] dt-bindings: display: stm32: add supply property to DSI controller

This patch adds documentation of a new property phy-dsi-supply to the
STM32 DSI controller.

Signed-off-by: Yannick Fertré <[email protected]>
---
Documentation/devicetree/bindings/display/st,stm32-ltdc.txt | 3 +++
1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt b/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
index 3eb1b48..60c54da 100644
--- a/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
+++ b/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
@@ -40,6 +40,8 @@ Mandatory nodes specific to STM32 DSI:
- panel or bridge node: A node containing the panel or bridge description as
documented in [6].
- port: panel or bridge port node, connected to the DSI output port (port@1).
+Optional properties:
+- phy-dsi-supply: phandle of the regulator that provides the supply voltage.

Note: You can find more documentation in the following references
[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
@@ -101,6 +103,7 @@ Example 2: DSI panel
clock-names = "pclk", "ref";
resets = <&rcc STM32F4_APB2_RESET(DSI)>;
reset-names = "apb";
+ phy-dsi-supply = <&reg18>;

ports {
#address-cells = <1>;
--
2.7.4

2019-04-03 08:18:20

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 3/5] ARM: dts: stm32: add phy-dsi-supply property on stm32mp157c

The dsi physical layer is powered by the 1v8 power controller supply.

Signed-off-by: Yannick Fertré <[email protected]>
---
arch/arm/boot/dts/stm32mp157c.dtsi | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index 6ce75f6..4611b57 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -1143,6 +1143,7 @@
clock-names = "pclk", "ref", "px_clk";
resets = <&rcc DSI_R>;
reset-names = "apb";
+ phy-dsi-supply = <&reg18>;
status = "disabled";
};

--
2.7.4

2019-04-03 08:18:29

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 4/5] ARM: dts: stm32: move fixe regulators reg11 & reg18

Move regulators reg11 & reg18 from device-tree files stm32mp157c-ed1.dts
& stm32mp157c-dk2.dts to file stm32mp157c.dtsi.

Signed-off-by: Yannick Fertré <[email protected]>
---
arch/arm/boot/dts/stm32mp157c-dk2.dts | 8 --------
arch/arm/boot/dts/stm32mp157c-ed1.dts | 16 ----------------
arch/arm/boot/dts/stm32mp157c.dtsi | 16 ++++++++++++++++
3 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/arch/arm/boot/dts/stm32mp157c-dk2.dts b/arch/arm/boot/dts/stm32mp157c-dk2.dts
index 363aeb9..9a81d2d 100644
--- a/arch/arm/boot/dts/stm32mp157c-dk2.dts
+++ b/arch/arm/boot/dts/stm32mp157c-dk2.dts
@@ -11,14 +11,6 @@
/ {
model = "STMicroelectronics STM32MP157C-DK2 Discovery Board";
compatible = "st,stm32mp157c-dk2", "st,stm32mp157";
-
- reg18: reg18 {
- compatible = "regulator-fixed";
- regulator-name = "reg18";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- regulator-always-on;
- };
};

&dsi {
diff --git a/arch/arm/boot/dts/stm32mp157c-ed1.dts b/arch/arm/boot/dts/stm32mp157c-ed1.dts
index 9fd7943..3748e66 100644
--- a/arch/arm/boot/dts/stm32mp157c-ed1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ed1.dts
@@ -26,22 +26,6 @@
serial0 = &uart4;
};

- reg11: reg11 {
- compatible = "regulator-fixed";
- regulator-name = "reg11";
- regulator-min-microvolt = <1100000>;
- regulator-max-microvolt = <1100000>;
- regulator-always-on;
- };
-
- reg18: reg18 {
- compatible = "regulator-fixed";
- regulator-name = "reg18";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- regulator-always-on;
- };
-
vdd_sd: regulator-vdd_sd {
compatible = "regulator-fixed";
regulator-name = "vdd_sd";
diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index 4611b57..0dec4e5 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -11,6 +11,22 @@
#address-cells = <1>;
#size-cells = <1>;

+ reg11: reg11 {
+ compatible = "regulator-fixed";
+ regulator-name = "reg11";
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-always-on;
+ };
+
+ reg18: reg18 {
+ compatible = "regulator-fixed";
+ regulator-name = "reg18";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
--
2.7.4

2019-04-03 08:18:45

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 2/5] drm/stm: dw_mipi_dsi-stm: add support of an optional regulator

Add support of an optional regulator for the phy part of the DSI
controller.

Signed-off-by: Yannick Fertré <[email protected]>
---
drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
index a672b59..84703d0 100644
--- a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
+++ b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
@@ -9,6 +9,7 @@
#include <linux/clk.h>
#include <linux/iopoll.h>
#include <linux/module.h>
+#include <linux/regulator/consumer.h>
#include <drm/drmP.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/bridge/dw_mipi_dsi.h>
@@ -76,6 +77,7 @@ struct dw_mipi_dsi_stm {
u32 hw_version;
int lane_min_kbps;
int lane_max_kbps;
+ struct regulator *vdd_supply;
};

static inline void dsi_write(struct dw_mipi_dsi_stm *dsi, u32 reg, u32 val)
@@ -318,16 +320,32 @@ static int dw_mipi_dsi_stm_probe(struct platform_device *pdev)
return PTR_ERR(dsi->base);
}

+ dsi->vdd_supply = devm_regulator_get_optional(dev, "phy-dsi");
+ if (IS_ERR(dsi->vdd_supply)) {
+ ret = PTR_ERR(dsi->vdd_supply);
+ if (ret != -EPROBE_DEFER)
+ dev_err(dev, "failed to request regulator: %d\n", ret);
+ return ret;
+ }
+
+ ret = regulator_enable(dsi->vdd_supply);
+ if (ret) {
+ dev_err(dev, "failed to enable regulator: %d\n", ret);
+ return ret;
+ }
+
dsi->pllref_clk = devm_clk_get(dev, "ref");
if (IS_ERR(dsi->pllref_clk)) {
ret = PTR_ERR(dsi->pllref_clk);
dev_err(dev, "Unable to get pll reference clock: %d\n", ret);
+ regulator_disable(dsi->vdd_supply);
return ret;
}

ret = clk_prepare_enable(dsi->pllref_clk);
if (ret) {
dev_err(dev, "%s: Failed to enable pllref_clk\n", __func__);
+ regulator_disable(dsi->vdd_supply);
return ret;
}

@@ -339,6 +357,7 @@ static int dw_mipi_dsi_stm_probe(struct platform_device *pdev)
dsi->dsi = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data);
if (IS_ERR(dsi->dsi)) {
DRM_ERROR("Failed to initialize mipi dsi host\n");
+ regulator_disable(dsi->vdd_supply);
clk_disable_unprepare(dsi->pllref_clk);
return PTR_ERR(dsi->dsi);
}
@@ -351,6 +370,7 @@ static int dw_mipi_dsi_stm_remove(struct platform_device *pdev)
struct dw_mipi_dsi_stm *dsi = platform_get_drvdata(pdev);

clk_disable_unprepare(dsi->pllref_clk);
+ regulator_disable(dsi->vdd_supply);
dw_mipi_dsi_remove(dsi->dsi);

return 0;
--
2.7.4

2019-04-03 08:19:40

by Yannick FERTRE

[permalink] [raw]
Subject: [PATCH v1 5/5] ARM: dts: stm32: remove phy-dsi-supply property on stm32mp157c-dk2 board

This property is already defined into stm32mp157c.dtsi file.

Signed-off-by: Yannick Fertré <[email protected]>
---
arch/arm/boot/dts/stm32mp157c-dk2.dts | 1 -
1 file changed, 1 deletion(-)

diff --git a/arch/arm/boot/dts/stm32mp157c-dk2.dts b/arch/arm/boot/dts/stm32mp157c-dk2.dts
index 9a81d2d..d4038e7 100644
--- a/arch/arm/boot/dts/stm32mp157c-dk2.dts
+++ b/arch/arm/boot/dts/stm32mp157c-dk2.dts
@@ -17,7 +17,6 @@
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
- phy-dsi-supply = <&reg18>;

ports {
#address-cells = <1>;
--
2.7.4

2019-04-05 16:34:54

by Philippe Cornu

[permalink] [raw]
Subject: Re: [PATCH v1 1/5] dt-bindings: display: stm32: add supply property to DSI controller

On 4/3/19 10:16 AM, Yannick Fertré wrote:
> This patch adds documentation of a new property phy-dsi-supply to the
> STM32 DSI controller.
>
> Signed-off-by: Yannick Fertré <[email protected]>
> ---
> Documentation/devicetree/bindings/display/st,stm32-ltdc.txt | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt b/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
> index 3eb1b48..60c54da 100644
> --- a/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
> +++ b/Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
> @@ -40,6 +40,8 @@ Mandatory nodes specific to STM32 DSI:
> - panel or bridge node: A node containing the panel or bridge description as
> documented in [6].
> - port: panel or bridge port node, connected to the DSI output port (port@1).
> +Optional properties:
> +- phy-dsi-supply: phandle of the regulator that provides the supply voltage.
>
> Note: You can find more documentation in the following references
> [1] Documentation/devicetree/bindings/clock/clock-bindings.txt
> @@ -101,6 +103,7 @@ Example 2: DSI panel
> clock-names = "pclk", "ref";
> resets = <&rcc STM32F4_APB2_RESET(DSI)>;
> reset-names = "apb";
> + phy-dsi-supply = <&reg18>;

Dear Yannick,
Thank you for your patch,

Reviewed-by: Philippe Cornu <[email protected]>

Philippe :)


>
> ports {
> #address-cells = <1>;
>

2019-04-05 16:36:21

by Philippe Cornu

[permalink] [raw]
Subject: Re: [PATCH v1 2/5] drm/stm: dw_mipi_dsi-stm: add support of an optional regulator



On 4/3/19 10:16 AM, Yannick Fertré wrote:
> Add support of an optional regulator for the phy part of the DSI
> controller.
>
> Signed-off-by: Yannick Fertré <[email protected]>
> ---
> drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
> index a672b59..84703d0 100644
> --- a/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
> +++ b/drivers/gpu/drm/stm/dw_mipi_dsi-stm.c
> @@ -9,6 +9,7 @@
> #include <linux/clk.h>
> #include <linux/iopoll.h>
> #include <linux/module.h>
> +#include <linux/regulator/consumer.h>
> #include <drm/drmP.h>
> #include <drm/drm_mipi_dsi.h>
> #include <drm/bridge/dw_mipi_dsi.h>
> @@ -76,6 +77,7 @@ struct dw_mipi_dsi_stm {
> u32 hw_version;
> int lane_min_kbps;
> int lane_max_kbps;
> + struct regulator *vdd_supply;
> };
>
> static inline void dsi_write(struct dw_mipi_dsi_stm *dsi, u32 reg, u32 val)
> @@ -318,16 +320,32 @@ static int dw_mipi_dsi_stm_probe(struct platform_device *pdev)
> return PTR_ERR(dsi->base);
> }
>
> + dsi->vdd_supply = devm_regulator_get_optional(dev, "phy-dsi");
> + if (IS_ERR(dsi->vdd_supply)) {
> + ret = PTR_ERR(dsi->vdd_supply);
> + if (ret != -EPROBE_DEFER)
> + dev_err(dev, "failed to request regulator: %d\n", ret);
> + return ret;
> + }
> +
> + ret = regulator_enable(dsi->vdd_supply);
> + if (ret) {
> + dev_err(dev, "failed to enable regulator: %d\n", ret);
> + return ret;
> + }
> +
> dsi->pllref_clk = devm_clk_get(dev, "ref");
> if (IS_ERR(dsi->pllref_clk)) {
> ret = PTR_ERR(dsi->pllref_clk);
> dev_err(dev, "Unable to get pll reference clock: %d\n", ret);
> + regulator_disable(dsi->vdd_supply);
> return ret;
> }
>
> ret = clk_prepare_enable(dsi->pllref_clk);
> if (ret) {
> dev_err(dev, "%s: Failed to enable pllref_clk\n", __func__);
> + regulator_disable(dsi->vdd_supply);
> return ret;
> }
>
> @@ -339,6 +357,7 @@ static int dw_mipi_dsi_stm_probe(struct platform_device *pdev)
> dsi->dsi = dw_mipi_dsi_probe(pdev, &dw_mipi_dsi_stm_plat_data);
> if (IS_ERR(dsi->dsi)) {
> DRM_ERROR("Failed to initialize mipi dsi host\n");
> + regulator_disable(dsi->vdd_supply);
> clk_disable_unprepare(dsi->pllref_clk);
> return PTR_ERR(dsi->dsi);
> }
> @@ -351,6 +370,7 @@ static int dw_mipi_dsi_stm_remove(struct platform_device *pdev)
> struct dw_mipi_dsi_stm *dsi = platform_get_drvdata(pdev);
>
> clk_disable_unprepare(dsi->pllref_clk);
> + regulator_disable(dsi->vdd_supply);

Dear Yannick,

Acked-by: Philippe Cornu <[email protected]>

Philippe

> dw_mipi_dsi_remove(dsi->dsi);
>
> return 0;
>

2019-04-06 06:08:11

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v1 1/5] dt-bindings: display: stm32: add supply property to DSI controller

On Wed, 3 Apr 2019 10:16:25 +0200, =?UTF-8?q?Yannick=20Fertr=C3=A9?= wrote:
> This patch adds documentation of a new property phy-dsi-supply to the
> STM32 DSI controller.
>
> Signed-off-by: Yannick Fertré <[email protected]>
> ---
> Documentation/devicetree/bindings/display/st,stm32-ltdc.txt | 3 +++
> 1 file changed, 3 insertions(+)
>

Reviewed-by: Rob Herring <[email protected]>

2019-04-10 13:52:28

by Alexandre Torgue

[permalink] [raw]
Subject: Re: [PATCH v1 0/5] Add supply property for DSI controller

Hi Yannick

On 4/3/19 10:16 AM, Yannick Fertré wrote:
> The DSI controller needs a new property that powers its physical layer.
> Binding has been updated to documented this property.
> Device tree of stm32mp157c soc.
> Move reg18 & reg11 to stm32mp157c device tree file.
> Remove property phy-dsi-supply property to stm32mp157c-dk2.dts file.
>
> Yannick Fertré (5):

...

> ARM: dts: stm32: add phy-dsi-supply property on stm32mp157c
> ARM: dts: stm32: move fixe regulators reg11 & reg18
> ARM: dts: stm32: remove phy-dsi-supply property on stm32mp157c-dk2
> board
>

For ARM part:

Another series is currently under review: "Add support for STM32MP1
power regulators" (https://lkml.org/lkml/2019/4/8/614).

As soon I'll merge it I'll take your patches without patch
"ARM: dts: stm32: move fixe regulators reg11 & reg18" as it will be no
longer relevant.

regards
Alexandre


> .../devicetree/bindings/display/st,stm32-ltdc.txt | 3 +++
> arch/arm/boot/dts/stm32mp157c-dk2.dts | 9 ---------
> arch/arm/boot/dts/stm32mp157c-ed1.dts | 16 ----------------
> arch/arm/boot/dts/stm32mp157c.dtsi | 17 +++++++++++++++++
> drivers/gpu/drm/stm/dw_mipi_dsi-stm.c | 20 ++++++++++++++++++++
> 5 files changed, 40 insertions(+), 25 deletions(-)
>