* [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410
@ 2010-05-07 6:31 Kukjin Kim
2010-05-07 9:55 ` Maurus Cuelenaere
2010-05-11 8:26 ` Ben Dooks
0 siblings, 2 replies; 4+ messages in thread
From: Kukjin Kim @ 2010-05-07 6:31 UTC (permalink / raw)
To: linux-samsung-soc; +Cc: ben-linux, Naveen Krishna, Kukjin Kim
From: Naveen Krishna <ch.naveen@samsung.com>
Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
---
arch/arm/mach-s3c64xx/Kconfig | 1 +
arch/arm/mach-s3c64xx/mach-smdk6410.c | 12 +++++++
arch/arm/mach-s3c64xx/s3c6410.c | 1 +
arch/arm/plat-samsung/Kconfig | 5 +++
arch/arm/plat-samsung/Makefile | 1 +
arch/arm/plat-samsung/dev-ts.c | 54 ++++++++++++++++++++++++++++++++
drivers/input/touchscreen/Kconfig | 3 +-
drivers/input/touchscreen/s3c2410_ts.c | 19 +++++++++--
8 files changed, 92 insertions(+), 4 deletions(-)
create mode 100644 arch/arm/plat-samsung/dev-ts.c
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index 69e9fbf..1f2f412 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -90,6 +90,7 @@ config MACH_SMDK6410
select S3C_DEV_HSMMC1
select S3C_DEV_I2C1
select S3C_DEV_FB
+ select SAMSUNG_DEV_TS
select S3C_DEV_USB_HOST
select S3C_DEV_USB_HSOTG
select S3C64XX_SETUP_SDHCI
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 2d5afd2..fb186c9 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -64,6 +64,8 @@
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
+#include <plat/adc.h>
+#include <plat/ts.h>
#define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
@@ -262,6 +264,8 @@ static struct platform_device *smdk6410_devices[] __initdata = {
&smdk6410_lcd_powerdev,
&smdk6410_smsc911x,
+ &s3c_device_adc,
+ &s3c_device_ts,
};
#ifdef CONFIG_REGULATOR
@@ -596,6 +600,12 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
{ I2C_BOARD_INFO("24c128", 0x57), }, /* Samsung S524AD0XD1 */
};
+static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
+ .delay = 10000,
+ .presc = 49,
+ .oversampling_shift = 2,
+};
+
static void __init smdk6410_map_io(void)
{
u32 tmp;
@@ -625,6 +635,8 @@ static void __init smdk6410_machine_init(void)
s3c_i2c1_set_platdata(NULL);
s3c_fb_set_platdata(&smdk6410_lcd_pdata);
+ s3c24xx_ts_set_platdata(&s3c_ts_platform);
+
/* configure nCS1 width to 16 bits */
cs1 = __raw_readl(S3C64XX_SROM_BW) &
diff --git a/arch/arm/mach-s3c64xx/s3c6410.c b/arch/arm/mach-s3c64xx/s3c6410.c
index 31e53fa..4390ecb 100644
--- a/arch/arm/mach-s3c64xx/s3c6410.c
+++ b/arch/arm/mach-s3c64xx/s3c6410.c
@@ -55,6 +55,7 @@ void __init s3c6410_map_io(void)
s3c_device_adc.name = "s3c64xx-adc";
s3c_device_nand.name = "s3c6400-nand";
+ s3c_device_ts.name = "s3c64xx-ts";
}
void __init s3c6410_init_clocks(int xtal)
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 641649f..b466da8 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -196,6 +196,11 @@ config S3C64XX_DEV_SPI
Compile in platform device definitions for S3C64XX's type
SPI controllers.
+config SAMSUNG_DEV_TS
+ bool
+ help
+ Compile in platform device definition for Samsung Touch Screen.
+
# DMA
config S3C_DMA
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 3cf30a4..695ed99 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -41,6 +41,7 @@ obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o
obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o
obj-$(CONFIG_S3C_DEV_NAND) += dev-nand.o
obj-$(CONFIG_SAMSUNG_DEV_ADC) += dev-adc.o
+obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
# DMA support
diff --git a/arch/arm/plat-samsung/dev-ts.c b/arch/arm/plat-samsung/dev-ts.c
new file mode 100644
index 0000000..f4a2bbd
--- /dev/null
+++ b/arch/arm/plat-samsung/dev-ts.c
@@ -0,0 +1,54 @@
+/* linux/arch/arm/plat-samsung/dev-ts.c
+ *
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd.
+ * http://www.samsung.com/
+ *
+ * TouchScreen Device definition for Samsung S3C, S5P serie SoCs.
+ *
+ * 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/platform_device.h>
+
+#include <mach/map.h>
+#include <mach/irqs.h>
+#include <plat/devs.h>
+#include <plat/cpu.h>
+#include <plat/ts.h>
+
+static struct resource s3c_ts_resource[] = {
+[0] = {
+ .start = SAMSUNG_PA_ADC,
+ .end = SAMSUNG_PA_ADC + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_PENDN,
+ .end = IRQ_PENDN,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+struct platform_device s3c_device_ts = {
+ .name = "samsung-ts",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(s3c_ts_resource),
+ .resource = s3c_ts_resource,
+};
+EXPORT_SYMBOL(s3c_device_ts);
+
+void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
+{
+ struct s3c2410_ts_mach_info *npd;
+
+ npd = kmalloc(sizeof(*npd), GFP_KERNEL);
+ if (npd) {
+ memcpy(npd, pd, sizeof(*npd));
+ s3c_device_ts.dev.platform_data = npd;
+ } else {
+ printk(KERN_ERR "no memory for Touchscreen platform data\n");
+ }
+}
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index a5dcdac..dc20279 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -159,7 +159,8 @@ config TOUCHSCREEN_FUJITSU
config TOUCHSCREEN_S3C2410
tristate "Samsung S3C2410 touchscreen input driver"
- depends on ARCH_S3C2410
+ depends on ARCH_S3C2410 || ARCH_S3C64XX
+ select S3C_ADC
help
Say Y here if you have the s3c2410 touchscreen.
diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
index 1a70f9c..3964964 100644
--- a/drivers/input/touchscreen/s3c2410_ts.c
+++ b/drivers/input/touchscreen/s3c2410_ts.c
@@ -87,6 +87,12 @@ struct s3c2410ts {
static struct s3c2410ts ts;
+enum s3c_cpu_type {
+ TYPE_S3C2410,
+ TYPE_S3C2440,
+ TYPE_S3C64XX, /* S3C64XX, S5P64XX Series */
+};
+
/**
* get_down - return the down state of the pen
* @data0: The data read from ADCDAT0 register.
@@ -155,6 +161,7 @@ static DEFINE_TIMER(touch_timer, touch_timer_fire, 0, 0);
*/
static irqreturn_t stylus_irq(int irq, void *dev_id)
{
+ struct platform_device *pdev = to_platform_device(ts.dev);
unsigned long data0;
unsigned long data1;
bool down;
@@ -173,6 +180,11 @@ static irqreturn_t stylus_irq(int irq, void *dev_id)
else
dev_info(ts.dev, "%s: count=%d\n", __func__, ts.count);
+ if (platform_get_device_id(pdev)->driver_data == TYPE_S3C64XX) {
+ /* Clear pen down/up interrupt */
+ writel(0x0, ts.io + S3C64XX_ADCCLRINTPNDNUP);
+ }
+
return IRQ_HANDLED;
}
@@ -405,15 +417,16 @@ static struct dev_pm_ops s3c_ts_pmops = {
#endif
static struct platform_device_id s3cts_driver_ids[] = {
- { "s3c2410-ts", 0 },
- { "s3c2440-ts", 1 },
+ { "s3c2410-ts", TYPE_S3C2410 },
+ { "s3c2440-ts", TYPE_S3C2440 },
+ { "s3c64xx-ts", TYPE_S3C64XX },
{ }
};
MODULE_DEVICE_TABLE(platform, s3cts_driver_ids);
static struct platform_driver s3c_ts_driver = {
.driver = {
- .name = "s3c24xx-ts",
+ .name = "samsung-ts",
.owner = THIS_MODULE,
#ifdef CONFIG_PM
.pm = &s3c_ts_pmops,
--
1.6.6.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410
2010-05-07 6:31 [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410 Kukjin Kim
@ 2010-05-07 9:55 ` Maurus Cuelenaere
2010-05-11 8:26 ` Ben Dooks
1 sibling, 0 replies; 4+ messages in thread
From: Maurus Cuelenaere @ 2010-05-07 9:55 UTC (permalink / raw)
To: Kukjin Kim, linux-samsung-soc; +Cc: ben-linux, Naveen Krishna
Hi Naveen,
"Kukjin Kim" <kgene.kim@samsung.com> wrote:
>From: Naveen Krishna <ch.naveen@samsung.com>
>
>Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
>Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
>---
> arch/arm/mach-s3c64xx/Kconfig | 1 +
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 12 +++++++
> arch/arm/mach-s3c64xx/s3c6410.c | 1 +
> arch/arm/plat-samsung/Kconfig | 5 +++
> arch/arm/plat-samsung/Makefile | 1 +
> arch/arm/plat-samsung/dev-ts.c | 54 ++++++++++++++++++++++++++++++++
> drivers/input/touchscreen/Kconfig | 3 +-
> drivers/input/touchscreen/s3c2410_ts.c | 19 +++++++++--
> 8 files changed, 92 insertions(+), 4 deletions(-)
> create mode 100644 arch/arm/plat-samsung/dev-ts.c
>
I'm sure you've seen my patch which does pretty much the same wrt adjusting s3c2410_ts.c.
Though that one has already been acked by Ben so I'm unsure what should happen: you adjusting your patchset or me dropping mine (obviously I prefer the former :) ).
P.S.: I'd recommend splitting this patch and sending the drivers/input part to the linux-input mailing list.
--
Maurus Cuelenaere
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410
2010-05-10 0:28 ` Ben Dooks
@ 2010-05-10 15:17 ` Maurus Cuelenaere
0 siblings, 0 replies; 4+ messages in thread
From: Maurus Cuelenaere @ 2010-05-10 15:17 UTC (permalink / raw)
To: Ben Dooks
Cc: NAVEEN KRISHNA CHATRADHI, Kukjin Kim,
linux-samsung-soc@vger.kernel.org
Op 10-05-10 02:28, Ben Dooks schreef:
> On Fri, May 07, 2010 at 11:29:31AM +0000, NAVEEN KRISHNA CHATRADHI wrote:
>
>> Hi, Maurus
>>
>> ------- Original Message -------
>> Sender : Maurus Cuelenaere<mcuelenaere@gmail.com>
>> Date : May 07, 2010 14:55 (GMT+05:00)
>> Title : Re: [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for
>> S3C6410
>>
>> Hi Naveen,
>>
>> "Kukjin Kim" <kgene.kim@samsung.com> wrote:
>>
>>
>>> From: Naveen Krishna <ch.naveen@samsung.com>
>>>
>>> Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
>>> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
>>> ---
>>> arch/arm/mach-s3c64xx/Kconfig | 1 +
>>> arch/arm/mach-s3c64xx/mach-smdk6410.c | 12 +++++++
>>> arch/arm/mach-s3c64xx/s3c6410.c | 1 +
>>> arch/arm/plat-samsung/Kconfig | 5 +++
>>> arch/arm/plat-samsung/Makefile | 1 +
>>> arch/arm/plat-samsung/dev-ts.c | 54 ++++++++++++++++++++++++++++++++
>>> drivers/input/touchscreen/Kconfig | 3 +-
>>> drivers/input/touchscreen/s3c2410_ts.c | 19 +++++++++--
>>> 8 files changed, 92 insertions(+), 4 deletions(-)
>>> create mode 100644 arch/arm/plat-samsung/dev-ts.c
>>>
>>>
>> I'm sure you've seen my patch which does pretty much the same wrt adjusting s3c2410_ts.c.
>> Though that one has already been acked by Ben so I'm unsure what should happen: you adjusting your patchset or me dropping mine (obviously I prefer the former :) ).
>> My patch was under review for over a week, its a coincidence that i saw your patch and my patch was posted on mainline.
>> I'ill rework my patches anyway, I'ill wait for a day on Ben Dook's Comments on my patch set.
>>
> Naveen's patches do have two advantages, firstly that they add a gpio
> callback to the platform data so that if it is needed in the future it
> can be used again. The second is that it covers more than just the 24xx
> and 64xx series.
>
> I tried applying this with Maurus' updates but they don't apply well together
> and I'm not going to spend a lot of time trying to get the two sets applied.
>
> Maurus, hope you're not too offended if we go for Naveen's series, unless
> you have any technical commenbts that need to be sorted.
>
No, sure, go ahead.
--
Maurus Cuelenaere
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410
2010-05-07 6:31 [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410 Kukjin Kim
2010-05-07 9:55 ` Maurus Cuelenaere
@ 2010-05-11 8:26 ` Ben Dooks
1 sibling, 0 replies; 4+ messages in thread
From: Ben Dooks @ 2010-05-11 8:26 UTC (permalink / raw)
To: Kukjin Kim; +Cc: linux-samsung-soc, ben-linux, Naveen Krishna
On Fri, May 07, 2010 at 03:31:25PM +0900, Kukjin Kim wrote:
> From: Naveen Krishna <ch.naveen@samsung.com>
>
> Signed-off-by: Naveen Krishna Ch <ch.naveen@samsung.com>
> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
> ---
> arch/arm/mach-s3c64xx/Kconfig | 1 +
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 12 +++++++
> arch/arm/mach-s3c64xx/s3c6410.c | 1 +
> arch/arm/plat-samsung/Kconfig | 5 +++
> arch/arm/plat-samsung/Makefile | 1 +
> arch/arm/plat-samsung/dev-ts.c | 54 ++++++++++++++++++++++++++++++++
> drivers/input/touchscreen/Kconfig | 3 +-
> drivers/input/touchscreen/s3c2410_ts.c | 19 +++++++++--
> 8 files changed, 92 insertions(+), 4 deletions(-)
> create mode 100644 arch/arm/plat-samsung/dev-ts.c
>
> diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> index 69e9fbf..1f2f412 100644
> --- a/arch/arm/mach-s3c64xx/Kconfig
> +++ b/arch/arm/mach-s3c64xx/Kconfig
> @@ -90,6 +90,7 @@ config MACH_SMDK6410
> select S3C_DEV_HSMMC1
> select S3C_DEV_I2C1
> select S3C_DEV_FB
> + select SAMSUNG_DEV_TS
> select S3C_DEV_USB_HOST
> select S3C_DEV_USB_HSOTG
> select S3C64XX_SETUP_SDHCI
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> index 2d5afd2..fb186c9 100644
> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> @@ -64,6 +64,8 @@
> #include <plat/clock.h>
> #include <plat/devs.h>
> #include <plat/cpu.h>
> +#include <plat/adc.h>
> +#include <plat/ts.h>
>
> #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK
> #define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
> @@ -262,6 +264,8 @@ static struct platform_device *smdk6410_devices[] __initdata = {
> &smdk6410_lcd_powerdev,
>
> &smdk6410_smsc911x,
> + &s3c_device_adc,
> + &s3c_device_ts,
> };
>
> #ifdef CONFIG_REGULATOR
> @@ -596,6 +600,12 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
> { I2C_BOARD_INFO("24c128", 0x57), }, /* Samsung S524AD0XD1 */
> };
>
> +static struct s3c2410_ts_mach_info s3c_ts_platform __initdata = {
> + .delay = 10000,
> + .presc = 49,
> + .oversampling_shift = 2,
> +};
> +
> static void __init smdk6410_map_io(void)
> {
> u32 tmp;
> @@ -625,6 +635,8 @@ static void __init smdk6410_machine_init(void)
> s3c_i2c1_set_platdata(NULL);
> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
>
> + s3c24xx_ts_set_platdata(&s3c_ts_platform);
> +
> /* configure nCS1 width to 16 bits */
>
> cs1 = __raw_readl(S3C64XX_SROM_BW) &
> diff --git a/arch/arm/mach-s3c64xx/s3c6410.c b/arch/arm/mach-s3c64xx/s3c6410.c
> index 31e53fa..4390ecb 100644
> --- a/arch/arm/mach-s3c64xx/s3c6410.c
> +++ b/arch/arm/mach-s3c64xx/s3c6410.c
> @@ -55,6 +55,7 @@ void __init s3c6410_map_io(void)
>
> s3c_device_adc.name = "s3c64xx-adc";
> s3c_device_nand.name = "s3c6400-nand";
> + s3c_device_ts.name = "s3c64xx-ts";
> }
>
> void __init s3c6410_init_clocks(int xtal)
> diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
> index 641649f..b466da8 100644
> --- a/arch/arm/plat-samsung/Kconfig
> +++ b/arch/arm/plat-samsung/Kconfig
> @@ -196,6 +196,11 @@ config S3C64XX_DEV_SPI
> Compile in platform device definitions for S3C64XX's type
> SPI controllers.
>
> +config SAMSUNG_DEV_TS
> + bool
> + help
> + Compile in platform device definition for Samsung Touch Screen.
> +
> # DMA
>
> config S3C_DMA
> diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
> index 3cf30a4..695ed99 100644
> --- a/arch/arm/plat-samsung/Makefile
> +++ b/arch/arm/plat-samsung/Makefile
> @@ -41,6 +41,7 @@ obj-$(CONFIG_S3C_DEV_USB_HOST) += dev-usb.o
> obj-$(CONFIG_S3C_DEV_USB_HSOTG) += dev-usb-hsotg.o
> obj-$(CONFIG_S3C_DEV_NAND) += dev-nand.o
> obj-$(CONFIG_SAMSUNG_DEV_ADC) += dev-adc.o
> +obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
>
> # DMA support
>
> diff --git a/arch/arm/plat-samsung/dev-ts.c b/arch/arm/plat-samsung/dev-ts.c
> new file mode 100644
> index 0000000..f4a2bbd
> --- /dev/null
> +++ b/arch/arm/plat-samsung/dev-ts.c
> @@ -0,0 +1,54 @@
> +/* linux/arch/arm/plat-samsung/dev-ts.c
> + *
> + * Copyright (c) 2010 Samsung Electronics Co., Ltd.
> + * http://www.samsung.com/
> + *
> + * TouchScreen Device definition for Samsung S3C, S5P serie SoCs.
> + *
> + * 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/platform_device.h>
> +
> +#include <mach/map.h>
> +#include <mach/irqs.h>
> +#include <plat/devs.h>
> +#include <plat/cpu.h>
> +#include <plat/ts.h>
> +
> +static struct resource s3c_ts_resource[] = {
> +[0] = {
> + .start = SAMSUNG_PA_ADC,
> + .end = SAMSUNG_PA_ADC + SZ_4K - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = IRQ_PENDN,
> + .end = IRQ_PENDN,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> +struct platform_device s3c_device_ts = {
> + .name = "samsung-ts",
> + .id = -1,
> + .num_resources = ARRAY_SIZE(s3c_ts_resource),
> + .resource = s3c_ts_resource,
> +};
> +EXPORT_SYMBOL(s3c_device_ts);
> +
> +void __init s3c24xx_ts_set_platdata(struct s3c2410_ts_mach_info *pd)
> +{
> + struct s3c2410_ts_mach_info *npd;
> +
> + npd = kmalloc(sizeof(*npd), GFP_KERNEL);
> + if (npd) {
> + memcpy(npd, pd, sizeof(*npd));
> + s3c_device_ts.dev.platform_data = npd;
> + } else {
> + printk(KERN_ERR "no memory for Touchscreen platform data\n");
> + }
> +}
could you split the driver changes from the core changes please.
> diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
> index a5dcdac..dc20279 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -159,7 +159,8 @@ config TOUCHSCREEN_FUJITSU
>
> config TOUCHSCREEN_S3C2410
> tristate "Samsung S3C2410 touchscreen input driver"
> - depends on ARCH_S3C2410
> + depends on ARCH_S3C2410 || ARCH_S3C64XX
> + select S3C_ADC
> help
> Say Y here if you have the s3c2410 touchscreen.
>
> diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
> index 1a70f9c..3964964 100644
> --- a/drivers/input/touchscreen/s3c2410_ts.c
> +++ b/drivers/input/touchscreen/s3c2410_ts.c
> @@ -87,6 +87,12 @@ struct s3c2410ts {
>
> static struct s3c2410ts ts;
>
> +enum s3c_cpu_type {
> + TYPE_S3C2410,
> + TYPE_S3C2440,
> + TYPE_S3C64XX, /* S3C64XX, S5P64XX Series */
> +};
actually, having looked at this, we don't really 2410 and 2440 as
a seperate type if we've gotten rid of the gpio configuration as
this was the only change that it was being used for.
I also think we could add a set of flags with the features of the
SoC instead of using the type name, so we could do:
#define FEAT_PEN_IRQ (1 << 0) /* HAS ADCCLRINTPNDNUP */
> /**
> * get_down - return the down state of the pen
> * @data0: The data read from ADCDAT0 register.
> @@ -155,6 +161,7 @@ static DEFINE_TIMER(touch_timer, touch_timer_fire, 0, 0);
> */
> static irqreturn_t stylus_irq(int irq, void *dev_id)
> {
> + struct platform_device *pdev = to_platform_device(ts.dev);
> unsigned long data0;
> unsigned long data1;
> bool down;
> @@ -173,6 +180,11 @@ static irqreturn_t stylus_irq(int irq, void *dev_id)
> else
> dev_info(ts.dev, "%s: count=%d\n", __func__, ts.count);
>
> + if (platform_get_device_id(pdev)->driver_data == TYPE_S3C64XX) {
> + /* Clear pen down/up interrupt */
> + writel(0x0, ts.io + S3C64XX_ADCCLRINTPNDNUP);
> + }
if (ts.feat & FEAT_PEN_IRQ) {
/* Clear pen down/up interrupt */
....
you'll also need to copy ts.feat from platform_get_device_id(pdev)->driver_data
at startup.
ts.feat is optional, however if you don't want to use it i'd
suggest a wrapper call to take ts and return the features as
thus:
ts_get_features(ts)
{
struct platform_device *pdev = to_platform_device(ts.dev);
return platform_get_device_id(pdev)->driver_data;
}
> +
> return IRQ_HANDLED;
> }
>
> @@ -405,15 +417,16 @@ static struct dev_pm_ops s3c_ts_pmops = {
> #endif
>
> static struct platform_device_id s3cts_driver_ids[] = {
> - { "s3c2410-ts", 0 },
> - { "s3c2440-ts", 1 },
> + { "s3c2410-ts", TYPE_S3C2410 },
> + { "s3c2440-ts", TYPE_S3C2440 },
> + { "s3c64xx-ts", TYPE_S3C64XX },
{ "s3c2410-ts", 0 },
{ "s3c2440-ts", 0 }
{ "s3c64xx-ts", FEAT_PEN_IRQ },
> { }
> };
> MODULE_DEVICE_TABLE(platform, s3cts_driver_ids);
>
> static struct platform_driver s3c_ts_driver = {
> .driver = {
> - .name = "s3c24xx-ts",
> + .name = "samsung-ts",
> .owner = THIS_MODULE,
> #ifdef CONFIG_PM
> .pm = &s3c_ts_pmops,
> --
> 1.6.6.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-05-11 8:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-07 6:31 [PATCH 4/6] ARM: S3C64XX: Adds Touch Screen Driver Support for S3C6410 Kukjin Kim
2010-05-07 9:55 ` Maurus Cuelenaere
2010-05-11 8:26 ` Ben Dooks
-- strict thread matches above, loose matches on Subject: below --
2010-05-07 11:29 NAVEEN KRISHNA CHATRADHI
2010-05-10 0:28 ` Ben Dooks
2010-05-10 15:17 ` Maurus Cuelenaere
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.