Lines Matching refs:axp20x
400 static int axp20x_match_device(struct axp20x_dev *axp20x, struct device *dev) in axp20x_match_device() argument
411 axp20x->variant = (long) of_id->data; in axp20x_match_device()
418 axp20x->variant = (long) acpi_id->driver_data; in axp20x_match_device()
421 switch (axp20x->variant) { in axp20x_match_device()
424 axp20x->nr_cells = ARRAY_SIZE(axp20x_cells); in axp20x_match_device()
425 axp20x->cells = axp20x_cells; in axp20x_match_device()
426 axp20x->regmap_cfg = &axp20x_regmap_config; in axp20x_match_device()
427 axp20x->regmap_irq_chip = &axp20x_regmap_irq_chip; in axp20x_match_device()
430 axp20x->cells = axp288_cells; in axp20x_match_device()
431 axp20x->nr_cells = ARRAY_SIZE(axp288_cells); in axp20x_match_device()
432 axp20x->regmap_cfg = &axp288_regmap_config; in axp20x_match_device()
433 axp20x->regmap_irq_chip = &axp288_regmap_irq_chip; in axp20x_match_device()
436 dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant); in axp20x_match_device()
440 axp20x_model_names[axp20x->variant]); in axp20x_match_device()
448 struct axp20x_dev *axp20x; in axp20x_i2c_probe() local
451 axp20x = devm_kzalloc(&i2c->dev, sizeof(*axp20x), GFP_KERNEL); in axp20x_i2c_probe()
452 if (!axp20x) in axp20x_i2c_probe()
455 ret = axp20x_match_device(axp20x, &i2c->dev); in axp20x_i2c_probe()
459 axp20x->i2c_client = i2c; in axp20x_i2c_probe()
460 axp20x->dev = &i2c->dev; in axp20x_i2c_probe()
461 dev_set_drvdata(axp20x->dev, axp20x); in axp20x_i2c_probe()
463 axp20x->regmap = devm_regmap_init_i2c(i2c, axp20x->regmap_cfg); in axp20x_i2c_probe()
464 if (IS_ERR(axp20x->regmap)) { in axp20x_i2c_probe()
465 ret = PTR_ERR(axp20x->regmap); in axp20x_i2c_probe()
470 ret = regmap_add_irq_chip(axp20x->regmap, i2c->irq, in axp20x_i2c_probe()
472 axp20x->regmap_irq_chip, in axp20x_i2c_probe()
473 &axp20x->regmap_irqc); in axp20x_i2c_probe()
479 ret = mfd_add_devices(axp20x->dev, -1, axp20x->cells, in axp20x_i2c_probe()
480 axp20x->nr_cells, NULL, 0, NULL); in axp20x_i2c_probe()
484 regmap_del_irq_chip(i2c->irq, axp20x->regmap_irqc); in axp20x_i2c_probe()
489 axp20x_pm_power_off = axp20x; in axp20x_i2c_probe()
500 struct axp20x_dev *axp20x = i2c_get_clientdata(i2c); in axp20x_i2c_remove() local
502 if (axp20x == axp20x_pm_power_off) { in axp20x_i2c_remove()
507 mfd_remove_devices(axp20x->dev); in axp20x_i2c_remove()
508 regmap_del_irq_chip(axp20x->i2c_client->irq, axp20x->regmap_irqc); in axp20x_i2c_remove()