Lines Matching refs:chip

132 	struct da903x_chip *chip = dev_get_drvdata(dev);  in da903x_register_notifier()  local
134 chip->ops->unmask_events(chip, events); in da903x_register_notifier()
135 return blocking_notifier_chain_register(&chip->notifier_list, nb); in da903x_register_notifier()
142 struct da903x_chip *chip = dev_get_drvdata(dev); in da903x_unregister_notifier() local
144 chip->ops->mask_events(chip, events); in da903x_unregister_notifier()
145 return blocking_notifier_chain_unregister(&chip->notifier_list, nb); in da903x_unregister_notifier()
175 struct da903x_chip *chip = dev_get_drvdata(dev); in da903x_set_bits() local
179 mutex_lock(&chip->lock); in da903x_set_bits()
181 ret = __da903x_read(chip->client, reg, &reg_val); in da903x_set_bits()
187 ret = __da903x_write(chip->client, reg, reg_val); in da903x_set_bits()
190 mutex_unlock(&chip->lock); in da903x_set_bits()
197 struct da903x_chip *chip = dev_get_drvdata(dev); in da903x_clr_bits() local
201 mutex_lock(&chip->lock); in da903x_clr_bits()
203 ret = __da903x_read(chip->client, reg, &reg_val); in da903x_clr_bits()
209 ret = __da903x_write(chip->client, reg, reg_val); in da903x_clr_bits()
212 mutex_unlock(&chip->lock); in da903x_clr_bits()
219 struct da903x_chip *chip = dev_get_drvdata(dev); in da903x_update() local
223 mutex_lock(&chip->lock); in da903x_update()
225 ret = __da903x_read(chip->client, reg, &reg_val); in da903x_update()
231 ret = __da903x_write(chip->client, reg, reg_val); in da903x_update()
234 mutex_unlock(&chip->lock); in da903x_update()
241 struct da903x_chip *chip = dev_get_drvdata(dev); in da903x_query_status() local
244 chip->ops->read_status(chip, &status); in da903x_query_status()
249 static int da9030_init_chip(struct da903x_chip *chip) in da9030_init_chip() argument
254 err = __da903x_read(chip->client, DA9030_CHIP_ID, &chip_id); in da9030_init_chip()
258 err = __da903x_write(chip->client, DA9030_SYS_CTRL_A, 0xE8); in da9030_init_chip()
262 dev_info(chip->dev, "DA9030 (CHIP ID: 0x%02x) detected\n", chip_id); in da9030_init_chip()
266 static int da9030_unmask_events(struct da903x_chip *chip, unsigned int events) in da9030_unmask_events() argument
270 chip->events_mask &= ~events; in da9030_unmask_events()
272 v[0] = (chip->events_mask & 0xff); in da9030_unmask_events()
273 v[1] = (chip->events_mask >> 8) & 0xff; in da9030_unmask_events()
274 v[2] = (chip->events_mask >> 16) & 0xff; in da9030_unmask_events()
276 return __da903x_writes(chip->client, DA9030_IRQ_MASK_A, 3, v); in da9030_unmask_events()
279 static int da9030_mask_events(struct da903x_chip *chip, unsigned int events) in da9030_mask_events() argument
283 chip->events_mask |= events; in da9030_mask_events()
285 v[0] = (chip->events_mask & 0xff); in da9030_mask_events()
286 v[1] = (chip->events_mask >> 8) & 0xff; in da9030_mask_events()
287 v[2] = (chip->events_mask >> 16) & 0xff; in da9030_mask_events()
289 return __da903x_writes(chip->client, DA9030_IRQ_MASK_A, 3, v); in da9030_mask_events()
292 static int da9030_read_events(struct da903x_chip *chip, unsigned int *events) in da9030_read_events() argument
297 ret = __da903x_reads(chip->client, DA9030_EVENT_A, 3, v); in da9030_read_events()
305 static int da9030_read_status(struct da903x_chip *chip, unsigned int *status) in da9030_read_status() argument
307 return __da903x_read(chip->client, DA9030_STATUS, (uint8_t *)status); in da9030_read_status()
310 static int da9034_init_chip(struct da903x_chip *chip) in da9034_init_chip() argument
315 err = __da903x_read(chip->client, DA9034_CHIP_ID, &chip_id); in da9034_init_chip()
319 err = __da903x_write(chip->client, DA9034_SYS_CTRL_A, 0xE8); in da9034_init_chip()
324 __da903x_write(chip->client, 0x10, 0x07); in da9034_init_chip()
325 __da903x_write(chip->client, 0x11, 0xff); in da9034_init_chip()
326 __da903x_write(chip->client, 0x12, 0xff); in da9034_init_chip()
329 __da903x_write(chip->client, DA9034_SYS_CTRL_B, 0x20); in da9034_init_chip()
330 __da903x_write(chip->client, DA9034_SYS_CTRL_A, 0x60); in da9034_init_chip()
333 __da903x_write(chip->client, 0x90, 0x01); in da9034_init_chip()
334 __da903x_write(chip->client, 0xB0, 0x08); in da9034_init_chip()
337 __da903x_write(chip->client, 0x20, 0x00); in da9034_init_chip()
339 dev_info(chip->dev, "DA9034 (CHIP ID: 0x%02x) detected\n", chip_id); in da9034_init_chip()
343 static int da9034_unmask_events(struct da903x_chip *chip, unsigned int events) in da9034_unmask_events() argument
347 chip->events_mask &= ~events; in da9034_unmask_events()
349 v[0] = (chip->events_mask & 0xff); in da9034_unmask_events()
350 v[1] = (chip->events_mask >> 8) & 0xff; in da9034_unmask_events()
351 v[2] = (chip->events_mask >> 16) & 0xff; in da9034_unmask_events()
352 v[3] = (chip->events_mask >> 24) & 0xff; in da9034_unmask_events()
354 return __da903x_writes(chip->client, DA9034_IRQ_MASK_A, 4, v); in da9034_unmask_events()
357 static int da9034_mask_events(struct da903x_chip *chip, unsigned int events) in da9034_mask_events() argument
361 chip->events_mask |= events; in da9034_mask_events()
363 v[0] = (chip->events_mask & 0xff); in da9034_mask_events()
364 v[1] = (chip->events_mask >> 8) & 0xff; in da9034_mask_events()
365 v[2] = (chip->events_mask >> 16) & 0xff; in da9034_mask_events()
366 v[3] = (chip->events_mask >> 24) & 0xff; in da9034_mask_events()
368 return __da903x_writes(chip->client, DA9034_IRQ_MASK_A, 4, v); in da9034_mask_events()
371 static int da9034_read_events(struct da903x_chip *chip, unsigned int *events) in da9034_read_events() argument
376 ret = __da903x_reads(chip->client, DA9034_EVENT_A, 4, v); in da9034_read_events()
384 static int da9034_read_status(struct da903x_chip *chip, unsigned int *status) in da9034_read_status() argument
389 ret = __da903x_reads(chip->client, DA9034_STATUS_A, 2, v); in da9034_read_status()
399 struct da903x_chip *chip = in da903x_irq_work() local
404 if (chip->ops->read_events(chip, &events)) in da903x_irq_work()
407 events &= ~chip->events_mask; in da903x_irq_work()
412 &chip->notifier_list, events, NULL); in da903x_irq_work()
414 enable_irq(chip->client->irq); in da903x_irq_work()
419 struct da903x_chip *chip = data; in da903x_irq_handler() local
422 (void)schedule_work(&chip->irq_work); in da903x_irq_handler()
457 static int da903x_remove_subdevs(struct da903x_chip *chip) in da903x_remove_subdevs() argument
459 return device_for_each_child(chip->dev, NULL, __remove_subdev); in da903x_remove_subdevs()
462 static int da903x_add_subdevs(struct da903x_chip *chip, in da903x_add_subdevs() argument
478 pdev->dev.parent = chip->dev; in da903x_add_subdevs()
490 da903x_remove_subdevs(chip); in da903x_add_subdevs()
498 struct da903x_chip *chip; in da903x_probe() local
502 chip = devm_kzalloc(&client->dev, sizeof(struct da903x_chip), in da903x_probe()
504 if (chip == NULL) in da903x_probe()
507 chip->client = client; in da903x_probe()
508 chip->dev = &client->dev; in da903x_probe()
509 chip->ops = &da903x_ops[id->driver_data]; in da903x_probe()
511 mutex_init(&chip->lock); in da903x_probe()
512 INIT_WORK(&chip->irq_work, da903x_irq_work); in da903x_probe()
513 BLOCKING_INIT_NOTIFIER_HEAD(&chip->notifier_list); in da903x_probe()
515 i2c_set_clientdata(client, chip); in da903x_probe()
517 ret = chip->ops->init_chip(chip); in da903x_probe()
522 chip->events_mask = 0xffffffff; in da903x_probe()
523 chip->ops->mask_events(chip, chip->events_mask); in da903x_probe()
524 chip->ops->read_events(chip, &tmp); in da903x_probe()
528 "da903x", chip); in da903x_probe()
535 ret = da903x_add_subdevs(chip, pdata); in da903x_probe()
544 struct da903x_chip *chip = i2c_get_clientdata(client); in da903x_remove() local
546 da903x_remove_subdevs(chip); in da903x_remove()