summaryrefslogtreecommitdiff
path: root/include/linux/mfd/tps65090.h
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-10-09 09:48:59 (GMT)
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-10-17 13:21:14 (GMT)
commit24282a1ca33b4a2cdfb907fb7a3ba4d0f6e93311 (patch)
tree2e100956e7d8ea132908fd2c9c92aea965e3c675 /include/linux/mfd/tps65090.h
parentddffeb8c4d0331609ef2581d84de4d763607bd37 (diff)
downloadlinux-fsl-qoriq-24282a1ca33b4a2cdfb907fb7a3ba4d0f6e93311.tar.xz
regulator: tps65090: Register all regulators in single probe call
MFD driver registers the regulator driver once per device and hence it is require to register all regulators in single probe call. Following are details of changes done to achieve this: - Move the regulator enums to mfd header and remove the tps65090-regulator.h as it does not contain more info. - Add max regulator and register all regulators even if there is no regulator init data from platform. - Convert regulator init data to pointer type in platform data. - Add input supply name in regulator desc to provide input supply. - Separate desc information from driver information. - Disable external control bit to have control through register write. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/linux/mfd/tps65090.h')
-rw-r--r--include/linux/mfd/tps65090.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/mfd/tps65090.h b/include/linux/mfd/tps65090.h
index 6bc31d8..d06c633 100644
--- a/include/linux/mfd/tps65090.h
+++ b/include/linux/mfd/tps65090.h
@@ -24,6 +24,23 @@
#include <linux/irq.h>
+/* TPS65090 Regulator ID */
+enum {
+ TPS65090_ID_DCDC1,
+ TPS65090_ID_DCDC2,
+ TPS65090_ID_DCDC3,
+ TPS65090_ID_FET1,
+ TPS65090_ID_FET2,
+ TPS65090_ID_FET3,
+ TPS65090_ID_FET4,
+ TPS65090_ID_FET5,
+ TPS65090_ID_FET6,
+ TPS65090_ID_FET7,
+
+ /* Last entry for maximum ID */
+ TPS65090_ID_MAX,
+};
+
struct tps65090 {
struct mutex lock;
struct device *dev;
@@ -41,10 +58,21 @@ struct tps65090_subdev_info {
void *platform_data;
};
+/*
+ * struct tps65090_regulator_plat_data
+ *
+ * @reg_init_data: The regulator init data.
+ */
+
+struct tps65090_regulator_plat_data {
+ struct regulator_init_data *reg_init_data;
+};
+
struct tps65090_platform_data {
int irq_base;
int num_subdevs;
struct tps65090_subdev_info *subdevs;
+ struct tps65090_regulator_plat_data *reg_pdata[TPS65090_ID_MAX];
};
/*