Loading drivers/mfd/88pm800.c +28 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,13 @@ static struct mfd_cell onkey_devs[] = { }, }; static struct mfd_cell regulator_devs[] = { { .name = "88pm80x-regulator", .id = -1, }, }; static const struct regmap_irq pm800_irqs[] = { /* INT0 */ [PM800_IRQ_ONKEY] = { Loading Loading @@ -339,6 +346,21 @@ static int device_rtc_init(struct pm80x_chip *chip, return 0; } static int device_regulator_init(struct pm80x_chip *chip, struct pm80x_platform_data *pdata) { int ret; ret = mfd_add_devices(chip->dev, 0, ®ulator_devs[0], ARRAY_SIZE(regulator_devs), NULL, 0, NULL); if (ret) { dev_err(chip->dev, "Failed to add regulator subdev\n"); return ret; } return 0; } static int device_irq_init_800(struct pm80x_chip *chip) { struct regmap *map = chip->regmap; Loading Loading @@ -500,6 +522,12 @@ static int device_800_init(struct pm80x_chip *chip, goto out; } ret = device_regulator_init(chip, pdata); if (ret) { dev_err(chip->dev, "Failed to add regulators subdev\n"); goto out; } return 0; out_dev: mfd_remove_devices(chip->dev); Loading include/linux/mfd/88pm80x.h +8 −0 Original line number Diff line number Diff line Loading @@ -307,6 +307,14 @@ struct pm80x_chip { struct pm80x_platform_data { struct pm80x_rtc_pdata *rtc; /* * For the regulator not defined, set regulators[not_defined] to be * NULL. num_regulators are the number of regulators supposed to be * initialized. If all regulators are not defined, set num_regulators * to be 0. */ struct regulator_init_data *regulators[PM800_ID_RG_MAX]; unsigned int num_regulators; int irq_mode; /* Clear interrupt by read/write(0/1) */ int batt_det; /* enable/disable */ int (*plat_config)(struct pm80x_chip *chip, Loading Loading
drivers/mfd/88pm800.c +28 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,13 @@ static struct mfd_cell onkey_devs[] = { }, }; static struct mfd_cell regulator_devs[] = { { .name = "88pm80x-regulator", .id = -1, }, }; static const struct regmap_irq pm800_irqs[] = { /* INT0 */ [PM800_IRQ_ONKEY] = { Loading Loading @@ -339,6 +346,21 @@ static int device_rtc_init(struct pm80x_chip *chip, return 0; } static int device_regulator_init(struct pm80x_chip *chip, struct pm80x_platform_data *pdata) { int ret; ret = mfd_add_devices(chip->dev, 0, ®ulator_devs[0], ARRAY_SIZE(regulator_devs), NULL, 0, NULL); if (ret) { dev_err(chip->dev, "Failed to add regulator subdev\n"); return ret; } return 0; } static int device_irq_init_800(struct pm80x_chip *chip) { struct regmap *map = chip->regmap; Loading Loading @@ -500,6 +522,12 @@ static int device_800_init(struct pm80x_chip *chip, goto out; } ret = device_regulator_init(chip, pdata); if (ret) { dev_err(chip->dev, "Failed to add regulators subdev\n"); goto out; } return 0; out_dev: mfd_remove_devices(chip->dev); Loading
include/linux/mfd/88pm80x.h +8 −0 Original line number Diff line number Diff line Loading @@ -307,6 +307,14 @@ struct pm80x_chip { struct pm80x_platform_data { struct pm80x_rtc_pdata *rtc; /* * For the regulator not defined, set regulators[not_defined] to be * NULL. num_regulators are the number of regulators supposed to be * initialized. If all regulators are not defined, set num_regulators * to be 0. */ struct regulator_init_data *regulators[PM800_ID_RG_MAX]; unsigned int num_regulators; int irq_mode; /* Clear interrupt by read/write(0/1) */ int batt_det; /* enable/disable */ int (*plat_config)(struct pm80x_chip *chip, Loading