Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6f2efa3 authored by Shiraz Hashim's avatar Shiraz Hashim Committed by Dmitry Torokhov
Browse files

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: default avatarShiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent e99191f0
Loading
Loading
Loading
Loading
+27 −25
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@
#include <plat/keyboard.h>
#include <plat/keyboard.h>


/* Keyboard Registers */
/* Keyboard Registers */
#define MODE_REG	0x00
#define MODE_CTL_REG	0x00
#define STATUS_REG	0x0C
#define STATUS_REG	0x0C
#define DATA_REG	0x10
#define DATA_REG	0x10
#define INTR_MASK	0x54
#define INTR_MASK	0x54
@@ -38,22 +38,23 @@
 * control register as 1010010(82MHZ)
 * control register as 1010010(82MHZ)
 */
 */
#define PCLK_FREQ_MSK	0xA400	/* 82 MHz */
#define PCLK_FREQ_MSK	0xA400	/* 82 MHz */
#define START_SCAN	0x0100
#define SCAN_RATE_10	0x0000
#define SCAN_RATE_20	0x0004
#define SCAN_RATE_40	0x0008
#define SCAN_RATE_80	0x000C
#define MODE_KEYBOARD	0x0002
#define DATA_AVAIL	0x2

#define KEY_MASK	0xFF000000
#define KEY_VALUE	0x00FFFFFF
#define ROW_MASK	0xF0
#define COLUMN_MASK	0x0F
#define NUM_ROWS	16
#define NUM_ROWS	16
#define NUM_COLS	16
#define NUM_COLS	16


#define KEY_MATRIX_SHIFT	6
#define MODE_CTL_KEYBOARD	(0x2 << 0)
#define MODE_CTL_SCAN_RATE_10	(0x0 << 2)
#define MODE_CTL_SCAN_RATE_20	(0x1 << 2)
#define MODE_CTL_SCAN_RATE_40	(0x2 << 2)
#define MODE_CTL_SCAN_RATE_80	(0x3 << 2)
#define MODE_CTL_KEYNUM_SHIFT	6
#define MODE_CTL_START_SCAN	(0x1 << 8)

#define STATUS_DATA_AVAIL	(0x1 << 1)

#define DATA_ROW_MASK		0xF0
#define DATA_COLUMN_MASK	0x0F

#define ROW_SHIFT		4


struct spear_kbd {
struct spear_kbd {
	struct input_dev *input;
	struct input_dev *input;
@@ -75,7 +76,7 @@ static irqreturn_t spear_kbd_interrupt(int irq, void *dev_id)
	u32 sts, val;
	u32 sts, val;


	sts = readl_relaxed(kbd->io_base + STATUS_REG);
	sts = readl_relaxed(kbd->io_base + STATUS_REG);
	if (!(sts & DATA_AVAIL))
	if (!(sts & STATUS_DATA_AVAIL))
		return IRQ_NONE;
		return IRQ_NONE;


	if (kbd->last_key != KEY_RESERVED) {
	if (kbd->last_key != KEY_RESERVED) {
@@ -84,7 +85,8 @@ static irqreturn_t spear_kbd_interrupt(int irq, void *dev_id)
	}
	}


	/* following reads active (row, col) pair */
	/* following reads active (row, col) pair */
	val = readl_relaxed(kbd->io_base + DATA_REG);
	val = readl_relaxed(kbd->io_base + DATA_REG) &
		(DATA_ROW_MASK | DATA_COLUMN_MASK);
	key = kbd->keycodes[val];
	key = kbd->keycodes[val];


	input_event(input, EV_MSC, MSC_SCAN, val);
	input_event(input, EV_MSC, MSC_SCAN, val);
@@ -112,15 +114,15 @@ static int spear_kbd_open(struct input_dev *dev)
		return error;
		return error;


	/* program keyboard */
	/* program keyboard */
	val = SCAN_RATE_80 | MODE_KEYBOARD | PCLK_FREQ_MSK |
	val = MODE_CTL_SCAN_RATE_80 | MODE_CTL_KEYBOARD | PCLK_FREQ_MSK |
		(kbd->mode << KEY_MATRIX_SHIFT);
		(kbd->mode << MODE_CTL_KEYNUM_SHIFT);
	writel_relaxed(val, kbd->io_base + MODE_REG);
	writel_relaxed(val, kbd->io_base + MODE_CTL_REG);
	writel_relaxed(1, kbd->io_base + STATUS_REG);
	writel_relaxed(1, kbd->io_base + STATUS_REG);


	/* start key scan */
	/* start key scan */
	val = readl_relaxed(kbd->io_base + MODE_REG);
	val = readl_relaxed(kbd->io_base + MODE_CTL_REG);
	val |= START_SCAN;
	val |= MODE_CTL_START_SCAN;
	writel_relaxed(val, kbd->io_base + MODE_REG);
	writel_relaxed(val, kbd->io_base + MODE_CTL_REG);


	return 0;
	return 0;
}
}
@@ -131,9 +133,9 @@ static void spear_kbd_close(struct input_dev *dev)
	u32 val;
	u32 val;


	/* stop key scan */
	/* stop key scan */
	val = readl_relaxed(kbd->io_base + MODE_REG);
	val = readl_relaxed(kbd->io_base + MODE_CTL_REG);
	val &= ~START_SCAN;
	val &= ~MODE_CTL_START_SCAN;
	writel_relaxed(val, kbd->io_base + MODE_REG);
	writel_relaxed(val, kbd->io_base + MODE_CTL_REG);


	clk_disable(kbd->clk);
	clk_disable(kbd->clk);