From subversion@balloonboard.org Sat May 26 15:27:40 2012
Received: from nick by stoneboat.aleph1.co.uk with local (Exim 4.72)
	(envelope-from <subversion@balloonboard.org>) id 1SYHy0-0000c9-RK
	for balloon-svn@balloonboard.org; Sat, 26 May 2012 15:27:40 +0100
Message-Id: <E1SYHy0-0000c9-RK@stoneboat.aleph1.co.uk>
Date: Sat, 26 May 2012 15:27:40 +0100
To: balloon-svn@balloonboard.org
From: subversion@balloonboard.org
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-SA-Exim-Connect-IP: <locally generated>
X-SA-Exim-Mail-From: subversion@balloonboard.org
X-SA-Exim-Scanned: No (on stoneboat.aleph1.co.uk);
	SAEximRunCond expanded to false
Subject: [Balloon-svn] r1882 -
	balloon/branches/menuconfig2/package/kernel/patches/2.6.39.4
X-BeenThere: balloon-svn@balloonboard.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: <balloon-svn.balloonboard.org>
List-Unsubscribe: <http://balloonboard.org/cgi-bin/mailman/options/balloon-svn>, 
	<mailto:balloon-svn-request@balloonboard.org?subject=unsubscribe>
List-Archive: <http://balloonboard.org/lurker/list/balloon-svn.html>
List-Post: <mailto:balloon-svn@balloonboard.org>
List-Help: <mailto:balloon-svn-request@balloonboard.org?subject=help>
List-Subscribe: <http://balloonboard.org/cgi-bin/mailman/listinfo/balloon-svn>, 
	<mailto:balloon-svn-request@balloonboard.org?subject=subscribe>
X-List-Received-Date: Sat, 26 May 2012 14:27:41 -0000

Author: nick
Date: 2012-05-26 15:27:40 +0100 (Sat, 26 May 2012)
New Revision: 1882

Modified:
   balloon/branches/menuconfig2/package/kernel/patches/2.6.39.4/keyboard-tt.patch
Log:
clean up code by removing old samosa interface references. Increase keymask delay for safety

Modified: balloon/branches/menuconfig2/package/kernel/patches/2.6.39.4/keyboard-tt.patch
===================================================================
--- balloon/branches/menuconfig2/package/kernel/patches/2.6.39.4/keyboard-tt.patch	2012-05-25 15:34:22 UTC (rev 1881)
+++ balloon/branches/menuconfig2/package/kernel/patches/2.6.39.4/keyboard-tt.patch	2012-05-26 14:27:40 UTC (rev 1882)
@@ -1,7 +1,7 @@
 Index: linux-2.6.39.4/drivers/input/keyboard/Kconfig
 ===================================================================
---- linux-2.6.39.4.orig/drivers/input/keyboard/Kconfig	2012-05-15 14:38:12.000000000 +0100
-+++ linux-2.6.39.4/drivers/input/keyboard/Kconfig	2012-05-15 14:38:23.000000000 +0100
+--- linux-2.6.39.4.orig/drivers/input/keyboard/Kconfig	2012-05-25 16:30:55.000000000 +0100
++++ linux-2.6.39.4/drivers/input/keyboard/Kconfig	2012-05-25 16:31:01.000000000 +0100
 @@ -530,4 +530,13 @@
  	  To compile this driver as a module, choose M here: the
  	  module will be called w90p910_keypad.
@@ -18,8 +18,8 @@
  endif
 Index: linux-2.6.39.4/drivers/input/keyboard/Makefile
 ===================================================================
