Lines Matching refs:max77693

3 // max77693.c - mfd core driver for the MAX 77693
21 #include <linux/mfd/max77693.h>
22 #include <linux/mfd/max77693-common.h>
23 #include <linux/mfd/max77693-private.h>
32 { .name = "max77693-pmic", },
34 .name = "max77693-charger",
35 .of_compatible = "maxim,max77693-charger",
38 .name = "max77693-muic",
39 .of_compatible = "maxim,max77693-muic",
42 .name = "max77693-haptic",
43 .of_compatible = "maxim,max77693-haptic",
46 .name = "max77693-led",
47 .of_compatible = "maxim,max77693-led",
66 .name = "max77693-led",
82 .name = "max77693-topsys",
100 .name = "max77693-charger",
137 .name = "max77693-muic",
155 struct max77693_dev *max77693;
159 max77693 = devm_kzalloc(&i2c->dev,
161 if (max77693 == NULL)
164 i2c_set_clientdata(i2c, max77693);
165 max77693->dev = &i2c->dev;
166 max77693->i2c = i2c;
167 max77693->irq = i2c->irq;
168 max77693->type = id->driver_data;
170 max77693->regmap = devm_regmap_init_i2c(i2c, &max77693_regmap_config);
171 if (IS_ERR(max77693->regmap)) {
172 ret = PTR_ERR(max77693->regmap);
173 dev_err(max77693->dev, "failed to allocate register map: %d\n",
178 ret = regmap_read(max77693->regmap, MAX77693_PMIC_REG_PMIC_ID2,
181 dev_err(max77693->dev, "device not found on this channel\n");
184 dev_info(max77693->dev, "device ID: 0x%x\n", reg_data);
186 max77693->i2c_muic = i2c_new_dummy_device(i2c->adapter, I2C_ADDR_MUIC);
187 if (IS_ERR(max77693->i2c_muic)) {
188 dev_err(max77693->dev, "Failed to allocate I2C device for MUIC\n");
189 return PTR_ERR(max77693->i2c_muic);
191 i2c_set_clientdata(max77693->i2c_muic, max77693);
193 max77693->i2c_haptic = i2c_new_dummy_device(i2c->adapter, I2C_ADDR_HAPTIC);
194 if (IS_ERR(max77693->i2c_haptic)) {
195 dev_err(max77693->dev, "Failed to allocate I2C device for Haptic\n");
196 ret = PTR_ERR(max77693->i2c_haptic);
199 i2c_set_clientdata(max77693->i2c_haptic, max77693);
201 max77693->regmap_haptic = devm_regmap_init_i2c(max77693->i2c_haptic,
203 if (IS_ERR(max77693->regmap_haptic)) {
204 ret = PTR_ERR(max77693->regmap_haptic);
205 dev_err(max77693->dev,
212 * instance of MUIC device when irq of max77693 is initialized
213 * before call max77693-muic probe() function.
215 max77693->regmap_muic = devm_regmap_init_i2c(max77693->i2c_muic,
217 if (IS_ERR(max77693->regmap_muic)) {
218 ret = PTR_ERR(max77693->regmap_muic);
219 dev_err(max77693->dev,
224 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
228 &max77693->irq_data_led);
230 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
234 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
238 &max77693->irq_data_topsys);
240 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
244 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
248 &max77693->irq_data_chg);
250 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
254 ret = regmap_add_irq_chip(max77693->regmap_muic, max77693->irq,
258 &max77693->irq_data_muic);
260 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
265 ret = regmap_update_bits(max77693->regmap,
269 dev_err(max77693->dev,
275 pm_runtime_set_active(max77693->dev);
277 ret = mfd_add_devices(max77693->dev, -1, max77693_devs,
285 mfd_remove_devices(max77693->dev);
287 regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
289 regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
291 regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
293 regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
295 i2c_unregister_device(max77693->i2c_haptic);
297 i2c_unregister_device(max77693->i2c_muic);
303 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
305 mfd_remove_devices(max77693->dev);
307 regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
308 regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
309 regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
310 regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
312 i2c_unregister_device(max77693->i2c_muic);
313 i2c_unregister_device(max77693->i2c_haptic);
319 { "max77693", TYPE_MAX77693 },
327 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
330 enable_irq_wake(max77693->irq);
331 disable_irq(max77693->irq);
340 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
343 disable_irq_wake(max77693->irq);
344 enable_irq(max77693->irq);
357 { .compatible = "maxim,max77693" },
365 .name = "max77693",