Lines Matching refs:palmas
325 int palmas_ext_control_req_config(struct palmas *palmas, in palmas_ext_control_req_config() argument
328 struct palmas_pmic_driver_data *pmic_ddata = palmas->pmic_ddata; in palmas_ext_control_req_config()
353 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE, in palmas_ext_control_req_config()
356 ret = palmas_update_bits(palmas, PALMAS_RESOURCE_BASE, in palmas_ext_control_req_config()
359 dev_err(palmas->dev, "Resource reg 0x%02x update failed %d\n", in palmas_ext_control_req_config()
365 ret = palmas_update_bits(palmas, PALMAS_PMU_CONTROL_BASE, in palmas_ext_control_req_config()
368 dev_err(palmas->dev, "POWER_CTRL register update failed %d\n", in palmas_ext_control_req_config()
424 static struct palmas *palmas_dev;
486 struct palmas *palmas; in palmas_i2c_probe() local
508 palmas = devm_kzalloc(&i2c->dev, sizeof(struct palmas), GFP_KERNEL); in palmas_i2c_probe()
509 if (palmas == NULL) in palmas_i2c_probe()
512 i2c_set_clientdata(i2c, palmas); in palmas_i2c_probe()
513 palmas->dev = &i2c->dev; in palmas_i2c_probe()
514 palmas->irq = i2c->irq; in palmas_i2c_probe()
517 palmas->features = driver_data->features; in palmas_i2c_probe()
521 palmas->i2c_clients[i] = i2c; in palmas_i2c_probe()
523 palmas->i2c_clients[i] = in palmas_i2c_probe()
526 if (IS_ERR(palmas->i2c_clients[i])) { in palmas_i2c_probe()
527 dev_err(palmas->dev, in palmas_i2c_probe()
529 ret = PTR_ERR(palmas->i2c_clients[i]); in palmas_i2c_probe()
532 palmas->i2c_clients[i]->dev.of_node = of_node_get(node); in palmas_i2c_probe()
534 palmas->regmap[i] = devm_regmap_init_i2c(palmas->i2c_clients[i], in palmas_i2c_probe()
536 if (IS_ERR(palmas->regmap[i])) { in palmas_i2c_probe()
537 ret = PTR_ERR(palmas->regmap[i]); in palmas_i2c_probe()
538 dev_err(palmas->dev, in palmas_i2c_probe()
545 if (!palmas->irq) { in palmas_i2c_probe()
546 dev_warn(palmas->dev, "IRQ missing: skipping irq request\n"); in palmas_i2c_probe()
555 ret = palmas_update_bits(palmas, PALMAS_PU_PD_OD_BASE, in palmas_i2c_probe()
559 dev_err(palmas->dev, "POLARITY_CTRL update failed: %d\n", ret); in palmas_i2c_probe()
568 regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
570 ret = regmap_add_irq_chip(palmas->regmap[slave], palmas->irq, in palmas_i2c_probe()
572 driver_data->irq_chip, &palmas->irq_data); in palmas_i2c_probe()
583 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
587 ret = regmap_read(palmas->regmap[slave], addr, ®); in palmas_i2c_probe()
593 palmas->gpio_muxed |= PALMAS_GPIO_0_MUXED; in palmas_i2c_probe()
595 palmas->gpio_muxed |= PALMAS_GPIO_1_MUXED; in palmas_i2c_probe()
598 palmas->led_muxed |= PALMAS_LED1_MUXED; in palmas_i2c_probe()
601 palmas->pwm_muxed |= PALMAS_PWM1_MUXED; in palmas_i2c_probe()
603 palmas->gpio_muxed |= PALMAS_GPIO_2_MUXED; in palmas_i2c_probe()
606 palmas->led_muxed |= PALMAS_LED2_MUXED; in palmas_i2c_probe()
609 palmas->pwm_muxed |= PALMAS_PWM2_MUXED; in palmas_i2c_probe()
611 palmas->gpio_muxed |= PALMAS_GPIO_3_MUXED; in palmas_i2c_probe()
618 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
622 ret = regmap_read(palmas->regmap[slave], addr, ®); in palmas_i2c_probe()
628 palmas->gpio_muxed |= PALMAS_GPIO_4_MUXED; in palmas_i2c_probe()
630 palmas->gpio_muxed |= PALMAS_GPIO_5_MUXED; in palmas_i2c_probe()
632 palmas->gpio_muxed |= PALMAS_GPIO_6_MUXED; in palmas_i2c_probe()
634 palmas->gpio_muxed |= PALMAS_GPIO_7_MUXED; in palmas_i2c_probe()
636 dev_info(palmas->dev, "Muxing GPIO %x, PWM %x, LED %x\n", in palmas_i2c_probe()
637 palmas->gpio_muxed, palmas->pwm_muxed, in palmas_i2c_probe()
638 palmas->led_muxed); in palmas_i2c_probe()
645 ret = regmap_write(palmas->regmap[slave], addr, reg); in palmas_i2c_probe()
658 palmas_dev = palmas; in palmas_i2c_probe()
666 regmap_del_irq_chip(palmas->irq, palmas->irq_data); in palmas_i2c_probe()
669 if (palmas->i2c_clients[i]) in palmas_i2c_probe()
670 i2c_unregister_device(palmas->i2c_clients[i]); in palmas_i2c_probe()
677 struct palmas *palmas = i2c_get_clientdata(i2c); in palmas_i2c_remove() local
680 regmap_del_irq_chip(palmas->irq, palmas->irq_data); in palmas_i2c_remove()
683 if (palmas->i2c_clients[i]) in palmas_i2c_remove()
684 i2c_unregister_device(palmas->i2c_clients[i]); in palmas_i2c_remove()
687 if (palmas == palmas_dev) { in palmas_i2c_remove()