diff mbox

[v4,7/9] devicetree: bindings: Document PM8921/8058 keypads

Message ID 1393552520-9068-8-git-send-email-sboyd@codeaurora.org
State Superseded, archived
Headers show

Commit Message

Stephen Boyd Feb. 28, 2014, 1:55 a.m. UTC
Document the keypad device found on PM8921 and PM8058 PMICs.

Cc: <devicetree@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 .../bindings/input/qcom,pm8xxx-keypad.txt          | 72 ++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt

Comments

Josh Cartwright Feb. 28, 2014, 1:55 p.m. UTC | #1
On Thu, Feb 27, 2014 at 05:55:18PM -0800, Stephen Boyd wrote:
> Document the keypad device found on PM8921 and PM8058 PMICs.
[..]
> +++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt
> @@ -0,0 +1,72 @@
> +Qualcomm PM8xxx PMIC Keypad
> +
> +PROPERTIES
> +
> +- compatible:
> +	Usage: required
> +	Value type: <string>
> +	Definition: must be one of:
> +		    "qcom,pm8058-keypad"
> +		    "qcom,pm8921-keypad"
> +- interrupts:
> +	Usage: required
> +	Value type: <prop-encoded-array>
> +	Definition: the first interrupt specifies the key sense interrupt
> +		    and the second interrupt specifies the key stuck interrupt.
> +		    The format of the specifier is defined by the binding
> +		    document describing the node's interrupt parent.
> +
> +- linux,keymap:
> +	Usage: required
> +	Value type: <prop-encoded-array>
> +	Definition: the linux keymap. More information can be found in
> +		    input/matrix-keymap.txt.
> +
> +- keypad,num-rows:
> +	Usage: required
> +	Value type: <u32>
> +	Definition: number of rows in the keymap. More information can be found
> +		    in input/matrix-keymap.txt.
> +
> +- keypad,num-columns:
> +	Usage: required
> +	Value type: <u32>
> +	Definition: number of columns in the keymap. More information can be
> +		    found in input/matrix-keymap.txt.
> +
> +- debounce:
> +	Usage: optional
> +	Value type: <u32>
> +	Definition: time in microseconds that key must be pressed or release
> +		    for key sense interrupt to trigger.
> +
> +- scan-delay:
> +	Usage: optional
> +	Value type: <u32>
> +	Definition: time in microseconds to pause between successive scans
> +		    of the matrix array.
> +
> +- row-hold:
> +	Usage: optional
> +	Value type: <u32>
> +	Definition: time in nanoseconds to pause between scans of each row in
> +		    the matrix array.

- linux,wakeup?
- linux,no-auto-repeat?

> +
> +EXAMPLE
> +
> +	keypad {
> +		compatible = "qcom,pm8921-keypad";
> +		interrupt-parent = <&pmicintc>;
> +		interrupts = <74 1>, <75 1>;
> +		linux,keymap = <
> +			MATRIX_KEY(0, 0, KEY_VOLUMEUP)
> +			MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
> +			MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
> +			MATRIX_KEY(0, 3, KEY_CAMERA)
> +			>;
> +		keypad,num-rows = <1>;
> +		keypad,num-columns = <5>;
> +		debounce = <15>;
> +		scan-delay = <32>;
> +		row-hold = <91500>;
> +	};

It odd to me that these newly created bindings don't have 'reg'
properties, even though the device clearly has a register region.

I suppose it makes sense from a "port over from platform data to DT"
perspective, as these drivers have just assumed the location of their
registers to be fixed; however I suspect things will need to be changed
if/when we hope to share these drivers with pm8841/pm8941 and beyond...
Stephen Boyd Feb. 28, 2014, 6:37 p.m. UTC | #2
On 02/28, Josh Cartwright wrote:
> On Thu, Feb 27, 2014 at 05:55:18PM -0800, Stephen Boyd wrote:
> 
> - linux,wakeup?
> - linux,no-auto-repeat?

Added.

> 
> > +
> > +EXAMPLE
> > +
> > +	keypad {
> > +		compatible = "qcom,pm8921-keypad";
> > +		interrupt-parent = <&pmicintc>;
> > +		interrupts = <74 1>, <75 1>;
> > +		linux,keymap = <
> > +			MATRIX_KEY(0, 0, KEY_VOLUMEUP)
> > +			MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
> > +			MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
> > +			MATRIX_KEY(0, 3, KEY_CAMERA)
> > +			>;
> > +		keypad,num-rows = <1>;
> > +		keypad,num-columns = <5>;
> > +		debounce = <15>;
> > +		scan-delay = <32>;
> > +		row-hold = <91500>;
> > +	};
> 
> It odd to me that these newly created bindings don't have 'reg'
> properties, even though the device clearly has a register region.
> 
> I suppose it makes sense from a "port over from platform data to DT"
> perspective, as these drivers have just assumed the location of their
> registers to be fixed; however I suspect things will need to be changed
> if/when we hope to share these drivers with pm8841/pm8941 and beyond...
> 

