From: Dmitry Torokhov <dmitry.torokhov@gmail.com> To: Jacky Bai <ping.bai@nxp.com> Cc: lee@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, a.zummo@towertech.it, alexandre.belloni@bootlin.com, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, linux-rtc@vger.kernel.org, kernel@pengutronix.de, linux-imx@nxp.com, festevam@gmail.com Subject: Re: [PATCH v4 2/4] input: bbnsm_pwrkey: Add bbnsm power key support Date: Fri, 3 Feb 2023 12:11:38 -0800 [thread overview] Message-ID: <Y91qeprAJSDckJ2e@google.com> (raw) In-Reply-To: <20230129070823.1945489-3-ping.bai@nxp.com> Hi Jacky, On Sun, Jan 29, 2023 at 03:08:21PM +0800, Jacky Bai wrote: > The ON/OFF logic inside the BBNSM allows for connecting directly > into a PMIC or other voltage regulator device. The module has an > button input signal and a wakeup request input signal. It also > has two interrupts (set_pwr_off_irq and set_pwr_on_irq) and an > active-low PMIC enable (pmic_en_b) output. > > Add the power key support for the ON/OFF button function found in > BBNSM module. > > Signed-off-by: Jacky Bai <ping.bai@nxp.com> > Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > - v2 changes: > - use device_property_read_u32() to read the property > - clean up the goto return, return directly > - sort the header file alphabetically > - rename the file to add 'nxp' prefix > > - v3 changes: > - get the regmap directly from the parent node > > - v4 changes: > - update the compatible string to align with binding file > - fix the device_property_read_u32 as stated in v2. > - add back the 'dev_warn' for 'dev_pm_set_wake_irq' return fail. > --- > drivers/input/keyboard/Kconfig | 11 ++ > drivers/input/keyboard/Makefile | 1 + > drivers/input/keyboard/nxp-bbnsm-pwrkey.c | 192 ++++++++++++++++++++++ Majority of pwrkey drivers reside in dribers/input/misc, which drivers/input/keyboard intended for more traditional/full keyboards. Could you please move this driver there? We should move snvs_pwrkey too... > 3 files changed, 204 insertions(+) > create mode 100644 drivers/input/keyboard/nxp-bbnsm-pwrkey.c > > diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig > index 84490915ae4d..43827e34f276 100644 > --- a/drivers/input/keyboard/Kconfig > +++ b/drivers/input/keyboard/Kconfig > @@ -456,6 +456,17 @@ config KEYBOARD_SNVS_PWRKEY > To compile this driver as a module, choose M here; the > module will be called snvs_pwrkey. > > +config KEYBOARD_BBNSM_PWRKEY > + tristate "NXP BBNSM Power Key Driver" > + depends on ARCH_MXC || COMPILE_TEST > + depends on OF > + help > + This is the bbnsm powerkey driver for the NXP i.MX application > + processors. > + > + To compile this driver as a module, choose M here; the > + module will be called bbnsm_pwrkey. > + > config KEYBOARD_IMX > tristate "IMX keypad support" > depends on ARCH_MXC || COMPILE_TEST > diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile > index 5f67196bb2c1..e34dd65a34c3 100644 > --- a/drivers/input/keyboard/Makefile > +++ b/drivers/input/keyboard/Makefile > @@ -13,6 +13,7 @@ obj-$(CONFIG_KEYBOARD_AMIGA) += amikbd.o > obj-$(CONFIG_KEYBOARD_APPLESPI) += applespi.o > obj-$(CONFIG_KEYBOARD_ATARI) += atakbd.o > obj-$(CONFIG_KEYBOARD_ATKBD) += atkbd.o > +obj-$(CONFIG_KEYBOARD_BBNSM_PWRKEY) += nxp-bbnsm-pwrkey.o > obj-$(CONFIG_KEYBOARD_BCM) += bcm-keypad.o > obj-$(CONFIG_KEYBOARD_CAP11XX) += cap11xx.o > obj-$(CONFIG_KEYBOARD_CLPS711X) += clps711x-keypad.o > diff --git a/drivers/input/keyboard/nxp-bbnsm-pwrkey.c b/drivers/input/keyboard/nxp-bbnsm-pwrkey.c > new file mode 100644 > index 000000000000..154ce58b9d5a > --- /dev/null > +++ b/drivers/input/keyboard/nxp-bbnsm-pwrkey.c > @@ -0,0 +1,192 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +// > +// Copyright 2022 NXP. > + > +#include <linux/device.h> > +#include <linux/err.h> > +#include <linux/init.h> > +#include <linux/input.h> > +#include <linux/interrupt.h> > +#include <linux/io.h> > +#include <linux/jiffies.h> > +#include <linux/kernel.h> > +#include <linux/mfd/syscon.h> > +#include <linux/module.h> > +#include <linux/of.h> > +#include <linux/of_address.h> > +#include <linux/platform_device.h> > +#include <linux/pm_wakeirq.h> > +#include <linux/regmap.h> > + > +#define BBNSM_CTRL 0x8 > +#define BBNSM_INT_EN 0x10 > +#define BBNSM_EVENTS 0x14 > +#define BBNSM_PAD_CTRL 0x24 > + > +#define BBNSM_BTN_PRESSED BIT(7) > +#define BBNSM_PWR_ON BIT(6) > +#define BBNSM_BTN_OFF BIT(5) > +#define BBNSM_EMG_OFF BIT(4) > +#define BBNSM_PWRKEY_EVENTS (BBNSM_PWR_ON | BBNSM_BTN_OFF | BBNSM_EMG_OFF) > +#define BBNSM_DP_EN BIT(24) > + > +#define DEBOUNCE_TIME 30 > +#define REPEAT_INTERVAL 60 > + > +struct bbnsm_pwrkey { > + struct regmap *regmap; > + int irq; > + int keycode; > + int keystate; /* 1:pressed */ > + struct timer_list check_timer; > + struct input_dev *input; > +}; > + > +static void bbnsm_pwrkey_check_for_events(struct timer_list *t) > +{ > + struct bbnsm_pwrkey *bbnsm = from_timer(bbnsm, t, check_timer); > + struct input_dev *input = bbnsm->input; > + u32 state; > + > + regmap_read(bbnsm->regmap, BBNSM_EVENTS, &state); > + > + state = state & BBNSM_BTN_PRESSED ? 1 : 0; > + > + /* only report new event if status changed */ > + if (state ^ bbnsm->keystate) { > + bbnsm->keystate = state; > + input_event(input, EV_KEY, bbnsm->keycode, state); > + input_sync(input); > + pm_relax(bbnsm->input->dev.parent); > + } > + > + /* repeat check if pressed long */ > + if (state) { > + mod_timer(&bbnsm->check_timer, > + jiffies + msecs_to_jiffies(REPEAT_INTERVAL)); > + } > +} > + > +static irqreturn_t bbnsm_pwrkey_interrupt(int irq, void *dev_id) > +{ > + struct platform_device *pdev = dev_id; > + struct bbnsm_pwrkey *bbnsm = platform_get_drvdata(pdev); > + struct input_dev *input = bbnsm->input; > + u32 event; > + > + regmap_read(bbnsm->regmap, BBNSM_EVENTS, &event); > + if (event & BBNSM_BTN_OFF) > + mod_timer(&bbnsm->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); > + else > + return IRQ_NONE; > + > + pm_wakeup_event(input->dev.parent, 0); > + > + /* clear PWR OFF */ > + regmap_write(bbnsm->regmap, BBNSM_EVENTS, BBNSM_BTN_OFF); > + > + return IRQ_HANDLED; > +} > + > +static void bbnsm_pwrkey_act(void *pdata) > +{ > + struct bbnsm_pwrkey *bbnsm = pdata; > + > + del_timer_sync(&bbnsm->check_timer); del_timer()/del_timer_sync() are deprecated. Please use timer_shutdown_sync() here. > +} > + > +static int bbnsm_pwrkey_probe(struct platform_device *pdev) > +{ > + struct bbnsm_pwrkey *bbnsm; > + struct input_dev *input; > + struct device_node *np = pdev->dev.of_node; > + int error; > + > + bbnsm = devm_kzalloc(&pdev->dev, sizeof(*bbnsm), GFP_KERNEL); > + if (!bbnsm) > + return -ENOMEM; > + > + bbnsm->regmap = syscon_node_to_regmap(np->parent); > + if (IS_ERR(bbnsm->regmap)) { > + dev_err(&pdev->dev, "bbnsm pwerkey get regmap failed\n"); > + return PTR_ERR(bbnsm->regmap); > + } > + > + if (device_property_read_u32(&pdev->dev, "linux,code", &bbnsm->keycode)) { > + bbnsm->keycode = KEY_POWER; > + dev_warn(&pdev->dev, "KEY_POWER without setting in dts\n"); This is a pretty cryptic message IMO. Maybe say "key code is not specified, using default KEY_POWER"? > + } > + > + bbnsm->irq = platform_get_irq(pdev, 0); > + if (bbnsm->irq < 0) > + return -EINVAL; > + > + /* config the BBNSM power related register */ > + regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, BBNSM_DP_EN, BBNSM_DP_EN); > + > + /* clear the unexpected interrupt before driver ready */ > + regmap_write_bits(bbnsm->regmap, BBNSM_EVENTS, BBNSM_PWRKEY_EVENTS, BBNSM_PWRKEY_EVENTS); > + > + timer_setup(&bbnsm->check_timer, bbnsm_pwrkey_check_for_events, 0); > + > + input = devm_input_allocate_device(&pdev->dev); > + if (!input) { > + dev_err(&pdev->dev, "failed to allocate the input device\n"); > + return -ENOMEM; > + } > + > + input->name = pdev->name; > + input->phys = "bbnsm-pwrkey/input0"; > + input->id.bustype = BUS_HOST; > + > + input_set_capability(input, EV_KEY, bbnsm->keycode); > + > + /* input customer action to cancel release timer */ > + error = devm_add_action(&pdev->dev, bbnsm_pwrkey_act, bbnsm); > + if (error) { > + dev_err(&pdev->dev, "failed to register remove action\n"); > + return error; > + } > + > + bbnsm->input = input; > + platform_set_drvdata(pdev, bbnsm); > + > + error = devm_request_irq(&pdev->dev, bbnsm->irq, bbnsm_pwrkey_interrupt, > + IRQF_SHARED, pdev->name, pdev); Is this really a shared interrupt? > + if (error) { > + dev_err(&pdev->dev, "interrupt not available.\n"); > + return error; > + } > + > + error = input_register_device(input); > + if (error < 0) { > + dev_err(&pdev->dev, "failed to register input device\n"); > + return error; > + } > + > + device_init_wakeup(&pdev->dev, true); > + error = dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq); > + if (error) > + dev_warn(&pdev->dev, "irq wake enable failed.\n"); > + > + return 0; > +} > + > +static const struct of_device_id bbnsm_pwrkey_ids[] = { > + { .compatible = "nxp,imx93-bbnsm-pwrkey" }, > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, bbnsm_pwrkey_ids); > + > +static struct platform_driver bbnsm_pwrkey_driver = { > + .driver = { > + .name = "bbnsm_pwrkey", > + .of_match_table = bbnsm_pwrkey_ids, > + }, > + .probe = bbnsm_pwrkey_probe, > +}; > +module_platform_driver(bbnsm_pwrkey_driver); > + > +MODULE_AUTHOR("Jacky Bai <ping.bai@nxp.com>"); > +MODULE_DESCRIPTION("NXP bbnsm power key Driver"); > +MODULE_LICENSE("GPL"); > -- > 2.37.1 > Thanks. -- Dmitry
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Torokhov <dmitry.torokhov@gmail.com> To: Jacky Bai <ping.bai@nxp.com> Cc: lee@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, a.zummo@towertech.it, alexandre.belloni@bootlin.com, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-input@vger.kernel.org, linux-rtc@vger.kernel.org, kernel@pengutronix.de, linux-imx@nxp.com, festevam@gmail.com Subject: Re: [PATCH v4 2/4] input: bbnsm_pwrkey: Add bbnsm power key support Date: Fri, 3 Feb 2023 12:11:38 -0800 [thread overview] Message-ID: <Y91qeprAJSDckJ2e@google.com> (raw) In-Reply-To: <20230129070823.1945489-3-ping.bai@nxp.com> Hi Jacky, On Sun, Jan 29, 2023 at 03:08:21PM +0800, Jacky Bai wrote: > The ON/OFF logic inside the BBNSM allows for connecting directly > into a PMIC or other voltage regulator device. The module has an > button input signal and a wakeup request input signal. It also > has two interrupts (set_pwr_off_irq and set_pwr_on_irq) and an > active-low PMIC enable (pmic_en_b) output. > > Add the power key support for the ON/OFF button function found in > BBNSM module. > > Signed-off-by: Jacky Bai <ping.bai@nxp.com> > Reviewed-by: Peng Fan <peng.fan@nxp.com> > --- > - v2 changes: > - use device_property_read_u32() to read the property > - clean up the goto return, return directly > - sort the header file alphabetically > - rename the file to add 'nxp' prefix > > - v3 changes: > - get the regmap directly from the parent node > > - v4 changes: > - update the compatible string to align with binding file > - fix the device_property_read_u32 as stated in v2. > - add back the 'dev_warn' for 'dev_pm_set_wake_irq' return fail. > --- > drivers/input/keyboard/Kconfig | 11 ++ > drivers/input/keyboard/Makefile | 1 + > drivers/input/keyboard/nxp-bbnsm-pwrkey.c | 192 ++++++++++++++++++++++ Majority of pwrkey drivers reside in dribers/input/misc, which drivers/input/keyboard intended for more traditional/full keyboards. Could you please move this driver there? We should move snvs_pwrkey too... > 3 files changed, 204 insertions(+) > create mode 100644 drivers/input/keyboard/nxp-bbnsm-pwrkey.c > > diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig > index 84490915ae4d..43827e34f276 100644 > --- a/drivers/input/keyboard/Kconfig > +++ b/drivers/input/keyboard/Kconfig > @@ -456,6 +456,17 @@ config KEYBOARD_SNVS_PWRKEY > To compile this driver as a module, choose M here; the > module will be called snvs_pwrkey. > > +config KEYBOARD_BBNSM_PWRKEY > + tristate "NXP BBNSM Power Key Driver" > + depends on ARCH_MXC || COMPILE_TEST > + depends on OF > + help > + This is the bbnsm powerkey driver for the NXP i.MX application > + processors. > + > + To compile this driver as a module, choose M here; the > + module will be called bbnsm_pwrkey. > + > config KEYBOARD_IMX > tristate "IMX keypad support" > depends on ARCH_MXC || COMPILE_TEST > diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile > index 5f67196bb2c1..e34dd65a34c3 100644 > --- a/drivers/input/keyboard/Makefile > +++ b/drivers/input/keyboard/Makefile > @@ -13,6 +13,7 @@ obj-$(CONFIG_KEYBOARD_AMIGA) += amikbd.o > obj-$(CONFIG_KEYBOARD_APPLESPI) += applespi.o > obj-$(CONFIG_KEYBOARD_ATARI) += atakbd.o > obj-$(CONFIG_KEYBOARD_ATKBD) += atkbd.o > +obj-$(CONFIG_KEYBOARD_BBNSM_PWRKEY) += nxp-bbnsm-pwrkey.o > obj-$(CONFIG_KEYBOARD_BCM) += bcm-keypad.o > obj-$(CONFIG_KEYBOARD_CAP11XX) += cap11xx.o > obj-$(CONFIG_KEYBOARD_CLPS711X) += clps711x-keypad.o > diff --git a/drivers/input/keyboard/nxp-bbnsm-pwrkey.c b/drivers/input/keyboard/nxp-bbnsm-pwrkey.c > new file mode 100644 > index 000000000000..154ce58b9d5a > --- /dev/null > +++ b/drivers/input/keyboard/nxp-bbnsm-pwrkey.c > @@ -0,0 +1,192 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +// > +// Copyright 2022 NXP. > + > +#include <linux/device.h> > +#include <linux/err.h> > +#include <linux/init.h> > +#include <linux/input.h> > +#include <linux/interrupt.h> > +#include <linux/io.h> > +#include <linux/jiffies.h> > +#include <linux/kernel.h> > +#include <linux/mfd/syscon.h> > +#include <linux/module.h> > +#include <linux/of.h> > +#include <linux/of_address.h> > +#include <linux/platform_device.h> > +#include <linux/pm_wakeirq.h> > +#include <linux/regmap.h> > + > +#define BBNSM_CTRL 0x8 > +#define BBNSM_INT_EN 0x10 > +#define BBNSM_EVENTS 0x14 > +#define BBNSM_PAD_CTRL 0x24 > + > +#define BBNSM_BTN_PRESSED BIT(7) > +#define BBNSM_PWR_ON BIT(6) > +#define BBNSM_BTN_OFF BIT(5) > +#define BBNSM_EMG_OFF BIT(4) > +#define BBNSM_PWRKEY_EVENTS (BBNSM_PWR_ON | BBNSM_BTN_OFF | BBNSM_EMG_OFF) > +#define BBNSM_DP_EN BIT(24) > + > +#define DEBOUNCE_TIME 30 > +#define REPEAT_INTERVAL 60 > + > +struct bbnsm_pwrkey { > + struct regmap *regmap; > + int irq; > + int keycode; > + int keystate; /* 1:pressed */ > + struct timer_list check_timer; > + struct input_dev *input; > +}; > + > +static void bbnsm_pwrkey_check_for_events(struct timer_list *t) > +{ > + struct bbnsm_pwrkey *bbnsm = from_timer(bbnsm, t, check_timer); > + struct input_dev *input = bbnsm->input; > + u32 state; > + > + regmap_read(bbnsm->regmap, BBNSM_EVENTS, &state); > + > + state = state & BBNSM_BTN_PRESSED ? 1 : 0; > + > + /* only report new event if status changed */ > + if (state ^ bbnsm->keystate) { > + bbnsm->keystate = state; > + input_event(input, EV_KEY, bbnsm->keycode, state); > + input_sync(input); > + pm_relax(bbnsm->input->dev.parent); > + } > + > + /* repeat check if pressed long */ > + if (state) { > + mod_timer(&bbnsm->check_timer, > + jiffies + msecs_to_jiffies(REPEAT_INTERVAL)); > + } > +} > + > +static irqreturn_t bbnsm_pwrkey_interrupt(int irq, void *dev_id) > +{ > + struct platform_device *pdev = dev_id; > + struct bbnsm_pwrkey *bbnsm = platform_get_drvdata(pdev); > + struct input_dev *input = bbnsm->input; > + u32 event; > + > + regmap_read(bbnsm->regmap, BBNSM_EVENTS, &event); > + if (event & BBNSM_BTN_OFF) > + mod_timer(&bbnsm->check_timer, jiffies + msecs_to_jiffies(DEBOUNCE_TIME)); > + else > + return IRQ_NONE; > + > + pm_wakeup_event(input->dev.parent, 0); > + > + /* clear PWR OFF */ > + regmap_write(bbnsm->regmap, BBNSM_EVENTS, BBNSM_BTN_OFF); > + > + return IRQ_HANDLED; > +} > + > +static void bbnsm_pwrkey_act(void *pdata) > +{ > + struct bbnsm_pwrkey *bbnsm = pdata; > + > + del_timer_sync(&bbnsm->check_timer); del_timer()/del_timer_sync() are deprecated. Please use timer_shutdown_sync() here. > +} > + > +static int bbnsm_pwrkey_probe(struct platform_device *pdev) > +{ > + struct bbnsm_pwrkey *bbnsm; > + struct input_dev *input; > + struct device_node *np = pdev->dev.of_node; > + int error; > + > + bbnsm = devm_kzalloc(&pdev->dev, sizeof(*bbnsm), GFP_KERNEL); > + if (!bbnsm) > + return -ENOMEM; > + > + bbnsm->regmap = syscon_node_to_regmap(np->parent); > + if (IS_ERR(bbnsm->regmap)) { > + dev_err(&pdev->dev, "bbnsm pwerkey get regmap failed\n"); > + return PTR_ERR(bbnsm->regmap); > + } > + > + if (device_property_read_u32(&pdev->dev, "linux,code", &bbnsm->keycode)) { > + bbnsm->keycode = KEY_POWER; > + dev_warn(&pdev->dev, "KEY_POWER without setting in dts\n"); This is a pretty cryptic message IMO. Maybe say "key code is not specified, using default KEY_POWER"? > + } > + > + bbnsm->irq = platform_get_irq(pdev, 0); > + if (bbnsm->irq < 0) > + return -EINVAL; > + > + /* config the BBNSM power related register */ > + regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, BBNSM_DP_EN, BBNSM_DP_EN); > + > + /* clear the unexpected interrupt before driver ready */ > + regmap_write_bits(bbnsm->regmap, BBNSM_EVENTS, BBNSM_PWRKEY_EVENTS, BBNSM_PWRKEY_EVENTS); > + > + timer_setup(&bbnsm->check_timer, bbnsm_pwrkey_check_for_events, 0); > + > + input = devm_input_allocate_device(&pdev->dev); > + if (!input) { > + dev_err(&pdev->dev, "failed to allocate the input device\n"); > + return -ENOMEM; > + } > + > + input->name = pdev->name; > + input->phys = "bbnsm-pwrkey/input0"; > + input->id.bustype = BUS_HOST; > + > + input_set_capability(input, EV_KEY, bbnsm->keycode); > + > + /* input customer action to cancel release timer */ > + error = devm_add_action(&pdev->dev, bbnsm_pwrkey_act, bbnsm); > + if (error) { > + dev_err(&pdev->dev, "failed to register remove action\n"); > + return error; > + } > + > + bbnsm->input = input; > + platform_set_drvdata(pdev, bbnsm); > + > + error = devm_request_irq(&pdev->dev, bbnsm->irq, bbnsm_pwrkey_interrupt, > + IRQF_SHARED, pdev->name, pdev); Is this really a shared interrupt? > + if (error) { > + dev_err(&pdev->dev, "interrupt not available.\n"); > + return error; > + } > + > + error = input_register_device(input); > + if (error < 0) { > + dev_err(&pdev->dev, "failed to register input device\n"); > + return error; > + } > + > + device_init_wakeup(&pdev->dev, true); > + error = dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq); > + if (error) > + dev_warn(&pdev->dev, "irq wake enable failed.\n"); > + > + return 0; > +} > + > +static const struct of_device_id bbnsm_pwrkey_ids[] = { > + { .compatible = "nxp,imx93-bbnsm-pwrkey" }, > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, bbnsm_pwrkey_ids); > + > +static struct platform_driver bbnsm_pwrkey_driver = { > + .driver = { > + .name = "bbnsm_pwrkey", > + .of_match_table = bbnsm_pwrkey_ids, > + }, > + .probe = bbnsm_pwrkey_probe, > +}; > +module_platform_driver(bbnsm_pwrkey_driver); > + > +MODULE_AUTHOR("Jacky Bai <ping.bai@nxp.com>"); > +MODULE_DESCRIPTION("NXP bbnsm power key Driver"); > +MODULE_LICENSE("GPL"); > -- > 2.37.1 > Thanks. -- Dmitry _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-02-03 20:11 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-29 7:08 [PATCH v4 0/4] Add nxp bbnsm module support Jacky Bai 2023-01-29 7:08 ` Jacky Bai 2023-01-29 7:08 ` [PATCH v4 1/4] dt-bindings: mfd: Add nxp bbnsm Jacky Bai 2023-01-29 7:08 ` Jacky Bai 2023-01-30 22:09 ` Rob Herring 2023-01-30 22:09 ` Rob Herring 2023-01-31 9:15 ` Lee Jones 2023-01-31 9:15 ` Lee Jones 2023-01-29 7:08 ` [PATCH v4 2/4] input: bbnsm_pwrkey: Add bbnsm power key support Jacky Bai 2023-01-29 7:08 ` Jacky Bai 2023-02-03 15:03 ` Mattijs Korpershoek 2023-02-03 15:03 ` Mattijs Korpershoek 2023-02-03 20:11 ` Dmitry Torokhov [this message] 2023-02-03 20:11 ` Dmitry Torokhov 2023-02-10 7:11 ` Jacky Bai 2023-02-10 7:11 ` Jacky Bai 2023-01-29 7:08 ` [PATCH v4 3/4] rtc: bbnsm: Add the bbnsm rtc support Jacky Bai 2023-01-29 7:08 ` Jacky Bai 2023-01-29 7:08 ` [PATCH v4 4/4] arm64: dts: imx93: Add the bbnsm dts node Jacky Bai 2023-01-29 7:08 ` Jacky Bai
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=Y91qeprAJSDckJ2e@google.com \ --to=dmitry.torokhov@gmail.com \ --cc=a.zummo@towertech.it \ --cc=alexandre.belloni@bootlin.com \ --cc=devicetree@vger.kernel.org \ --cc=festevam@gmail.com \ --cc=kernel@pengutronix.de \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=lee@kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-input@vger.kernel.org \ --cc=linux-rtc@vger.kernel.org \ --cc=ping.bai@nxp.com \ --cc=robh+dt@kernel.org \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.