Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
a90c4fb8
Commit
a90c4fb8
authored
Jul 27, 2009
by
Eric Miao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ARM] pxa/corgi: make use of GPIO based matrix keypad driver
Signed-off-by:
Eric Miao
<
eric.y.miao@gmail.com
>
parent
e2c509c7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
130 additions
and
1 deletion
+130
-1
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/corgi.c
+130
-1
No files found.
arch/arm/mach-pxa/corgi.c
View file @
a90c4fb8
...
...
@@ -29,6 +29,7 @@
#include <linux/spi/ads7846.h>
#include <linux/spi/corgi_lcd.h>
#include <linux/mtd/sharpsl.h>
#include <linux/input/matrix_keypad.h>
#include <video/w100fb.h>
#include <asm/setup.h>
...
...
@@ -104,6 +105,28 @@ static unsigned long corgi_pin_config[] __initdata = {
GPIO6_MMC_CLK
,
GPIO8_MMC_CS0
,
/* GPIO Matrix Keypad */
GPIO66_GPIO
,
/* column 0 */
GPIO67_GPIO
,
/* column 1 */
GPIO68_GPIO
,
/* column 2 */
GPIO69_GPIO
,
/* column 3 */
GPIO70_GPIO
,
/* column 4 */
GPIO71_GPIO
,
/* column 5 */
GPIO72_GPIO
,
/* column 6 */
GPIO73_GPIO
,
/* column 7 */
GPIO74_GPIO
,
/* column 8 */
GPIO75_GPIO
,
/* column 9 */
GPIO76_GPIO
,
/* column 10 */
GPIO77_GPIO
,
/* column 11 */
GPIO58_GPIO
,
/* row 0 */
GPIO59_GPIO
,
/* row 1 */
GPIO60_GPIO
,
/* row 2 */
GPIO61_GPIO
,
/* row 3 */
GPIO62_GPIO
,
/* row 4 */
GPIO63_GPIO
,
/* row 5 */
GPIO64_GPIO
,
/* row 6 */
GPIO65_GPIO
,
/* row 7 */
/* GPIO */
GPIO9_GPIO
,
/* CORGI_GPIO_nSD_DETECT */
GPIO7_GPIO
,
/* CORGI_GPIO_nSD_WP */
...
...
@@ -267,9 +290,115 @@ static struct platform_device corgifb_device = {
/*
* Corgi Keyboard Device
*/
#define CORGI_KEY_CALENDER KEY_F1
#define CORGI_KEY_ADDRESS KEY_F2
#define CORGI_KEY_FN KEY_F3
#define CORGI_KEY_CANCEL KEY_F4
#define CORGI_KEY_OFF KEY_SUSPEND
#define CORGI_KEY_EXOK KEY_F5
#define CORGI_KEY_EXCANCEL KEY_F6
#define CORGI_KEY_EXJOGDOWN KEY_F7
#define CORGI_KEY_EXJOGUP KEY_F8
#define CORGI_KEY_JAP1 KEY_LEFTCTRL
#define CORGI_KEY_JAP2 KEY_LEFTALT
#define CORGI_KEY_MAIL KEY_F10
#define CORGI_KEY_OK KEY_F11
#define CORGI_KEY_MENU KEY_F12
static
const
uint32_t
corgikbd_keymap
[]
=
{
KEY
(
0
,
1
,
KEY_1
),
KEY
(
0
,
2
,
KEY_3
),
KEY
(
0
,
3
,
KEY_5
),
KEY
(
0
,
4
,
KEY_6
),
KEY
(
0
,
5
,
KEY_7
),
KEY
(
0
,
6
,
KEY_9
),
KEY
(
0
,
7
,
KEY_0
),
KEY
(
0
,
8
,
KEY_BACKSPACE
),
KEY
(
1
,
1
,
KEY_2
),
KEY
(
1
,
2
,
KEY_4
),
KEY
(
1
,
3
,
KEY_R
),
KEY
(
1
,
4
,
KEY_Y
),
KEY
(
1
,
5
,
KEY_8
),
KEY
(
1
,
6
,
KEY_I
),
KEY
(
1
,
7
,
KEY_O
),
KEY
(
1
,
8
,
KEY_P
),
KEY
(
2
,
0
,
KEY_TAB
),
KEY
(
2
,
1
,
KEY_Q
),
KEY
(
2
,
2
,
KEY_E
),
KEY
(
2
,
3
,
KEY_T
),
KEY
(
2
,
4
,
KEY_G
),
KEY
(
2
,
5
,
KEY_U
),
KEY
(
2
,
6
,
KEY_J
),
KEY
(
2
,
7
,
KEY_K
),
KEY
(
3
,
0
,
CORGI_KEY_CALENDER
),
KEY
(
3
,
1
,
KEY_W
),
KEY
(
3
,
2
,
KEY_S
),
KEY
(
3
,
3
,
KEY_F
),
KEY
(
3
,
4
,
KEY_V
),
KEY
(
3
,
5
,
KEY_H
),
KEY
(
3
,
6
,
KEY_M
),
KEY
(
3
,
7
,
KEY_L
),
KEY
(
3
,
9
,
KEY_RIGHTSHIFT
),
KEY
(
4
,
0
,
CORGI_KEY_ADDRESS
),
KEY
(
4
,
1
,
KEY_A
),
KEY
(
4
,
2
,
KEY_D
),
KEY
(
4
,
3
,
KEY_C
),
KEY
(
4
,
4
,
KEY_B
),
KEY
(
4
,
5
,
KEY_N
),
KEY
(
4
,
6
,
KEY_DOT
),
KEY
(
4
,
8
,
KEY_ENTER
),
KEY
(
4
,
10
,
KEY_LEFTSHIFT
),
KEY
(
5
,
0
,
CORGI_KEY_MAIL
),
KEY
(
5
,
1
,
KEY_Z
),
KEY
(
5
,
2
,
KEY_X
),
KEY
(
5
,
3
,
KEY_MINUS
),
KEY
(
5
,
4
,
KEY_SPACE
),
KEY
(
5
,
5
,
KEY_COMMA
),
KEY
(
5
,
7
,
KEY_UP
),
KEY
(
5
,
11
,
CORGI_KEY_FN
),
KEY
(
6
,
0
,
KEY_SYSRQ
),
KEY
(
6
,
1
,
CORGI_KEY_JAP1
),
KEY
(
6
,
2
,
CORGI_KEY_JAP2
),
KEY
(
6
,
3
,
CORGI_KEY_CANCEL
),
KEY
(
6
,
4
,
CORGI_KEY_OK
),
KEY
(
6
,
5
,
CORGI_KEY_MENU
),
KEY
(
6
,
6
,
KEY_LEFT
),
KEY
(
6
,
7
,
KEY_DOWN
),
KEY
(
6
,
8
,
KEY_RIGHT
),
KEY
(
7
,
0
,
CORGI_KEY_OFF
),
KEY
(
7
,
1
,
CORGI_KEY_EXOK
),
KEY
(
7
,
2
,
CORGI_KEY_EXCANCEL
),
KEY
(
7
,
3
,
CORGI_KEY_EXJOGDOWN
),
KEY
(
7
,
4
,
CORGI_KEY_EXJOGUP
),
};
static
struct
matrix_keymap_data
corgikbd_keymap_data
=
{
.
keymap
=
corgikbd_keymap
,
.
keymap_size
=
ARRAY_SIZE
(
corgikbd_keymap
),
};
static
const
int
corgikbd_row_gpios
[]
=
{
58
,
59
,
60
,
61
,
62
,
63
,
64
,
65
};
static
const
int
corgikbd_col_gpios
[]
=
{
66
,
67
,
68
,
69
,
70
,
71
,
72
,
73
,
74
,
75
,
76
,
77
};
static
struct
matrix_keypad_platform_data
corgikbd_pdata
=
{
.
keymap_data
=
&
corgikbd_keymap_data
,
.
row_gpios
=
corgikbd_row_gpios
,
.
col_gpios
=
corgikbd_col_gpios
,
.
num_row_gpios
=
ARRAY_SIZE
(
corgikbd_row_gpios
),
.
num_col_gpios
=
ARRAY_SIZE
(
corgikbd_col_gpios
),
.
col_scan_delay_us
=
10
,
.
debounce_ms
=
10
,
.
wakeup
=
1
,
};
static
struct
platform_device
corgikbd_device
=
{
.
name
=
"
corgi-keyboar
d"
,
.
name
=
"
matrix-keypa
d"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
corgikbd_pdata
,
},
};
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment