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",
81 .name = "max77693-topsys",
98 .name = "max77693-charger",
134 .name = "max77693-muic",
151 struct max77693_dev *max77693;
155 max77693 = devm_kzalloc(&i2c->dev,
157 if (max77693 == NULL)
160 i2c_set_clientdata(i2c, max77693);
161 max77693->dev = &i2c->dev;
162 max77693->i2c = i2c;
163 max77693->irq = i2c->irq;
164 max77693->type = id->driver_data;
166 max77693->regmap = devm_regmap_init_i2c(i2c, &max77693_regmap_config);
167 if (IS_ERR(max77693->regmap)) {
168 ret = PTR_ERR(max77693->regmap);
169 dev_err(max77693->dev, "failed to allocate register map: %d\n",
174 ret = regmap_read(max77693->regmap, MAX77693_PMIC_REG_PMIC_ID2,
177 dev_err(max77693->dev, "device not found on this channel\n");
180 dev_info(max77693->dev, "device ID: 0x%x\n", reg_data);
182 max77693->i2c_muic = i2c_new_dummy_device(i2c->adapter, I2C_ADDR_MUIC);
183 if (IS_ERR(max77693->i2c_muic)) {
184 dev_err(max77693->dev, "Failed to allocate I2C device for MUIC\n");
185 return PTR_ERR(max77693->i2c_muic);
187 i2c_set_clientdata(max77693->i2c_muic, max77693);
189 max77693->i2c_haptic = i2c_new_dummy_device(i2c->adapter, I2C_ADDR_HAPTIC);
190 if (IS_ERR(max77693->i2c_haptic)) {
191 dev_err(max77693->dev, "Failed to allocate I2C device for Haptic\n");
192 ret = PTR_ERR(max77693->i2c_haptic);
195 i2c_set_clientdata(max77693->i2c_haptic, max77693);
197 max77693->regmap_haptic = devm_regmap_init_i2c(max77693->i2c_haptic,
199 if (IS_ERR(max77693->regmap_haptic)) {
200 ret = PTR_ERR(max77693->regmap_haptic);
201 dev_err(max77693->dev,
208 * instance of MUIC device when irq of max77693 is initialized
209 * before call max77693-muic probe() function.
211 max77693->regmap_muic = devm_regmap_init_i2c(max77693->i2c_muic,
213 if (IS_ERR(max77693->regmap_muic)) {
214 ret = PTR_ERR(max77693->regmap_muic);
215 dev_err(max77693->dev,
220 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
223 &max77693->irq_data_led);
225 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
229 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
232 &max77693->irq_data_topsys);
234 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
238 ret = regmap_add_irq_chip(max77693->regmap, max77693->irq,
241 &max77693->irq_data_chg);
243 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
247 ret = regmap_add_irq_chip(max77693->regmap_muic, max77693->irq,
250 &max77693->irq_data_muic);
252 dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
257 ret = regmap_update_bits(max77693->regmap,
261 dev_err(max77693->dev,
267 pm_runtime_set_active(max77693->dev);
269 ret = mfd_add_devices(max77693->dev, -1, max77693_devs,
277 mfd_remove_devices(max77693->dev);
279 regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
281 regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
283 regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
285 regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
287 i2c_unregister_device(max77693->i2c_haptic);
289 i2c_unregister_device(max77693->i2c_muic);
295 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
297 mfd_remove_devices(max77693->dev);
299 regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
300 regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
301 regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
302 regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
304 i2c_unregister_device(max77693->i2c_muic);
305 i2c_unregister_device(max77693->i2c_haptic);
309 { "max77693", TYPE_MAX77693 },
317 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
320 enable_irq_wake(max77693->irq);
321 disable_irq(max77693->irq);
330 struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
333 disable_irq_wake(max77693->irq);
334 enable_irq(max77693->irq);
347 { .compatible = "maxim,max77693" },
355 .name = "max77693",