diff options
author | Mark Brown <broonie@kernel.org> | 2014-09-10 07:18:56 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-09-10 07:18:56 -0400 |
commit | 93a127b11ac034b160ccdd32e27d791b98f52cf5 (patch) | |
tree | df1b3afee7ca2ac7992b0a5b0ef429a8665cee5b | |
parent | 3f7c69637511a39f4400dc8312bbcecaa592ab61 (diff) |
regulator: isl9305: Convert to new style DT parsing
This removes some code and replaces it with data.
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | drivers/regulator/isl9305.c | 62 |
1 files changed, 11 insertions, 51 deletions
diff --git a/drivers/regulator/isl9305.c b/drivers/regulator/isl9305.c index b0d12d186b68..92fefd98da58 100644 --- a/drivers/regulator/isl9305.c +++ b/drivers/regulator/isl9305.c | |||
@@ -73,6 +73,8 @@ static const struct regulator_ops isl9305_ops = { | |||
73 | static const struct regulator_desc isl9305_regulators[] = { | 73 | static const struct regulator_desc isl9305_regulators[] = { |
74 | [ISL9305_DCD1] = { | 74 | [ISL9305_DCD1] = { |
75 | .name = "DCD1", | 75 | .name = "DCD1", |
76 | .of_match = of_match_ptr("dcd1"), | ||
77 | .regulators_node = of_match_ptr("regulators"), | ||
76 | .n_voltages = 0x70, | 78 | .n_voltages = 0x70, |
77 | .min_uV = 825000, | 79 | .min_uV = 825000, |
78 | .uV_step = 25000, | 80 | .uV_step = 25000, |
@@ -85,6 +87,8 @@ static const struct regulator_desc isl9305_regulators[] = { | |||
85 | }, | 87 | }, |
86 | [ISL9305_DCD2] = { | 88 | [ISL9305_DCD2] = { |
87 | .name = "DCD2", | 89 | .name = "DCD2", |
90 | .of_match = of_match_ptr("dcd2"), | ||
91 | .regulators_node = of_match_ptr("regulators"), | ||
88 | .n_voltages = 0x70, | 92 | .n_voltages = 0x70, |
89 | .min_uV = 825000, | 93 | .min_uV = 825000, |
90 | .uV_step = 25000, | 94 | .uV_step = 25000, |
@@ -97,6 +101,8 @@ static const struct regulator_desc isl9305_regulators[] = { | |||
97 | }, | 101 | }, |
98 | [ISL9305_LDO1] = { | 102 | [ISL9305_LDO1] = { |
99 | .name = "LDO1", | 103 | .name = "LDO1", |
104 | .of_match = of_match_ptr("ldo1"), | ||
105 | .regulators_node = of_match_ptr("regulators"), | ||
100 | .n_voltages = 0x37, | 106 | .n_voltages = 0x37, |
101 | .min_uV = 900000, | 107 | .min_uV = 900000, |
102 | .uV_step = 50000, | 108 | .uV_step = 50000, |
@@ -109,6 +115,8 @@ static const struct regulator_desc isl9305_regulators[] = { | |||
109 | }, | 115 | }, |
110 | [ISL9305_LDO2] = { | 116 | [ISL9305_LDO2] = { |
111 | .name = "LDO2", | 117 | .name = "LDO2", |
118 | .of_match = of_match_ptr("ldo2"), | ||
119 | .regulators_node = of_match_ptr("regulators"), | ||
112 | .n_voltages = 0x37, | 120 | .n_voltages = 0x37, |
113 | .min_uV = 900000, | 121 | .min_uV = 900000, |
114 | .uV_step = 50000, | 122 | .uV_step = 50000, |
@@ -121,45 +129,6 @@ static const struct regulator_desc isl9305_regulators[] = { | |||
121 | }, | 129 | }, |
122 | }; | 130 | }; |
123 | 131 | ||
124 | #ifdef CONFIG_OF | ||
125 | static struct of_regulator_match isl9305_reg_matches[] = { | ||
126 | [ISL9305_DCD1] = { .name = "dcd1" }, | ||
127 | [ISL9305_DCD2] = { .name = "dcd2" }, | ||
128 | [ISL9305_LDO1] = { .name = "ldo1" }, | ||
129 | [ISL9305_LDO2] = { .name = "ldo2" }, | ||
130 | }; | ||
131 | |||
132 | static struct of_regulator_match *isl9305_parse_dt(struct i2c_client *i2c) | ||
133 | { | ||
134 | struct device_node *node = i2c->dev.of_node; | ||
135 | struct of_regulator_match *matches; | ||
136 | struct device_node *regs; | ||
137 | int count; | ||
138 | |||
139 | regs = of_get_child_by_name(node, "regulators"); | ||
140 | if (!regs) | ||
141 | return NULL; | ||
142 | |||
143 | matches = devm_kmemdup(&i2c->dev, isl9305_reg_matches, | ||
144 | sizeof(isl9305_reg_matches), GFP_KERNEL); | ||
145 | if (!matches) | ||
146 | return NULL; | ||
147 | |||
148 | count = of_regulator_match(&i2c->dev, regs, matches, | ||
149 | ARRAY_SIZE(isl9305_reg_matches)); | ||
150 | of_node_put(regs); | ||
151 | if ((count < 0) || (count > ARRAY_SIZE(isl9305_reg_matches))) | ||
152 | return NULL; | ||
153 | |||
154 | return matches; | ||
155 | } | ||
156 | #else | ||
157 | static struct of_regulator_match *isl9305_parse_dt(struct i2c_client *i2c) | ||
158 | { | ||
159 | return NULL; | ||
160 | } | ||
161 | #endif | ||
162 | |||
163 | static const struct regmap_config isl9305_regmap = { | 132 | static const struct regmap_config isl9305_regmap = { |
164 | .reg_bits = 8, | 133 | .reg_bits = 8, |
165 | .val_bits = 8, | 134 | .val_bits = 8, |
@@ -173,13 +142,10 @@ static int isl9305_i2c_probe(struct i2c_client *i2c, | |||
173 | { | 142 | { |
174 | struct regulator_config config = { }; | 143 | struct regulator_config config = { }; |
175 | struct isl9305_pdata *pdata = i2c->dev.platform_data; | 144 | struct isl9305_pdata *pdata = i2c->dev.platform_data; |
176 | struct of_regulator_match *of_matches; | ||
177 | struct regulator_dev *rdev; | 145 | struct regulator_dev *rdev; |
178 | struct regmap *regmap; | 146 | struct regmap *regmap; |
179 | int i, ret; | 147 | int i, ret; |
180 | 148 | ||
181 | of_matches = isl9305_parse_dt(i2c); | ||
182 | |||
183 | regmap = devm_regmap_init_i2c(i2c, &isl9305_regmap); | 149 | regmap = devm_regmap_init_i2c(i2c, &isl9305_regmap); |
184 | if (IS_ERR(regmap)) { | 150 | if (IS_ERR(regmap)) { |
185 | ret = PTR_ERR(regmap); | 151 | ret = PTR_ERR(regmap); |
@@ -190,16 +156,10 @@ static int isl9305_i2c_probe(struct i2c_client *i2c, | |||
190 | config.dev = &i2c->dev; | 156 | config.dev = &i2c->dev; |
191 | 157 | ||
192 | for (i = 0; i < ARRAY_SIZE(isl9305_regulators); i++) { | 158 | for (i = 0; i < ARRAY_SIZE(isl9305_regulators); i++) { |
193 | config.of_node = NULL; | 159 | if (pdata) |
194 | config.init_data = NULL; | ||
195 | |||
196 | if (of_matches) { | ||
197 | config.init_data = of_matches[i].init_data; | ||
198 | config.of_node = of_matches[i].of_node; | ||
199 | } | ||
200 | |||
201 | if (!config.init_data && pdata) | ||
202 | config.init_data = pdata->init_data[i]; | 160 | config.init_data = pdata->init_data[i]; |
161 | else | ||
162 | config.init_data = NULL; | ||
203 | 163 | ||
204 | rdev = devm_regulator_register(&i2c->dev, | 164 | rdev = devm_regulator_register(&i2c->dev, |
205 | &isl9305_regulators[i], | 165 | &isl9305_regulators[i], |