Loading drivers/mfd/rohm-bd71828.c +26 −0 Original line number Diff line number Diff line Loading @@ -4,7 +4,9 @@ // // ROHM BD71828 PMIC driver #include <linux/gpio_keys.h> #include <linux/i2c.h> #include <linux/input.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/irq.h> Loading @@ -15,6 +17,18 @@ #include <linux/regmap.h> #include <linux/types.h> static struct gpio_keys_button button = { .code = KEY_POWER, .gpio = -1, .type = EV_KEY, }; static struct gpio_keys_platform_data bd71828_powerkey_data = { .buttons = &button, .nbuttons = 1, .name = "bd71828-pwrkey", }; static const struct resource rtc_irqs[] = { DEFINE_RES_IRQ_NAMED(BD71828_INT_RTC0, "bd71828-rtc-alm-0"), DEFINE_RES_IRQ_NAMED(BD71828_INT_RTC1, "bd71828-rtc-alm-1"), Loading @@ -35,6 +49,10 @@ static struct mfd_cell bd71828_mfd_cells[] = { .name = "bd71828-rtc", .resources = rtc_irqs, .num_resources = ARRAY_SIZE(rtc_irqs), }, { .name = "gpio-keys", .platform_data = &bd71828_powerkey_data, .pdata_size = sizeof(bd71828_powerkey_data), }, }; Loading Loading @@ -288,6 +306,14 @@ static int bd71828_i2c_probe(struct i2c_client *i2c) dev_dbg(&i2c->dev, "Registered %d IRQs for chip\n", bd71828_irq_chip.num_irqs); ret = regmap_irq_get_virq(irq_data, BD71828_INT_SHORTPUSH); if (ret < 0) { dev_err(&i2c->dev, "Failed to get the power-key IRQ\n"); return ret; } button.irq = ret; ret = devm_mfd_add_devices(&i2c->dev, PLATFORM_DEVID_AUTO, bd71828_mfd_cells, ARRAY_SIZE(bd71828_mfd_cells), NULL, 0, Loading Loading
drivers/mfd/rohm-bd71828.c +26 −0 Original line number Diff line number Diff line Loading @@ -4,7 +4,9 @@ // // ROHM BD71828 PMIC driver #include <linux/gpio_keys.h> #include <linux/i2c.h> #include <linux/input.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/irq.h> Loading @@ -15,6 +17,18 @@ #include <linux/regmap.h> #include <linux/types.h> static struct gpio_keys_button button = { .code = KEY_POWER, .gpio = -1, .type = EV_KEY, }; static struct gpio_keys_platform_data bd71828_powerkey_data = { .buttons = &button, .nbuttons = 1, .name = "bd71828-pwrkey", }; static const struct resource rtc_irqs[] = { DEFINE_RES_IRQ_NAMED(BD71828_INT_RTC0, "bd71828-rtc-alm-0"), DEFINE_RES_IRQ_NAMED(BD71828_INT_RTC1, "bd71828-rtc-alm-1"), Loading @@ -35,6 +49,10 @@ static struct mfd_cell bd71828_mfd_cells[] = { .name = "bd71828-rtc", .resources = rtc_irqs, .num_resources = ARRAY_SIZE(rtc_irqs), }, { .name = "gpio-keys", .platform_data = &bd71828_powerkey_data, .pdata_size = sizeof(bd71828_powerkey_data), }, }; Loading Loading @@ -288,6 +306,14 @@ static int bd71828_i2c_probe(struct i2c_client *i2c) dev_dbg(&i2c->dev, "Registered %d IRQs for chip\n", bd71828_irq_chip.num_irqs); ret = regmap_irq_get_virq(irq_data, BD71828_INT_SHORTPUSH); if (ret < 0) { dev_err(&i2c->dev, "Failed to get the power-key IRQ\n"); return ret; } button.irq = ret; ret = devm_mfd_add_devices(&i2c->dev, PLATFORM_DEVID_AUTO, bd71828_mfd_cells, ARRAY_SIZE(bd71828_mfd_cells), NULL, 0, Loading