aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShiraz Hashim <shiraz.hashim@st.com>2012-07-07 21:00:54 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2012-07-07 21:01:51 -0400
commitf6f2efa35f6b76034e5a31a075218feaa10f1812 (patch)
treeb8bf2fcb28190c513a9263b7c48e0e73cee646f0
parente99191f0391973326dd4de5cee5a72bf5aeb7040 (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.c52
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
58struct spear_kbd { 59struct 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