* [PATCH 01/03] sh: SuperH KEYSC platform driver
2008-02-29 10:48 [PATCH 00/03] sh: SuperH KEYSC keypad support Magnus Damm
@ 2008-02-29 10:48 ` Magnus Damm
2008-02-29 21:57 ` Andrew Morton
2008-02-29 10:49 ` [PATCH 02/03] sh: SuperH KEYSC keypad data for MigoR Magnus Damm
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: Magnus Damm @ 2008-02-29 10:48 UTC (permalink / raw)
To: linux-input; +Cc: Magnus Damm, lethal, akpm, linux-sh
This patch adds a platform driver for the SuperH KEYSC block. The driver
expects to get mode, timing information and keypad layout from the board
code as platform data. The board code is resonsible for pin configuration.
Both sh7343 and sh7722 should be supported, but only the sh7722 processor
has been tested so far. SH_KEYSC_MODE_3 is yet to be tested.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
---
drivers/input/keyboard/Kconfig | 9 +
drivers/input/keyboard/Makefile | 1
drivers/input/keyboard/sh_keysc.c | 281 +++++++++++++++++++++++++++++++++++++
include/asm-sh/sh_keysc.h | 13 +
4 files changed, 304 insertions(+)
--- 0001/drivers/input/keyboard/Kconfig
+++ work/drivers/input/keyboard/Kconfig 2008-02-27 23:37:10.000000000 +0900
@@ -314,4 +314,13 @@ config KEYBOARD_BFIN
To compile this driver as a module, choose M here: the
module will be called bf54x-keys.
+config KEYBOARD_SH_KEYSC
+ tristate "SuperH KEYSC keypad support"
+ depends on SUPERH
+ help
+ Say Y here if you want to use a keypad attached to the KEYSC block
+ on SuperH processors such as sh7722 and sh7343.
+
+ To compile this driver as a module, choose M here: the
+ module will be called sh_keysc.
endif
--- 0001/drivers/input/keyboard/Makefile
+++ work/drivers/input/keyboard/Makefile 2008-02-27 23:31:39.000000000 +0900
@@ -26,3 +26,4 @@ obj-$(CONFIG_KEYBOARD_HP6XX) += jornada
obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o
obj-$(CONFIG_KEYBOARD_MAPLE) += maple_keyb.o
obj-$(CONFIG_KEYBOARD_BFIN) += bf54x-keys.o
+obj-$(CONFIG_KEYBOARD_SH_KEYSC) += sh_keysc.o
--- /dev/null
+++ work/drivers/input/keyboard/sh_keysc.c 2008-02-28 17:55:53.000000000 +0900
@@ -0,0 +1,281 @@
+/*
+ * SuperH KEYSC Keypad Driver
+ *
+ * Copyright (C) 2008 Magnus Damm
+ *
+ * Based on gpio_keys.c, Copyright 2005 Phil Blundell
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/input.h>
+#include <linux/io.h>
+#include <asm/sh_keysc.h>
+
+#define KYCR1_OFFS 0x00
+#define KYCR2_OFFS 0x04
+#define KYINDR_OFFS 0x08
+#define KYOUTDR_OFFS 0x0c
+
+#define KYCR2_IRQ_LEVEL 0x10
+#define KYCR2_IRQ_DISABLED 0x00
+
+static const struct {
+ unsigned char kymd, keyout, keyin;
+} sh_keysc_mode[] = {
+ [SH_KEYSC_MODE_1] = { 0, 6, 5 },
+ [SH_KEYSC_MODE_2] = { 1, 5, 6 },
+ [SH_KEYSC_MODE_3] = { 2, 4, 7 },
+};
+
+struct sh_keysc_priv {
+ void __iomem *iomem_base;
+ unsigned long last_keys;
+ struct input_dev *input;
+ struct sh_keysc_info pdata;
+};
+
+static irqreturn_t sh_keysc_isr(int irq, void *dev_id)
+{
+ struct platform_device *pdev = dev_id;
+ struct sh_keysc_priv *priv = platform_get_drvdata(pdev);
+ struct sh_keysc_info *pdata = &priv->pdata;
+ unsigned long keys, keys1, keys0, mask;
+ unsigned char keyin_set, tmp;
+ int i, k;
+
+ dev_dbg(&pdev->dev, "isr!\n");
+
+ keys1 = ~0;
+ keys0 = 0;
+
+ do {
+ keys = 0;
+ keyin_set = 0;
+
+ iowrite16(KYCR2_IRQ_DISABLED, priv->iomem_base + KYCR2_OFFS);
+
+ for (i = 0; i < sh_keysc_mode[pdata->mode].keyout; i++) {
+ iowrite16(0xfff ^ (3 << (i * 2)),
+ priv->iomem_base + KYOUTDR_OFFS);
+ udelay(pdata->delay);
+ tmp = ioread16(priv->iomem_base + KYINDR_OFFS);
+ keys |= tmp << (sh_keysc_mode[pdata->mode].keyin * i);
+ tmp ^= (1 << sh_keysc_mode[pdata->mode].keyin) - 1;
+ keyin_set |= tmp;
+ }
+
+ iowrite16(0, priv->iomem_base + KYOUTDR_OFFS);
+ iowrite16(KYCR2_IRQ_LEVEL | (keyin_set << 8),
+ priv->iomem_base + KYCR2_OFFS);
+
+ keys ^= ~0;
+ keys &= (1 << (sh_keysc_mode[pdata->mode].keyin *
+ sh_keysc_mode[pdata->mode].keyout)) - 1;
+ keys1 &= keys;
+ keys0 |= keys;
+
+ dev_dbg(&pdev->dev, "keys 0x%08lx\n", keys);
+
+ } while (ioread16(priv->iomem_base + KYCR2_OFFS) & 0x01);
+
+ dev_dbg(&pdev->dev, "last_keys 0x%08lx keys0 0x%08lx keys1 0x%08lx\n",
+ priv->last_keys, keys0, keys1);
+
+ for (i = 0; i < SH_KEYSC_MAXKEYS; i++) {
+ k = pdata->keycodes[i];
+ if (!k)
+ continue;
+
+ mask = 1 << i;
+
+ if (!((priv->last_keys ^ keys0) & mask))
+ continue;
+
+ if ((keys1 | keys0) & mask) {
+ input_event(priv->input, EV_KEY, k, 1);
+ priv->last_keys |= mask;
+ }
+
+ if (!(keys1 & mask)) {
+ input_event(priv->input, EV_KEY, k, 0);
+ priv->last_keys &= ~mask;
+ }
+
+ }
+ input_sync(priv->input);
+
+ return IRQ_HANDLED;
+}
+
+#define res_size(res) ((res)->end - (res)->start + 1)
+
+static int __devinit sh_keysc_probe(struct platform_device *pdev)
+{
+ struct sh_keysc_priv *priv;
+ struct sh_keysc_info *pdata;
+ struct resource *res;
+ struct input_dev *input;
+ int i, k;
+ int irq, error;
+
+ if (!pdev->dev.platform_data) {
+ dev_err(&pdev->dev, "no platform data defined\n");
+ error = -EINVAL;
+ goto err0;
+ }
+
+ error = -ENXIO;
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (res == NULL) {
+ dev_err(&pdev->dev, "failed to get I/O memory\n");
+ goto err0;
+ }
+
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0) {
+ dev_err(&pdev->dev, "failed to get irq\n");
+ goto err0;
+ }
+
+ priv = kzalloc(sizeof(*priv), GFP_KERNEL);
+ if (priv == NULL) {
+ dev_err(&pdev->dev, "failed to allocate driver data\n");
+ error = -ENOMEM;
+ goto err0;
+ }
+
+ platform_set_drvdata(pdev, priv);
+ memcpy(&priv->pdata, pdev->dev.platform_data, sizeof(priv->pdata));
+ pdata = &priv->pdata;
+
+ res = request_mem_region(res->start, res_size(res), pdev->name);
+ if (res == NULL) {
+ dev_err(&pdev->dev, "failed to request I/O memory\n");
+ error = -EBUSY;
+ goto err1;
+ }
+
+ priv->iomem_base = ioremap_nocache(res->start, res_size(res));
+ if (priv->iomem_base == NULL) {
+ dev_err(&pdev->dev, "failed to remap I/O memory\n");
+ error = -ENXIO;
+ goto err2;
+ }
+
+ priv->input = input_allocate_device();
+ if (!priv->input) {
+ dev_err(&pdev->dev, "failed to allocate input device\n");
+ error = -ENOMEM;
+ goto err3;
+ }
+
+ input = priv->input;
+ input->evbit[0] = BIT_MASK(EV_KEY);
+
+ input->name = pdev->name;
+ input->phys = "sh-keysc-keys/input0";
+ input->dev.parent = &pdev->dev;
+
+ input->id.bustype = BUS_HOST;
+ input->id.vendor = 0x0001;
+ input->id.product = 0x0001;
+ input->id.version = 0x0100;
+
+ error = request_irq(irq, sh_keysc_isr, 0, pdev->name, pdev);
+ if (error) {
+ dev_err(&pdev->dev, "failed to request IRQ\n");
+ goto err4;
+ }
+
+ for (i = 0; i < SH_KEYSC_MAXKEYS; i++) {
+ k = pdata->keycodes[i];
+ if (k)
+ input_set_capability(input, EV_KEY, k);
+ }
+
+ error = input_register_device(input);
+ if (error) {
+ dev_err(&pdev->dev, "failed to register input device\n");
+ goto err5;
+ }
+
+ iowrite16((sh_keysc_mode[pdata->mode].kymd << 8) |
+ pdata->scan_timing, priv->iomem_base + KYCR1_OFFS);
+ iowrite16(0, priv->iomem_base + KYOUTDR_OFFS);
+ iowrite16(KYCR2_IRQ_LEVEL, priv->iomem_base + KYCR2_OFFS);
+ return 0;
+ err5:
+ free_irq(irq, pdev);
+ err4:
+ input_free_device(input);
+ err3:
+ iounmap(priv->iomem_base);
+ err2:
+ release_mem_region(res->start, res_size(res));
+ err1:
+ platform_set_drvdata(pdev, NULL);
+ kfree(priv);
+ err0:
+ return error;
+}
+
+static int __devexit sh_keysc_remove(struct platform_device *pdev)
+{
+ struct sh_keysc_priv *priv = platform_get_drvdata(pdev);
+ struct resource *res;
+
+ iowrite16(KYCR2_IRQ_DISABLED, priv->iomem_base + KYCR2_OFFS);
+
+ input_unregister_device(priv->input);
+ free_irq(platform_get_irq(pdev, 0), pdev);
+ input_free_device(priv->input);
+ iounmap(priv->iomem_base);
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ release_mem_region(res->start, res_size(res));
+
+ platform_set_drvdata(pdev, NULL);
+ kfree(priv);
+ return 0;
+}
+
+
+#define sh_keysc_suspend NULL
+#define sh_keysc_resume NULL
+
+struct platform_driver sh_keysc_device_driver = {
+ .probe = sh_keysc_probe,
+ .remove = __devexit_p(sh_keysc_remove),
+ .suspend = sh_keysc_suspend,
+ .resume = sh_keysc_resume,
+ .driver = {
+ .name = "sh_keysc",
+ }
+};
+
+static int __init sh_keysc_init(void)
+{
+ return platform_driver_register(&sh_keysc_device_driver);
+}
+
+static void __exit sh_keysc_exit(void)
+{
+ platform_driver_unregister(&sh_keysc_device_driver);
+}
+
+module_init(sh_keysc_init);
+module_exit(sh_keysc_exit);
+
+MODULE_AUTHOR("Magnus Damm");
+MODULE_DESCRIPTION("SuperH KEYSC Keypad Driver");
+MODULE_LICENSE("GPL");
--- /dev/null
+++ work/include/asm-sh/sh_keysc.h 2008-02-27 23:24:54.000000000 +0900
@@ -0,0 +1,13 @@
+#ifndef __ASM_KEYSC_H__
+#define __ASM_KEYSC_H__
+
+#define SH_KEYSC_MAXKEYS 30
+
+struct sh_keysc_info {
+ enum { SH_KEYSC_MODE_1, SH_KEYSC_MODE_2, SH_KEYSC_MODE_3 } mode;
+ int scan_timing; /* 0 -> 7, see KYCR1, SCN[2:0] */
+ int delay;
+ int keycodes[SH_KEYSC_MAXKEYS];
+};
+
+#endif /* __ASM_KEYSC_H__ */
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 01/03] sh: SuperH KEYSC platform driver
2008-02-29 10:48 ` [PATCH 01/03] sh: SuperH KEYSC platform driver Magnus Damm
@ 2008-02-29 21:57 ` Andrew Morton
0 siblings, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2008-02-29 21:57 UTC (permalink / raw)
Cc: linux-input, magnus.damm, lethal, linux-sh
On Fri, 29 Feb 2008 19:48:56 +0900
Magnus Damm <magnus.damm@gmail.com> wrote:
> This patch adds a platform driver for the SuperH KEYSC block. The driver
> expects to get mode, timing information and keypad layout from the board
> code as platform data. The board code is resonsible for pin configuration.
>
> Both sh7343 and sh7722 should be supported, but only the sh7722 processor
> has been tested so far. SH_KEYSC_MODE_3 is yet to be tested.
>
> ...
>
> +#define res_size(res) ((res)->end - (res)->start + 1)
- buggy macro references its argument more than once
- could be implemented in C
- perhaps should be implemented in <linux/ioport.h>
> + input->phys = "sh-keysc-keys/input0";
Is the "/" in here safe? I trust we don't try to create a
sysfs/procfs/whatever file based off this string.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 02/03] sh: SuperH KEYSC keypad data for MigoR
2008-02-29 10:48 [PATCH 00/03] sh: SuperH KEYSC keypad support Magnus Damm
2008-02-29 10:48 ` [PATCH 01/03] sh: SuperH KEYSC platform driver Magnus Damm
@ 2008-02-29 10:49 ` Magnus Damm
2008-02-29 10:49 ` [PATCH 03/03] sh: SuperH KEYSC keypad data for Solution Engine 7722 Magnus Damm
2008-02-29 22:01 ` [PATCH 00/03] sh: SuperH KEYSC keypad support Andrew Morton
3 siblings, 0 replies; 6+ messages in thread
From: Magnus Damm @ 2008-02-29 10:49 UTC (permalink / raw)
To: linux-input; +Cc: Magnus Damm, lethal, akpm, linux-sh
This patch adds KEYSC platform data for the sh7722 MigoR board.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
---
arch/sh/boards/renesas/migor/setup.c | 56 +++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
--- 0001/arch/sh/boards/renesas/migor/setup.c
+++ work/arch/sh/boards/renesas/migor/setup.c 2008-02-28 18:02:14.000000000 +0900
@@ -10,8 +10,10 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
+#include <linux/input.h>
#include <asm/machvec.h>
#include <asm/io.h>
+#include <asm/sh_keysc.h>
/* Address IRQ Size Bus Description
* 0x00000000 64MB 16 NOR Flash (SP29PL256N)
@@ -40,8 +42,43 @@ static struct platform_device smc91x_eth
.resource = smc91x_eth_resources,
};
+static struct sh_keysc_info sh_keysc_info = {
+ .mode = SH_KEYSC_MODE_2, /* KEYOUT0->4, KEYIN1->5 */
+ .scan_timing = 3,
+ .delay = 5,
+ .keycodes = {
+ 0, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_ENTER,
+ 0, KEY_F, KEY_C, KEY_D, KEY_H, KEY_1,
+ 0, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6,
+ 0, KEY_7, KEY_8, KEY_9, KEY_S, KEY_0,
+ 0, KEY_P, KEY_STOP, KEY_REWIND, KEY_PLAY, KEY_FASTFORWARD,
+ },
+};
+
+static struct resource sh_keysc_resources[] = {
+ [0] = {
+ .start = 0x044b0000,
+ .end = 0x044b000f,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = 79,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device sh_keysc_device = {
+ .name = "sh_keysc",
+ .num_resources = ARRAY_SIZE(sh_keysc_resources),
+ .resource = sh_keysc_resources,
+ .dev = {
+ .platform_data = &sh_keysc_info,
+ },
+};
+
static struct platform_device *migor_devices[] __initdata = {
&smc91x_eth_device,
+ &sh_keysc_device,
};
static int __init migor_devices_setup(void)
@@ -50,9 +87,26 @@ static int __init migor_devices_setup(vo
}
__initcall(migor_devices_setup);
+#define PORT_PJCR 0xA4050110UL
+#define PORT_PSELA 0xA405014EUL
+#define PORT_PYCR 0xA405014AUL
+#define PORT_PZCR 0xA405014CUL
+#define PORT_HIZCRA 0xA4050158UL
+#define PORT_HIZCRC 0xA405015CUL
+#define MSTPCR2 0xA4150038UL
+
static void __init migor_setup(char **cmdline_p)
{
- ctrl_outw(0x1000, 0xa4050110); /* Enable IRQ0 in PJCR */
+ /* SMC91C111 - Enable IRQ0 */
+ ctrl_outw(ctrl_inw(PORT_PJCR) & ~0x0003, PORT_PJCR);
+
+ /* KEYSC */
+ ctrl_outw(ctrl_inw(PORT_PYCR) & ~0x0fff, PORT_PYCR);
+ ctrl_outw(ctrl_inw(PORT_PZCR) & ~0x0ff0, PORT_PZCR);
+ ctrl_outw(ctrl_inw(PORT_PSELA) & ~0x4100, PORT_PSELA);
+ ctrl_outw(ctrl_inw(PORT_HIZCRA) & ~0x4000, PORT_HIZCRA);
+ ctrl_outw(ctrl_inw(PORT_HIZCRC) & ~0xc000, PORT_HIZCRC);
+ ctrl_outl(ctrl_inl(MSTPCR2) & ~0x00004000, MSTPCR2);
}
static struct sh_machine_vector mv_migor __initmv = {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 03/03] sh: SuperH KEYSC keypad data for Solution Engine 7722
2008-02-29 10:48 [PATCH 00/03] sh: SuperH KEYSC keypad support Magnus Damm
2008-02-29 10:48 ` [PATCH 01/03] sh: SuperH KEYSC platform driver Magnus Damm
2008-02-29 10:49 ` [PATCH 02/03] sh: SuperH KEYSC keypad data for MigoR Magnus Damm
@ 2008-02-29 10:49 ` Magnus Damm
2008-02-29 22:01 ` [PATCH 00/03] sh: SuperH KEYSC keypad support Andrew Morton
3 siblings, 0 replies; 6+ messages in thread
From: Magnus Damm @ 2008-02-29 10:49 UTC (permalink / raw)
To: linux-input; +Cc: Magnus Damm, lethal, akpm, linux-sh
This patch adds KEYSC platform data for the Solution Engine 7722 board.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
---
arch/sh/boards/se/7722/setup.c | 41 ++++++++++++++++++++++++++++++++++++++++
include/asm-sh/se7722.h | 2 +
2 files changed, 43 insertions(+)
--- 0001/arch/sh/boards/se/7722/setup.c
+++ work/arch/sh/boards/se/7722/setup.c 2008-02-28 18:05:09.000000000 +0900
@@ -13,10 +13,12 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/ata_platform.h>
+#include <linux/input.h>
#include <asm/machvec.h>
#include <asm/se7722.h>
#include <asm/io.h>
#include <asm/heartbeat.h>
+#include <asm/sh_keysc.h>
/* Heartbeat */
static struct heartbeat_data heartbeat_data = {
@@ -92,10 +94,47 @@ static struct platform_device cf_ide_dev
.resource = cf_ide_resources,
};
+static struct sh_keysc_info sh_keysc_info = {
+ .mode = SH_KEYSC_MODE_1, /* KEYOUT0->5, KEYIN0->4 */
+ .scan_timing = 3,
+ .delay = 5,
+ .keycodes = { /* SW1 -> SW30 */
+ KEY_A, KEY_B, KEY_C, KEY_D, KEY_E,
+ KEY_F, KEY_G, KEY_H, KEY_I, KEY_J,
+ KEY_K, KEY_L, KEY_M, KEY_N, KEY_O,
+ KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T,
+ KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y,
+ KEY_Z,
+ KEY_HOME, KEY_SLEEP, KEY_WAKEUP, KEY_COFFEE, /* life */
+ },
+};
+
+static struct resource sh_keysc_resources[] = {
+ [0] = {
+ .start = 0x044b0000,
+ .end = 0x044b000f,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = 79,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device sh_keysc_device = {
+ .name = "sh_keysc",
+ .num_resources = ARRAY_SIZE(sh_keysc_resources),
+ .resource = sh_keysc_resources,
+ .dev = {
+ .platform_data = &sh_keysc_info,
+ },
+};
+
static struct platform_device *se7722_devices[] __initdata = {
&heartbeat_device,
&smc91x_eth_device,
&cf_ide_device,
+ &sh_keysc_device,
};
static int __init se7722_devices_setup(void)
@@ -136,6 +175,8 @@ static void __init se7722_setup(char **c
ctrl_outw(0x0A10, PORT_PSELA); /* BS,SHHID2 */
ctrl_outw(0x0000, PORT_PYCR);
ctrl_outw(0x0000, PORT_PZCR);
+ ctrl_outw(ctrl_inw(PORT_HIZCRA) & ~0x4000, PORT_HIZCRA);
+ ctrl_outw(ctrl_inw(PORT_HIZCRC) & ~0xc000, PORT_HIZCRC);
}
/*
--- 0001/include/asm-sh/se7722.h
+++ work/include/asm-sh/se7722.h 2008-02-28 18:05:09.000000000 +0900
@@ -77,6 +77,8 @@
#define PORT_PSELA 0xA405014EUL
#define PORT_PYCR 0xA405014AUL
#define PORT_PZCR 0xA405014CUL
+#define PORT_HIZCRA 0xA4050158UL
+#define PORT_HIZCRC 0xA405015CUL
/* IRQ */
#define IRQ0_IRQ 32
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 00/03] sh: SuperH KEYSC keypad support
2008-02-29 10:48 [PATCH 00/03] sh: SuperH KEYSC keypad support Magnus Damm
` (2 preceding siblings ...)
2008-02-29 10:49 ` [PATCH 03/03] sh: SuperH KEYSC keypad data for Solution Engine 7722 Magnus Damm
@ 2008-02-29 22:01 ` Andrew Morton
3 siblings, 0 replies; 6+ messages in thread
From: Andrew Morton @ 2008-02-29 22:01 UTC (permalink / raw)
Cc: linux-input, magnus.damm, lethal, linux-sh
On Fri, 29 Feb 2008 19:48:47 +0900
Magnus Damm <magnus.damm@gmail.com> wrote:
> These patches add support for keypads attached to the SuperH KEYSC block.
>
> [PATCH 01/03] sh: SuperH KEYSC platform driver
> [PATCH 02/03] sh: SuperH KEYSC support for MigoR
> [PATCH 03/03] sh: SuperH KEYSC support for Solution Engine 7722
>
> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> ---
>
> Please note that the board patches need the header file provided by
> the first patch to compile. So maybe this is suitable for -mm?
The diffstat looks pretty tame to me - this could be merged via either
git-input or git-sh. Probably the latter.
> If it is better to merge the driver in some subsystem tree then I'll
> just resend the board code to the linux-sh list during late -rc1 merge.
That would be a bad time to send it. We should get patches into the
subsystem trees (and linux-next and -mm!) prior to the 2.6.x release. A
subsystem maintainer who receives feature work during the 2.6.x merge
window could/shouidl/would schedule it for 2.6.x+1.
> arch/sh/boards/renesas/migor/setup.c | 56 ++++++
> arch/sh/boards/se/7722/setup.c | 41 ++++
> drivers/input/keyboard/Kconfig | 9 +
> drivers/input/keyboard/Makefile | 1
> drivers/input/keyboard/sh_keysc.c | 281 ++++++++++++++++++++++++++++++++++
> include/asm-sh/se7722.h | 2
> include/asm-sh/sh_keysc.h | 13 +
> 7 files changed, 402 insertions(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 6+ messages in thread