regulator: of: Provide simplified DT parsing method
authorMark Brown <broonie@kernel.org>
Tue, 9 Sep 2014 22:13:57 +0000 (23:13 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 10 Sep 2014 11:00:53 +0000 (12:00 +0100)
commita0c7b164ad115ec0556dc0904ee2218cbc5cedfa
treecf4f1e10eb3ec1ca72fc044d213b5be6f6124bb8
parent7d1311b93e58ed55f3a31cc8f94c4b8fe988a2b9
regulator: of: Provide simplified DT parsing method

Currently regulator drivers which support DT all repeat very similar code
to supply a list of known regulator identifiers to be matched with DT,
convert that to platform data which is then matched up with the regulators
as they are registered. This is both fiddly to get right and for devices
which can use the standard helpers to provide their operations is the main
source of code in the driver.

Since this code is essentially identical for most drivers we can factor it
out into the core, moving the identifiers in the match table into the
regulator descriptors and also allowing drivers to pass in the name of the
subnode to search. When a driver provides an of_match string for the
regulator the core will attempt to use that to obtain init_data, allowing
the driver to remove all explicit code for DT parsing and simply provide
data instead.

The current code leaks the phandles for the child nodes, this will be
addressed incrementally and makes no practical difference for FDT anyway
as the DT data structures are never freed.

Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/regulator/core.c
drivers/regulator/internal.h
drivers/regulator/of_regulator.c
include/linux/regulator/driver.h