linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/1] Input: snvs_pwrkey - add configurable force shutdown time
@ 2025-03-14  9:42 Ian Ray
  2025-03-14  9:42 ` [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec Ian Ray
  0 siblings, 1 reply; 8+ messages in thread
From: Ian Ray @ 2025-03-14  9:42 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt
  Cc: ian.ray, linux-input, devicetree, linux-kernel

Changes since v1:
* Drop binding
* Configure LPCR only if power-off-time-sec property is set

Ian Ray (1):
  Input: snvs_pwrkey - support power-off-time-sec

 drivers/input/keyboard/snvs_pwrkey.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

-- 
2.39.5


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14  9:42 [PATCH v2 0/1] Input: snvs_pwrkey - add configurable force shutdown time Ian Ray
@ 2025-03-14  9:42 ` Ian Ray
  2025-03-14 12:55   ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Ian Ray @ 2025-03-14  9:42 UTC (permalink / raw)
  To: dmitry.torokhov, robh, krzk+dt, conor+dt
  Cc: ian.ray, linux-input, devicetree, linux-kernel

The power-off time is configured in LPCR[17:16] BTN_PRESS_TIME:

 * b00:  5 seconds (SoC default)
 * b01: 10 seconds
 * b10: 15 seconds
 * b11: PMIC is not disabled

Signed-off-by: Ian Ray <ian.ray@gehealthcare.com>
---
 drivers/input/keyboard/snvs_pwrkey.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/input/keyboard/snvs_pwrkey.c b/drivers/input/keyboard/snvs_pwrkey.c
index f7b5f1e25c80..d7372ace694a 100644
--- a/drivers/input/keyboard/snvs_pwrkey.c
+++ b/drivers/input/keyboard/snvs_pwrkey.c
@@ -27,6 +27,8 @@
 #define SNVS_HPSR_BTN		BIT(6)
 #define SNVS_LPSR_SPO		BIT(18)
 #define SNVS_LPCR_DEP_EN	BIT(5)
+#define SNVS_LPCR_BPT_SHIFT	16
+#define SNVS_LPCR_BPT_MASK	(3 << SNVS_LPCR_BPT_SHIFT)
 
 #define DEBOUNCE_TIME		30
 #define REPEAT_INTERVAL		60
@@ -114,6 +116,8 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
 	struct device_node *np;
 	struct clk *clk;
 	int error;
+	unsigned int val;
+	unsigned int bpt;
 	u32 vid;
 
 	/* Get SNVS register Page */
@@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
 	if (pdata->irq < 0)
 		return -EINVAL;
 
+	if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
+		switch (val) {
+			case 0:
+				bpt = 0x3;
+				break;
+			case 5:
+			case 10:
+			case 15:
+				bpt = (val / 5) - 1;
+				break;
+			default:
+				dev_err(&pdev->dev, "power-off-time-sec %d out of range\n", val);
+				return -EINVAL;
+		}
+
+		regmap_update_bits(pdata->snvs, SNVS_LPCR_REG, SNVS_LPCR_BPT_MASK, bpt << SNVS_LPCR_BPT_SHIFT);
+	}
+
 	regmap_read(pdata->snvs, SNVS_HPVIDR1_REG, &vid);
 	pdata->minor_rev = vid & 0xff;
 
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14  9:42 ` [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec Ian Ray
@ 2025-03-14 12:55   ` Krzysztof Kozlowski
  2025-03-14 13:24     ` Ian Ray
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-14 12:55 UTC (permalink / raw)
  To: Ian Ray, dmitry.torokhov, robh, krzk+dt, conor+dt
  Cc: linux-input, devicetree, linux-kernel

On 14/03/2025 10:42, Ian Ray wrote:
>  
>  	/* Get SNVS register Page */
> @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
>  	if (pdata->irq < 0)
>  		return -EINVAL;
>  
> +	if (!of_property_read_u32(np, "power-off-time-sec", &val)) {

And when you test your DTS against binding what do you see? I suspect
new warning.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14 12:55   ` Krzysztof Kozlowski
@ 2025-03-14 13:24     ` Ian Ray
  2025-03-14 13:31       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Ian Ray @ 2025-03-14 13:24 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: dmitry.torokhov, robh, krzk+dt, conor+dt, linux-input, devicetree,
	linux-kernel

On Fri, Mar 14, 2025 at 01:55:47PM +0100, Krzysztof Kozlowski wrote:
> On 14/03/2025 10:42, Ian Ray wrote:
> >
> >       /* Get SNVS register Page */
> > @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
> >       if (pdata->irq < 0)
> >               return -EINVAL;
> >
> > +     if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
> 
> And when you test your DTS against binding what do you see? I suspect
> new warning.

I checked the build logs (from a clean workarea), plus run-time dmesg,
both with the DTS change -- and without it.  There are no new warnings
(specifically nothing mentioning snvs-pwrkey or dts or power-off-time).

If an invalid value (such as "42") is chosen then the probe fails with
-EINVAL as expected.

Is there something else that I should have checked?

> 
> Best regards,
> Krzysztof

Blue skies,
Ian

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14 13:24     ` Ian Ray
@ 2025-03-14 13:31       ` Krzysztof Kozlowski
  2025-03-14 14:47         ` Ian Ray
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-14 13:31 UTC (permalink / raw)
  To: Ian Ray
  Cc: dmitry.torokhov, robh, krzk+dt, conor+dt, linux-input, devicetree,
	linux-kernel

