Lines Matching refs:palmas
324 int palmas_ext_control_req_config(struct palmas *palmas, in palmas_ext_control_req_config() argument
327 struct palmas_pmic_driver_data *pmic_ddata = palmas->pmic_ddata; in palmas_ext_control_req_config()
352 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE, in palmas_ext_control_req_config()
355 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE, in palmas_ext_control_req_config()
358 dev_err(palmas->dev, "Resource reg 0x%02x update failed %d\n", in palmas_ext_control_req_config()
364 ret = palmas_update_bits(palmas, PALMAS_PMU_CONTROL_BASE, in palmas_ext_control_req_config()
367 dev_err(palmas->dev, "POWER_CTRL register update failed %d\n", in palmas_ext_control_req_config()
423 static struct palmas *palmas_dev;
508 struct palmas *palmas; in palmas_i2c_probe() local
531 palmas = devm_kzalloc(&i2c->dev, sizeof(struct palmas), GFP_KERNEL); in palmas_i2c_probe()
532 if (palmas == NULL) in palmas_i2c_probe()
535 i2c_set_clientdata(i2c, palmas); in palmas_i2c_probe()
536 palmas->dev = &i2c->dev; in palmas_i2c_probe()
537 palmas->irq = i2c->irq; in palmas_i2c_probe()
545 palmas->features = *driver_data->features; in palmas_i2c_probe()
549 palmas->i2c_clients[i] = i2c; in palmas_i2c_probe()
551 palmas->i2c_clients[i] = in palmas_i2c_probe()
554 if (IS_ERR(palmas->i2c_clients[i])) { in palmas_i2c_probe()
555 dev_err(palmas->dev, in palmas_i2c_probe()
557 ret = PTR_ERR(palmas->i2c_clients[i]); in palmas_i2c_probe()
560 palmas->i2c_clients[i]->dev.of_node = of_node_get(node); in palmas_i2c_probe()
562 palmas->regmap[i] = devm_regmap_init_i2c(palmas->i2c_clients[i], in palmas_i2c_probe()
564 if (IS_ERR(palmas->regmap[i])) { in palmas_i2c_probe()
565 ret = PTR_ERR(palmas->regmap[i]); in palmas_i2c_probe()
566 dev_err(palmas->dev, in palmas_i2c_probe()
573 if (!palmas->irq) { in palmas_i2c_probe()
574 dev_warn(palmas->dev, "IRQ missing: skipping irq request\n"); in palmas_i2c_probe()
583 ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE, in palmas_i2c_probe()
587 dev_err(palmas->dev, "POLARITY_CTRL update failed: %d\n", ret); in palmas_i2c_probe()
596 regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
598 ret = regmap_add_irq_chip(palmas->regmap[slave], palmas->irq, in palmas_i2c_probe()
600 driver_data->irq_chip, &palmas->irq_data); in palmas_i2c_probe()
611 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
615 ret = regmap_read(palmas->regmap[slave], addr, ®); in palmas_i2c_probe()
621 palmas->gpio_muxed |= PALMAS_GPIO_0_MUXED; in palmas_i2c_probe()
623 palmas->gpio_muxed |= PALMAS_GPIO_1_MUXED; in palmas_i2c_probe()
626 palmas->led_muxed |= PALMAS_LED1_MUXED; in palmas_i2c_probe()
629 palmas->pwm_muxed |= PALMAS_PWM1_MUXED; in palmas_i2c_probe()
631 palmas->gpio_muxed |= PALMAS_GPIO_2_MUXED; in palmas_i2c_probe()
634 palmas->led_muxed |= PALMAS_LED2_MUXED; in palmas_i2c_probe()
637 palmas->pwm_muxed |= PALMAS_PWM2_MUXED; in palmas_i2c_probe()
639 palmas->gpio_muxed |= PALMAS_GPIO_3_MUXED; in palmas_i2c_probe()
646 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
650 ret = regmap_read(palmas->regmap[slave], addr, ®); in palmas_i2c_probe()
656 palmas->gpio_muxed |= PALMAS_GPIO_4_MUXED; in palmas_i2c_probe()
658 palmas->gpio_muxed |= PALMAS_GPIO_5_MUXED; in palmas_i2c_probe()
660 palmas->gpio_muxed |= PALMAS_GPIO_6_MUXED; in palmas_i2c_probe()
662 palmas->gpio_muxed |= PALMAS_GPIO_7_MUXED; in palmas_i2c_probe()
664 dev_info(palmas->dev, "Muxing GPIO %x, PWM %x, LED %x\n", in palmas_i2c_probe()
665 palmas->gpio_muxed, palmas->pwm_muxed, in palmas_i2c_probe()
666 palmas->led_muxed); in palmas_i2c_probe()
673 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
686 palmas_dev = palmas; in palmas_i2c_probe()
694 regmap_del_irq_chip(palmas->irq, palmas->irq_data); in palmas_i2c_probe()
697 if (palmas->i2c_clients[i]) in palmas_i2c_probe()
698 i2c_unregister_device(palmas->i2c_clients[i]); in palmas_i2c_probe()
705 struct palmas *palmas = i2c_get_clientdata(i2c); in palmas_i2c_remove() local
708 regmap_del_irq_chip(palmas->irq, palmas->irq_data); in palmas_i2c_remove()
711 if (palmas->i2c_clients[i]) in palmas_i2c_remove()
712 i2c_unregister_device(palmas->i2c_clients[i]); in palmas_i2c_remove()
715 if (palmas == palmas_dev) { in palmas_i2c_remove()