diff options
author | Richard Fitzgerald <rf@opensource.wolfsonmicro.com> | 2017-04-18 06:43:49 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-04-25 11:36:20 -0400 |
commit | 22161f3eb65dc29434325736c4d780908fe3bf6a (patch) | |
tree | 21a3bb7aa75928634a442739ad1ee606ec2d6433 | |
parent | 7e6425968bf742b9772aa5bae1250158c9312e31 (diff) |
regulator: arizona-micsupp: Move pdata into a separate structure
In preparation for sharing this driver with Madera, move the pdata
for the micsupp regulator out of struct arizona_pdata into a dedicated
pdata struct for this driver. As a result the code in
arizona_micsupp_of_get_pdata() can be made independent of struct arizona.
This patch also updates the definition of struct arizona_pdata and
the use of this pdata in mach-crag6410-module.c
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | MAINTAINERS | 1 | ||||
-rw-r--r-- | drivers/regulator/arizona-micsupp.c | 21 | ||||
-rw-r--r-- | include/linux/mfd/arizona/pdata.h | 3 | ||||
-rw-r--r-- | include/linux/regulator/arizona-micsupp.h | 21 |
4 files changed, 35 insertions, 11 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index c35e0cea7831..6ed8ef18e7b6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -13623,6 +13623,7 @@ F: include/linux/mfd/arizona/ | |||
13623 | F: include/linux/mfd/wm831x/ | 13623 | F: include/linux/mfd/wm831x/ |
13624 | F: include/linux/mfd/wm8350/ | 13624 | F: include/linux/mfd/wm8350/ |
13625 | F: include/linux/mfd/wm8400* | 13625 | F: include/linux/mfd/wm8400* |
13626 | F: include/linux/regulator/arizona* | ||
13626 | F: include/linux/wm97xx.h | 13627 | F: include/linux/wm97xx.h |
13627 | F: include/sound/wm????.h | 13628 | F: include/sound/wm????.h |
13628 | F: sound/soc/codecs/arizona.? | 13629 | F: sound/soc/codecs/arizona.? |
diff --git a/drivers/regulator/arizona-micsupp.c b/drivers/regulator/arizona-micsupp.c index 5e38861e71d8..5f8b5a713311 100644 --- a/drivers/regulator/arizona-micsupp.c +++ b/drivers/regulator/arizona-micsupp.c | |||
@@ -30,6 +30,8 @@ | |||
30 | #include <linux/mfd/arizona/pdata.h> | 30 | #include <linux/mfd/arizona/pdata.h> |
31 | #include <linux/mfd/arizona/registers.h> | 31 | #include <linux/mfd/arizona/registers.h> |
32 | 32 | ||
33 | #include <linux/regulator/arizona-micsupp.h> | ||
34 | |||
33 | struct arizona_micsupp { | 35 | struct arizona_micsupp { |
34 | struct regulator_dev *regulator; | 36 | struct regulator_dev *regulator; |
35 | struct arizona *arizona; | 37 | struct arizona *arizona; |
@@ -199,28 +201,26 @@ static const struct regulator_init_data arizona_micsupp_ext_default = { | |||
199 | .num_consumer_supplies = 1, | 201 | .num_consumer_supplies = 1, |
200 | }; | 202 | }; |
201 | 203 | ||
202 | static int arizona_micsupp_of_get_pdata(struct device *dev, | 204 | static int arizona_micsupp_of_get_pdata(struct arizona_micsupp_pdata *pdata, |
203 | struct arizona *arizona, | ||
204 | struct regulator_config *config, | 205 | struct regulator_config *config, |
205 | const struct regulator_desc *desc) | 206 | const struct regulator_desc *desc) |
206 | { | 207 | { |
207 | struct arizona_pdata *pdata = &arizona->pdata; | ||
208 | struct arizona_micsupp *micsupp = config->driver_data; | 208 | struct arizona_micsupp *micsupp = config->driver_data; |
209 | struct device_node *np; | 209 | struct device_node *np; |
210 | struct regulator_init_data *init_data; | 210 | struct regulator_init_data *init_data; |
211 | 211 | ||
212 | np = of_get_child_by_name(arizona->dev->of_node, "micvdd"); | 212 | np = of_get_child_by_name(config->dev->of_node, "micvdd"); |
213 | 213 | ||
214 | if (np) { | 214 | if (np) { |
215 | config->of_node = np; | 215 | config->of_node = np; |
216 | 216 | ||
217 | init_data = of_get_regulator_init_data(dev, np, desc); | 217 | init_data = of_get_regulator_init_data(config->dev, np, desc); |
218 | 218 | ||
219 | if (init_data) { | 219 | if (init_data) { |
220 | init_data->consumer_supplies = &micsupp->supply; | 220 | init_data->consumer_supplies = &micsupp->supply; |
221 | init_data->num_consumer_supplies = 1; | 221 | init_data->num_consumer_supplies = 1; |
222 | 222 | ||
223 | pdata->micvdd = init_data; | 223 | pdata->init_data = init_data; |
224 | } | 224 | } |
225 | } | 225 | } |
226 | 226 | ||
@@ -232,6 +232,7 @@ static int arizona_micsupp_probe(struct platform_device *pdev) | |||
232 | struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); | 232 | struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); |
233 | const struct regulator_desc *desc; | 233 | const struct regulator_desc *desc; |
234 | struct regulator_config config = { }; | 234 | struct regulator_config config = { }; |
235 | struct arizona_micsupp_pdata *pdata = &arizona->pdata.micvdd; | ||
235 | struct arizona_micsupp *micsupp; | 236 | struct arizona_micsupp *micsupp; |
236 | int ret; | 237 | int ret; |
237 | 238 | ||
@@ -269,15 +270,15 @@ static int arizona_micsupp_probe(struct platform_device *pdev) | |||
269 | 270 | ||
270 | if (IS_ENABLED(CONFIG_OF)) { | 271 | if (IS_ENABLED(CONFIG_OF)) { |
271 | if (!dev_get_platdata(arizona->dev)) { | 272 | if (!dev_get_platdata(arizona->dev)) { |
272 | ret = arizona_micsupp_of_get_pdata(&pdev->dev, arizona, | 273 | ret = arizona_micsupp_of_get_pdata(pdata, &config, |
273 | &config, desc); | 274 | desc); |
274 | if (ret < 0) | 275 | if (ret < 0) |
275 | return ret; | 276 | return ret; |
276 | } | 277 | } |
277 | } | 278 | } |
278 | 279 | ||
279 | if (arizona->pdata.micvdd) | 280 | if (pdata->init_data) |
280 | config.init_data = arizona->pdata.micvdd; | 281 | config.init_data = pdata->init_data; |
281 | else | 282 | else |
282 | config.init_data = &micsupp->init_data; | 283 | config.init_data = &micsupp->init_data; |
283 | 284 | ||
diff --git a/include/linux/mfd/arizona/pdata.h b/include/linux/mfd/arizona/pdata.h index 64faeeff698c..43e875f9850c 100644 --- a/include/linux/mfd/arizona/pdata.h +++ b/include/linux/mfd/arizona/pdata.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #define _ARIZONA_PDATA_H | 12 | #define _ARIZONA_PDATA_H |
13 | 13 | ||
14 | #include <dt-bindings/mfd/arizona.h> | 14 | #include <dt-bindings/mfd/arizona.h> |
15 | #include <linux/regulator/arizona-micsupp.h> | ||
15 | 16 | ||
16 | #define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */ | 17 | #define ARIZONA_GPN_DIR_MASK 0x8000 /* GPN_DIR */ |
17 | #define ARIZONA_GPN_DIR_SHIFT 15 /* GPN_DIR */ | 18 | #define ARIZONA_GPN_DIR_SHIFT 15 /* GPN_DIR */ |
@@ -79,7 +80,7 @@ struct arizona_pdata { | |||
79 | int ldoena; /** GPIO controlling LODENA, if any */ | 80 | int ldoena; /** GPIO controlling LODENA, if any */ |
80 | 81 | ||
81 | /** Regulator configuration for MICVDD */ | 82 | /** Regulator configuration for MICVDD */ |
82 | struct regulator_init_data *micvdd; | 83 | struct arizona_micsupp_pdata micvdd; |
83 | 84 | ||
84 | /** Regulator configuration for LDO1 */ | 85 | /** Regulator configuration for LDO1 */ |
85 | struct regulator_init_data *ldo1; | 86 | struct regulator_init_data *ldo1; |
diff --git a/include/linux/regulator/arizona-micsupp.h b/include/linux/regulator/arizona-micsupp.h new file mode 100644 index 000000000000..616842619c00 --- /dev/null +++ b/include/linux/regulator/arizona-micsupp.h | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * Platform data for Arizona micsupp regulator | ||
3 | * | ||
4 | * Copyright 2017 Cirrus Logic | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | #ifndef ARIZONA_MICSUPP_H | ||
12 | #define ARIZONA_MICSUPP_H | ||
13 | |||
14 | struct regulator_init_data; | ||
15 | |||
16 | struct arizona_micsupp_pdata { | ||
17 | /** Regulator configuration for micsupp */ | ||
18 | const struct regulator_init_data *init_data; | ||
19 | }; | ||
20 | |||
21 | #endif | ||