Lines Matching refs:max8952

3  * max8952.c - Voltage and current regulation for the Maxim 8952
15 #include <linux/regulator/max8952.h>
44 static int max8952_read_reg(struct max8952_data *max8952, u8 reg)
46 int ret = i2c_smbus_read_byte_data(max8952->client, reg);
54 static int max8952_write_reg(struct max8952_data *max8952,
57 return i2c_smbus_write_byte_data(max8952->client, reg, value);
63 struct max8952_data *max8952 = rdev_get_drvdata(rdev);
68 return (max8952->pdata->dvs_mode[selector] * 10 + 770) * 1000;
73 struct max8952_data *max8952 = rdev_get_drvdata(rdev);
76 if (max8952->vid0)
78 if (max8952->vid1)
87 struct max8952_data *max8952 = rdev_get_drvdata(rdev);
89 if (!max8952->vid0_gpiod || !max8952->vid1_gpiod) {
94 max8952->vid0 = selector & 0x1;
95 max8952->vid1 = (selector >> 1) & 0x1;
96 gpiod_set_value(max8952->vid0_gpiod, max8952->vid0);
97 gpiod_set_value(max8952->vid1_gpiod, max8952->vid1);
119 { .compatible = "maxim,max8952" },
135 if (of_property_read_u32(np, "max8952,default-mode", &pd->default_mode))
138 ret = of_property_read_u32_array(np, "max8952,dvs-mode-microvolt",
141 dev_err(dev, "max8952,dvs-mode-microvolt property not specified");
153 if (of_property_read_u32(np, "max8952,sync-freq", &pd->sync_freq))
154 dev_warn(dev, "max8952,sync-freq property not specified, defaulting to 26MHz\n");
156 if (of_property_read_u32(np, "max8952,ramp-speed", &pd->ramp_speed))
157 dev_warn(dev, "max8952,ramp-speed property not specified, defaulting to 32mV/us\n");
179 struct max8952_data *max8952;
197 max8952 = devm_kzalloc(&client->dev, sizeof(struct max8952_data),
199 if (!max8952)
202 max8952->client = client;
203 max8952->pdata = pdata;
207 config.driver_data = max8952;
220 "max8952,en",
234 max8952->vid0 = pdata->default_mode & 0x1;
235 max8952->vid1 = (pdata->default_mode >> 1) & 0x1;
238 gflags = max8952->vid0 ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
239 max8952->vid0_gpiod = devm_gpiod_get_index_optional(&client->dev,
240 "max8952,vid",
242 if (IS_ERR(max8952->vid0_gpiod))
243 return PTR_ERR(max8952->vid0_gpiod);
244 gflags = max8952->vid1 ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW;
245 max8952->vid1_gpiod = devm_gpiod_get_index_optional(&client->dev,
246 "max8952,vid",
248 if (IS_ERR(max8952->vid1_gpiod))
249 return PTR_ERR(max8952->vid1_gpiod);
252 if (!max8952->vid0_gpiod || !max8952->vid1_gpiod) {
255 max8952->vid0 = 0;
256 max8952->vid1 = 0;
258 if (max8952->vid0_gpiod)
259 gpiod_set_value(max8952->vid0_gpiod, 0);
260 if (max8952->vid1_gpiod)
261 gpiod_set_value(max8952->vid1_gpiod, 0);
264 max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60);
277 max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x0);
280 max8952_write_reg(max8952, MAX8952_REG_MODE0,
281 (max8952_read_reg(max8952,
284 max8952_write_reg(max8952, MAX8952_REG_MODE1,
285 (max8952_read_reg(max8952,
288 max8952_write_reg(max8952, MAX8952_REG_MODE2,
289 (max8952_read_reg(max8952,
292 max8952_write_reg(max8952, MAX8952_REG_MODE3,
293 (max8952_read_reg(max8952,
297 max8952_write_reg(max8952, MAX8952_REG_SYNC,
298 (max8952_read_reg(max8952, MAX8952_REG_SYNC) & 0x3F) |
300 max8952_write_reg(max8952, MAX8952_REG_RAMP,
301 (max8952_read_reg(max8952, MAX8952_REG_RAMP) & 0x1F) |
304 i2c_set_clientdata(client, max8952);
310 { "max8952", 0 },
318 .name = "max8952",