Message ID | 20190520090318.27570-10-jagan@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
On Mon, May 20, 2019 at 02:33:16PM +0530, Jagan Teki wrote: > Allwinner MIPI DSI controllers are supplied with SoC > DSI power rails via VCC-DSI pin. > > Add support for this supply pin by adding voltage > regulator handling code to MIPI DSI driver. > > Tested-by: Merlijn Wajer <merlijn@wizzup.org> > Signed-off-by: Jagan Teki <jagan@amarulasolutions.com> This creates a lot of warnings at boot time on my board this is missing vcc-dsi-supply. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
On Mon, Jun 3, 2019 at 7:19 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > On Mon, May 20, 2019 at 02:33:16PM +0530, Jagan Teki wrote: > > Allwinner MIPI DSI controllers are supplied with SoC > > DSI power rails via VCC-DSI pin. > > > > Add support for this supply pin by adding voltage > > regulator handling code to MIPI DSI driver. > > > > Tested-by: Merlijn Wajer <merlijn@wizzup.org> > > Signed-off-by: Jagan Teki <jagan@amarulasolutions.com> > > This creates a lot of warnings at boot time on my board this is > missing vcc-dsi-supply. Is it about regulator_put or similar, would you provide the log.
On Thu, Jun 13, 2019 at 01:25:52PM +0530, Jagan Teki wrote: > On Mon, Jun 3, 2019 at 7:19 PM Maxime Ripard <maxime.ripard@bootlin.com> wrote: > > > > On Mon, May 20, 2019 at 02:33:16PM +0530, Jagan Teki wrote: > > > Allwinner MIPI DSI controllers are supplied with SoC > > > DSI power rails via VCC-DSI pin. > > > > > > Add support for this supply pin by adding voltage > > > regulator handling code to MIPI DSI driver. > > > > > > Tested-by: Merlijn Wajer <merlijn@wizzup.org> > > > Signed-off-by: Jagan Teki <jagan@amarulasolutions.com> > > > > This creates a lot of warnings at boot time on my board this is > > missing vcc-dsi-supply. > > Is it about regulator_put or similar, would you provide the log. Sure http://code.bulix.org/whiea9-769551?raw Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c index 5584e9c2f8bd..a5d73a283ed7 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c @@ -1150,6 +1150,12 @@ static int sun6i_dsi_probe(struct platform_device *pdev) return PTR_ERR(base); } + dsi->regulator = devm_regulator_get(dev, "vcc-dsi"); + if (IS_ERR(dsi->regulator)) { + dev_err(dev, "Couldn't get VCC-DSI supply\n"); + return PTR_ERR(dsi->regulator); + } + dsi->regs = devm_regmap_init_mmio_clk(dev, "bus", base, &sun6i_dsi_regmap_config); if (IS_ERR(dsi->regs)) { @@ -1223,6 +1229,13 @@ static int sun6i_dsi_remove(struct platform_device *pdev) static int __maybe_unused sun6i_dsi_runtime_resume(struct device *dev) { struct sun6i_dsi *dsi = dev_get_drvdata(dev); + int err; + + err = regulator_enable(dsi->regulator); + if (err) { + dev_err(dsi->dev, "failed to enable VCC-DSI supply: %d\n", err); + return err; + } reset_control_deassert(dsi->reset); clk_prepare_enable(dsi->mod_clk); @@ -1255,6 +1268,7 @@ static int __maybe_unused sun6i_dsi_runtime_suspend(struct device *dev) clk_disable_unprepare(dsi->mod_clk); reset_control_assert(dsi->reset); + regulator_disable(dsi->regulator); return 0; } diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h index 156523859d82..c76b71259d2e 100644 --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h @@ -13,6 +13,8 @@ #include <drm/drm_encoder.h> #include <drm/drm_mipi_dsi.h> +#include <linux/regulator/consumer.h> + struct sun6i_dsi { struct drm_connector connector; struct drm_encoder encoder; @@ -21,6 +23,7 @@ struct sun6i_dsi { struct clk *bus_clk; struct clk *mod_clk; struct regmap *regs; + struct regulator *regulator; struct reset_control *reset; struct phy *dphy;