*/
#include <linux/device.h>
#include <linux/errno.h>
-#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/input.h>
{
struct platform_device *pdev = dev_id;
struct jornadakbd *jornadakbd = platform_get_drvdata(pdev);
- u8 count, kbd_data;
+ struct input_dev *input = jornadakbd->input;
+ u8 count, kbd_data, scan_code;
/* startup ssp with spinlock */
jornada_ssp_start();
while (count--) {
/* Exchange TxDummy for location (keymap[kbddata]) */
kbd_data = jornada_ssp_byte(TXDUMMY);
+ scan_code = kbd_data & 0x7f;
- input_report_key(jornadakbd->input,
- jornadakbd->keymap[kbd_data & 0x7f],
+ input_event(input, EV_MSC, MSC_SCAN, scan_code);
+ input_report_key(input, jornadakbd->keymap[scan_code],
!(kbd_data & 0x80));
- input_sync(jornadakbd->input);
+ input_sync(input);
}
}
__set_bit(jornadakbd->keymap[i], input_dev->keybit);
__clear_bit(KEY_RESERVED, input_dev->keybit);
+ input_set_capability(input_dev, EV_MSC, MSC_SCAN);
+
err = request_irq(IRQ_GPIO0,
jornada720_kbd_interrupt,
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
return 0;
}
+/* work with hotplug and coldplug */
+MODULE_ALIAS("platform:jornada720_kbd");
+
static struct platform_driver jornada720_kbd_driver = {
.driver = {
.name = "jornada720_kbd",
+ .owner = THIS_MODULE,
},
.probe = jornada720_kbd_probe,
.remove = __devexit_p(jornada720_kbd_remove),