* [PATCH 0/2] Fix pm8941-pwrkey debounce programming @ 2023-05-29 19:55 Caleb Connolly 2023-05-29 19:55 ` [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing Caleb Connolly 2023-05-29 19:55 ` [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs Caleb Connolly 0 siblings, 2 replies; 7+ messages in thread From: Caleb Connolly @ 2023-05-29 19:55 UTC (permalink / raw) To: Dmitry Torokhov, Andy Gross, Bjorn Andersson, Konrad Dybcio Cc: linux-input, linux-arm-msm, phone-devel, Caleb Connolly Since PM8998 the pon debounce register was adjusted to support much lower debounce times however the driver was never changed to reflect this. This resulted in the debounce time being set to the minimum ~62us on PMICs from PM8998/PM660 up until PMk8350. Set the shift and mask correctly, and adjust MAINTAINERS to include the driver under Qualcomm support. --- Caleb Connolly (2): MAINTAINERS: Adjust Qualcomm driver globbing Input: pm8941-powerkey - fix debounce on gen2+ PMICs MAINTAINERS | 2 +- drivers/input/misc/pm8941-pwrkey.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) --- base-commit: 44c026a73be8038f03dbdeef028b642880cf1511 // Caleb (they/them) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing 2023-05-29 19:55 [PATCH 0/2] Fix pm8941-pwrkey debounce programming Caleb Connolly @ 2023-05-29 19:55 ` Caleb Connolly 2023-06-06 19:12 ` Dmitry Torokhov 2023-05-29 19:55 ` [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs Caleb Connolly 1 sibling, 1 reply; 7+ messages in thread From: Caleb Connolly @ 2023-05-29 19:55 UTC (permalink / raw) To: Dmitry Torokhov, Andy Gross, Bjorn Andersson, Konrad Dybcio Cc: linux-input, linux-arm-msm, phone-devel, Caleb Connolly The only drivers matching pm8???-* are two levels deep, adjust the glob to match them. Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 27ef11624748..86b7842b44ab 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2577,9 +2577,9 @@ F: arch/arm/boot/dts/qcom-*.dtsi F: arch/arm/configs/qcom_defconfig F: arch/arm/mach-qcom/ F: arch/arm64/boot/dts/qcom/ +F: drivers/*/*/pm8???-* F: drivers/*/*/qcom* F: drivers/*/*/qcom/ -F: drivers/*/pm8???-* F: drivers/*/qcom* F: drivers/*/qcom/ F: drivers/bluetooth/btqcomsmd.c -- 2.40.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing 2023-05-29 19:55 ` [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing Caleb Connolly @ 2023-06-06 19:12 ` Dmitry Torokhov 0 siblings, 0 replies; 7+ messages in thread From: Dmitry Torokhov @ 2023-06-06 19:12 UTC (permalink / raw) To: Caleb Connolly Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-input, linux-arm-msm, phone-devel On Mon, May 29, 2023 at 08:55:06PM +0100, Caleb Connolly wrote: > The only drivers matching pm8???-* are two levels deep, adjust the glob > to match them. > > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> Applied, thank you. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs 2023-05-29 19:55 [PATCH 0/2] Fix pm8941-pwrkey debounce programming Caleb Connolly 2023-05-29 19:55 ` [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing Caleb Connolly @ 2023-05-29 19:55 ` Caleb Connolly 2023-05-30 9:36 ` Konrad Dybcio 2023-06-06 19:12 ` Dmitry Torokhov 1 sibling, 2 replies; 7+ messages in thread From: Caleb Connolly @ 2023-05-29 19:55 UTC (permalink / raw) To: Dmitry Torokhov, Andy Gross, Bjorn Andersson, Konrad Dybcio Cc: linux-input, linux-arm-msm, phone-devel, Caleb Connolly Since PM8998/PM660, the power key debounce register was redefined to support shorter debounce times. On PM8941 the shortest debounce time (represented by register value 0) was 15625us, on PM8998 the shortest debounce time is 62us, with the default being 2ms. Adjust the bit shift to correctly program debounce on PM8998 and newer. Fixes: 68c581d5e7d8 ("Input: add Qualcomm PM8941 power key driver") Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> --- This patch shouldn't be backported earlier then 5.4, as that is the first kernel with support for PM8998. --- drivers/input/misc/pm8941-pwrkey.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/input/misc/pm8941-pwrkey.c b/drivers/input/misc/pm8941-pwrkey.c index b6a27ebae977..74d77d8aaeff 100644 --- a/drivers/input/misc/pm8941-pwrkey.c +++ b/drivers/input/misc/pm8941-pwrkey.c @@ -50,7 +50,10 @@ #define PON_RESIN_PULL_UP BIT(0) #define PON_DBC_CTL 0x71 -#define PON_DBC_DELAY_MASK 0x7 +#define PON_DBC_DELAY_MASK_GEN1 0x7 +#define PON_DBC_DELAY_MASK_GEN2 0xf +#define PON_DBC_SHIFT_GEN1 6 +#define PON_DBC_SHIFT_GEN2 14 struct pm8941_data { unsigned int pull_up_bit; @@ -247,7 +250,7 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) struct device *parent; struct device_node *regmap_node; const __be32 *addr; - u32 req_delay; + u32 req_delay, mask, delay_shift; int error; if (of_property_read_u32(pdev->dev.of_node, "debounce", &req_delay)) @@ -336,12 +339,20 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) pwrkey->input->phys = pwrkey->data->phys; if (pwrkey->data->supports_debounce_config) { - req_delay = (req_delay << 6) / USEC_PER_SEC; + if (pwrkey->subtype >= PON_SUBTYPE_GEN2_PRIMARY) { + mask = PON_DBC_DELAY_MASK_GEN2; + delay_shift = PON_DBC_SHIFT_GEN2; + } else { + mask = PON_DBC_DELAY_MASK_GEN1; + delay_shift = PON_DBC_SHIFT_GEN1; + } + + req_delay = (req_delay << delay_shift) / USEC_PER_SEC; req_delay = ilog2(req_delay); error = regmap_update_bits(pwrkey->regmap, pwrkey->baseaddr + PON_DBC_CTL, - PON_DBC_DELAY_MASK, + mask, req_delay); if (error) { dev_err(&pdev->dev, "failed to set debounce: %d\n", -- 2.40.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs 2023-05-29 19:55 ` [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs Caleb Connolly @ 2023-05-30 9:36 ` Konrad Dybcio 2023-05-30 13:00 ` Caleb Connolly 2023-06-06 19:12 ` Dmitry Torokhov 1 sibling, 1 reply; 7+ messages in thread From: Konrad Dybcio @ 2023-05-30 9:36 UTC (permalink / raw) To: Caleb Connolly, Dmitry Torokhov, Andy Gross, Bjorn Andersson Cc: linux-input, linux-arm-msm, phone-devel On 29.05.2023 21:55, Caleb Connolly wrote: > Since PM8998/PM660, the power key debounce register was redefined to > support shorter debounce times. On PM8941 the shortest debounce time > (represented by register value 0) was 15625us, on PM8998 the shortest > debounce time is 62us, with the default being 2ms. > > Adjust the bit shift to correctly program debounce on PM8998 and newer. > > Fixes: 68c581d5e7d8 ("Input: add Qualcomm PM8941 power key driver") > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> > --- > This patch shouldn't be backported earlier then 5.4, as that is the > first kernel with support for PM8998. > --- > drivers/input/misc/pm8941-pwrkey.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/misc/pm8941-pwrkey.c b/drivers/input/misc/pm8941-pwrkey.c > index b6a27ebae977..74d77d8aaeff 100644 > --- a/drivers/input/misc/pm8941-pwrkey.c > +++ b/drivers/input/misc/pm8941-pwrkey.c > @@ -50,7 +50,10 @@ > #define PON_RESIN_PULL_UP BIT(0) > > #define PON_DBC_CTL 0x71 > -#define PON_DBC_DELAY_MASK 0x7 > +#define PON_DBC_DELAY_MASK_GEN1 0x7 > +#define PON_DBC_DELAY_MASK_GEN2 0xf > +#define PON_DBC_SHIFT_GEN1 6 > +#define PON_DBC_SHIFT_GEN2 14 mask+shift -> field_prep/get? Nice find! Konrad > > struct pm8941_data { > unsigned int pull_up_bit; > @@ -247,7 +250,7 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) > struct device *parent; > struct device_node *regmap_node; > const __be32 *addr; > - u32 req_delay; > + u32 req_delay, mask, delay_shift; > int error; > > if (of_property_read_u32(pdev->dev.of_node, "debounce", &req_delay)) > @@ -336,12 +339,20 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) > pwrkey->input->phys = pwrkey->data->phys; > > if (pwrkey->data->supports_debounce_config) { > - req_delay = (req_delay << 6) / USEC_PER_SEC; > + if (pwrkey->subtype >= PON_SUBTYPE_GEN2_PRIMARY) { > + mask = PON_DBC_DELAY_MASK_GEN2; > + delay_shift = PON_DBC_SHIFT_GEN2; > + } else { > + mask = PON_DBC_DELAY_MASK_GEN1; > + delay_shift = PON_DBC_SHIFT_GEN1; > + } > + > + req_delay = (req_delay << delay_shift) / USEC_PER_SEC; > req_delay = ilog2(req_delay); > > error = regmap_update_bits(pwrkey->regmap, > pwrkey->baseaddr + PON_DBC_CTL, > - PON_DBC_DELAY_MASK, > + mask, > req_delay); > if (error) { > dev_err(&pdev->dev, "failed to set debounce: %d\n", > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs 2023-05-30 9:36 ` Konrad Dybcio @ 2023-05-30 13:00 ` Caleb Connolly 0 siblings, 0 replies; 7+ messages in thread From: Caleb Connolly @ 2023-05-30 13:00 UTC (permalink / raw) To: Konrad Dybcio, Dmitry Torokhov, Andy Gross, Bjorn Andersson Cc: linux-input, linux-arm-msm, phone-devel On 30/05/2023 10:36, Konrad Dybcio wrote: > > > On 29.05.2023 21:55, Caleb Connolly wrote: >> Since PM8998/PM660, the power key debounce register was redefined to >> support shorter debounce times. On PM8941 the shortest debounce time >> (represented by register value 0) was 15625us, on PM8998 the shortest >> debounce time is 62us, with the default being 2ms. >> >> Adjust the bit shift to correctly program debounce on PM8998 and newer. >> >> Fixes: 68c581d5e7d8 ("Input: add Qualcomm PM8941 power key driver") >> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> >> --- >> This patch shouldn't be backported earlier then 5.4, as that is the >> first kernel with support for PM8998. >> --- >> drivers/input/misc/pm8941-pwrkey.c | 19 +++++++++++++++---- >> 1 file changed, 15 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/input/misc/pm8941-pwrkey.c b/drivers/input/misc/pm8941-pwrkey.c >> index b6a27ebae977..74d77d8aaeff 100644 >> --- a/drivers/input/misc/pm8941-pwrkey.c >> +++ b/drivers/input/misc/pm8941-pwrkey.c >> @@ -50,7 +50,10 @@ >> #define PON_RESIN_PULL_UP BIT(0) >> >> #define PON_DBC_CTL 0x71 >> -#define PON_DBC_DELAY_MASK 0x7 >> +#define PON_DBC_DELAY_MASK_GEN1 0x7 >> +#define PON_DBC_DELAY_MASK_GEN2 0xf >> +#define PON_DBC_SHIFT_GEN1 6 >> +#define PON_DBC_SHIFT_GEN2 14 > mask+shift -> field_prep/get? I figured it was better to keep it consistent and try to minimise the diff so that backporting is easier. Migrating over to bitfield helpers probably makes sense to do as a separate change - maybe if a new platform comes along and requires even more additional complexity? > > Nice find! > > Konrad >> >> struct pm8941_data { >> unsigned int pull_up_bit; >> @@ -247,7 +250,7 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) >> struct device *parent; >> struct device_node *regmap_node; >> const __be32 *addr; >> - u32 req_delay; >> + u32 req_delay, mask, delay_shift; >> int error; >> >> if (of_property_read_u32(pdev->dev.of_node, "debounce", &req_delay)) >> @@ -336,12 +339,20 @@ static int pm8941_pwrkey_probe(struct platform_device *pdev) >> pwrkey->input->phys = pwrkey->data->phys; >> >> if (pwrkey->data->supports_debounce_config) { >> - req_delay = (req_delay << 6) / USEC_PER_SEC; >> + if (pwrkey->subtype >= PON_SUBTYPE_GEN2_PRIMARY) { >> + mask = PON_DBC_DELAY_MASK_GEN2; >> + delay_shift = PON_DBC_SHIFT_GEN2; >> + } else { >> + mask = PON_DBC_DELAY_MASK_GEN1; >> + delay_shift = PON_DBC_SHIFT_GEN1; >> + } >> + >> + req_delay = (req_delay << delay_shift) / USEC_PER_SEC; >> req_delay = ilog2(req_delay); >> >> error = regmap_update_bits(pwrkey->regmap, >> pwrkey->baseaddr + PON_DBC_CTL, >> - PON_DBC_DELAY_MASK, >> + mask, >> req_delay); >> if (error) { >> dev_err(&pdev->dev, "failed to set debounce: %d\n", >> -- // Caleb (they/them) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs 2023-05-29 19:55 ` [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs Caleb Connolly 2023-05-30 9:36 ` Konrad Dybcio @ 2023-06-06 19:12 ` Dmitry Torokhov 1 sibling, 0 replies; 7+ messages in thread From: Dmitry Torokhov @ 2023-06-06 19:12 UTC (permalink / raw) To: Caleb Connolly Cc: Andy Gross, Bjorn Andersson, Konrad Dybcio, linux-input, linux-arm-msm, phone-devel On Mon, May 29, 2023 at 08:55:07PM +0100, Caleb Connolly wrote: > Since PM8998/PM660, the power key debounce register was redefined to > support shorter debounce times. On PM8941 the shortest debounce time > (represented by register value 0) was 15625us, on PM8998 the shortest > debounce time is 62us, with the default being 2ms. > > Adjust the bit shift to correctly program debounce on PM8998 and newer. > > Fixes: 68c581d5e7d8 ("Input: add Qualcomm PM8941 power key driver") > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> Applied, thank you. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-06-06 19:13 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-05-29 19:55 [PATCH 0/2] Fix pm8941-pwrkey debounce programming Caleb Connolly 2023-05-29 19:55 ` [PATCH 1/2] MAINTAINERS: Adjust Qualcomm driver globbing Caleb Connolly 2023-06-06 19:12 ` Dmitry Torokhov 2023-05-29 19:55 ` [PATCH 2/2] Input: pm8941-powerkey - fix debounce on gen2+ PMICs Caleb Connolly 2023-05-30 9:36 ` Konrad Dybcio 2023-05-30 13:00 ` Caleb Connolly 2023-06-06 19:12 ` Dmitry Torokhov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).