linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm
@ 2020-02-25 15:53 Guido Günther
  2020-02-25 15:53 ` [PATCH 1/1] " Guido Günther
  2020-06-26  7:07 ` [PATCH 0/1] " Guido Günther
  0 siblings, 2 replies; 3+ messages in thread
From: Guido Günther @ 2020-02-25 15:53 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	Guido Günther, Robert Chiras, Sam Ravnborg, linux-kernel,
	linux-arm-kernel

This allows us to shut down the mipi power domain on the SOC.  The
alternative would be to drop the dphy from the mipi power domain in the
SOCs device tree and only have the DSI host controller visible there
(and rely on the phy layer's built in runtime pm handling) but this
makes the power domain dependency less explicit.

Currently the pm domain can't be shut off when blanking the panel:

pm_genpd_summary
domain                          status          slaves
    /device                                             runtime status
----------------------------------------------------------------------
mipi                            on
    /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  unsupported
    /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended

while with this we can shut down the power domain on panel blank:

mipi                            off-0
    /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  suspended
    /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended

This is similar to what drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c
does.

Patch is against next-20200217

Guido Günther (1):
  phy: fsl-imx8-mipi-dphy: Hook into runtime pm

 .../phy/freescale/phy-fsl-imx8-mipi-dphy.c    | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm
  2020-02-25 15:53 [PATCH 0/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm Guido Günther
@ 2020-02-25 15:53 ` Guido Günther
  2020-06-26  7:07 ` [PATCH 0/1] " Guido Günther
  1 sibling, 0 replies; 3+ messages in thread
From: Guido Günther @ 2020-02-25 15:53 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	Guido Günther, Robert Chiras, Sam Ravnborg, linux-kernel,
	linux-arm-kernel

This allows us to shut down the mipi power domain on the SOC.  The
alternative would be to drop the dphy from the mipi power domain in the
SOCs device tree and only have the DSI host controller visible there
(and rely on the phy layer's built in runtime pm handling) but this
would make the power domain dependency less explicit.

Currently the pm domain can't be shut off when blanking the panel:

pm_genpd_summary
domain                          status          slaves
    /device                                             runtime status
----------------------------------------------------------------------
mipi                            on
    /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  unsupported
    /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended

while with this change we can shut down the power domain on panel blank:

mipi                            off-0
    /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  suspended
    /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended

Signed-off-by: Guido Günther <agx@sigxcpu.org>
---
 .../phy/freescale/phy-fsl-imx8-mipi-dphy.c    | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c
index 9f2c1da14f5a..75bfcc49466f 100644
--- a/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c
+++ b/drivers/phy/freescale/phy-fsl-imx8-mipi-dphy.c
@@ -14,6 +14,7 @@
 #include <linux/of_platform.h>
 #include <linux/phy/phy.h>
 #include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
 #include <linux/regmap.h>
 
 /* DPHY registers */
@@ -93,6 +94,7 @@ struct mixel_dphy_cfg {
 };
 
 struct mixel_dphy_priv {
+	struct device *dev;
 	struct mixel_dphy_cfg cfg;
 	struct regmap *regmap;
 	struct clk *phy_ref_clk;
@@ -382,6 +384,7 @@ static int mixel_dphy_power_on(struct phy *phy)
 	ret = clk_prepare_enable(priv->phy_ref_clk);
 	if (ret < 0)
 		return ret;
+	pm_runtime_get_sync(priv->dev);
 
 	phy_write(phy, PWR_ON, DPHY_PD_PLL);
 	ret = regmap_read_poll_timeout(priv->regmap, DPHY_LOCK, locked,
@@ -395,6 +398,7 @@ static int mixel_dphy_power_on(struct phy *phy)
 
 	return 0;
 clock_disable:
+	pm_runtime_put(priv->dev);
 	clk_disable_unprepare(priv->phy_ref_clk);
 	return ret;
 }
@@ -406,6 +410,7 @@ static int mixel_dphy_power_off(struct phy *phy)
 	phy_write(phy, PWR_OFF, DPHY_PD_PLL);
 	phy_write(phy, PWR_OFF, DPHY_PD_DPHY);
 
+	pm_runtime_put(priv->dev);
 	clk_disable_unprepare(priv->phy_ref_clk);
 
 	return 0;
@@ -469,6 +474,7 @@ static int mixel_dphy_probe(struct platform_device *pdev)
 	dev_dbg(dev, "phy_ref clock rate: %lu\n",
 		clk_get_rate(priv->phy_ref_clk));
 
+	priv->dev = dev;
 	dev_set_drvdata(dev, priv);
 
 	phy = devm_phy_create(dev, np, &mixel_dphy_phy_ops);
@@ -479,12 +485,26 @@ static int mixel_dphy_probe(struct platform_device *pdev)
 	phy_set_drvdata(phy, priv);
 
 	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+	if (IS_ERR(phy_provider))
+		return PTR_ERR(phy_provider);
 
-	return PTR_ERR_OR_ZERO(phy_provider);
+	pm_runtime_enable(dev);
+
+	return 0;
+}
+
+static int mixel_dphy_remove(struct platform_device *pdev)
+{
+	struct mixel_dphy_priv *priv = platform_get_drvdata(pdev);
+
+	pm_runtime_disable(priv->dev);
+
+	return 0;
 }
 
 static struct platform_driver mixel_dphy_driver = {
 	.probe	= mixel_dphy_probe,
+	.remove = mixel_dphy_remove,
 	.driver = {
 		.name = "mixel-mipi-dphy",
 		.of_match_table	= mixel_dphy_of_match,
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 0/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm
  2020-02-25 15:53 [PATCH 0/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm Guido Günther
  2020-02-25 15:53 ` [PATCH 1/1] " Guido Günther
@ 2020-06-26  7:07 ` Guido Günther
  1 sibling, 0 replies; 3+ messages in thread
From: Guido Günther @ 2020-06-26  7:07 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team,
	Robert Chiras, Sam Ravnborg, linux-kernel, linux-arm-kernel

Hi,
On Tue, Feb 25, 2020 at 04:53:33PM +0100, Guido Günther wrote:
> This allows us to shut down the mipi power domain on the SOC.  The
> alternative would be to drop the dphy from the mipi power domain in the
> SOCs device tree and only have the DSI host controller visible there
> (and rely on the phy layer's built in runtime pm handling) but this
> makes the power domain dependency less explicit.
> 
> Currently the pm domain can't be shut off when blanking the panel:

Anything I can do to get this applied?
Cheers,
 -- Guido

> 
> pm_genpd_summary
> domain                          status          slaves
>     /device                                             runtime status
> ----------------------------------------------------------------------
> mipi                            on
>     /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  unsupported
>     /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended
> 
> while with this we can shut down the power domain on panel blank:
> 
> mipi                            off-0
>     /devices/platform/soc@0/soc@0:bus@30800000/30a00300.dphy  suspended
>     /devices/platform/soc@0/soc@0:bus@30800000/30a00000.mipi_dsi  suspended
> 
> This is similar to what drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c
> does.
> 
> Patch is against next-20200217
> 
> Guido Günther (1):
>   phy: fsl-imx8-mipi-dphy: Hook into runtime pm
> 
>  .../phy/freescale/phy-fsl-imx8-mipi-dphy.c    | 22 ++++++++++++++++++-
>  1 file changed, 21 insertions(+), 1 deletion(-)
> 
> -- 
> 2.23.0
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-06-26  7:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-25 15:53 [PATCH 0/1] phy: fsl-imx8-mipi-dphy: Hook into runtime pm Guido Günther
2020-02-25 15:53 ` [PATCH 1/1] " Guido Günther
2020-06-26  7:07 ` [PATCH 0/1] " Guido Günther

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).