On 14/03/2025 14:24, Ian Ray wrote:
> On Fri, Mar 14, 2025 at 01:55:47PM +0100, Krzysztof Kozlowski wrote:
>> On 14/03/2025 10:42, Ian Ray wrote:
>>>
>>>       /* Get SNVS register Page */
>>> @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
>>>       if (pdata->irq < 0)
>>>               return -EINVAL;
>>>
>>> +     if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
>>
>> And when you test your DTS against binding what do you see? I suspect
>> new warning.
> 
> I checked the build logs (from a clean workarea), plus run-time dmesg,
> both with the DTS change -- and without it.  There are no new warnings
> (specifically nothing mentioning snvs-pwrkey or dts or power-off-time).
> 
> If an invalid value (such as "42") is chosen then the probe fails with
> -EINVAL as expected.
> 
> Is there something else that I should have checked?

I don't know what your build logs process has. I meant dtbs_check
against the bindings.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14 13:31       ` Krzysztof Kozlowski
@ 2025-03-14 14:47         ` Ian Ray
  2025-03-16 13:03           ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Ian Ray @ 2025-03-14 14:47 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: dmitry.torokhov, robh, krzk+dt, conor+dt, linux-input, devicetree,
	linux-kernel

On Fri, Mar 14, 2025 at 02:31:12PM +0100, Krzysztof Kozlowski wrote:
> On 14/03/2025 14:24, Ian Ray wrote:
> > On Fri, Mar 14, 2025 at 01:55:47PM +0100, Krzysztof Kozlowski wrote:
> >> On 14/03/2025 10:42, Ian Ray wrote:
> >>>
> >>>       /* Get SNVS register Page */
> >>> @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
> >>>       if (pdata->irq < 0)
> >>>               return -EINVAL;
> >>>
> >>> +     if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
> >>
> >> And when you test your DTS against binding what do you see? I suspect
> >> new warning.
> >
> > I checked the build logs (from a clean workarea), plus run-time dmesg,
> > both with the DTS change -- and without it.  There are no new warnings
> > (specifically nothing mentioning snvs-pwrkey or dts or power-off-time).
> >
> > If an invalid value (such as "42") is chosen then the probe fails with
> > -EINVAL as expected.
> >
> > Is there something else that I should have checked?
> 
> I don't know what your build logs process has. I meant dtbs_check
> against the bindings.

$ dt-validate -s Documentation/devicetree/bindings/input/input.yaml \
  arch/arm64/boot/dts/freescale/imx8mp-ppdv2.dtb 

Generated no warnings.  Which (IIUC) is as expected since there is no
change to the bindings in this (v2) series.

> 
> Best regards,
> Krzysztof

