| From 07049221c5e8c985208be6e7b865bd912f8c9d5c Mon Sep 17 00:00:00 2001 |
| From: Fabio Estevam <fabio.estevam@nxp.com> |
| Date: Wed, 8 Feb 2017 10:47:49 -0200 |
| Subject: [PATCH] drm/imx: imx-tve: Do not set the regulator voltage |
| |
| commit fc12bccda8b6f5c38139eceec9e369ed78091b2b upstream. |
| |
| Commit deb65870b5d9d ("drm/imx: imx-tve: check the value returned by |
| regulator_set_voltage()") exposes the following probe issue: |
| |
| 63ff0000.tve supply dac not found, using dummy regulator |
| imx-drm display-subsystem: failed to bind 63ff0000.tve (ops imx_tve_ops): -22 |
| |
| When the 'dac-supply' is not passed in the device tree a dummy regulator is |
| used and setting its voltage is not allowed. |
| |
| To fix this issue, do not set the dac-supply voltage inside the driver |
| and let its voltage be specified in the device tree. |
| |
| Print a warning if the the 'dac-supply' voltage has a value different |
| from 2.75V. |
| |
| Fixes: deb65870b5d9d ("drm/imx: imx-tve: check the value returned by regulator_set_voltage()") |
| Cc: <stable@vger.kernel.org> # 4.8+ |
| Suggested-by: Lucas Stach <l.stach@pengutronix.de> |
| Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> |
| Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c |
| index 5e875944ffa2..a85aa3e05277 100644 |
| --- a/drivers/gpu/drm/imx/imx-tve.c |
| +++ b/drivers/gpu/drm/imx/imx-tve.c |
| @@ -98,6 +98,8 @@ |
| /* TVE_TST_MODE_REG */ |
| #define TVE_TVDAC_TEST_MODE_MASK (0x7 << 0) |
| |
| +#define IMX_TVE_DAC_VOLTAGE 2750000 |
| + |
| enum { |
| TVE_MODE_TVOUT, |
| TVE_MODE_VGA, |
| @@ -628,9 +630,8 @@ static int imx_tve_bind(struct device *dev, struct device *master, void *data) |
| |
| tve->dac_reg = devm_regulator_get(dev, "dac"); |
| if (!IS_ERR(tve->dac_reg)) { |
| - ret = regulator_set_voltage(tve->dac_reg, 2750000, 2750000); |
| - if (ret) |
| - return ret; |
| + if (regulator_get_voltage(tve->dac_reg) != IMX_TVE_DAC_VOLTAGE) |
| + dev_warn(dev, "dac voltage is not %d uV\n", IMX_TVE_DAC_VOLTAGE); |
| ret = regulator_enable(tve->dac_reg); |
| if (ret) |
| return ret; |
| -- |
| 2.12.0 |
| |