]> git.karo-electronics.de Git - linux-beck.git/commitdiff
omapfb: Fix regulator API abuse in dss.c and hdmi4/5.c
authorMark Brown <broonie@kernel.org>
Wed, 30 Mar 2016 16:29:36 +0000 (09:29 -0700)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 11 Aug 2016 14:54:52 +0000 (17:54 +0300)
The voltage changing code in this driver is broken and should be
removed.  The driver sets a single, exact voltage on probe.  Unless
there is a very good reason for this (which should be documented in
comments) constraints like this need to be set via the machine
constraints, voltage setting in a driver is expected to be used in cases
where the voltage varies at runtime.

In addition client drivers should almost never be calling
regulator_can_set_voltage(), if the device needs to set a voltage it
needs to set the voltage and the regulator core will handle the case
where the regulator is fixed voltage.  If the driver can skip setting
the voltage it should just never set the voltage.

Signed-off-by: Mark Brown <broonie@kernel.org>
[tomi.valkeinen@ti.com: fix abuse in hdmi5.c too]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/fbdev/omap2/omapfb/dss/dsi.c
drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c
drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c

index 9e4800a4e3d11cff2ec29f78a260d4777c19784e..b72e57e13ae30375a3948d5d0e3846427cebd4bf 100644 (file)
@@ -1167,7 +1167,6 @@ static int dsi_regulator_init(struct platform_device *dsidev)
 {
        struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);
        struct regulator *vdds_dsi;
-       int r;
 
        if (dsi->vdds_dsi_reg != NULL)
                return 0;
@@ -1180,13 +1179,6 @@ static int dsi_regulator_init(struct platform_device *dsidev)
                return PTR_ERR(vdds_dsi);
        }
 
-       r = regulator_set_voltage(vdds_dsi, 1800000, 1800000);
-       if (r) {
-               devm_regulator_put(vdds_dsi);
-               DSSERR("can't set the DSI regulator voltage\n");
-               return r;
-       }
-
        dsi->vdds_dsi_reg = vdds_dsi;
 
        return 0;
index 926a6f20dbb233ea541dc2dbbd1e90c0484e3a1a..156a254705ea5e090bbd1e3c1915adb96264e238 100644 (file)
@@ -100,7 +100,6 @@ static irqreturn_t hdmi_irq_handler(int irq, void *data)
 
 static int hdmi_init_regulator(void)
 {
-       int r;
        struct regulator *reg;
 
        if (hdmi.vdda_reg != NULL)
@@ -114,13 +113,6 @@ static int hdmi_init_regulator(void)
                return PTR_ERR(reg);
        }
 
-       r = regulator_set_voltage(reg, 1800000, 1800000);
-       if (r) {
-               devm_regulator_put(reg);
-               DSSWARN("can't set the regulator voltage\n");
-               return r;
-       }
-
        hdmi.vdda_reg = reg;
 
        return 0;
index 0ee829a165c3a974f6fb6560543303a97cd761da..4da36bcab97798c370971731c0541772b357378c 100644 (file)
@@ -119,7 +119,6 @@ static irqreturn_t hdmi_irq_handler(int irq, void *data)
 
 static int hdmi_init_regulator(void)
 {
-       int r;
        struct regulator *reg;
 
        if (hdmi.vdda_reg != NULL)
@@ -131,13 +130,6 @@ static int hdmi_init_regulator(void)
                return PTR_ERR(reg);
        }
 
-       r = regulator_set_voltage(reg, 1800000, 1800000);
-       if (r) {
-               devm_regulator_put(reg);
-               DSSWARN("can't set the regulator voltage\n");
-               return r;
-       }
-
        hdmi.vdda_reg = reg;
 
        return 0;