Thanks,
Ian

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-14 14:47         ` Ian Ray
@ 2025-03-16 13:03           ` Krzysztof Kozlowski
  2025-03-17  6:22             ` Ian Ray
  0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2025-03-16 13:03 UTC (permalink / raw)
  To: Ian Ray
  Cc: dmitry.torokhov, robh, krzk+dt, conor+dt, linux-input, devicetree,
	linux-kernel

On 14/03/2025 15:47, Ian Ray wrote:
> On Fri, Mar 14, 2025 at 02:31:12PM +0100, Krzysztof Kozlowski wrote:
>> On 14/03/2025 14:24, Ian Ray wrote:
>>> On Fri, Mar 14, 2025 at 01:55:47PM +0100, Krzysztof Kozlowski wrote:
>>>> On 14/03/2025 10:42, Ian Ray wrote:
>>>>>
>>>>>       /* Get SNVS register Page */
>>>>> @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
>>>>>       if (pdata->irq < 0)
>>>>>               return -EINVAL;
>>>>>
>>>>> +     if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
>>>>
>>>> And when you test your DTS against binding what do you see? I suspect
>>>> new warning.
>>>
>>> I checked the build logs (from a clean workarea), plus run-time dmesg,
>>> both with the DTS change -- and without it.  There are no new warnings
>>> (specifically nothing mentioning snvs-pwrkey or dts or power-off-time).
>>>
>>> If an invalid value (such as "42") is chosen then the probe fails with
>>> -EINVAL as expected.
>>>
>>> Is there something else that I should have checked?
>>
>> I don't know what your build logs process has. I meant dtbs_check
>> against the bindings.
> 
> $ dt-validate -s Documentation/devicetree/bindings/input/input.yaml \
>   arch/arm64/boot/dts/freescale/imx8mp-ppdv2.dtb 


input.yaml is not your binding, unless something changed. Did it? Is it
being applied here?

Test all bindings, so your schema will be applied.

<form letter>
It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).
Maybe you need to update your dtschema and yamllint. Don't rely on
distro packages for dtschema and be sure you are using the latest
released dtschema.
</form letter>

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec
  2025-03-16 13:03           ` Krzysztof Kozlowski
@ 2025-03-17  6:22             ` Ian Ray
  0 siblings, 0 replies; 8+ messages in thread
From: Ian Ray @ 2025-03-17  6:22 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: dmitry.torokhov, robh, krzk+dt, conor+dt, linux-input, devicetree,
	linux-kernel

On Sun, Mar 16, 2025 at 02:03:52PM +0100, Krzysztof Kozlowski wrote:
> On 14/03/2025 15:47, Ian Ray wrote:
> > On Fri, Mar 14, 2025 at 02:31:12PM +0100, Krzysztof Kozlowski wrote:
> >> On 14/03/2025 14:24, Ian Ray wrote:
> >>> On Fri, Mar 14, 2025 at 01:55:47PM +0100, Krzysztof Kozlowski wrote:
> >>>> On 14/03/2025 10:42, Ian Ray wrote:
> >>>>>
> >>>>>       /* Get SNVS register Page */
> >>>>> @@ -148,6 +152,24 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
> >>>>>       if (pdata->irq < 0)
> >>>>>               return -EINVAL;
> >>>>>
> >>>>> +     if (!of_property_read_u32(np, "power-off-time-sec", &val)) {
> >>>>
> >>>> And when you test your DTS against binding what do you see? I suspect
> >>>> new warning.
> >>>
> >>> I checked the build logs (from a clean workarea), plus run-time dmesg,
> >>> both with the DTS change -- and without it.  There are no new warnings
> >>> (specifically nothing mentioning snvs-pwrkey or dts or power-off-time).
> >>>
> >>> If an invalid value (such as "42") is chosen then the probe fails with
> >>> -EINVAL as expected.
> >>>
> >>> Is there something else that I should have checked?
> >>
> >> I don't know what your build logs process has. I meant dtbs_check
> >> against the bindings.
> >
> > $ dt-validate -s Documentation/devicetree/bindings/input/input.yaml \
> >   arch/arm64/boot/dts/freescale/imx8mp-ppdv2.dtb
> 
> 
> input.yaml is not your binding, unless something changed. Did it? Is it
> being applied here?
> 

Ah, I see (finally); thank you for this!  Submitted v3 at [1].

[1] https://lore.kernel.org/lkml/20250315093455.1100-1-ian.ray@gehealthcare.com/


> Test all bindings, so your schema will be applied.
> 
> <form letter>
> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check W=1` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
> Maybe you need to update your dtschema and yamllint. Don't rely on
> distro packages for dtschema and be sure you are using the latest
> released dtschema.
> </form letter>
> 
> Best regards,
> Krzysztof

Best regards,
Ian

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-03-17  6:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-14  9:42 [PATCH v2 0/1] Input: snvs_pwrkey - add configurable force shutdown time Ian Ray
2025-03-14  9:42 ` [PATCH v2 1/1] Input: snvs_pwrkey - support power-off-time-sec Ian Ray
2025-03-14 12:55   ` Krzysztof Kozlowski
2025-03-14 13:24     ` Ian Ray
2025-03-14 13:31       ` Krzysztof Kozlowski
2025-03-14 14:47         ` Ian Ray
2025-03-16 13:03           ` Krzysztof Kozlowski
2025-03-17  6:22             ` Ian Ray

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).