Agreed. I would love it if the platform OF code would create
IORESOURCE_REG resources for any reg properties that aren't
translatable to CPU addresses. That way we don't have to pick out
the reg property from DT with special OF code (like you've done
in rtc-pm8xxx). I'll throw the reg property into the binding so
that in the future we can support the register moving around
(although at the moment the driver will ignore it).
Josh Cartwright Feb. 28, 2014, 7:11 p.m. UTC | #3
On Fri, Feb 28, 2014 at 10:37:08AM -0800, Stephen Boyd wrote:
> On 02/28, Josh Cartwright wrote:
> > On Thu, Feb 27, 2014 at 05:55:18PM -0800, Stephen Boyd wrote:
> > > +
> > > +EXAMPLE
> > > +
> > > +	keypad {
> > > +		compatible = "qcom,pm8921-keypad";
> > > +		interrupt-parent = <&pmicintc>;
> > > +		interrupts = <74 1>, <75 1>;
> > > +		linux,keymap = <
> > > +			MATRIX_KEY(0, 0, KEY_VOLUMEUP)
> > > +			MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
> > > +			MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
> > > +			MATRIX_KEY(0, 3, KEY_CAMERA)
> > > +			>;
> > > +		keypad,num-rows = <1>;
> > > +		keypad,num-columns = <5>;
> > > +		debounce = <15>;
> > > +		scan-delay = <32>;
> > > +		row-hold = <91500>;
> > > +	};
> >
> > It odd to me that these newly created bindings don't have 'reg'
> > properties, even though the device clearly has a register region.
> >
> > I suppose it makes sense from a "port over from platform data to DT"
> > perspective, as these drivers have just assumed the location of their
> > registers to be fixed; however I suspect things will need to be changed
> > if/when we hope to share these drivers with pm8841/pm8941 and beyond...
> >
>
> Agreed. I would love it if the platform OF code would create
> IORESOURCE_REG resources for any reg properties that aren't
> translatable to CPU addresses. That way we don't have to pick out the
> reg property from DT with special OF code (like you've done in
> rtc-pm8xxx).

Yes, I agree this would be nice.  The rtc-pm8xxx register parsing magic
is misplaced/ugly.  I'll see about taking a crack at this and seeing
what it looks like.

> I'll throw the reg property into the binding so that in
> the future we can support the register moving around (although at the
> moment the driver will ignore it).

Great, I think this sounds good.
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt
new file mode 100644
index 000000000000..aa5a9c6cf512
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt
@@ -0,0 +1,72 @@ 
+Qualcomm PM8xxx PMIC Keypad
+
+PROPERTIES
+
+- compatible:
+	Usage: required
+	Value type: <string>
+	Definition: must be one of:
+		    "qcom,pm8058-keypad"
+		    "qcom,pm8921-keypad"
+- interrupts:
+	Usage: required
+	Value type: <prop-encoded-array>
+	Definition: the first interrupt specifies the key sense interrupt
+		    and the second interrupt specifies the key stuck interrupt.
+		    The format of the specifier is defined by the binding
+		    document describing the node's interrupt parent.
+
+- linux,keymap:
+	Usage: required
+	Value type: <prop-encoded-array>
+	Definition: the linux keymap. More information can be found in
+		    input/matrix-keymap.txt.
+
+- keypad,num-rows:
+	Usage: required
+	Value type: <u32>
+	Definition: number of rows in the keymap. More information can be found
+		    in input/matrix-keymap.txt.
+
+- keypad,num-columns:
+	Usage: required
+	Value type: <u32>
+	Definition: number of columns in the keymap. More information can be
+		    found in input/matrix-keymap.txt.
+
+- debounce:
+	Usage: optional
+	Value type: <u32>
+	Definition: time in microseconds that key must be pressed or release
+		    for key sense interrupt to trigger.
+
+- scan-delay:
+	Usage: optional
+	Value type: <u32>
+	Definition: time in microseconds to pause between successive scans
+		    of the matrix array.
+
+- row-hold:
+	Usage: optional
+	Value type: <u32>
+	Definition: time in nanoseconds to pause between scans of each row in
+		    the matrix array.
+
+EXAMPLE
+
+	keypad {
+		compatible = "qcom,pm8921-keypad";
+		interrupt-parent = <&pmicintc>;
+		interrupts = <74 1>, <75 1>;
+		linux,keymap = <
+			MATRIX_KEY(0, 0, KEY_VOLUMEUP)
+			MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
+			MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
+			MATRIX_KEY(0, 3, KEY_CAMERA)
+			>;
+		keypad,num-rows = <1>;
+		keypad,num-columns = <5>;
+		debounce = <15>;
+		scan-delay = <32>;
+		row-hold = <91500>;
+	};