Thread (7 messages) flat view 7 messages, 3 authors, 2011-12-02

Re: backlight/ld9040.c: regulator control in the lcd driver

From: Kyungmin Park <kyungmin.park@samsung.com>
Date: 2011-12-02 10:14:24
Also in: linux-arm-kernel

On 12/2/11, Linus Walleij [off-list ref] wrote:
On Fri, Dec 2, 2011 at 9:57 AM, Kyungmin Park [off-list ref]
wrote:
quoted
quoted
[leedonghwa]
[Me]
quoted
quoted
+         lcd->reg_vdd3 = regulator_get(lcd->dev, "vdd");
+         if (IS_ERR(lcd->reg_vdd3)) {
+                   dev_info(lcd->dev, "no %s regulator found\n",
"vdd");
+                   lcd->reg_vdd3 = NULL;
+         }
+
+         lcd->reg_vci = regulator_get(lcd->dev, "vci");
+         if (IS_ERR(lcd->reg_vci)) {
+                   dev_info(lcd->dev, "no %s regulator found\n",
"vci");
+                   lcd->reg_vci = NULL;
+         }
As explained in earlier discussion with Mark regarding the SMSC911x
driver regulator, treat these as errors and do not fail
"gracefully" like this.

Reference:
http://marc.info/?l=linux-netdev&m1914562120725&w=2
As mentioned at commit message, the lcd regulator is optional part and
refer the mmc codes

       host->vmmc = regulator_get(mmc_dev(mmc), "vmmc");
       if (IS_ERR(host->vmmc)) {
               pr_info("%s: no vmmc regulator found\n",
mmc_hostname(mmc));
               host->vmmc = NULL;
       } else {
               regulator_enable(host->vmmc);
       }

Previous time, these codes are located at board file, but more boards
are used, it has same codes for all boards. so move it to drivers.
I know. This was brought up in the aforementioned discussion,
but the above is also wrong, simply. See:
http://marc.info/?l=linux-netdev&m1914562120667&w=2
http://marc.info/?l=linux-netdev&m1914562120690&w=2
http://marc.info/?l=linux-netdev&m1914562120725&w=2
http://marc.info/?l=linux-netdev&m1963332527416&w=2
quoted
In our case, it has the regulator but some boards don't.

Umm then how to handle the regulator gracefully?
Mark suggest using a fixed-voltage regulator for boards
where the power is always on. The voltage level itself
is optional. See:
http://marc.info/?l=linux-netdev&m1963332527416&w=2
Make sense, okay send the updated patch
Other approaches is to use dummy regulators, or not
call regulator_has_full_constraints(), which means the
regulator core will provide dummy regulators anyways.
See:
http://marc.info/?l=linux-netdev&m1973043527112&w=2
http://marc.info/?l=linux-netdev&m1975178703166&w=2

Whole thread of discussion:
http://marc.info/?l=linux-netdev&w=2&r=1&s=smsc911x&q=b

Yours,
Linus Walleij

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help