ARM: dts: imx6sl: add keypad support for i.mx6sl-evk board.
Subsystems (2)
PATCH 1/1 ARM: dts: imx6sl: add keypad support for i.mx6sl-evk board.
i.MX6SL EVK board has a 3*3 keypad matrix to support 8 keypads, enable them, the keymap is as below:
SW6: 0x00000067 /* KEY_UP */ SW7: 0x0001006c /* KEY_DOWN */ SW8: 0x0002001c /* KEY_ENTER */ SW9: 0x01000066 /* KEY_HOME */ SW10: 0x0101006a /* KEY_RIGHT */ SW11: 0x01020069 /* KEY_LEFT */ SW12: 0x02000072 /* KEY_VOLUMEDOWN */ SW13: 0x02010073 /* KEY_VOLUMEUP */
--- arch/arm/boot/dts/imx6sl-evk.dts | 27 +++++++++++++++++++++++++++ arch/arm/boot/dts/imx6sl.dtsi | 2 ++ 2 files changed, 29 insertions(+)
arch/arm/boot/dts/imx6sl-evk.dts +27 -0
@@ -93,6 +93,17 @@ fsl,pins = <MX6SL_FEC_PINGRP1>; }; + pinctrl_kpp: kppgrp { + fsl,pins = < + MX6SL_PAD_KEY_ROW0__KEY_ROW0 0x1b010 + MX6SL_PAD_KEY_ROW1__KEY_ROW1 0x1b010 + MX6SL_PAD_KEY_ROW2__KEY_ROW2 0x1b0b0 + MX6SL_PAD_KEY_COL0__KEY_COL0 0x80000000 + MX6SL_PAD_KEY_COL1__KEY_COL1 0x80000000 + MX6SL_PAD_KEY_COL2__KEY_COL2 0x80000000 + >; + }; + pinctrl_uart1: uart1grp { fsl,pins = <MX6SL_UART1_PINGRP1>; };
@@ -139,6 +150,22 @@ }; }; +&kpp { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_kpp>; + linux,keymap = < + 0x00000067 /* KEY_UP */ + 0x0001006c /* KEY_DOWN */ + 0x0002001c /* KEY_ENTER */ + 0x01000066 /* KEY_HOME */ + 0x0101006a /* KEY_RIGHT */ + 0x01020069 /* KEY_LEFT */ + 0x02000072 /* KEY_VOLUMEDOWN */ + 0x02010073 /* KEY_VOLUMEUP */ + >; + status = "okay"; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>;
arch/arm/boot/dts/imx6sl.dtsi +2 -0
@@ -393,8 +393,10 @@ }; kpp: kpp at 020b8000 { + compatible = "fsl,imx6sl-kpp", "fsl,imx21-kpp"; reg = <0x020b8000 0x4000>; interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; wdog1: wdog at 020bc000 {
Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: dts: imx6sl: add keypad support for i.mx6sl-evk board.
Quoted 24 lines · Anson Huang
i.MX6SL EVK board has a 3*3 keypad matrix to support 8 keypads, enable them, the keymap is as below:
SW6: 0x00000067 /* KEY_UP */ SW7: 0x0001006c /* KEY_DOWN */ SW8: 0x0002001c /* KEY_ENTER */ SW9: 0x01000066 /* KEY_HOME */ SW10: 0x0101006a /* KEY_RIGHT */ SW11: 0x01020069 /* KEY_LEFT */ SW12: 0x02000072 /* KEY_VOLUMEDOWN */ SW13: 0x02010073 /* KEY_VOLUMEUP */Signed-off-by Anson Huang <[email protected]>--- arch/arm/boot/dts/imx6sl-evk.dts | 27 +++++++++++++++++++++++++++ arch/arm/boot/dts/imx6sl.dtsi | 2 ++ 2 files changed, 29 insertions(+)arch/arm/boot/dts/imx6sl-evk.dts +0
-0@@ -93,6 +93,17 @@ fsl,pins = <MX6SL_FEC_PINGRP1>;
arch/arm/boot/dts/imx6sl-evk.dts line 103
Quoted 10 lines
arch/arm/boot/dts/imx6sl-evk.dts +8
-0}; + pinctrl_kpp: kppgrp { + fsl,pins = < + MX6SL_PAD_KEY_ROW0__KEY_ROW0 0x1b010 + MX6SL_PAD_KEY_ROW1__KEY_ROW1 0x1b010 + MX6SL_PAD_KEY_ROW2__KEY_ROW2 0x1b0b0 + MX6SL_PAD_KEY_COL0__KEY_COL0 0x80000000 + MX6SL_PAD_KEY_COL1__KEY_COL1 0x80000000 + MX6SL_PAD_KEY_COL2__KEY_COL2 0x80000000
Rather than using whatever the config register gives us, why don't we put a proper pad confg value for COLs just like ROWs?
Quoted 12 lines
arch/arm/boot/dts/imx6sl-evk.dts +5
-0+ >; + }; + pinctrl_uart1: uart1grp { fsl,pins = <MX6SL_UART1_PINGRP1>; };@@ -139,6 +150,22 @@ }; }; +&kpp { + pinctrl-names = "default";
arch/arm/boot/dts/imx6sl-evk.dts line 164
Quoted 10 lines
arch/arm/boot/dts/imx6sl-evk.dts +10
-0+ pinctrl-0 = <&pinctrl_kpp>; + linux,keymap = < + 0x00000067 /* KEY_UP */ + 0x0001006c /* KEY_DOWN */ + 0x0002001c /* KEY_ENTER */ + 0x01000066 /* KEY_HOME */ + 0x0101006a /* KEY_RIGHT */ + 0x01020069 /* KEY_LEFT */ + 0x02000072 /* KEY_VOLUMEDOWN */ + 0x02010073 /* KEY_VOLUMEUP */
You can use the macros defined in include/dt-bindings/input/input.h to make them more readable.
Shawn
Quoted 26 lines
arch/arm/boot/dts/imx6sl-evk.dts +4
-0+ >; + status = "okay"; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>;arch/arm/boot/dts/imx6sl.dtsi +2
-0@@ -393,8 +393,10 @@ }; kpp: kpp at 020b8000 { + compatible = "fsl,imx6sl-kpp", "fsl,imx21-kpp"; reg = <0x020b8000 0x4000>; interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; wdog1: wdog at 020bc000 {Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: dts: imx6sl: add keypad support for i.mx6sl-evk board.
Quoted 27 lines · Shawn Guo
Quoted 26 lines · Anson Huang
i.MX6SL EVK board has a 3*3 keypad matrix to support 8 keypads, enable them, the keymap is as below:
SW6: 0x00000067 /* KEY_UP */ SW7: 0x0001006c /* KEY_DOWN */ SW8: 0x0002001c /* KEY_ENTER */ SW9: 0x01000066 /* KEY_HOME */ SW10: 0x0101006a /* KEY_RIGHT */ SW11: 0x01020069 /* KEY_LEFT */ SW12: 0x02000072 /* KEY_VOLUMEDOWN */ SW13: 0x02010073 /* KEY_VOLUMEUP */Signed-off-by Anson Huang <[email protected]>--- arch/arm/boot/dts/imx6sl-evk.dts | 27 +++++++++++++++++++++++++++ arch/arm/boot/dts/imx6sl.dtsi | 2 ++ 2 files changed, 29 insertions(+)arch/arm/boot/dts/imx6sl-evk.dts +0
-0@@ -93,6 +93,17 @@ fsl,pins = <MX6SL_FEC_PINGRP1>; };
Quoted 11 lines
arch/arm/boot/dts/imx6sl-evk.dts line 103
Quoted 8 lines
arch/arm/boot/dts/imx6sl-evk.dts +8
-0+ pinctrl_kpp: kppgrp { + fsl,pins = < + MX6SL_PAD_KEY_ROW0__KEY_ROW0 0x1b010 + MX6SL_PAD_KEY_ROW1__KEY_ROW1 0x1b010 + MX6SL_PAD_KEY_ROW2__KEY_ROW2 0x1b0b0 + MX6SL_PAD_KEY_COL0__KEY_COL0 0x80000000 + MX6SL_PAD_KEY_COL1__KEY_COL1 0x80000000 + MX6SL_PAD_KEY_COL2__KEY_COL2 0x80000000Rather than using whatever the config register gives us, why don't we put a proper pad confg value for COLs just like ROWs?
right, actually I think we should never use 0x80000000, as we might need to add multiple pin state, so all those pins using 0x80000000, should be configurated, will do it in V2.
Quoted 11 lines
Quoted 11 lines
arch/arm/boot/dts/imx6sl-evk.dts +3
-0+ >; + }; + pinctrl_uart1: uart1grp { fsl,pins = <MX6SL_UART1_PINGRP1>; };@@ -139,6 +150,22 @@ }; };
Quoted 15 lines
arch/arm/boot/dts/imx6sl-evk.dts line 164
Quoted 12 lines
arch/arm/boot/dts/imx6sl-evk.dts +12
-0+&kpp { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_kpp>; + linux,keymap = < + 0x00000067 /* KEY_UP */ + 0x0001006c /* KEY_DOWN */ + 0x0002001c /* KEY_ENTER */ + 0x01000066 /* KEY_HOME */ + 0x0101006a /* KEY_RIGHT */ + 0x01020069 /* KEY_LEFT */ + 0x02000072 /* KEY_VOLUMEDOWN */ + 0x02010073 /* KEY_VOLUMEUP */You can use the macros defined in
include/dt-bindings/input/input.hto make them more readable.
I thought about this, but what we used here is keymap, which contain info other than key-code, the keymap is (row << 24 | column << 16 | key-code), so should we use "row << 24 | column << 16 | key-code" format here is using macro define? Does DTS support it?
Quoted 30 lines
Shawn
Quoted 26 lines
arch/arm/boot/dts/imx6sl-evk.dts +4
-0+ >; + status = "okay"; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>;arch/arm/boot/dts/imx6sl.dtsi +2
-0@@ -393,8 +393,10 @@ }; kpp: kpp at 020b8000 { + compatible = "fsl,imx6sl-kpp", "fsl,imx21-kpp"; reg = <0x020b8000 0x4000>; interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; wdog1: wdog at 020bc000 {Signature · 1 line
1.7.9.5
PATCH 1/1 ARM: dts: imx6sl: add keypad support for i.mx6sl-evk board.
In reply to Shawn GuoOn Tue, Jan 14, 2014 at 04:29:50PM +0800, Shawn Guo wrote:
OK, I saw this define "#define MATRIX_KEY(row, col, code)" in include/dt-bindings/input/input.h, please ignore my first reply. Will do it in V2.
Quoted 94 lines · Anson Huang
Quoted 24 lines
i.MX6SL EVK board has a 3*3 keypad matrix to support 8 keypads, enable them, the keymap is as below:
SW6: 0x00000067 /* KEY_UP */ SW7: 0x0001006c /* KEY_DOWN */ SW8: 0x0002001c /* KEY_ENTER */ SW9: 0x01000066 /* KEY_HOME */ SW10: 0x0101006a /* KEY_RIGHT */ SW11: 0x01020069 /* KEY_LEFT */ SW12: 0x02000072 /* KEY_VOLUMEDOWN */ SW13: 0x02010073 /* KEY_VOLUMEUP */Signed-off-by Anson Huang <[email protected]>--- arch/arm/boot/dts/imx6sl-evk.dts | 27 +++++++++++++++++++++++++++ arch/arm/boot/dts/imx6sl.dtsi | 2 ++ 2 files changed, 29 insertions(+)arch/arm/boot/dts/imx6sl-evk.dts +0
-0@@ -93,6 +93,17 @@ fsl,pins = <MX6SL_FEC_PINGRP1>;arch/arm/boot/dts/imx6sl-evk.dts line 103
Quoted 10 lines
arch/arm/boot/dts/imx6sl-evk.dts +8
-0}; + pinctrl_kpp: kppgrp { + fsl,pins = < + MX6SL_PAD_KEY_ROW0__KEY_ROW0 0x1b010 + MX6SL_PAD_KEY_ROW1__KEY_ROW1 0x1b010 + MX6SL_PAD_KEY_ROW2__KEY_ROW2 0x1b0b0 + MX6SL_PAD_KEY_COL0__KEY_COL0 0x80000000 + MX6SL_PAD_KEY_COL1__KEY_COL1 0x80000000 + MX6SL_PAD_KEY_COL2__KEY_COL2 0x80000000Rather than using whatever the config register gives us, why don't we put a proper pad confg value for COLs just like ROWs?
Quoted 12 lines
arch/arm/boot/dts/imx6sl-evk.dts +5
-0+ >; + }; + pinctrl_uart1: uart1grp { fsl,pins = <MX6SL_UART1_PINGRP1>; };@@ -139,6 +150,22 @@ }; }; +&kpp { + pinctrl-names = "default";arch/arm/boot/dts/imx6sl-evk.dts line 164
Quoted 10 lines
arch/arm/boot/dts/imx6sl-evk.dts +10
-0+ pinctrl-0 = <&pinctrl_kpp>; + linux,keymap = < + 0x00000067 /* KEY_UP */ + 0x0001006c /* KEY_DOWN */ + 0x0002001c /* KEY_ENTER */ + 0x01000066 /* KEY_HOME */ + 0x0101006a /* KEY_RIGHT */ + 0x01020069 /* KEY_LEFT */ + 0x02000072 /* KEY_VOLUMEDOWN */ + 0x02010073 /* KEY_VOLUMEUP */You can use the macros defined in
include/dt-bindings/input/input.hto make them more readable.Shawn
Quoted 26 lines
arch/arm/boot/dts/imx6sl-evk.dts +4
-0+ >; + status = "okay"; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>;arch/arm/boot/dts/imx6sl.dtsi +2
-0@@ -393,8 +393,10 @@ }; kpp: kpp at 020b8000 { + compatible = "fsl,imx6sl-kpp", "fsl,imx21-kpp"; reg = <0x020b8000 0x4000>; interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&clks IMX6SL_CLK_DUMMY>; }; wdog1: wdog at 020bc000 {Signature · 1 line
1.7.9.5