* [PATCH 1/5] ARM: pxa27x/pxa3xx: moved pxa27x_keypad.h to platform pxa directory
2010-08-26 9:18 [PATCH 0/5] ARM: pxa168: add keypad support Mark F. Brown
@ 2010-08-26 9:18 ` Mark F. Brown
2010-08-31 4:13 ` Eric Miao
2010-08-26 9:18 ` [PATCH 2/5] ARM: pxa168: added keypad support Mark F. Brown
` (3 subsequent siblings)
4 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-26 9:18 UTC (permalink / raw)
To: linux-arm-kernel
mach-mmp utilizes pxa27x_keypad code so we need to move header to
platform pxa directory.
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
---
arch/arm/mach-pxa/devices.c | 2 +-
arch/arm/mach-pxa/em-x270.c | 2 +-
arch/arm/mach-pxa/ezx.c | 2 +-
arch/arm/mach-pxa/include/mach/pxa27x_keypad.h | 59 ------------------------
arch/arm/mach-pxa/littleton.c | 2 +-
arch/arm/mach-pxa/mainstone.c | 4 +-
arch/arm/mach-pxa/mioa701.c | 2 +-
arch/arm/mach-pxa/palmld.c | 2 +-
arch/arm/mach-pxa/palmt5.c | 2 +-
arch/arm/mach-pxa/palmtreo.c | 2 +-
arch/arm/mach-pxa/palmtx.c | 2 +-
arch/arm/mach-pxa/palmz72.c | 2 +-
arch/arm/mach-pxa/tavorevb.c | 2 +-
arch/arm/mach-pxa/z2.c | 2 +-
arch/arm/mach-pxa/zylonite.c | 2 +-
arch/arm/plat-pxa/include/plat/pxa27x_keypad.h | 59 ++++++++++++++++++++++++
drivers/input/keyboard/pxa27x_keypad.c | 2 +-
17 files changed, 75 insertions(+), 75 deletions(-)
delete mode 100644 arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
create mode 100644 arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index a2fc859..08b4103 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -11,7 +11,7 @@
#include <mach/mmc.h>
#include <mach/irda.h>
#include <mach/ohci.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/pxa2xx_spi.h>
#include <mach/camera.h>
#include <mach/audio.h>
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 0517c17..51286a7 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -43,7 +43,7 @@
#include <mach/pxafb.h>
#include <mach/ohci.h>
#include <mach/mmc.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <plat/i2c.h>
#include <mach/camera.h>
#include <mach/pxa2xx_spi.h>
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 3fe61f4..f997e84 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -32,7 +32,7 @@
#include <mach/ohci.h>
#include <plat/i2c.h>
#include <mach/hardware.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/camera.h>
#include "devices.h"
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
deleted file mode 100644
index 7b4eadc..0000000
--- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
-#define __ASM_ARCH_PXA27x_KEYPAD_H
-
-#include <linux/input.h>
-#include <linux/input/matrix_keypad.h>
-
-#define MAX_MATRIX_KEY_ROWS (8)
-#define MAX_MATRIX_KEY_COLS (8)
-#define MATRIX_ROW_SHIFT (3)
-#define MAX_DIRECT_KEY_NUM (8)
-
-/* pxa3xx keypad platform specific parameters
- *
- * NOTE:
- * 1. direct_key_num indicates the number of keys in the direct keypad
- * _plus_ the number of rotary-encoder sensor inputs, this can be
- * left as 0 if only rotary encoders are enabled, the driver will
- * automatically calculate this
- *
- * 2. direct_key_map is the key code map for the direct keys, if rotary
- * encoder(s) are enabled, direct key 0/1(2/3) will be ignored
- *
- * 3. rotary can be either interpreted as a relative input event (e.g.
- * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
- *
- * 4. matrix key and direct key will use the same debounce_interval by
- * default, which should be sufficient in most cases
- */
-struct pxa27x_keypad_platform_data {
-
- /* code map for the matrix keys */
- unsigned int matrix_key_rows;
- unsigned int matrix_key_cols;
- unsigned int *matrix_key_map;
- int matrix_key_map_size;
-
- /* direct keys */
- int direct_key_num;
- unsigned int direct_key_map[MAX_DIRECT_KEY_NUM];
-
- /* rotary encoders 0 */
- int enable_rotary0;
- int rotary0_rel_code;
- int rotary0_up_key;
- int rotary0_down_key;
-
- /* rotary encoders 1 */
- int enable_rotary1;
- int rotary1_rel_code;
- int rotary1_up_key;
- int rotary1_down_key;
-
- /* key debounce interval */
- unsigned int debounce_interval;
-};
-
-extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
-
-#endif /* __ASM_ARCH_PXA27x_KEYPAD_H */
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index 83f3236..eb58506 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -43,7 +43,7 @@
#include <mach/pxafb.h>
#include <mach/mmc.h>
#include <mach/pxa2xx_spi.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/littleton.h>
#include <plat/i2c.h>
#include <plat/pxa3xx_nand.h>
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index c2a8717..126dca1 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -41,7 +41,7 @@
#include <asm/mach/irq.h>
#include <asm/mach/flash.h>
-#include <mach/pxa27x.h>
+#include <plat/pxa27x.h>
#include <mach/gpio.h>
#include <mach/mainstone.h>
#include <mach/audio.h>
@@ -50,7 +50,7 @@
#include <mach/mmc.h>
#include <mach/irda.h>
#include <mach/ohci.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include "generic.h"
#include "devices.h"
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
index dc66942..ffb3f5a 100644
--- a/arch/arm/mach-pxa/mioa701.c
+++ b/arch/arm/mach-pxa/mioa701.c
@@ -45,7 +45,7 @@
#include <mach/pxa27x.h>
#include <mach/regs-rtc.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/pxafb.h>
#include <mach/mmc.h>
#include <mach/udc.h>
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
index 91038ee..3ff0c4a 100644
--- a/arch/arm/mach-pxa/palmld.c
+++ b/arch/arm/mach-pxa/palmld.c
@@ -39,7 +39,7 @@
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/irda.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
index 1c28199..5b9f766 100644
--- a/arch/arm/mach-pxa/palmt5.c
+++ b/arch/arm/mach-pxa/palmt5.c
@@ -39,7 +39,7 @@
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/irda.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
index 52defd5..f685a60 100644
--- a/arch/arm/mach-pxa/palmtreo.c
+++ b/arch/arm/mach-pxa/palmtreo.c
@@ -39,7 +39,7 @@
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/irda.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/ohci.h>
#include <mach/pxa2xx-regs.h>
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
index 144dc2b..89a3792 100644
--- a/arch/arm/mach-pxa/palmtx.c
+++ b/arch/arm/mach-pxa/palmtx.c
@@ -43,7 +43,7 @@
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/irda.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index 87e4b10..38f4425 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -41,7 +41,7 @@
#include <mach/mmc.h>
#include <mach/pxafb.h>
#include <mach/irda.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/udc.h>
#include <mach/palmasoc.h>
#include <mach/palm27x.h>
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c
index f02dcb5..0f440c9 100644
--- a/arch/arm/mach-pxa/tavorevb.c
+++ b/arch/arm/mach-pxa/tavorevb.c
@@ -25,7 +25,7 @@
#include <mach/pxa930.h>
#include <mach/pxafb.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include "devices.h"
#include "generic.h"
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c
index f0d0228..8c44bc4 100644
--- a/arch/arm/mach-pxa/z2.c
+++ b/arch/arm/mach-pxa/z2.c
@@ -37,7 +37,7 @@
#include <mach/z2.h>
#include <mach/pxafb.h>
#include <mach/mmc.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <mach/pxa2xx_spi.h>
#include <plat/i2c.h>
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 2edad61..69df3ed 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -30,7 +30,7 @@
#include <mach/zylonite.h>
#include <mach/mmc.h>
#include <mach/ohci.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
#include <plat/pxa3xx_nand.h>
#include "devices.h"
diff --git a/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
new file mode 100644
index 0000000..7b4eadc
--- /dev/null
+++ b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
@@ -0,0 +1,59 @@
+#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
+#define __ASM_ARCH_PXA27x_KEYPAD_H
+
+#include <linux/input.h>
+#include <linux/input/matrix_keypad.h>
+
+#define MAX_MATRIX_KEY_ROWS (8)
+#define MAX_MATRIX_KEY_COLS (8)
+#define MATRIX_ROW_SHIFT (3)
+#define MAX_DIRECT_KEY_NUM (8)
+
+/* pxa3xx keypad platform specific parameters
+ *
+ * NOTE:
+ * 1. direct_key_num indicates the number of keys in the direct keypad
+ * _plus_ the number of rotary-encoder sensor inputs, this can be
+ * left as 0 if only rotary encoders are enabled, the driver will
+ * automatically calculate this
+ *
+ * 2. direct_key_map is the key code map for the direct keys, if rotary
+ * encoder(s) are enabled, direct key 0/1(2/3) will be ignored
+ *
+ * 3. rotary can be either interpreted as a relative input event (e.g.
+ * REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
+ *
+ * 4. matrix key and direct key will use the same debounce_interval by
+ * default, which should be sufficient in most cases
+ */
+struct pxa27x_keypad_platform_data {
+
+ /* code map for the matrix keys */
+ unsigned int matrix_key_rows;
+ unsigned int matrix_key_cols;
+ unsigned int *matrix_key_map;
+ int matrix_key_map_size;
+
+ /* direct keys */
+ int direct_key_num;
+ unsigned int direct_key_map[MAX_DIRECT_KEY_NUM];
+
+ /* rotary encoders 0 */
+ int enable_rotary0;
+ int rotary0_rel_code;
+ int rotary0_up_key;
+ int rotary0_down_key;
+
+ /* rotary encoders 1 */
+ int enable_rotary1;
+ int rotary1_rel_code;
+ int rotary1_up_key;
+ int rotary1_down_key;
+
+ /* key debounce interval */
+ unsigned int debounce_interval;
+};
+
+extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
+
+#endif /* __ASM_ARCH_PXA27x_KEYPAD_H */
diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c
index 0e53b3b..0610d10 100644
--- a/drivers/input/keyboard/pxa27x_keypad.c
+++ b/drivers/input/keyboard/pxa27x_keypad.c
@@ -32,7 +32,7 @@
#include <asm/mach/map.h>
#include <mach/hardware.h>
-#include <mach/pxa27x_keypad.h>
+#include <plat/pxa27x_keypad.h>
/*
* Keypad Controller registers
*/
--
1.7.0.4
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH 1/5] ARM: pxa27x/pxa3xx: moved pxa27x_keypad.h to platform pxa directory
2010-08-26 9:18 ` [PATCH 1/5] ARM: pxa27x/pxa3xx: moved pxa27x_keypad.h to platform pxa directory Mark F. Brown
@ 2010-08-31 4:13 ` Eric Miao
0 siblings, 0 replies; 17+ messages in thread
From: Eric Miao @ 2010-08-31 4:13 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> mach-mmp utilizes pxa27x_keypad code so we need to move header to
> platform pxa directory.
Good move. I'm actually very inclined to move this into include/linux/input/.
And you may try '-M' when generating patches with 'git format-patch', and
see the difference of the output.
>
> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
> ---
> ?arch/arm/mach-pxa/devices.c ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/em-x270.c ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/ezx.c ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/include/mach/pxa27x_keypad.h | ? 59 ------------------------
> ?arch/arm/mach-pxa/littleton.c ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/mainstone.c ? ? ? ? ? ? ? ? ?| ? ?4 +-
> ?arch/arm/mach-pxa/mioa701.c ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/palmld.c ? ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/palmt5.c ? ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/palmtreo.c ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/palmtx.c ? ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/palmz72.c ? ? ? ? ? ? ? ? ? ?| ? ?2 +-
> ?arch/arm/mach-pxa/tavorevb.c ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/z2.c ? ? ? ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/mach-pxa/zylonite.c ? ? ? ? ? ? ? ? ? | ? ?2 +-
> ?arch/arm/plat-pxa/include/plat/pxa27x_keypad.h | ? 59 ++++++++++++++++++++++++
> ?drivers/input/keyboard/pxa27x_keypad.c ? ? ? ? | ? ?2 +-
> ?17 files changed, 75 insertions(+), 75 deletions(-)
> ?delete mode 100644 arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> ?create mode 100644 arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
>
> diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
> index a2fc859..08b4103 100644
> --- a/arch/arm/mach-pxa/devices.c
> +++ b/arch/arm/mach-pxa/devices.c
> @@ -11,7 +11,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/irda.h>
> ?#include <mach/ohci.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/pxa2xx_spi.h>
> ?#include <mach/camera.h>
> ?#include <mach/audio.h>
> diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
> index 0517c17..51286a7 100644
> --- a/arch/arm/mach-pxa/em-x270.c
> +++ b/arch/arm/mach-pxa/em-x270.c
> @@ -43,7 +43,7 @@
> ?#include <mach/pxafb.h>
> ?#include <mach/ohci.h>
> ?#include <mach/mmc.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <plat/i2c.h>
> ?#include <mach/camera.h>
> ?#include <mach/pxa2xx_spi.h>
> diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
> index 3fe61f4..f997e84 100644
> --- a/arch/arm/mach-pxa/ezx.c
> +++ b/arch/arm/mach-pxa/ezx.c
> @@ -32,7 +32,7 @@
> ?#include <mach/ohci.h>
> ?#include <plat/i2c.h>
> ?#include <mach/hardware.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/camera.h>
>
> ?#include "devices.h"
> diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> deleted file mode 100644
> index 7b4eadc..0000000
> --- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
> -#define __ASM_ARCH_PXA27x_KEYPAD_H
> -
> -#include <linux/input.h>
> -#include <linux/input/matrix_keypad.h>
> -
> -#define MAX_MATRIX_KEY_ROWS ? ?(8)
> -#define MAX_MATRIX_KEY_COLS ? ?(8)
> -#define MATRIX_ROW_SHIFT ? ? ? (3)
> -#define MAX_DIRECT_KEY_NUM ? ? (8)
> -
> -/* pxa3xx keypad platform specific parameters
> - *
> - * NOTE:
> - * 1. direct_key_num indicates the number of keys in the direct keypad
> - * ? ?_plus_ the number of rotary-encoder sensor inputs, ?this can be
> - * ? ?left as 0 if only rotary encoders are enabled, ?the driver will
> - * ? ?automatically calculate this
> - *
> - * 2. direct_key_map is the key code map for the direct keys, if rotary
> - * ? ?encoder(s) are enabled, direct key 0/1(2/3) will be ignored
> - *
> - * 3. rotary can be either interpreted as a relative input event (e.g.
> - * ? ?REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
> - *
> - * 4. matrix key and direct key will use the same debounce_interval by
> - * ? ?default, which should be sufficient in most cases
> - */
> -struct pxa27x_keypad_platform_data {
> -
> - ? ? ? /* code map for the matrix keys */
> - ? ? ? unsigned int ? ?matrix_key_rows;
> - ? ? ? unsigned int ? ?matrix_key_cols;
> - ? ? ? unsigned int ? ?*matrix_key_map;
> - ? ? ? int ? ? ? ? ? ? matrix_key_map_size;
> -
> - ? ? ? /* direct keys */
> - ? ? ? int ? ? ? ? ? ? direct_key_num;
> - ? ? ? unsigned int ? ?direct_key_map[MAX_DIRECT_KEY_NUM];
> -
> - ? ? ? /* rotary encoders 0 */
> - ? ? ? int ? ? ? ? ? ? enable_rotary0;
> - ? ? ? int ? ? ? ? ? ? rotary0_rel_code;
> - ? ? ? int ? ? ? ? ? ? rotary0_up_key;
> - ? ? ? int ? ? ? ? ? ? rotary0_down_key;
> -
> - ? ? ? /* rotary encoders 1 */
> - ? ? ? int ? ? ? ? ? ? enable_rotary1;
> - ? ? ? int ? ? ? ? ? ? rotary1_rel_code;
> - ? ? ? int ? ? ? ? ? ? rotary1_up_key;
> - ? ? ? int ? ? ? ? ? ? rotary1_down_key;
> -
> - ? ? ? /* key debounce interval */
> - ? ? ? unsigned int ? ?debounce_interval;
> -};
> -
> -extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
> -
> -#endif /* __ASM_ARCH_PXA27x_KEYPAD_H */
> diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
> index 83f3236..eb58506 100644
> --- a/arch/arm/mach-pxa/littleton.c
> +++ b/arch/arm/mach-pxa/littleton.c
> @@ -43,7 +43,7 @@
> ?#include <mach/pxafb.h>
> ?#include <mach/mmc.h>
> ?#include <mach/pxa2xx_spi.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/littleton.h>
> ?#include <plat/i2c.h>
> ?#include <plat/pxa3xx_nand.h>
> diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
> index c2a8717..126dca1 100644
> --- a/arch/arm/mach-pxa/mainstone.c
> +++ b/arch/arm/mach-pxa/mainstone.c
> @@ -41,7 +41,7 @@
> ?#include <asm/mach/irq.h>
> ?#include <asm/mach/flash.h>
>
> -#include <mach/pxa27x.h>
> +#include <plat/pxa27x.h>
> ?#include <mach/gpio.h>
> ?#include <mach/mainstone.h>
> ?#include <mach/audio.h>
> @@ -50,7 +50,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/irda.h>
> ?#include <mach/ohci.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
>
> ?#include "generic.h"
> ?#include "devices.h"
> diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c
> index dc66942..ffb3f5a 100644
> --- a/arch/arm/mach-pxa/mioa701.c
> +++ b/arch/arm/mach-pxa/mioa701.c
> @@ -45,7 +45,7 @@
>
> ?#include <mach/pxa27x.h>
> ?#include <mach/regs-rtc.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/mmc.h>
> ?#include <mach/udc.h>
> diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c
> index 91038ee..3ff0c4a 100644
> --- a/arch/arm/mach-pxa/palmld.c
> +++ b/arch/arm/mach-pxa/palmld.c
> @@ -39,7 +39,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/irda.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/palmasoc.h>
> ?#include <mach/palm27x.h>
>
> diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c
> index 1c28199..5b9f766 100644
> --- a/arch/arm/mach-pxa/palmt5.c
> +++ b/arch/arm/mach-pxa/palmt5.c
> @@ -39,7 +39,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/irda.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/udc.h>
> ?#include <mach/palmasoc.h>
> ?#include <mach/palm27x.h>
> diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c
> index 52defd5..f685a60 100644
> --- a/arch/arm/mach-pxa/palmtreo.c
> +++ b/arch/arm/mach-pxa/palmtreo.c
> @@ -39,7 +39,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/irda.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/udc.h>
> ?#include <mach/ohci.h>
> ?#include <mach/pxa2xx-regs.h>
> diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c
> index 144dc2b..89a3792 100644
> --- a/arch/arm/mach-pxa/palmtx.c
> +++ b/arch/arm/mach-pxa/palmtx.c
> @@ -43,7 +43,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/irda.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/udc.h>
> ?#include <mach/palmasoc.h>
> ?#include <mach/palm27x.h>
> diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
> index 87e4b10..38f4425 100644
> --- a/arch/arm/mach-pxa/palmz72.c
> +++ b/arch/arm/mach-pxa/palmz72.c
> @@ -41,7 +41,7 @@
> ?#include <mach/mmc.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/irda.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/udc.h>
> ?#include <mach/palmasoc.h>
> ?#include <mach/palm27x.h>
> diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c
> index f02dcb5..0f440c9 100644
> --- a/arch/arm/mach-pxa/tavorevb.c
> +++ b/arch/arm/mach-pxa/tavorevb.c
> @@ -25,7 +25,7 @@
>
> ?#include <mach/pxa930.h>
> ?#include <mach/pxafb.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
>
> ?#include "devices.h"
> ?#include "generic.h"
> diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c
> index f0d0228..8c44bc4 100644
> --- a/arch/arm/mach-pxa/z2.c
> +++ b/arch/arm/mach-pxa/z2.c
> @@ -37,7 +37,7 @@
> ?#include <mach/z2.h>
> ?#include <mach/pxafb.h>
> ?#include <mach/mmc.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <mach/pxa2xx_spi.h>
>
> ?#include <plat/i2c.h>
> diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
> index 2edad61..69df3ed 100644
> --- a/arch/arm/mach-pxa/zylonite.c
> +++ b/arch/arm/mach-pxa/zylonite.c
> @@ -30,7 +30,7 @@
> ?#include <mach/zylonite.h>
> ?#include <mach/mmc.h>
> ?#include <mach/ohci.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?#include <plat/pxa3xx_nand.h>
>
> ?#include "devices.h"
> diff --git a/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
> new file mode 100644
> index 0000000..7b4eadc
> --- /dev/null
> +++ b/arch/arm/plat-pxa/include/plat/pxa27x_keypad.h
> @@ -0,0 +1,59 @@
> +#ifndef __ASM_ARCH_PXA27x_KEYPAD_H
> +#define __ASM_ARCH_PXA27x_KEYPAD_H
> +
> +#include <linux/input.h>
> +#include <linux/input/matrix_keypad.h>
> +
> +#define MAX_MATRIX_KEY_ROWS ? ?(8)
> +#define MAX_MATRIX_KEY_COLS ? ?(8)
> +#define MATRIX_ROW_SHIFT ? ? ? (3)
> +#define MAX_DIRECT_KEY_NUM ? ? (8)
> +
> +/* pxa3xx keypad platform specific parameters
> + *
> + * NOTE:
> + * 1. direct_key_num indicates the number of keys in the direct keypad
> + * ? ?_plus_ the number of rotary-encoder sensor inputs, ?this can be
> + * ? ?left as 0 if only rotary encoders are enabled, ?the driver will
> + * ? ?automatically calculate this
> + *
> + * 2. direct_key_map is the key code map for the direct keys, if rotary
> + * ? ?encoder(s) are enabled, direct key 0/1(2/3) will be ignored
> + *
> + * 3. rotary can be either interpreted as a relative input event (e.g.
> + * ? ?REL_WHEEL/REL_HWHEEL) or specific keys (e.g. UP/DOWN/LEFT/RIGHT)
> + *
> + * 4. matrix key and direct key will use the same debounce_interval by
> + * ? ?default, which should be sufficient in most cases
> + */
> +struct pxa27x_keypad_platform_data {
> +
> + ? ? ? /* code map for the matrix keys */
> + ? ? ? unsigned int ? ?matrix_key_rows;
> + ? ? ? unsigned int ? ?matrix_key_cols;
> + ? ? ? unsigned int ? ?*matrix_key_map;
> + ? ? ? int ? ? ? ? ? ? matrix_key_map_size;
> +
> + ? ? ? /* direct keys */
> + ? ? ? int ? ? ? ? ? ? direct_key_num;
> + ? ? ? unsigned int ? ?direct_key_map[MAX_DIRECT_KEY_NUM];
> +
> + ? ? ? /* rotary encoders 0 */
> + ? ? ? int ? ? ? ? ? ? enable_rotary0;
> + ? ? ? int ? ? ? ? ? ? rotary0_rel_code;
> + ? ? ? int ? ? ? ? ? ? rotary0_up_key;
> + ? ? ? int ? ? ? ? ? ? rotary0_down_key;
> +
> + ? ? ? /* rotary encoders 1 */
> + ? ? ? int ? ? ? ? ? ? enable_rotary1;
> + ? ? ? int ? ? ? ? ? ? rotary1_rel_code;
> + ? ? ? int ? ? ? ? ? ? rotary1_up_key;
> + ? ? ? int ? ? ? ? ? ? rotary1_down_key;
> +
> + ? ? ? /* key debounce interval */
> + ? ? ? unsigned int ? ?debounce_interval;
> +};
> +
> +extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
> +
> +#endif /* __ASM_ARCH_PXA27x_KEYPAD_H */
> diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c
> index 0e53b3b..0610d10 100644
> --- a/drivers/input/keyboard/pxa27x_keypad.c
> +++ b/drivers/input/keyboard/pxa27x_keypad.c
> @@ -32,7 +32,7 @@
> ?#include <asm/mach/map.h>
>
> ?#include <mach/hardware.h>
> -#include <mach/pxa27x_keypad.h>
> +#include <plat/pxa27x_keypad.h>
> ?/*
> ?* Keypad Controller registers
> ?*/
> --
> 1.7.0.4
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/5] ARM: pxa168: added keypad support
2010-08-26 9:18 [PATCH 0/5] ARM: pxa168: add keypad support Mark F. Brown
2010-08-26 9:18 ` [PATCH 1/5] ARM: pxa27x/pxa3xx: moved pxa27x_keypad.h to platform pxa directory Mark F. Brown
@ 2010-08-26 9:18 ` Mark F. Brown
2010-08-31 4:56 ` Haojian Zhuang
2010-08-26 9:18 ` [PATCH 3/5] ARM: pxa168: added wake clear register support for APMU Mark F. Brown
` (2 subsequent siblings)
4 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-26 9:18 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
---
arch/arm/mach-mmp/include/mach/mfp-pxa168.h | 7 +++++++
arch/arm/mach-mmp/include/mach/pxa168.h | 7 +++++++
arch/arm/mach-mmp/pxa168.c | 3 +++
drivers/input/keyboard/Kconfig | 2 +-
4 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h b/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
index ded43c4..4621067 100644
--- a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
+++ b/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
@@ -289,4 +289,11 @@
#define GPIO86_PWM1_OUT MFP_CFG(GPIO86, AF2)
#define GPIO86_PWM2_OUT MFP_CFG(GPIO86, AF3)
+/* Keypad */
+#define GPIO109_KP_MKIN1 MFP_CFG(GPIO109, AF7)
+#define GPIO110_KP_MKIN0 MFP_CFG(GPIO110, AF7)
+#define GPIO111_KP_MKOUT7 MFP_CFG(GPIO111, AF7)
+#define GPIO112_KP_MKOUT6 MFP_CFG(GPIO112, AF7)
+#define GPIO121_KP_MKIN4 MFP_CFG(GPIO121, AF7)
+
#endif /* __ASM_MACH_MFP_PXA168_H */
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h
index 220738f..f34e663 100644
--- a/arch/arm/mach-mmp/include/mach/pxa168.h
+++ b/arch/arm/mach-mmp/include/mach/pxa168.h
@@ -11,6 +11,7 @@ extern void __init pxa168_init_irq(void);
#include <plat/i2c.h>
#include <plat/pxa3xx_nand.h>
#include <video/pxa168fb.h>
+#include <plat/pxa27x_keypad.h>
extern struct pxa_device_desc pxa168_device_uart1;
extern struct pxa_device_desc pxa168_device_uart2;
@@ -27,6 +28,7 @@ extern struct pxa_device_desc pxa168_device_ssp4;
extern struct pxa_device_desc pxa168_device_ssp5;
extern struct pxa_device_desc pxa168_device_nand;
extern struct pxa_device_desc pxa168_device_fb;
+extern struct pxa_device_desc pxa168_device_keypad;
static inline int pxa168_add_uart(int id)
{
@@ -105,4 +107,9 @@ static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
}
+static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
+{
+ return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
+}
+
#endif /* __ASM_MACH_PXA168_H */
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
index eaebf66..2fa16fb 100644
--- a/arch/arm/mach-mmp/pxa168.c
+++ b/arch/arm/mach-mmp/pxa168.c
@@ -77,6 +77,7 @@ static APBC_CLK(ssp2, PXA168_SSP2, 4, 0);
static APBC_CLK(ssp3, PXA168_SSP3, 4, 0);
static APBC_CLK(ssp4, PXA168_SSP4, 4, 0);
static APBC_CLK(ssp5, PXA168_SSP5, 4, 0);
+static APBC_CLK(keypad, PXA168_KPC, 0, 32000);
static APMU_CLK(nand, NAND, 0x01db, 208000000);
static APMU_CLK(lcd, LCD, 0x7f, 312000000);
@@ -98,6 +99,7 @@ static struct clk_lookup pxa168_clkregs[] = {
INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL),
+ INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
};
static int __init pxa168_init(void)
@@ -150,3 +152,4 @@ PXA168_DEVICE(ssp3, "pxa168-ssp", 2, SSP3, 0xd401f000, 0x40, 56, 57);
PXA168_DEVICE(ssp4, "pxa168-ssp", 3, SSP4, 0xd4020000, 0x40, 58, 59);
PXA168_DEVICE(ssp5, "pxa168-ssp", 4, SSP5, 0xd4021000, 0x40, 60, 61);
PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8);
+PXA168_DEVICE(keypad, "pxa27x-keypad", -1, KEYPAD, 0xd4012000, 0x4c);
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index 9cc488d..aa037fe 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -338,7 +338,7 @@ config KEYBOARD_OPENCORES
config KEYBOARD_PXA27x
tristate "PXA27x/PXA3xx keypad support"
- depends on PXA27x || PXA3xx
+ depends on PXA27x || PXA3xx || ARCH_MMP
help
Enable support for PXA27x/PXA3xx keypad controller.
--
1.7.0.4
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH 2/5] ARM: pxa168: added keypad support
2010-08-26 9:18 ` [PATCH 2/5] ARM: pxa168: added keypad support Mark F. Brown
@ 2010-08-31 4:56 ` Haojian Zhuang
0 siblings, 0 replies; 17+ messages in thread
From: Haojian Zhuang @ 2010-08-31 4:56 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
> ---
> ?arch/arm/mach-mmp/include/mach/mfp-pxa168.h | ? ?7 +++++++
> ?arch/arm/mach-mmp/include/mach/pxa168.h ? ? | ? ?7 +++++++
> ?arch/arm/mach-mmp/pxa168.c ? ? ? ? ? ? ? ? ?| ? ?3 +++
> ?drivers/input/keyboard/Kconfig ? ? ? ? ? ? ?| ? ?2 +-
> ?4 files changed, 18 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h b/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
> index ded43c4..4621067 100644
> --- a/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
> +++ b/arch/arm/mach-mmp/include/mach/mfp-pxa168.h
> @@ -289,4 +289,11 @@
> ?#define GPIO86_PWM1_OUT ? ? ? ? ? ? ? ?MFP_CFG(GPIO86, AF2)
> ?#define GPIO86_PWM2_OUT ? ? ? ? ? ? ? ?MFP_CFG(GPIO86, AF3)
>
> +/* Keypad */
> +#define GPIO109_KP_MKIN1 ? ? ? ?MFP_CFG(GPIO109, AF7)
> +#define GPIO110_KP_MKIN0 ? ? ? ?MFP_CFG(GPIO110, AF7)
> +#define GPIO111_KP_MKOUT7 ? ? ? MFP_CFG(GPIO111, AF7)
> +#define GPIO112_KP_MKOUT6 ? ? ? MFP_CFG(GPIO112, AF7)
> +#define GPIO121_KP_MKIN4 ? ? ? ?MFP_CFG(GPIO121, AF7)
> +
> ?#endif /* __ASM_MACH_MFP_PXA168_H */
> diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h b/arch/arm/mach-mmp/include/mach/pxa168.h
> index 220738f..f34e663 100644
> --- a/arch/arm/mach-mmp/include/mach/pxa168.h
> +++ b/arch/arm/mach-mmp/include/mach/pxa168.h
> @@ -11,6 +11,7 @@ extern void __init pxa168_init_irq(void);
> ?#include <plat/i2c.h>
> ?#include <plat/pxa3xx_nand.h>
> ?#include <video/pxa168fb.h>
> +#include <plat/pxa27x_keypad.h>
>
> ?extern struct pxa_device_desc pxa168_device_uart1;
> ?extern struct pxa_device_desc pxa168_device_uart2;
> @@ -27,6 +28,7 @@ extern struct pxa_device_desc pxa168_device_ssp4;
> ?extern struct pxa_device_desc pxa168_device_ssp5;
> ?extern struct pxa_device_desc pxa168_device_nand;
> ?extern struct pxa_device_desc pxa168_device_fb;
> +extern struct pxa_device_desc pxa168_device_keypad;
>
> ?static inline int pxa168_add_uart(int id)
> ?{
> @@ -105,4 +107,9 @@ static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
> ? ? ? ?return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
> ?}
>
> +static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
> +{
> + ? ? ? return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
> +}
> +
> ?#endif /* __ASM_MACH_PXA168_H */
> diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
> index eaebf66..2fa16fb 100644
> --- a/arch/arm/mach-mmp/pxa168.c
> +++ b/arch/arm/mach-mmp/pxa168.c
> @@ -77,6 +77,7 @@ static APBC_CLK(ssp2, PXA168_SSP2, 4, 0);
> ?static APBC_CLK(ssp3, PXA168_SSP3, 4, 0);
> ?static APBC_CLK(ssp4, PXA168_SSP4, 4, 0);
> ?static APBC_CLK(ssp5, PXA168_SSP5, 4, 0);
> +static APBC_CLK(keypad, PXA168_KPC, 0, 32000);
>
> ?static APMU_CLK(nand, NAND, 0x01db, 208000000);
> ?static APMU_CLK(lcd, LCD, 0x7f, 312000000);
> @@ -98,6 +99,7 @@ static struct clk_lookup pxa168_clkregs[] = {
> ? ? ? ?INIT_CLKREG(&clk_ssp5, "pxa168-ssp.4", NULL),
> ? ? ? ?INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
> ? ? ? ?INIT_CLKREG(&clk_lcd, "pxa168-fb", NULL),
> + ? ? ? INIT_CLKREG(&clk_keypad, "pxa27x-keypad", NULL),
> ?};
>
> ?static int __init pxa168_init(void)
> @@ -150,3 +152,4 @@ PXA168_DEVICE(ssp3, "pxa168-ssp", 2, SSP3, 0xd401f000, 0x40, 56, 57);
> ?PXA168_DEVICE(ssp4, "pxa168-ssp", 3, SSP4, 0xd4020000, 0x40, 58, 59);
> ?PXA168_DEVICE(ssp5, "pxa168-ssp", 4, SSP5, 0xd4021000, 0x40, 60, 61);
> ?PXA168_DEVICE(fb, "pxa168-fb", -1, LCD, 0xd420b000, 0x1c8);
> +PXA168_DEVICE(keypad, "pxa27x-keypad", -1, KEYPAD, 0xd4012000, 0x4c);
> diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
> index 9cc488d..aa037fe 100644
> --- a/drivers/input/keyboard/Kconfig
> +++ b/drivers/input/keyboard/Kconfig
> @@ -338,7 +338,7 @@ config KEYBOARD_OPENCORES
>
> ?config KEYBOARD_PXA27x
> ? ? ? ?tristate "PXA27x/PXA3xx keypad support"
> - ? ? ? depends on PXA27x || PXA3xx
> + ? ? ? depends on PXA27x || PXA3xx || ARCH_MMP
> ? ? ? ?help
> ? ? ? ? ?Enable support for PXA27x/PXA3xx keypad controller.
>
> --
> 1.7.0.4
>
It seems good. Acked
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 3/5] ARM: pxa168: added wake clear register support for APMU
2010-08-26 9:18 [PATCH 0/5] ARM: pxa168: add keypad support Mark F. Brown
2010-08-26 9:18 ` [PATCH 1/5] ARM: pxa27x/pxa3xx: moved pxa27x_keypad.h to platform pxa directory Mark F. Brown
2010-08-26 9:18 ` [PATCH 2/5] ARM: pxa168: added keypad support Mark F. Brown
@ 2010-08-26 9:18 ` Mark F. Brown
2010-08-26 9:18 ` [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts Mark F. Brown
2010-08-26 9:18 ` [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad Mark F. Brown
4 siblings, 0 replies; 17+ messages in thread
From: Mark F. Brown @ 2010-08-26 9:18 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
---
arch/arm/mach-mmp/include/mach/regs-apmu.h | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-mmp/include/mach/regs-apmu.h b/arch/arm/mach-mmp/include/mach/regs-apmu.h
index 9190305..ac47023 100644
--- a/arch/arm/mach-mmp/include/mach/regs-apmu.h
+++ b/arch/arm/mach-mmp/include/mach/regs-apmu.h
@@ -33,4 +33,16 @@
#define APMU_FNRST_DIS (1 << 1)
#define APMU_AXIRST_DIS (1 << 0)
+/* Wake Clear Register */
+#define APMU_WAKE_CLR APMU_REG(0x07c)
+
+#define APMU_PXA168_KP_WAKE_CLR (1 << 7)
+#define APMU_PXA168_CFI_WAKE_CLR (1 << 6)
+#define APMU_PXA168_XD_WAKE_CLR (1 << 5)
+#define APMU_PXA168_MSP_WAKE_CLR (1 << 4)
+#define APMU_PXA168_SD4_WAKE_CLR (1 << 3)
+#define APMU_PXA168_SD3_WAKE_CLR (1 << 2)
+#define APMU_PXA168_SD2_WAKE_CLR (1 << 1)
+#define APMU_PXA168_SD1_WAKE_CLR (1 << 0)
+
#endif /* __ASM_MACH_REGS_APMU_H */
--
1.7.0.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-26 9:18 [PATCH 0/5] ARM: pxa168: add keypad support Mark F. Brown
` (2 preceding siblings ...)
2010-08-26 9:18 ` [PATCH 3/5] ARM: pxa168: added wake clear register support for APMU Mark F. Brown
@ 2010-08-26 9:18 ` Mark F. Brown
2010-08-31 4:53 ` Haojian Zhuang
2010-08-26 9:18 ` [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad Mark F. Brown
4 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-26 9:18 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
---
arch/arm/mach-mmp/irq-pxa168.c | 23 ++++++++++++++++++++++-
1 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
index 52ff2f0..bfb0984 100644
--- a/arch/arm/mach-mmp/irq-pxa168.c
+++ b/arch/arm/mach-mmp/irq-pxa168.c
@@ -17,6 +17,8 @@
#include <linux/io.h>
#include <mach/regs-icu.h>
+#include <mach/regs-apmu.h>
+#include <mach/cputype.h>
#include "common.h"
@@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
.unmask = icu_unmask_irq,
};
+void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
+{
+ uint32_t val;
+ uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
+
+ /* clear keypad wake event */
+ val = __raw_readl(APMU_WAKE_CLR);
+ __raw_writel(val | mask, APMU_WAKE_CLR);
+
+ /* handle irq */
+ handle_level_irq(irq, desc);
+}
+
void __init icu_init_irq(void)
{
int irq;
@@ -49,7 +64,13 @@ void __init icu_init_irq(void)
for (irq = 0; irq < 64; irq++) {
icu_mask_irq(irq);
set_irq_chip(irq, &icu_irq_chip);
- set_irq_handler(irq, handle_level_irq);
+
+ /* special handler for keypad */
+ if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
+ set_irq_handler(irq, handle_pxa168_keypad_irq);
+ else
+ set_irq_handler(irq, handle_level_irq);
+
set_irq_flags(irq, IRQF_VALID);
}
}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-26 9:18 ` [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts Mark F. Brown
@ 2010-08-31 4:53 ` Haojian Zhuang
2010-08-31 6:28 ` Mark F. Brown
0 siblings, 1 reply; 17+ messages in thread
From: Haojian Zhuang @ 2010-08-31 4:53 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
> ---
> ?arch/arm/mach-mmp/irq-pxa168.c | ? 23 ++++++++++++++++++++++-
> ?1 files changed, 22 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
> index 52ff2f0..bfb0984 100644
> --- a/arch/arm/mach-mmp/irq-pxa168.c
> +++ b/arch/arm/mach-mmp/irq-pxa168.c
> @@ -17,6 +17,8 @@
> ?#include <linux/io.h>
>
> ?#include <mach/regs-icu.h>
> +#include <mach/regs-apmu.h>
> +#include <mach/cputype.h>
>
> ?#include "common.h"
>
> @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
> ? ? ? ?.unmask = icu_unmask_irq,
> ?};
>
> +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
> +{
> + ? ? ? uint32_t val;
> + ? ? ? uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
> +
> + ? ? ? /* clear keypad wake event */
> + ? ? ? val = __raw_readl(APMU_WAKE_CLR);
> + ? ? ? __raw_writel(val | ?mask, APMU_WAKE_CLR);
> +
> + ? ? ? /* handle irq */
> + ? ? ? handle_level_irq(irq, desc);
> +}
> +
Why should you clear wakeup event status in IRQ handler? If system is
resumed by keypad event, you should clear this wakeup source in resume
code. I think that IRQ code should not be binded with wakeup event at
here.
> ?void __init icu_init_irq(void)
> ?{
> ? ? ? ?int irq;
> @@ -49,7 +64,13 @@ void __init icu_init_irq(void)
> ? ? ? ?for (irq = 0; irq < 64; irq++) {
> ? ? ? ? ? ? ? ?icu_mask_irq(irq);
> ? ? ? ? ? ? ? ?set_irq_chip(irq, &icu_irq_chip);
> - ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
> +
> + ? ? ? ? ? ? ? /* special handler for keypad */
> + ? ? ? ? ? ? ? if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_pxa168_keypad_irq);
> + ? ? ? ? ? ? ? else
> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
> +
> ? ? ? ? ? ? ? ?set_irq_flags(irq, IRQF_VALID);
> ? ? ? ?}
> ?}
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-31 4:53 ` Haojian Zhuang
@ 2010-08-31 6:28 ` Mark F. Brown
2010-08-31 7:05 ` Eric Miao
0 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-31 6:28 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 31, 2010 at 12:53 AM, Haojian Zhuang
<haojian.zhuang@gmail.com> wrote:
> On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>> ---
>> ?arch/arm/mach-mmp/irq-pxa168.c | ? 23 ++++++++++++++++++++++-
>> ?1 files changed, 22 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
>> index 52ff2f0..bfb0984 100644
>> --- a/arch/arm/mach-mmp/irq-pxa168.c
>> +++ b/arch/arm/mach-mmp/irq-pxa168.c
>> @@ -17,6 +17,8 @@
>> ?#include <linux/io.h>
>>
>> ?#include <mach/regs-icu.h>
>> +#include <mach/regs-apmu.h>
>> +#include <mach/cputype.h>
>>
>> ?#include "common.h"
>>
>> @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
>> ? ? ? ?.unmask = icu_unmask_irq,
>> ?};
>>
>> +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
>> +{
>> + ? ? ? uint32_t val;
>> + ? ? ? uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
>> +
>> + ? ? ? /* clear keypad wake event */
>> + ? ? ? val = __raw_readl(APMU_WAKE_CLR);
>> + ? ? ? __raw_writel(val | ?mask, APMU_WAKE_CLR);
>> +
>> + ? ? ? /* handle irq */
>> + ? ? ? handle_level_irq(irq, desc);
>> +}
>> +
>
> Why should you clear wakeup event status in IRQ handler? If system is
> resumed by keypad event, you should clear this wakeup source in resume
> code. I think that IRQ code should not be binded with wakeup event at
> here.
>
>> ?void __init icu_init_irq(void)
>> ?{
>> ? ? ? ?int irq;
>> @@ -49,7 +64,13 @@ void __init icu_init_irq(void)
>> ? ? ? ?for (irq = 0; irq < 64; irq++) {
>> ? ? ? ? ? ? ? ?icu_mask_irq(irq);
>> ? ? ? ? ? ? ? ?set_irq_chip(irq, &icu_irq_chip);
>> - ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>> +
>> + ? ? ? ? ? ? ? /* special handler for keypad */
>> + ? ? ? ? ? ? ? if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_pxa168_keypad_irq);
>> + ? ? ? ? ? ? ? else
>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>> +
>> ? ? ? ? ? ? ? ?set_irq_flags(irq, IRQF_VALID);
>> ? ? ? ?}
>> ?}
>> --
>> 1.7.0.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at ?http://www.tux.org/lkml/
>>
>
Haojian, this is an usual case, but without that clear wake event you
will not be able to clear the keypad interrupt. For my push to open
source I re-wrote the workaround code and added it as a special case
IRQ handler. In the Marvell pxa168 code base it is actually located in
the keypad interrupt handler as the function clear_wakeup(). I felt it
was better to isolate this code in the mmp common code base instead.
Regards,
-- Mark
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-31 6:28 ` Mark F. Brown
@ 2010-08-31 7:05 ` Eric Miao
2010-08-31 7:13 ` Mark F. Brown
0 siblings, 1 reply; 17+ messages in thread
From: Eric Miao @ 2010-08-31 7:05 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 31, 2010 at 2:28 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> On Tue, Aug 31, 2010 at 12:53 AM, Haojian Zhuang
> <haojian.zhuang@gmail.com> wrote:
>> On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>>> ---
>>> ?arch/arm/mach-mmp/irq-pxa168.c | ? 23 ++++++++++++++++++++++-
>>> ?1 files changed, 22 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
>>> index 52ff2f0..bfb0984 100644
>>> --- a/arch/arm/mach-mmp/irq-pxa168.c
>>> +++ b/arch/arm/mach-mmp/irq-pxa168.c
>>> @@ -17,6 +17,8 @@
>>> ?#include <linux/io.h>
>>>
>>> ?#include <mach/regs-icu.h>
>>> +#include <mach/regs-apmu.h>
>>> +#include <mach/cputype.h>
>>>
>>> ?#include "common.h"
>>>
>>> @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
>>> ? ? ? ?.unmask = icu_unmask_irq,
>>> ?};
>>>
>>> +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
>>> +{
>>> + ? ? ? uint32_t val;
>>> + ? ? ? uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
>>> +
>>> + ? ? ? /* clear keypad wake event */
>>> + ? ? ? val = __raw_readl(APMU_WAKE_CLR);
>>> + ? ? ? __raw_writel(val | ?mask, APMU_WAKE_CLR);
>>> +
>>> + ? ? ? /* handle irq */
>>> + ? ? ? handle_level_irq(irq, desc);
>>> +}
>>> +
>>
>> Why should you clear wakeup event status in IRQ handler? If system is
>> resumed by keypad event, you should clear this wakeup source in resume
>> code. I think that IRQ code should not be binded with wakeup event at
>> here.
>>
>>> ?void __init icu_init_irq(void)
>>> ?{
>>> ? ? ? ?int irq;
>>> @@ -49,7 +64,13 @@ void __init icu_init_irq(void)
>>> ? ? ? ?for (irq = 0; irq < 64; irq++) {
>>> ? ? ? ? ? ? ? ?icu_mask_irq(irq);
>>> ? ? ? ? ? ? ? ?set_irq_chip(irq, &icu_irq_chip);
>>> - ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>> +
>>> + ? ? ? ? ? ? ? /* special handler for keypad */
>>> + ? ? ? ? ? ? ? if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_pxa168_keypad_irq);
>>> + ? ? ? ? ? ? ? else
>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>> +
>>> ? ? ? ? ? ? ? ?set_irq_flags(irq, IRQF_VALID);
>>> ? ? ? ?}
>>> ?}
>>> --
>>> 1.7.0.4
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>> the body of a message to majordomo at vger.kernel.org
>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>> Please read the FAQ at ?http://www.tux.org/lkml/
>>>
>>
>
> Haojian, this is an usual case, but without that clear wake event you
> will not be able to clear the keypad interrupt. For my push to open
> source I re-wrote the workaround code and added it as a special case
> IRQ handler. In the Marvell pxa168 code base it is actually located in
> the keypad interrupt handler as the function clear_wakeup(). I felt it
> was better to isolate this code in the mmp common code base instead.
I'd rather the irq handler not being changed and use platform_data instead.
How about something below:
diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h
b/arch/arm/mach-mmp/include/mach/pxa168.h
index 27e1bc7..d2b7946 100644
--- a/arch/arm/mach-mmp/include/mach/pxa168.h
+++ b/arch/arm/mach-mmp/include/mach/pxa168.h
@@ -5,6 +5,7 @@ struct sys_timer;
extern struct sys_timer pxa168_timer;
extern void __init pxa168_init_irq(void);
+extern void pxa168_clear_keypad_wakeup(void);
#include <linux/i2c.h>
#include <mach/devices.h>
@@ -97,4 +98,10 @@ static inline int pxa168_add_nand(struct
pxa3xx_nand_platform_data *info)
{
return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
}
+
+static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *info)
+{
+ info->clear_wakeup = pxa168_clear_keypad_wakeup;
+ return pxa_register_device(&pxa168_device_keypad, info, sizeof(*info));
+}
#endif /* __ASM_MACH_PXA168_H */
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
index 7b4eadc..3a6bfe7 100644
--- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
+++ b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
@@ -52,6 +52,7 @@ struct pxa27x_keypad_platform_data {
/* key debounce interval */
unsigned int debounce_interval;
+ void (*clear_wakeup);
};
extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
diff --git a/drivers/input/keyboard/pxa27x_keypad.c
b/drivers/input/keyboard/pxa27x_keypad.c
index f32404f..3fb94fe 100644
--- a/drivers/input/keyboard/pxa27x_keypad.c
+++ b/drivers/input/keyboard/pxa27x_keypad.c
@@ -330,10 +330,20 @@ static void pxa27x_keypad_scan_direct(struct
pxa27x_keypad *keypad)
keypad->direct_key_state = new_state;
}
+static void clear_wakeup(struct pxa27x_keypad *keypad)
+{
+ struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
+
+ if (pdata->clear_wakeup)
+ (pdata->clear_wakeup)();
+}
+
static irqreturn_t pxa27x_keypad_irq_handler(int irq, void *dev_id)
{
struct pxa27x_keypad *keypad = dev_id;
- unsigned long kpc = keypad_readl(KPC);
+ unsigned long kpc;
+
+ kpc = keypad_readl(KPC);
if (kpc & KPC_DI)
pxa27x_keypad_scan_direct(keypad);
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-31 7:05 ` Eric Miao
@ 2010-08-31 7:13 ` Mark F. Brown
2010-08-31 7:15 ` Eric Miao
0 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-31 7:13 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 31, 2010 at 3:05 AM, Eric Miao <eric.y.miao@gmail.com> wrote:
> On Tue, Aug 31, 2010 at 2:28 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>> On Tue, Aug 31, 2010 at 12:53 AM, Haojian Zhuang
>> <haojian.zhuang@gmail.com> wrote:
>>> On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>>>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>>>> ---
>>>> ?arch/arm/mach-mmp/irq-pxa168.c | ? 23 ++++++++++++++++++++++-
>>>> ?1 files changed, 22 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
>>>> index 52ff2f0..bfb0984 100644
>>>> --- a/arch/arm/mach-mmp/irq-pxa168.c
>>>> +++ b/arch/arm/mach-mmp/irq-pxa168.c
>>>> @@ -17,6 +17,8 @@
>>>> ?#include <linux/io.h>
>>>>
>>>> ?#include <mach/regs-icu.h>
>>>> +#include <mach/regs-apmu.h>
>>>> +#include <mach/cputype.h>
>>>>
>>>> ?#include "common.h"
>>>>
>>>> @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
>>>> ? ? ? ?.unmask = icu_unmask_irq,
>>>> ?};
>>>>
>>>> +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
>>>> +{
>>>> + ? ? ? uint32_t val;
>>>> + ? ? ? uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
>>>> +
>>>> + ? ? ? /* clear keypad wake event */
>>>> + ? ? ? val = __raw_readl(APMU_WAKE_CLR);
>>>> + ? ? ? __raw_writel(val | ?mask, APMU_WAKE_CLR);
>>>> +
>>>> + ? ? ? /* handle irq */
>>>> + ? ? ? handle_level_irq(irq, desc);
>>>> +}
>>>> +
>>>
>>> Why should you clear wakeup event status in IRQ handler? If system is
>>> resumed by keypad event, you should clear this wakeup source in resume
>>> code. I think that IRQ code should not be binded with wakeup event at
>>> here.
>>>
>>>> ?void __init icu_init_irq(void)
>>>> ?{
>>>> ? ? ? ?int irq;
>>>> @@ -49,7 +64,13 @@ void __init icu_init_irq(void)
>>>> ? ? ? ?for (irq = 0; irq < 64; irq++) {
>>>> ? ? ? ? ? ? ? ?icu_mask_irq(irq);
>>>> ? ? ? ? ? ? ? ?set_irq_chip(irq, &icu_irq_chip);
>>>> - ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>>> +
>>>> + ? ? ? ? ? ? ? /* special handler for keypad */
>>>> + ? ? ? ? ? ? ? if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
>>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_pxa168_keypad_irq);
>>>> + ? ? ? ? ? ? ? else
>>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>>> +
>>>> ? ? ? ? ? ? ? ?set_irq_flags(irq, IRQF_VALID);
>>>> ? ? ? ?}
>>>> ?}
>>>> --
>>>> 1.7.0.4
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>>> the body of a message to majordomo at vger.kernel.org
>>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>>> Please read the FAQ at ?http://www.tux.org/lkml/
>>>>
>>>
>>
>> Haojian, this is an usual case, but without that clear wake event you
>> will not be able to clear the keypad interrupt. For my push to open
>> source I re-wrote the workaround code and added it as a special case
>> IRQ handler. In the Marvell pxa168 code base it is actually located in
>> the keypad interrupt handler as the function clear_wakeup(). I felt it
>> was better to isolate this code in the mmp common code base instead.
>
> I'd rather the irq handler not being changed and use platform_data instead.
> How about something below:
>
> diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h
> b/arch/arm/mach-mmp/include/mach/pxa168.h
> index 27e1bc7..d2b7946 100644
> --- a/arch/arm/mach-mmp/include/mach/pxa168.h
> +++ b/arch/arm/mach-mmp/include/mach/pxa168.h
> @@ -5,6 +5,7 @@ struct sys_timer;
>
> ?extern struct sys_timer pxa168_timer;
> ?extern void __init pxa168_init_irq(void);
> +extern void pxa168_clear_keypad_wakeup(void);
>
> ?#include <linux/i2c.h>
> ?#include <mach/devices.h>
> @@ -97,4 +98,10 @@ static inline int pxa168_add_nand(struct
> pxa3xx_nand_platform_data *info)
> ?{
> ? ? ? ?return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
> ?}
> +
> +static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *info)
> +{
> + ? ? ? info->clear_wakeup = pxa168_clear_keypad_wakeup;
> + ? ? ? return pxa_register_device(&pxa168_device_keypad, info, sizeof(*info));
> +}
> ?#endif /* __ASM_MACH_PXA168_H */
> diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> index 7b4eadc..3a6bfe7 100644
> --- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> +++ b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
> @@ -52,6 +52,7 @@ struct pxa27x_keypad_platform_data {
>
> ? ? ? ?/* key debounce interval */
> ? ? ? ?unsigned int ? ?debounce_interval;
> + ? ? ? void ? ? ? ? ? ?(*clear_wakeup);
> ?};
>
> ?extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
> diff --git a/drivers/input/keyboard/pxa27x_keypad.c
> b/drivers/input/keyboard/pxa27x_keypad.c
> index f32404f..3fb94fe 100644
> --- a/drivers/input/keyboard/pxa27x_keypad.c
> +++ b/drivers/input/keyboard/pxa27x_keypad.c
> @@ -330,10 +330,20 @@ static void pxa27x_keypad_scan_direct(struct
> pxa27x_keypad *keypad)
> ? ? ? ?keypad->direct_key_state = new_state;
> ?}
>
> +static void clear_wakeup(struct pxa27x_keypad *keypad)
> +{
> + ? ? ? struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
> +
> + ? ? ? if (pdata->clear_wakeup)
> + ? ? ? ? ? ? ? (pdata->clear_wakeup)();
> +}
> +
> ?static irqreturn_t pxa27x_keypad_irq_handler(int irq, void *dev_id)
> ?{
> ? ? ? ?struct pxa27x_keypad *keypad = dev_id;
> - ? ? ? unsigned long kpc = keypad_readl(KPC);
> + ? ? ? unsigned long kpc;
> +
> + ? ? ? kpc = keypad_readl(KPC);
>
> ? ? ? ?if (kpc & KPC_DI)
> ? ? ? ? ? ? ? ?pxa27x_keypad_scan_direct(keypad);
>
Ok if you are fine with that I will make that change and resubmit!
Regards,
-- Mark
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts
2010-08-31 7:13 ` Mark F. Brown
@ 2010-08-31 7:15 ` Eric Miao
0 siblings, 0 replies; 17+ messages in thread
From: Eric Miao @ 2010-08-31 7:15 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 31, 2010 at 3:13 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> On Tue, Aug 31, 2010 at 3:05 AM, Eric Miao <eric.y.miao@gmail.com> wrote:
>> On Tue, Aug 31, 2010 at 2:28 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>>> On Tue, Aug 31, 2010 at 12:53 AM, Haojian Zhuang
>>> <haojian.zhuang@gmail.com> wrote:
>>>> On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>>>>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>>>>> ---
>>>>> ?arch/arm/mach-mmp/irq-pxa168.c | ? 23 ++++++++++++++++++++++-
>>>>> ?1 files changed, 22 insertions(+), 1 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/mach-mmp/irq-pxa168.c b/arch/arm/mach-mmp/irq-pxa168.c
>>>>> index 52ff2f0..bfb0984 100644
>>>>> --- a/arch/arm/mach-mmp/irq-pxa168.c
>>>>> +++ b/arch/arm/mach-mmp/irq-pxa168.c
>>>>> @@ -17,6 +17,8 @@
>>>>> ?#include <linux/io.h>
>>>>>
>>>>> ?#include <mach/regs-icu.h>
>>>>> +#include <mach/regs-apmu.h>
>>>>> +#include <mach/cputype.h>
>>>>>
>>>>> ?#include "common.h"
>>>>>
>>>>> @@ -42,6 +44,19 @@ static struct irq_chip icu_irq_chip = {
>>>>> ? ? ? ?.unmask = icu_unmask_irq,
>>>>> ?};
>>>>>
>>>>> +void handle_pxa168_keypad_irq(unsigned int irq, struct irq_desc *desc)
>>>>> +{
>>>>> + ? ? ? uint32_t val;
>>>>> + ? ? ? uint32_t mask = APMU_PXA168_KP_WAKE_CLR;
>>>>> +
>>>>> + ? ? ? /* clear keypad wake event */
>>>>> + ? ? ? val = __raw_readl(APMU_WAKE_CLR);
>>>>> + ? ? ? __raw_writel(val | ?mask, APMU_WAKE_CLR);
>>>>> +
>>>>> + ? ? ? /* handle irq */
>>>>> + ? ? ? handle_level_irq(irq, desc);
>>>>> +}
>>>>> +
>>>>
>>>> Why should you clear wakeup event status in IRQ handler? If system is
>>>> resumed by keypad event, you should clear this wakeup source in resume
>>>> code. I think that IRQ code should not be binded with wakeup event at
>>>> here.
>>>>
>>>>> ?void __init icu_init_irq(void)
>>>>> ?{
>>>>> ? ? ? ?int irq;
>>>>> @@ -49,7 +64,13 @@ void __init icu_init_irq(void)
>>>>> ? ? ? ?for (irq = 0; irq < 64; irq++) {
>>>>> ? ? ? ? ? ? ? ?icu_mask_irq(irq);
>>>>> ? ? ? ? ? ? ? ?set_irq_chip(irq, &icu_irq_chip);
>>>>> - ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>>>> +
>>>>> + ? ? ? ? ? ? ? /* special handler for keypad */
>>>>> + ? ? ? ? ? ? ? if (cpu_is_pxa168() && irq == IRQ_PXA168_KEYPAD)
>>>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_pxa168_keypad_irq);
>>>>> + ? ? ? ? ? ? ? else
>>>>> + ? ? ? ? ? ? ? ? ? ? ? set_irq_handler(irq, handle_level_irq);
>>>>> +
>>>>> ? ? ? ? ? ? ? ?set_irq_flags(irq, IRQF_VALID);
>>>>> ? ? ? ?}
>>>>> ?}
>>>>> --
>>>>> 1.7.0.4
>>>>>
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>>>> the body of a message to majordomo at vger.kernel.org
>>>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>>>> Please read the FAQ at ?http://www.tux.org/lkml/
>>>>>
>>>>
>>>
>>> Haojian, this is an usual case, but without that clear wake event you
>>> will not be able to clear the keypad interrupt. For my push to open
>>> source I re-wrote the workaround code and added it as a special case
>>> IRQ handler. In the Marvell pxa168 code base it is actually located in
>>> the keypad interrupt handler as the function clear_wakeup(). I felt it
>>> was better to isolate this code in the mmp common code base instead.
>>
>> I'd rather the irq handler not being changed and use platform_data instead.
>> How about something below:
>>
>> diff --git a/arch/arm/mach-mmp/include/mach/pxa168.h
>> b/arch/arm/mach-mmp/include/mach/pxa168.h
>> index 27e1bc7..d2b7946 100644
>> --- a/arch/arm/mach-mmp/include/mach/pxa168.h
>> +++ b/arch/arm/mach-mmp/include/mach/pxa168.h
>> @@ -5,6 +5,7 @@ struct sys_timer;
>>
>> ?extern struct sys_timer pxa168_timer;
>> ?extern void __init pxa168_init_irq(void);
>> +extern void pxa168_clear_keypad_wakeup(void);
>>
>> ?#include <linux/i2c.h>
>> ?#include <mach/devices.h>
>> @@ -97,4 +98,10 @@ static inline int pxa168_add_nand(struct
>> pxa3xx_nand_platform_data *info)
>> ?{
>> ? ? ? ?return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
>> ?}
>> +
>> +static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *info)
>> +{
>> + ? ? ? info->clear_wakeup = pxa168_clear_keypad_wakeup;
>> + ? ? ? return pxa_register_device(&pxa168_device_keypad, info, sizeof(*info));
>> +}
>> ?#endif /* __ASM_MACH_PXA168_H */
>> diff --git a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
>> b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
>> index 7b4eadc..3a6bfe7 100644
>> --- a/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
>> +++ b/arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
>> @@ -52,6 +52,7 @@ struct pxa27x_keypad_platform_data {
>>
>> ? ? ? ?/* key debounce interval */
>> ? ? ? ?unsigned int ? ?debounce_interval;
>> + ? ? ? void ? ? ? ? ? ?(*clear_wakeup);
>> ?};
>>
>> ?extern void pxa_set_keypad_info(struct pxa27x_keypad_platform_data *info);
>> diff --git a/drivers/input/keyboard/pxa27x_keypad.c
>> b/drivers/input/keyboard/pxa27x_keypad.c
>> index f32404f..3fb94fe 100644
>> --- a/drivers/input/keyboard/pxa27x_keypad.c
>> +++ b/drivers/input/keyboard/pxa27x_keypad.c
>> @@ -330,10 +330,20 @@ static void pxa27x_keypad_scan_direct(struct
>> pxa27x_keypad *keypad)
>> ? ? ? ?keypad->direct_key_state = new_state;
>> ?}
>>
>> +static void clear_wakeup(struct pxa27x_keypad *keypad)
>> +{
>> + ? ? ? struct pxa27x_keypad_platform_data *pdata = keypad->pdata;
>> +
>> + ? ? ? if (pdata->clear_wakeup)
>> + ? ? ? ? ? ? ? (pdata->clear_wakeup)();
>> +}
>> +
>> ?static irqreturn_t pxa27x_keypad_irq_handler(int irq, void *dev_id)
>> ?{
>> ? ? ? ?struct pxa27x_keypad *keypad = dev_id;
>> - ? ? ? unsigned long kpc = keypad_readl(KPC);
>> + ? ? ? unsigned long kpc;
>> +
>> + ? ? ? kpc = keypad_readl(KPC);
>>
>> ? ? ? ?if (kpc & KPC_DI)
>> ? ? ? ? ? ? ? ?pxa27x_keypad_scan_direct(keypad);
>>
>
> Ok if you are fine with that I will make that change and resubmit!
>
Thanks.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad
2010-08-26 9:18 [PATCH 0/5] ARM: pxa168: add keypad support Mark F. Brown
` (3 preceding siblings ...)
2010-08-26 9:18 ` [PATCH 4/5] ARM: pxa168: added special case handler for keypad interrupts Mark F. Brown
@ 2010-08-26 9:18 ` Mark F. Brown
2010-08-31 5:00 ` Haojian Zhuang
4 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-08-26 9:18 UTC (permalink / raw)
To: linux-arm-kernel
Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
---
arch/arm/mach-mmp/aspenite.c | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
index 9e1bd6b..1b788c5 100644
--- a/arch/arm/mach-mmp/aspenite.c
+++ b/arch/arm/mach-mmp/aspenite.c
@@ -24,6 +24,8 @@
#include <mach/pxa168.h>
#include <mach/gpio.h>
#include <video/pxa168fb.h>
+#include <linux/input.h>
+#include <plat/pxa27x_keypad.h>
#include "common.h"
@@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata = {
GPIO81_LCD_DD21,
GPIO82_LCD_DD22,
GPIO83_LCD_DD23,
+
+ /* Keypad */
+ GPIO109_KP_MKIN1,
+ GPIO110_KP_MKIN0,
+ GPIO111_KP_MKOUT7,
+ GPIO112_KP_MKOUT6,
+ GPIO121_KP_MKIN4,
};
static struct smc91x_platdata smc91x_info = {
@@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
.invert_pixclock = 0,
};
+static unsigned int aspenite_matrix_key_map[] = {
+ KEY(0, 6, KEY_UP), /* SW 4 */
+ KEY(0, 7, KEY_DOWN), /* SW 5 */
+ KEY(1, 6, KEY_LEFT), /* SW 6 */
+ KEY(1, 7, KEY_RIGHT), /* SW 7 */
+ KEY(4, 6, KEY_ENTER), /* SW 8 */
+ KEY(4, 7, KEY_ESC), /* SW 9 */
+};
+
+static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
+ .matrix_key_rows = 8,
+ .matrix_key_cols = 8,
+ .matrix_key_map = aspenite_matrix_key_map,
+ .matrix_key_map_size = ARRAY_SIZE(aspenite_matrix_key_map),
+ .debounce_interval = 30,
+};
+
static void __init common_init(void)
{
mfp_config(ARRAY_AND_SIZE(common_pin_config));
@@ -203,6 +229,7 @@ static void __init common_init(void)
pxa168_add_ssp(1);
pxa168_add_nand(&aspenite_nand_info);
pxa168_add_fb(&aspenite_lcd_info);
+ pxa168_add_keypad(&aspenite_keypad_info);
/* off-chip devices */
platform_device_register(&smc91x_device);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad
2010-08-26 9:18 ` [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad Mark F. Brown
@ 2010-08-31 5:00 ` Haojian Zhuang
2010-09-03 4:50 ` Mark F. Brown
0 siblings, 1 reply; 17+ messages in thread
From: Haojian Zhuang @ 2010-08-31 5:00 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
> ---
> ?arch/arm/mach-mmp/aspenite.c | ? 27 +++++++++++++++++++++++++++
> ?1 files changed, 27 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
> index 9e1bd6b..1b788c5 100644
> --- a/arch/arm/mach-mmp/aspenite.c
> +++ b/arch/arm/mach-mmp/aspenite.c
> @@ -24,6 +24,8 @@
> ?#include <mach/pxa168.h>
> ?#include <mach/gpio.h>
> ?#include <video/pxa168fb.h>
> +#include <linux/input.h>
> +#include <plat/pxa27x_keypad.h>
>
> ?#include "common.h"
>
> @@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata = {
> ? ? ? ?GPIO81_LCD_DD21,
> ? ? ? ?GPIO82_LCD_DD22,
> ? ? ? ?GPIO83_LCD_DD23,
> +
> + ? ? ? /* Keypad */
> + ? ? ? GPIO109_KP_MKIN1,
> + ? ? ? GPIO110_KP_MKIN0,
> + ? ? ? GPIO111_KP_MKOUT7,
> + ? ? ? GPIO112_KP_MKOUT6,
> + ? ? ? GPIO121_KP_MKIN4,
> ?};
>
> ?static struct smc91x_platdata smc91x_info = {
> @@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
> ? ? ? ?.invert_pixclock ? ? ? ?= 0,
> ?};
>
> +static unsigned int aspenite_matrix_key_map[] = {
> + ? ? ? KEY(0, 6, KEY_UP), ? ? ?/* SW 4 */
> + ? ? ? KEY(0, 7, KEY_DOWN), ? ?/* SW 5 */
> + ? ? ? KEY(1, 6, KEY_LEFT), ? ?/* SW 6 */
> + ? ? ? KEY(1, 7, KEY_RIGHT), ? /* SW 7 */
> + ? ? ? KEY(4, 6, KEY_ENTER), ? /* SW 8 */
> + ? ? ? KEY(4, 7, KEY_ESC), ? ? /* SW 9 */
> +};
> +
> +static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
> + ? ? ? .matrix_key_rows ? ? ? ?= 8,
> + ? ? ? .matrix_key_cols ? ? ? ?= 8,
It seems that maxium columns is 5, not 8.
> + ? ? ? .matrix_key_map ? ? ? ? = aspenite_matrix_key_map,
> + ? ? ? .matrix_key_map_size ? ?= ARRAY_SIZE(aspenite_matrix_key_map),
> + ? ? ? .debounce_interval ? ? ?= 30,
> +};
> +
> ?static void __init common_init(void)
> ?{
> ? ? ? ?mfp_config(ARRAY_AND_SIZE(common_pin_config));
> @@ -203,6 +229,7 @@ static void __init common_init(void)
> ? ? ? ?pxa168_add_ssp(1);
> ? ? ? ?pxa168_add_nand(&aspenite_nand_info);
> ? ? ? ?pxa168_add_fb(&aspenite_lcd_info);
> + ? ? ? pxa168_add_keypad(&aspenite_keypad_info);
>
> ? ? ? ?/* off-chip devices */
> ? ? ? ?platform_device_register(&smc91x_device);
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at ?http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad
2010-08-31 5:00 ` Haojian Zhuang
@ 2010-09-03 4:50 ` Mark F. Brown
2010-09-03 14:11 ` Marek Vasut
0 siblings, 1 reply; 17+ messages in thread
From: Mark F. Brown @ 2010-09-03 4:50 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Aug 31, 2010 at 1:00 AM, Haojian Zhuang
<haojian.zhuang@gmail.com> wrote:
> On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com> wrote:
>> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>> ---
>> ?arch/arm/mach-mmp/aspenite.c | ? 27 +++++++++++++++++++++++++++
>> ?1 files changed, 27 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
>> index 9e1bd6b..1b788c5 100644
>> --- a/arch/arm/mach-mmp/aspenite.c
>> +++ b/arch/arm/mach-mmp/aspenite.c
>> @@ -24,6 +24,8 @@
>> ?#include <mach/pxa168.h>
>> ?#include <mach/gpio.h>
>> ?#include <video/pxa168fb.h>
>> +#include <linux/input.h>
>> +#include <plat/pxa27x_keypad.h>
>>
>> ?#include "common.h"
>>
>> @@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata = {
>> ? ? ? ?GPIO81_LCD_DD21,
>> ? ? ? ?GPIO82_LCD_DD22,
>> ? ? ? ?GPIO83_LCD_DD23,
>> +
>> + ? ? ? /* Keypad */
>> + ? ? ? GPIO109_KP_MKIN1,
>> + ? ? ? GPIO110_KP_MKIN0,
>> + ? ? ? GPIO111_KP_MKOUT7,
>> + ? ? ? GPIO112_KP_MKOUT6,
>> + ? ? ? GPIO121_KP_MKIN4,
>> ?};
>>
>> ?static struct smc91x_platdata smc91x_info = {
>> @@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
>> ? ? ? ?.invert_pixclock ? ? ? ?= 0,
>> ?};
>>
>> +static unsigned int aspenite_matrix_key_map[] = {
>> + ? ? ? KEY(0, 6, KEY_UP), ? ? ?/* SW 4 */
>> + ? ? ? KEY(0, 7, KEY_DOWN), ? ?/* SW 5 */
>> + ? ? ? KEY(1, 6, KEY_LEFT), ? ?/* SW 6 */
>> + ? ? ? KEY(1, 7, KEY_RIGHT), ? /* SW 7 */
>> + ? ? ? KEY(4, 6, KEY_ENTER), ? /* SW 8 */
>> + ? ? ? KEY(4, 7, KEY_ESC), ? ? /* SW 9 */
>> +};
>> +
>> +static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = {
>> + ? ? ? .matrix_key_rows ? ? ? ?= 8,
>> + ? ? ? .matrix_key_cols ? ? ? ?= 8,
> It seems that maxium columns is 5, not 8.
>
>> + ? ? ? .matrix_key_map ? ? ? ? = aspenite_matrix_key_map,
>> + ? ? ? .matrix_key_map_size ? ?= ARRAY_SIZE(aspenite_matrix_key_map),
>> + ? ? ? .debounce_interval ? ? ?= 30,
>> +};
>> +
>> ?static void __init common_init(void)
>> ?{
>> ? ? ? ?mfp_config(ARRAY_AND_SIZE(common_pin_config));
>> @@ -203,6 +229,7 @@ static void __init common_init(void)
>> ? ? ? ?pxa168_add_ssp(1);
>> ? ? ? ?pxa168_add_nand(&aspenite_nand_info);
>> ? ? ? ?pxa168_add_fb(&aspenite_lcd_info);
>> + ? ? ? pxa168_add_keypad(&aspenite_keypad_info);
>>
>> ? ? ? ?/* off-chip devices */
>> ? ? ? ?platform_device_register(&smc91x_device);
>> --
>> 1.7.0.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at ?http://www.tux.org/lkml/
>>
>
The maximum keypad columns are 8 and the maximum keypad rows are 5 for
Aspenite. I will correct that in my patch resubmission!
Regards,
-- Mark
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad
2010-09-03 4:50 ` Mark F. Brown
@ 2010-09-03 14:11 ` Marek Vasut
2010-09-03 14:39 ` Eric Miao
0 siblings, 1 reply; 17+ messages in thread
From: Marek Vasut @ 2010-09-03 14:11 UTC (permalink / raw)
To: linux-arm-kernel
Dne P? 3. z??? 2010 06:50:28 Mark F. Brown napsal(a):
> On Tue, Aug 31, 2010 at 1:00 AM, Haojian Zhuang
>
> <haojian.zhuang@gmail.com> wrote:
> > On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com>
wrote:
> >> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
> >> ---
> >> arch/arm/mach-mmp/aspenite.c | 27 +++++++++++++++++++++++++++
> >> 1 files changed, 27 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
> >> index 9e1bd6b..1b788c5 100644
> >> --- a/arch/arm/mach-mmp/aspenite.c
> >> +++ b/arch/arm/mach-mmp/aspenite.c
> >> @@ -24,6 +24,8 @@
> >> #include <mach/pxa168.h>
> >> #include <mach/gpio.h>
> >> #include <video/pxa168fb.h>
> >> +#include <linux/input.h>
> >> +#include <plat/pxa27x_keypad.h>
> >>
> >> #include "common.h"
> >>
> >> @@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata =
> >> { GPIO81_LCD_DD21,
> >> GPIO82_LCD_DD22,
> >> GPIO83_LCD_DD23,
> >> +
> >> + /* Keypad */
> >> + GPIO109_KP_MKIN1,
> >> + GPIO110_KP_MKIN0,
> >> + GPIO111_KP_MKOUT7,
> >> + GPIO112_KP_MKOUT6,
> >> + GPIO121_KP_MKIN4,
> >> };
> >>
> >> static struct smc91x_platdata smc91x_info = {
> >> @@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
> >> .invert_pixclock = 0,
> >> };
> >>
> >> +static unsigned int aspenite_matrix_key_map[] = {
> >> + KEY(0, 6, KEY_UP), /* SW 4 */
> >> + KEY(0, 7, KEY_DOWN), /* SW 5 */
> >> + KEY(1, 6, KEY_LEFT), /* SW 6 */
> >> + KEY(1, 7, KEY_RIGHT), /* SW 7 */
> >> + KEY(4, 6, KEY_ENTER), /* SW 8 */
> >> + KEY(4, 7, KEY_ESC), /* SW 9 */
> >> +};
> >> +
> >> +static struct pxa27x_keypad_platform_data aspenite_keypad_info
> >> __initdata = { + .matrix_key_rows = 8,
> >> + .matrix_key_cols = 8,
> >
> > It seems that maxium columns is 5, not 8.
> >
> >> + .matrix_key_map = aspenite_matrix_key_map,
> >> + .matrix_key_map_size = ARRAY_SIZE(aspenite_matrix_key_map),
> >> + .debounce_interval = 30,
> >> +};
> >> +
> >> static void __init common_init(void)
> >> {
> >> mfp_config(ARRAY_AND_SIZE(common_pin_config));
> >> @@ -203,6 +229,7 @@ static void __init common_init(void)
> >> pxa168_add_ssp(1);
> >> pxa168_add_nand(&aspenite_nand_info);
> >> pxa168_add_fb(&aspenite_lcd_info);
> >> + pxa168_add_keypad(&aspenite_keypad_info);
> >>
> >> /* off-chip devices */
> >> platform_device_register(&smc91x_device);
> >> --
> >> 1.7.0.4
> >>
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-kernel"
> >> in the body of a message to majordomo at vger.kernel.org
> >> More majordomo info at http://vger.kernel.org/majordomo-info.html
> >> Please read the FAQ at http://www.tux.org/lkml/
>
> The maximum keypad columns are 8 and the maximum keypad rows are 5 for
> Aspenite. I will correct that in my patch resubmission!
Eric, did you merge this already ? If so, we'll need a separate patch here?
>
> Regards,
> -- Mark
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 17+ messages in thread* [PATCH 5/5] ARM: pxa168: aspenite: add board support for keypad
2010-09-03 14:11 ` Marek Vasut
@ 2010-09-03 14:39 ` Eric Miao
0 siblings, 0 replies; 17+ messages in thread
From: Eric Miao @ 2010-09-03 14:39 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Sep 3, 2010 at 10:11 PM, Marek Vasut <marek.vasut@gmail.com> wrote:
> Dne P? 3. z??? 2010 06:50:28 Mark F. Brown napsal(a):
>> On Tue, Aug 31, 2010 at 1:00 AM, Haojian Zhuang
>>
>> <haojian.zhuang@gmail.com> wrote:
>> > On Thu, Aug 26, 2010 at 5:18 PM, Mark F. Brown <mark.brown314@gmail.com>
> wrote:
>> >> Signed-off-by: Mark F. Brown <mark.brown314@gmail.com>
>> >> ---
>> >> ?arch/arm/mach-mmp/aspenite.c | ? 27 +++++++++++++++++++++++++++
>> >> ?1 files changed, 27 insertions(+), 0 deletions(-)
>> >>
>> >> diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c
>> >> index 9e1bd6b..1b788c5 100644
>> >> --- a/arch/arm/mach-mmp/aspenite.c
>> >> +++ b/arch/arm/mach-mmp/aspenite.c
>> >> @@ -24,6 +24,8 @@
>> >> ?#include <mach/pxa168.h>
>> >> ?#include <mach/gpio.h>
>> >> ?#include <video/pxa168fb.h>
>> >> +#include <linux/input.h>
>> >> +#include <plat/pxa27x_keypad.h>
>> >>
>> >> ?#include "common.h"
>> >>
>> >> @@ -97,6 +99,13 @@ static unsigned long common_pin_config[] __initdata =
>> >> { GPIO81_LCD_DD21,
>> >> ? ? ? ?GPIO82_LCD_DD22,
>> >> ? ? ? ?GPIO83_LCD_DD23,
>> >> +
>> >> + ? ? ? /* Keypad */
>> >> + ? ? ? GPIO109_KP_MKIN1,
>> >> + ? ? ? GPIO110_KP_MKIN0,
>> >> + ? ? ? GPIO111_KP_MKOUT7,
>> >> + ? ? ? GPIO112_KP_MKOUT6,
>> >> + ? ? ? GPIO121_KP_MKIN4,
>> >> ?};
>> >>
>> >> ?static struct smc91x_platdata smc91x_info = {
>> >> @@ -193,6 +202,23 @@ struct pxa168fb_mach_info aspenite_lcd_info = {
>> >> ? ? ? ?.invert_pixclock ? ? ? ?= 0,
>> >> ?};
>> >>
>> >> +static unsigned int aspenite_matrix_key_map[] = {
>> >> + ? ? ? KEY(0, 6, KEY_UP), ? ? ?/* SW 4 */
>> >> + ? ? ? KEY(0, 7, KEY_DOWN), ? ?/* SW 5 */
>> >> + ? ? ? KEY(1, 6, KEY_LEFT), ? ?/* SW 6 */
>> >> + ? ? ? KEY(1, 7, KEY_RIGHT), ? /* SW 7 */
>> >> + ? ? ? KEY(4, 6, KEY_ENTER), ? /* SW 8 */
>> >> + ? ? ? KEY(4, 7, KEY_ESC), ? ? /* SW 9 */
>> >> +};
>> >> +
>> >> +static struct pxa27x_keypad_platform_data aspenite_keypad_info
>> >> __initdata = { + ? ? ? .matrix_key_rows ? ? ? ?= 8,
>> >> + ? ? ? .matrix_key_cols ? ? ? ?= 8,
>> >
>> > It seems that maxium columns is 5, not 8.
>> >
>> >> + ? ? ? .matrix_key_map ? ? ? ? = aspenite_matrix_key_map,
>> >> + ? ? ? .matrix_key_map_size ? ?= ARRAY_SIZE(aspenite_matrix_key_map),
>> >> + ? ? ? .debounce_interval ? ? ?= 30,
>> >> +};
>> >> +
>> >> ?static void __init common_init(void)
>> >> ?{
>> >> ? ? ? ?mfp_config(ARRAY_AND_SIZE(common_pin_config));
>> >> @@ -203,6 +229,7 @@ static void __init common_init(void)
>> >> ? ? ? ?pxa168_add_ssp(1);
>> >> ? ? ? ?pxa168_add_nand(&aspenite_nand_info);
>> >> ? ? ? ?pxa168_add_fb(&aspenite_lcd_info);
>> >> + ? ? ? pxa168_add_keypad(&aspenite_keypad_info);
>> >>
>> >> ? ? ? ?/* off-chip devices */
>> >> ? ? ? ?platform_device_register(&smc91x_device);
>> >> --
>> >> 1.7.0.4
>> >>
>> >> --
>> >> To unsubscribe from this list: send the line "unsubscribe linux-kernel"
>> >> in the body of a message to majordomo at vger.kernel.org
>> >> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>> >> Please read the FAQ at ?http://www.tux.org/lkml/
>>
>> The maximum keypad columns are 8 and the maximum keypad rows are 5 for
>> Aspenite. I will correct that in my patch resubmission!
>
> Eric, did you merge this already ? If so, we'll need a separate patch here?
>
Nope. Together with Mark's other change to the pxa27x_keypad platform_data
for the wakeup cleanup in IRQ, I'd expect a v2 series of this patchset.
>>
>> Regards,
>> -- Mark
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-input" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 17+ messages in thread