---- linux-2.6.39.4.orig/drivers/input/keyboard/Makefile	2012-05-15 14:38:12.000000000 +0100
-+++ linux-2.6.39.4/drivers/input/keyboard/Makefile	2012-05-15 14:38:23.000000000 +0100
+--- linux-2.6.39.4.orig/drivers/input/keyboard/Makefile	2012-05-25 16:30:55.000000000 +0100
++++ linux-2.6.39.4/drivers/input/keyboard/Makefile	2012-05-25 16:31:01.000000000 +0100
 @@ -48,3 +48,4 @@
  obj-$(CONFIG_KEYBOARD_TWL4030)		+= twl4030_keypad.o
  obj-$(CONFIG_KEYBOARD_XTKBD)		+= xtkbd.o
@@ -28,8 +28,8 @@
 Index: linux-2.6.39.4/drivers/input/keyboard/tt-keyboard.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.39.4/drivers/input/keyboard/tt-keyboard.c	2012-05-25 15:20:19.000000000 +0100
-@@ -0,0 +1,830 @@
++++ linux-2.6.39.4/drivers/input/keyboard/tt-keyboard.c	2012-05-26 11:34:02.000000000 +0100
+@@ -0,0 +1,442 @@
 +/*
 + * Balloon3 Bubble TT Keyboard Controller Driver
 + * Based on OpenCores keyboard controller
@@ -47,44 +47,18 @@
 +#include <linux/module.h>
 +#include <linux/slab.h>
 +#include <linux/irq.h>
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +#include <linux/spi/spi.h>
 +#include <linux/spi/spi_tt.h>
-+#endif
 +#include <linux/samosa_device.h>
 +
 +#include <mach/balloon3.h>
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
-+#define USE_WORK
-+#else
-+//#define USE_WORK
-+#endif
-+#define DEBOUNCE_JIFFIES (HZ/200)
-+//#define DEBOUNCE_MS 50
-+//#define DEBOUNCE_COUNT 10
-+//#define DEBUG_ISR
-+//#define DEBUG_WORK
-+//#define DEBUG_EVENT
-+
 +#include <linux/workqueue.h>
 +#include <linux/delay.h>
 +
-+//#define PROC_TTKBD "ttkbd"
-+
-+#ifdef PROC_TTKBD
-+#include <linux/proc_fs.h>
-+#include <linux/ctype.h>
-+#include <linux/uaccess.h>
-+#endif
-+
 +struct tt_kbd {
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	struct spi_device *spi;
 +	struct spi_message spi_msg;
-+#else
-+	unsigned long jiffies;
-+#endif
 +	struct input_dev *input;
 +	struct input_dev *sys_start_input;
 +	int sys_start;
@@ -94,24 +68,10 @@
 +	int switch_up;
 +	int joystick_down;
 +	int joystick_up;
-+#ifdef DEBOUNCE_MS
-+	int joystick_state;
-+	int switch_state;
-+#endif
 +	int read_id;
 +	struct work_struct kbd_wq;
 +};
 +
-+#define SAMOSA_JOYSTICK_DOWN_LATCH 0x08
-+#define SAMOSA_JOYSTICK_UP_LATCH   0x09
-+#define SAMOSA_JOYSTICK_STATE 0x0A
-+
-+#define SAMOSA_SWITCH_DOWN_LATCH 0x0B
-+#define SAMOSA_SWITCH_UP_LATCH 0x0C
-+#define SAMOSA_SWITCH_STATE 0x0D
-+
-+#define SAMOSA_KEYBOARD_INT_STATUS 0x0F
-+
 +static u8 keyboard_id;
 +static unsigned int keyboard_keymask[8];
 +
@@ -163,6 +123,7 @@
 +
 +static DEVICE_ATTR(kbd_id, S_IRUGO, show_id, NULL);
 +
++#if 0
 +static inline void Write_Data(unsigned char reg, unsigned char parameter)
 +	{
 +#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
@@ -178,8 +139,8 @@
 +	return samosa_read8( reg );
 +#endif
 +	}
++#endif
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +static int spiReadReg(struct spi_device *spi, unsigned char reg)
 +{
 +	u8 result = 0;
@@ -208,22 +169,15 @@
 +static int spiWriteRegData(struct spi_device *spi, unsigned char reg, unsigned char data)
 +{
 +	int res = 0;
-+	char dummy;
 +	unsigned char txbuffer[2]= { reg, data };
 +	struct spi_transfer	rg = {
 +		.tx_buf		= &txbuffer[0],
 +		.len		= 2,
 +	};
-+	struct spi_transfer	rd = {
-+		.rx_buf		= &dummy,
-+		.len		= 0,
-+	};
 +	struct spi_message	m;
 +
-+//	reg |= 0x80; // set read bit
 +	spi_message_init(&m);
 +	spi_message_add_tail(&rg, &m);
-+//	spi_message_add_tail(&rd, &m);
 +	res = spi_sync(spi, &m);
 +	if (res != 0)
 +		pr_info("%s: spi_sync returned %d\n", __func__, res);
@@ -231,77 +185,25 @@
 +	return res;
 +}
 +
-+
 +static void maskKey(struct spi_device *dev, int row, int col) {
 +	spiWriteRegData(dev, 0x11, ((row & 0xf) << 4) | (col & 0xf));
-+	msleep(1);
++	msleep(5);
 +}
 +
 +static void unmaskKey(struct spi_device *dev, int row, int col) {
 +	spiWriteRegData(dev, 0x12, ((row & 0xf) << 4) | (col & 0xf));
-+	msleep(1);
++	msleep(5);
 +}
 +
-+#endif
-+
 +static void ttkeypad_reset(void)
 +{
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	// reset keyboard
 +	samosa_write8(SAMOSA_ADDR_CONTROL_REG_2_SET,1 << KBD_RESET_BIT);
 +	msleep(1);
 +	samosa_write8(SAMOSA_ADDR_CONTROL_REG_2_CLR,1 << KBD_RESET_BIT);
 +	msleep(1);
-+#else
-+	Write_Data(SAMOSA_JOYSTICK_DOWN_LATCH, 0xff);
-+	Write_Data(SAMOSA_JOYSTICK_UP_LATCH, 0xff);
-+	Write_Data(SAMOSA_SWITCH_DOWN_LATCH, 0xff);
-+	Write_Data(SAMOSA_SWITCH_UP_LATCH, 0xff);
-+#endif
 +}
 +
-+#if 0
-+static int ttkeypad_setup()
-+{
-+	printk("ttkeypad_setup\n");
-+	return 0;
-+}
-+
-+static int ttkeypadReadJoystickLatches()
-+{
-+	int data, down, up;
-+	down = Read_Data(SAMOSA_JOYSTICK_DOWN_LATCH);
-+//	Write_Data(SAMOSA_JOYSTICK_DOWN_LATCH, down);
-+	up = Read_Data(SAMOSA_JOYSTICK_UP_LATCH);
-+//	Write_Data(SAMOSA_JOYSTICK_UP_LATCH, up);
-+	data = (up << 8) | down;
-+	return data;
-+}
-+
-+static int ttkeypadReadSwitchLatches()
-+{
-+	int data, down, up;
-+	down = Read_Data(SAMOSA_SWITCH_DOWN_LATCH);
-+//	Write_Data(SAMOSA_SWITCH_DOWN_LATCH, down);
-+	up = Read_Data(SAMOSA_SWITCH_UP_LATCH);
-+//	Write_Data(SAMOSA_SWITCH_UP_LATCH, up);
-+	data = (up << 8) | down;
-+	return data;
-+}
-+#endif
-+
-+static int readJoystickState(void)
-+{
-+	return Read_Data(SAMOSA_JOYSTICK_STATE);
-+}
-+
-+static int readSwitchState(void)
-+{
-+	return Read_Data(SAMOSA_SWITCH_STATE);
-+}
-+
-+#define SWITCH_OFFSET 8
-+#define JOYSTICK_OFFSET 0
 +static unsigned short keycodes[16] = {
 +		KEY_LEFT, KEY_DOWN, KEY_RIGHT, KEY_UP, KEY_KPENTER, KEY_G, KEY_H, KEY_I,
 +		KEY_LEFTMETA, KEY_ESC, KEY_ENTER, KEY_INSERT, KEY_COMPOSE, KEY_6, KEY_7, KEY_8
@@ -311,53 +213,6 @@
 +		KEY_POWER
 +};
 +
-+static void do_switch(struct input_dev *input, int latch, int down) {
-+	if (latch) {
-+		int i;
-+#ifdef DEBUG_EVENT
-+pr_info("%s: latch 0x%x down = %d \n",__func__, latch, down);
-+#endif
-+		for (i = 0; i < 8; i++) {
-+			if (latch & ( 1 << i ) ) {
-+				input_report_key(input, keycodes[i+SWITCH_OFFSET],down);
-+#ifdef DEBUG_EVENT
-+pr_info("%s: key 0x%x %s (index %d)\n",__func__, keycodes[i+SWITCH_OFFSET], down ? "down":"up", i+SWITCH_OFFSET);
-+#endif
-+			}
-+		}
-+	}
-+}
-+
-+static void do_joystick(struct input_dev *input, int latch, int down) {
-+	if (latch) {
-+		int i;
-+#ifdef DEBUG_EVENT
-+pr_info("%s: latch 0x%x down = %d \n",__func__, latch, down);
-+#endif
-+		for (i = 0; i < 8; i++) {
-+			if (latch & ( 1 << i ) ) {
-+				input_report_key(input, keycodes[i+JOYSTICK_OFFSET],down);
-+#ifdef DEBUG_EVENT
-+pr_info("%s: key 0x%x %s (index %d)\n",__func__, keycodes[i+JOYSTICK_OFFSET], down ? "down":"up", i+JOYSTICK_OFFSET);
-+#endif
-+			}
-+		}
-+	}
-+}
-+
-+// snapshot and clear latches
-+static void sync_latches(struct tt_kbd *tt_kbd) {
-+	tt_kbd->switch_down = Read_Data(SAMOSA_SWITCH_DOWN_LATCH);
-+	Write_Data(SAMOSA_SWITCH_DOWN_LATCH, tt_kbd->switch_down);
-+	tt_kbd->switch_up = Read_Data(SAMOSA_SWITCH_UP_LATCH);
-+	Write_Data(SAMOSA_SWITCH_UP_LATCH, tt_kbd->switch_up);
-+	tt_kbd->joystick_down = Read_Data(SAMOSA_JOYSTICK_DOWN_LATCH);
-+	Write_Data(SAMOSA_JOYSTICK_DOWN_LATCH, tt_kbd->joystick_down);
-+	tt_kbd->joystick_up = Read_Data(SAMOSA_JOYSTICK_UP_LATCH);
-+	Write_Data(SAMOSA_JOYSTICK_UP_LATCH, tt_kbd->joystick_up);
-+}
-+
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +static unsigned short spi_keycodes[8][8] = {
 +{0, 0, 0, 0,  0, 0, 0, 0},
 +{0, 0, 0, 0,  0, 0, 0, 0},
@@ -386,16 +241,12 @@
 +	}
 +}
 +
-+#endif
-+
 +static void kbd_work(struct work_struct *work) {
 +	struct tt_kbd *tt_kbd = container_of(work, struct tt_kbd, kbd_wq);
 +	struct input_dev *input = tt_kbd->input;
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	u8 updown;
 +	u8 rc;
 +	unsigned short key;
-+#endif
 +	if (tt_kbd->sys_start) {
 +		struct input_dev *input = tt_kbd->sys_start_input;
 +		input_report_key(input, KEY_POWER, 1);
@@ -407,19 +258,12 @@
 +		tt_kbd->sys_start = 0;
 +		return;
 +	}
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	updown = spiReadReg(tt_kbd->spi,0);
 +	rc = spiReadReg(tt_kbd->spi,1);
 +	key = spi_keycodes[(rc >> 4) & 0x7][rc & 0x7];
-+#ifdef DEBUG_WORK
-+pr_info("%s: updown = 0x%x, rc = 0x%x\n",__func__, updown, rc);
-+#endif
 +	// check that 'updown' has non-zero in bottom four bits
 +	// indicating that this is a real keypress
-+	if(updown&0x0f) {
-+#ifdef DEBUG_WORK
-+		pr_info("%s: key 0x%x %s\n", __func__, key, (updown & 0x80) ? "up":"down");
-+#endif
++	if(updown & 0x0f) {
 +		if (key)
 +			input_report_key(input, key ,(updown & 0x80) ? 0:1);
 +	}
@@ -430,92 +274,6 @@
 +		tt_kbd->read_id = 0;
 +	}
 +
-+#else
-+	disable_irq(tt_kbd->irq);
-+	do {
-+#ifdef DEBOUNCE_MS
-+// FIXME this code is not properly functional
-+		int timeout = DEBOUNCE_COUNT;
-+		int switch_state, joystick_state;
-+		int matched;
-+		// read in the initial states
-+		switch_state = readSwitchState();
-+		joystick_state = readJoystickState();
-+#ifdef DEBUG_WORK
-+pr_info("%s: switch state 0x%x, joystick state 0x%x\n",__func__, switch_state, joystick_state);
-+#endif
-+		// read state till stable
-+		if ((switch_state != tt_kbd->switch_state) || (joystick_state != tt_kbd->joystick_state)) {
-+#ifdef DEBUG_WORK
-+pr_info("%s: polling kbd data\n",__func__);
-+#endif
-+		matched = 0;
-+		do {
-+			int current_switch_state;
-+			int current_joystick_state;
-+			msleep(DEBOUNCE_MS);
-+			current_switch_state = readSwitchState();
-+			current_joystick_state = readJoystickState();
-+			if ((current_switch_state == switch_state) && (current_joystick_state == joystick_state)) {
-+#ifdef DEBUG_WORK
-+pr_info("%s: matched state - timeout set to %d\n",__func__, timeout);
-+#endif
-+				matched = 1;
-+				break;
-+			}
-+		} while (timeout--);
-+
-+#ifdef DEBUG_WORK
-+pr_info("%s: calcualating state (timeout = %d)\n",__func__, timeout);
-+#endif
-+	tt_kbd->switch_down = tt_kbd->switch_up = tt_kbd->joystick_down = tt_kbd->joystick_up = 0;
-+	if (matched && (tt_kbd->switch_state != switch_state)) {
-+			tt_kbd->switch_down = switch_state & ~tt_kbd->switch_state;
-+			tt_kbd->switch_up = (~switch_state) & tt_kbd->switch_state;
-+			tt_kbd->switch_state = switch_state;
-+#ifdef DEBUG_WORK
-+pr_info("%s: switch state is %d\n",__func__, tt_kbd->switch_state);
-+#endif
-+	}
-+
-+	if (matched && (tt_kbd->joystick_state != joystick_state)) {
-+			tt_kbd->joystick_down = joystick_state & ~tt_kbd->joystick_state;
-+			tt_kbd->joystick_up = (~joystick_state) & tt_kbd->joystick_state;
-+			tt_kbd->joystick_state = joystick_state;
-+#ifdef DEBUG_WORK
-+pr_info("%s: joystick state is %d\n",__func__, tt_kbd->joystick_state);
-+#endif
-+	}
-+
-+#ifdef DEBUG_WORK
-+if (!matched)
-+	pr_info("%s: data unchanged\n",__func__);
-+#endif
-+
-+#endif // DEBOUNCE_MS
-+
-+		if (tt_kbd->switch_down || tt_kbd->switch_up || tt_kbd->joystick_down || tt_kbd->joystick_up) {
-+#ifdef DEBUG_WORK
-+pr_info("%s: switch down 0x%x up 0x%x, joystick down 0x%x up 0x%x \n",__func__, tt_kbd->switch_down, tt_kbd->switch_up, tt_kbd->joystick_down, tt_kbd->joystick_up);
-+#endif
-+			do_switch(input, tt_kbd->switch_down, 1);
-+			do_switch(input, tt_kbd->switch_up, 0);
-+			do_joystick(input, tt_kbd->joystick_down, 1);
-+			do_joystick(input, tt_kbd->joystick_up, 0);
-+			input_sync(input);
-+		}
-+#ifdef DEBUG_WORK
-+		else
-+pr_info("%s: no change detected\n",__func__);
-+#endif
-+		sync_latches(tt_kbd);
-+
-+	} while (tt_kbd->switch_down || tt_kbd->switch_up || tt_kbd->joystick_down || tt_kbd->joystick_up);
-+	enable_irq(tt_kbd->irq);
-+#ifdef DEBUG_WORK
-+pr_info("%s: done\n",__func__);
-+#endif
-+#endif
 +}
 +
 +static irqreturn_t tt_sys_start_isr(int irq, void *dev_id)
@@ -529,48 +287,11 @@
 +static irqreturn_t tt_kbd_isr(int irq, void *dev_id)
 +{
 +	struct tt_kbd *tt_kbd = dev_id;
-+#ifdef DEBUG_ISR
-+pr_info("%s: enter\n",__FUNCTION__);
-+#endif
-+	// latch and clear interrupts
-+#if !defined(CONFIG_SPI_TT) && !defined(CONFIG_SPI_TT_MODULE)
-+	if (jiffies > tt_kbd->jiffies + DEBOUNCE_JIFFIES) {
-+#endif
-+#ifdef USE_WORK
-+#ifdef DEBUG_ISR
-+pr_info("%s: scheduling kbd work\n",__func__);
-+#endif
 +	schedule_work(&tt_kbd->kbd_wq);
-+#else
-+	struct input_dev *input = tt_kbd->input;
-+
-+#ifdef DEBUG_ISR
-+pr_info("%s: reading state and clearing latches\n",__func__);
-+#endif
-+	if ((tt_kbd->switch_down) || (tt_kbd->switch_up) || (tt_kbd->joystick_down) || (tt_kbd->joystick_up)) {
-+		do_switch(input, tt_kbd->switch_down, 1);
-+		do_switch(input, tt_kbd->switch_up, 0);
-+		do_joystick(input, tt_kbd->joystick_down, 1);
-+		do_joystick(input, tt_kbd->joystick_up, 0);
-+		input_sync(input);
-+	}
-+#endif
-+#if !defined(CONFIG_SPI_TT) && !defined(CONFIG_SPI_TT_MODULE)
-+	}
-+	tt_kbd->jiffies = jiffies;
-+#endif
-+
-+#ifdef DEBUG_ISR
-+pr_info("%s: irq handled\n",__func__);
-+#endif
 +	return IRQ_HANDLED;
 +}
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +static int __devinit tt_kbd_probe(struct spi_device *dev)
-+#else
-+static int __devinit tt_kbd_probe(struct samosa_device *dev)
-+#endif
 +{
 +	struct input_dev *input, *ss_input;
 +	struct tt_kbd *tt_kbd;
@@ -583,7 +304,6 @@
 +		error = -ENOMEM;
 +		goto err_free_mem;
 +	}
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	ttkeypad_reset();
 +	dev->bits_per_word = 8;
 +
@@ -593,11 +313,6 @@
 +	tt_kbd->spi = dev;
 +	tt_kbd->irq = dev->irq;
 +	tt_kbd->sys_start_irq = TT_SYS_START_IRQ;
-+#else
-+	tt_kbd->irq = BALLOON3_FPGA_IRQ;
-+	tt_kbd->jiffies = 0;
-+#endif
-+pr_info("%s: irq is %d\n",__func__, tt_kbd->irq);
 +
 +	tt_kbd->input = input;
 +
@@ -617,9 +332,8 @@
 +	input->keycodemax = ARRAY_SIZE(keycodes);
 +
 +	__set_bit(EV_KEY, input->evbit);
-+	for (i = 0; i < ARRAY_SIZE(keycodes); i++) {
++	for (i = 0; i < ARRAY_SIZE(keycodes); i++)
 +		__set_bit(keycodes[i], input->keybit);
-+	}
 +	__clear_bit(KEY_RESERVED, input->keybit);
 +
 +	// sys_start input
@@ -642,9 +356,8 @@
 +	ss_input->keycodemax = ARRAY_SIZE(ss_keycodes);
 +
 +	__set_bit(EV_KEY, ss_input->evbit);
-+	for (i = 0; i < ARRAY_SIZE(ss_keycodes); i++) {
++	for (i = 0; i < ARRAY_SIZE(ss_keycodes); i++)
 +		__set_bit(ss_keycodes[i], ss_input->keybit);
-+	}
 +	__clear_bit(KEY_RESERVED, ss_input->keybit);
 +
 +	tt_kbd->sys_start = 0;
@@ -665,23 +378,16 @@
 +		dev_err(&dev->dev, "unable to claim irq %d\n", tt_kbd->sys_start_irq);
 +		goto err_free_irq;
 +	}
-+//	irq_set_irq_type(tt_kbd->sys_start_irq, IRQ_TYPE_EDGE_BOTH);
 +
 +	error = input_register_device(ss_input);
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	spi_set_drvdata(dev, tt_kbd);
-+#else
-+	samosa_set_drvdata(dev, tt_kbd);
-+#endif
 +	if (error) {
 +		dev_err(&dev->dev, "unable to register input device\n");
 +		goto err_free_irq;
 +	}
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	pr_info("%s: read keyboard INT_FLAGS returns %d\n",__func__, spiReadReg(tt_kbd->spi,0));
-+#endif
 +
 +	keyboard_id = spiReadReg(tt_kbd->spi,0xf);
 +	pr_info("%s: read keyboard id returns 0x%x\n",__func__, keyboard_id);
@@ -705,22 +411,14 @@
 + err_free_mem:
 +	input_free_device(input);
 +	kfree(tt_kbd);
-+pr_info("%s: failed\n",__FUNCTION__);
++	pr_info("%s: failed\n", __func__);
 +
 +	return error;
 +}
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +static int __devexit tt_kbd_remove(struct spi_device *pdev)
-+#else
-+static int __devexit tt_kbd_remove(struct samosa_device *pdev)
-+#endif
 +{
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	struct tt_kbd *tt_kbd = spi_get_drvdata(pdev);
-+#else
-+	struct tt_kbd *tt_kbd = samosa_get_drvdata(pdev);
-+#endif
 +
 +	free_irq(tt_kbd->irq, tt_kbd);
 +
@@ -732,56 +430,6 @@
 +	return 0;
 +}
 +
-+#ifdef PROC_TTKBD
-+
-+static ssize_t proc_read_ttkbd(struct file *file, char *buf,
-+		size_t nbytes, loff_t *ppos) {
-+	int count = 0;
-+//	pr_info("%s: read keyboard INT_FLAGS returns %d\n",__func__, spiReadReg(dev,0);
-+//	pr_info("%s: read keyboard LAST_EVENT returns %d\n",__func__, spiReadReg(dev,1);
-+	return count;
-+}
-+
-+static ssize_t proc_write_ttkbd(struct file *file, const char *buffer,
-+		size_t count, loff_t *ppos) {
-+	char buf[40];
-+#if 0
-+	unsigned long val;
-+	char *p = buf;
-+	char *pp;
-+#endif
-+
-+	if (count >= (sizeof(buf) -1 ))
-+		return -EFAULT;
-+
-+	if (copy_from_user(buf, buffer, count))
-+		return -EFAULT;
-+
-+#if 0
-+	buf[count] = 0;
-+	while (isspace(*p))
-+		p++;
-+	val = simple_strtoul(p,&pp,0);
-+	if (pp && (pp > p)) {
-+		pr_info("reporting key down/up for key <%ld>\n",val);
-+		input_report_key(tt_input, val, 1);
-+		input_report_key(tt_input, val, 0);
-+		input_sync(tt_input);
-+	}
-+	else
-+		pr_info("cannot get kbd value from <%s>\n",buf);
-+#endif
-+	return count;
-+}
-+
-+static struct file_operations proc_ttkbd_operations = {
-+	read:	proc_read_ttkbd,
-+	write:	proc_write_ttkbd
-+};
-+
-+static struct proc_dir_entry *proc_ttkbd;
-+#endif
-+
 +#ifdef CONFIG_PM_SLEEP
 +static int tt_kbd_suspend(struct device *dev)
 +{
@@ -791,7 +439,7 @@
 +
 +static int tt_kbd_resume(struct device *dev)
 +{
-+	ttkeypad_reset();
++//	ttkeypad_reset();
 +	resumeKeys(to_spi_device(dev));
 +	return 0;
 +}
@@ -799,7 +447,6 @@
 +
 +static SIMPLE_DEV_PM_OPS(tt_kbd_pm_ops, tt_kbd_suspend, tt_kbd_resume);
 +
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +static struct spi_driver tt_kbd_device_driver = {
 +	.probe    = tt_kbd_probe,
 +	.remove   = __devexit_p(tt_kbd_remove),
@@ -809,51 +456,16 @@
 +		.pm	= &tt_kbd_pm_ops,
 +	},
 +};
-+#else
-+static struct samosa_driver tt_kbd_device_driver = {
-+	.probe    = tt_kbd_probe,
-+	.remove   = __devexit_p(tt_kbd_remove),
-+	.driver   = {
-+		.name = "tt-kbd",
-+		.owner  = THIS_MODULE,
-+		.pm	= &tt_kbd_pm_ops,
-+	},
-+};
 +
-+static struct samosa_device *tt_kbd_device;
-+#endif
-+
 +static int __init tt_kbd_init(void)
 +{
-+pr_info("%s: \n",__FUNCTION__);
-+#if !defined(CONFIG_SPI_TT) && !defined(CONFIG_SPI_TT_MODULE)
-+	tt_kbd_device = samosa_device_alloc("tt-kbd",-1);
-+	samosa_device_add(tt_kbd_device);
-+#endif
-+#ifdef PROC_TTKBD
-+	proc_ttkbd = create_proc_entry(PROC_TTKBD, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH, NULL);
-+	if (proc_ttkbd)
-+		proc_ttkbd->proc_fops = &proc_ttkbd_operations;
-+#endif
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	return spi_register_driver(&tt_kbd_device_driver);
-+#else
-+	return samosa_driver_register(&tt_kbd_device_driver);
-+#endif
 +}
 +module_init(tt_kbd_init);
 +
 +static void __exit tt_kbd_exit(void)
 +{
-+#ifdef PROC_TTKBD
-+	remove_proc_entry(PROC_TTKBD, NULL);
-+#endif
-+#if defined(CONFIG_SPI_TT) || defined(CONFIG_SPI_TT_MODULE)
 +	spi_unregister_driver(&tt_kbd_device_driver);
-+#else
-+	samosa_driver_unregister(&tt_kbd_device_driver);
-+	samosa_device_unregister(tt_kbd_device);
-+#endif
 +}
 +module_exit(tt_kbd_exit);
 +


