Message ID | d7be7969b9fed57e7790811ff90b9a2b4b6478bb.1572606437.git.matti.vaittinen@fi.rohmeurope.com |
---|---|
State | New |
Headers | show |
Series | Support ROHM BD71828 PMIC | expand |
On Fri, 01 Nov 2019, Matti Vaittinen wrote: > Use gpio_keys to send power input-event to user-space when power > button (short) press is detected. > > Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> > --- > > Changes from v2 - No changes > > drivers/mfd/rohm-bd71828.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/mfd/rohm-bd71828.c b/drivers/mfd/rohm-bd71828.c > index b7de79e1fcdb..f77ba1ec3e99 100644 > --- a/drivers/mfd/rohm-bd71828.c > +++ b/drivers/mfd/rohm-bd71828.c > @@ -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> > @@ -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"), > @@ -36,6 +50,10 @@ static struct mfd_cell bd71828_mfd_cells[] = { > .name = "bd70528-rtc", > .resources = rtc_irqs, > .num_resources = ARRAY_SIZE(rtc_irqs), > + }, { > + .name = "gpio-keys", > + .platform_data = &bd71828_powerkey_data, > + .pdata_size = sizeof(bd71828_powerkey_data), > }, > }; > > @@ -288,9 +306,19 @@ static int bd71828_i2c_probe(struct i2c_client *i2c, > dev_err(&i2c->dev, "Failed to add IRQ chip\n"); > return ret; > } > + This should be fixed in the last patch. > 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); > + Remove this empty line. > + if (ret < 0) { > + dev_err(&i2c->dev, "Failed to get the power-key IRQ\n"); > + return ret; > + } > + > + button.irq = ret; > + Once fixed, please apply my: For my own reference: Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
Hello Lee, On Mon, 2019-11-11 at 10:59 +0000, Lee Jones wrote: > On Fri, 01 Nov 2019, Matti Vaittinen wrote: > > > Use gpio_keys to send power input-event to user-space when power > > button (short) press is detected. > > > > Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> > > --- > > > > Changes from v2 - No changes > > > > drivers/mfd/rohm-bd71828.c | 28 ++++++++++++++++++++++++++++ > > 1 file changed, 28 insertions(+) > > > > diff --git a/drivers/mfd/rohm-bd71828.c b/drivers/mfd/rohm- > > bd71828.c > > index b7de79e1fcdb..f77ba1ec3e99 100644 > > --- a/drivers/mfd/rohm-bd71828.c > > +++ b/drivers/mfd/rohm-bd71828.c > > @@ -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> > > @@ -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"), > > @@ -36,6 +50,10 @@ static struct mfd_cell bd71828_mfd_cells[] = { > > .name = "bd70528-rtc", > > .resources = rtc_irqs, > > .num_resources = ARRAY_SIZE(rtc_irqs), > > + }, { > > + .name = "gpio-keys", > > + .platform_data = &bd71828_powerkey_data, > > + .pdata_size = sizeof(bd71828_powerkey_data), > > }, > > }; > > > > @@ -288,9 +306,19 @@ static int bd71828_i2c_probe(struct i2c_client > > *i2c, > > dev_err(&i2c->dev, "Failed to add IRQ chip\n"); > > return ret; > > } > > + > > This should be fixed in the last patch. > > > 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); > > + > > Remove this empty line. > > > + if (ret < 0) { > > + dev_err(&i2c->dev, "Failed to get the power-key > > IRQ\n"); > > + return ret; > > + } > > + > > + button.irq = ret; > > + > > Once fixed, please apply my: > > For my own reference: > Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org> > Thanks for checking this :) I'll apply fixes in patch v4.
diff --git a/drivers/mfd/rohm-bd71828.c b/drivers/mfd/rohm-bd71828.c index b7de79e1fcdb..f77ba1ec3e99 100644 --- a/drivers/mfd/rohm-bd71828.c +++ b/drivers/mfd/rohm-bd71828.c @@ -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> @@ -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"), @@ -36,6 +50,10 @@ static struct mfd_cell bd71828_mfd_cells[] = { .name = "bd70528-rtc", .resources = rtc_irqs, .num_resources = ARRAY_SIZE(rtc_irqs), + }, { + .name = "gpio-keys", + .platform_data = &bd71828_powerkey_data, + .pdata_size = sizeof(bd71828_powerkey_data), }, }; @@ -288,9 +306,19 @@ static int bd71828_i2c_probe(struct i2c_client *i2c, dev_err(&i2c->dev, "Failed to add IRQ chip\n"); return ret; } + 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,
Use gpio_keys to send power input-event to user-space when power button (short) press is detected. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> --- Changes from v2 - No changes drivers/mfd/rohm-bd71828.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)