diff options
author | Shiraz Hashim <shiraz.hashim@st.com> | 2012-07-07 21:00:54 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-07-07 21:01:51 -0400 |
commit | f6f2efa35f6b76034e5a31a075218feaa10f1812 (patch) | |
tree | b8bf2fcb28190c513a9263b7c48e0e73cee646f0 | |
parent | e99191f0391973326dd4de5cee5a72bf5aeb7040 (diff) |
Input: spear_keyboard - rename bit definitions to reflect register
Rename bit definition macros to reflect keyboard registers clearly thus
being more readable.
Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r-- | drivers/input/keyboard/spear-keyboard.c | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index 10dda9f8e706..a51cdc75466a 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <plat/keyboard.h> | 27 | #include <plat/keyboard.h> |
28 | 28 | ||
29 | /* Keyboard Registers */ | 29 | /* Keyboard Registers */ |
30 | #define MODE_REG 0x00 | 30 | #define MODE_CTL_REG 0x00 |
31 | #define STATUS_REG 0x0C | 31 | #define STATUS_REG 0x0C |
32 | #define DATA_REG 0x10 | 32 | #define DATA_REG 0x10 |
33 | #define INTR_MASK 0x54 | 33 | #define INTR_MASK 0x54 |
@@ -38,22 +38,23 @@ | |||
38 | * control register as 1010010(82MHZ) | 38 | * control register as 1010010(82MHZ) |
39 | */ | 39 | */ |
40 | #define PCLK_FREQ_MSK 0xA400 /* 82 MHz */ | 40 | #define PCLK_FREQ_MSK 0xA400 /* 82 MHz */ |
41 | #define START_SCAN 0x0100 | ||
42 | #define SCAN_RATE_10 0x0000 | ||
43 | #define SCAN_RATE_20 0x0004 | ||
44 | #define SCAN_RATE_40 0x0008 | ||
45 | #define SCAN_RATE_80 0x000C | ||
46 | #define MODE_KEYBOARD 0x0002 | ||
47 | #define DATA_AVAIL 0x2 | ||
48 | |||
49 | #define KEY_MASK 0xFF000000 | ||
50 | #define KEY_VALUE 0x00FFFFFF | ||
51 | #define ROW_MASK 0xF0 | ||
52 | #define COLUMN_MASK 0x0F | ||
53 | #define NUM_ROWS 16 | 41 | #define NUM_ROWS 16 |
54 | #define NUM_COLS 16 | 42 | #define NUM_COLS 16 |
55 | 43 | ||
56 | #define KEY_MATRIX_SHIFT 6 | 44 | #define MODE_CTL_KEYBOARD (0x2 << 0) |
45 | #define MODE_CTL_SCAN_RATE_10 (0x0 << 2) | ||
46 | #define MODE_CTL_SCAN_RATE_20 (0x1 << 2) | ||
47 | #define MODE_CTL_SCAN_RATE_40 (0x2 << 2) | ||
48 | #define MODE_CTL_SCAN_RATE_80 (0x3 << 2) | ||
49 | #define MODE_CTL_KEYNUM_SHIFT 6 | ||
50 | #define MODE_CTL_START_SCAN (0x1 << 8) | ||
51 | |||
52 | #define STATUS_DATA_AVAIL (0x1 << 1) | ||
53 | |||
54 | #define DATA_ROW_MASK 0xF0 | ||
55 | #define DATA_COLUMN_MASK 0x0F | ||
56 | |||
57 | #define ROW_SHIFT 4 | ||
57 | 58 | ||
58 | struct spear_kbd { | 59 | struct spear_kbd { |
59 | struct input_dev *input; | 60 | struct input_dev *input; |
@@ -75,7 +76,7 @@ static irqreturn_t spear_kbd_interrupt(int irq, void *dev_id) | |||
75 | u32 sts, val; | 76 | u32 sts, val; |
76 | 77 | ||
77 | sts = readl_relaxed(kbd->io_base + STATUS_REG); | 78 | sts = readl_relaxed(kbd->io_base + STATUS_REG); |
78 | if (!(sts & DATA_AVAIL)) | 79 | if (!(sts & STATUS_DATA_AVAIL)) |
79 | return IRQ_NONE; | 80 | return IRQ_NONE; |
80 | 81 | ||
81 | if (kbd->last_key != KEY_RESERVED) { | 82 | if (kbd->last_key != KEY_RESERVED) { |
@@ -84,7 +85,8 @@ static irqreturn_t spear_kbd_interrupt(int irq, void *dev_id) | |||
84 | } | 85 | } |
85 | 86 | ||
86 | /* following reads active (row, col) pair */ | 87 | /* following reads active (row, col) pair */ |
87 | val = readl_relaxed(kbd->io_base + DATA_REG); | 88 | val = readl_relaxed(kbd->io_base + DATA_REG) & |
89 | (DATA_ROW_MASK | DATA_COLUMN_MASK); | ||
88 | key = kbd->keycodes[val]; | 90 | key = kbd->keycodes[val]; |
89 | 91 | ||
90 | input_event(input, EV_MSC, MSC_SCAN, val); | 92 | input_event(input, EV_MSC, MSC_SCAN, val); |
@@ -112,15 +114,15 @@ static int spear_kbd_open(struct input_dev *dev) | |||
112 | return error; | 114 | return error; |
113 | 115 | ||
114 | /* program keyboard */ | 116 | /* program keyboard */ |
115 | val = SCAN_RATE_80 | MODE_KEYBOARD | PCLK_FREQ_MSK | | 117 | val = MODE_CTL_SCAN_RATE_80 | MODE_CTL_KEYBOARD | PCLK_FREQ_MSK | |
116 | (kbd->mode << KEY_MATRIX_SHIFT); | 118 | (kbd->mode << MODE_CTL_KEYNUM_SHIFT); |
117 | writel_relaxed(val, kbd->io_base + MODE_REG); | 119 | writel_relaxed(val, kbd->io_base + MODE_CTL_REG); |
118 | writel_relaxed(1, kbd->io_base + STATUS_REG); | 120 | writel_relaxed(1, kbd->io_base + STATUS_REG); |
119 | 121 | ||
120 | /* start key scan */ | 122 | /* start key scan */ |
121 | val = readl_relaxed(kbd->io_base + MODE_REG); | 123 | val = readl_relaxed(kbd->io_base + MODE_CTL_REG); |
122 | val |= START_SCAN; | 124 | val |= MODE_CTL_START_SCAN; |
123 | writel_relaxed(val, kbd->io_base + MODE_REG); | 125 | writel_relaxed(val, kbd->io_base + MODE_CTL_REG); |
124 | 126 | ||
125 | return 0; | 127 | return 0; |
126 | } | 128 | } |
@@ -131,9 +133,9 @@ static void spear_kbd_close(struct input_dev *dev) | |||
131 | u32 val; | 133 | u32 val; |
132 | 134 | ||
133 | /* stop key scan */ | 135 | /* stop key scan */ |
134 | val = readl_relaxed(kbd->io_base + MODE_REG); | 136 | val = readl_relaxed(kbd->io_base + MODE_CTL_REG); |
135 | val &= ~START_SCAN; | 137 | val &= ~MODE_CTL_START_SCAN; |
136 | writel_relaxed(val, kbd->io_base + MODE_REG); | 138 | writel_relaxed(val, kbd->io_base + MODE_CTL_REG); |
137 | 139 | ||
138 | clk_disable(kbd->clk); | 140 | clk_disable(kbd->clk); |
139 | 141 | ||