Messages in this thread | | | Date | Sun, 26 Jan 2014 02:53:07 -0800 | From | Guenter Roeck <> | Subject | Using an optional regulator in a driver running on a PC |
| |
Hi all,
I am currently writing a driver which uses an optional regulator to determine a reference voltage. The regulator is truly optional; if it is not there, the chip uses an internal reference voltage.
I am testing the driver on a PC which does not really have any regulators installed or enabled. Kernel version is 3.13.
I noticed that the call to regulator_get() returns -EPROBE_DEFER. Looking into the regulator core, this appears intentional; there is obviously no devicetree entry, and there is no regulator device. The regulator code always returns -EPROBE_DEFER in this case. I also tried regulator_get_optional(), with the same results.
This leads to an interesting question: How are drivers which require regulators (optional or not) supposed to run on a system which does not support devicetree, and does not have any regulators installed (such as a PC) ? REGULATOR_DUMMY isn't there anymore, and the dummy code it replaces only executes on devicetree based systems.
Also, how are non-dt systems supposed to determine if an optional regulator exists or not ? AFAICS the regulator code always returns -EPROBE_DEFER, which isn't very helpful. If I just assume that -EPROBE_DEFER means that the regulator is not there, I end up with a conflict with a system which _does_ support devicetree, where -EPROBE_DEFER really means that the probe needs to be deferred.
Thanks, Guenter
| |