Lines Matching refs:axp20x

609 static int axp20x_match_device(struct axp20x_dev *axp20x, struct device *dev)  in axp20x_match_device()  argument
620 axp20x->variant = (long) of_id->data; in axp20x_match_device()
627 axp20x->variant = (long) acpi_id->driver_data; in axp20x_match_device()
630 switch (axp20x->variant) { in axp20x_match_device()
632 axp20x->nr_cells = ARRAY_SIZE(axp152_cells); in axp20x_match_device()
633 axp20x->cells = axp152_cells; in axp20x_match_device()
634 axp20x->regmap_cfg = &axp152_regmap_config; in axp20x_match_device()
635 axp20x->regmap_irq_chip = &axp152_regmap_irq_chip; in axp20x_match_device()
639 axp20x->nr_cells = ARRAY_SIZE(axp20x_cells); in axp20x_match_device()
640 axp20x->cells = axp20x_cells; in axp20x_match_device()
641 axp20x->regmap_cfg = &axp20x_regmap_config; in axp20x_match_device()
642 axp20x->regmap_irq_chip = &axp20x_regmap_irq_chip; in axp20x_match_device()
645 axp20x->nr_cells = ARRAY_SIZE(axp22x_cells); in axp20x_match_device()
646 axp20x->cells = axp22x_cells; in axp20x_match_device()
647 axp20x->regmap_cfg = &axp22x_regmap_config; in axp20x_match_device()
648 axp20x->regmap_irq_chip = &axp22x_regmap_irq_chip; in axp20x_match_device()
651 axp20x->cells = axp288_cells; in axp20x_match_device()
652 axp20x->nr_cells = ARRAY_SIZE(axp288_cells); in axp20x_match_device()
653 axp20x->regmap_cfg = &axp288_regmap_config; in axp20x_match_device()
654 axp20x->regmap_irq_chip = &axp288_regmap_irq_chip; in axp20x_match_device()
657 dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant); in axp20x_match_device()
661 axp20x_model_names[axp20x->variant]); in axp20x_match_device()
669 struct axp20x_dev *axp20x; in axp20x_i2c_probe() local
672 axp20x = devm_kzalloc(&i2c->dev, sizeof(*axp20x), GFP_KERNEL); in axp20x_i2c_probe()
673 if (!axp20x) in axp20x_i2c_probe()
676 ret = axp20x_match_device(axp20x, &i2c->dev); in axp20x_i2c_probe()
680 axp20x->i2c_client = i2c; in axp20x_i2c_probe()
681 axp20x->dev = &i2c->dev; in axp20x_i2c_probe()
682 dev_set_drvdata(axp20x->dev, axp20x); in axp20x_i2c_probe()
684 axp20x->regmap = devm_regmap_init_i2c(i2c, axp20x->regmap_cfg); in axp20x_i2c_probe()
685 if (IS_ERR(axp20x->regmap)) { in axp20x_i2c_probe()
686 ret = PTR_ERR(axp20x->regmap); in axp20x_i2c_probe()
691 ret = regmap_add_irq_chip(axp20x->regmap, i2c->irq, in axp20x_i2c_probe()
693 axp20x->regmap_irq_chip, in axp20x_i2c_probe()
694 &axp20x->regmap_irqc); in axp20x_i2c_probe()
700 ret = mfd_add_devices(axp20x->dev, -1, axp20x->cells, in axp20x_i2c_probe()
701 axp20x->nr_cells, NULL, 0, NULL); in axp20x_i2c_probe()
705 regmap_del_irq_chip(i2c->irq, axp20x->regmap_irqc); in axp20x_i2c_probe()
710 axp20x_pm_power_off = axp20x; in axp20x_i2c_probe()
721 struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); in axp20x_i2c_remove() local
723 if (axp20x == axp20x_pm_power_off) { in axp20x_i2c_remove()
728 mfd_remove_devices(axp20x->dev); in axp20x_i2c_remove()
729 regmap_del_irq_chip(axp20x->i2c_client->irq, axp20x->regmap_irqc); in axp20x_i2c_remove()