* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
@ 2010-01-22 22:47 Maurus Cuelenaere
2010-01-25 9:46 ` Arnaud Patard (Rtp)
0 siblings, 1 reply; 6+ messages in thread
From: Maurus Cuelenaere @ 2010-01-22 22:47 UTC (permalink / raw)
To: linux-arm-kernel
ARM: S3C64XX: Add s3c64xx support to touchscreen driver
This ack's the extra interrupt s3c64xx platforms have in the touchscreen driver.
Signed-off-by: Maurus Cuelenaere <mcuelenaere@gmail.com>
---
drivers/input/touchscreen/Kconfig | 6 +++---
drivers/input/touchscreen/s3c2410_ts.c | 28 ++++++++++++++++++++++++----
2 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/drivers/input/touchscreen/Kconfig
b/drivers/input/touchscreen/Kconfig
index dfafc76..0378b3d 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -146,11 +146,11 @@ config TOUCHSCREEN_FUJITSU
module will be called fujitsu-ts.
config TOUCHSCREEN_S3C2410
- tristate "Samsung S3C2410 touchscreen input driver"
- depends on ARCH_S3C2410
+ tristate "Samsung S3C touchscreen input driver"
+ depends on ARCH_S3C2410 || ARCH_S3C64XX
select S3C24XX_ADC
help
- Say Y here if you have the s3c2410 touchscreen.
+ Say Y here if you have the s3c touchscreen.
If unsure, say N.
diff --git a/drivers/input/touchscreen/s3c2410_ts.c
b/drivers/input/touchscreen/s3c2410_ts.c
index 3debbc2..7dfbc38 100644
--- a/drivers/input/touchscreen/s3c2410_ts.c
+++ b/drivers/input/touchscreen/s3c2410_ts.c
@@ -40,7 +40,9 @@
#include <plat/regs-adc.h>
#include <plat/ts.h>
+#ifdef PLAT_S3C24XX
#include <mach/regs-gpio.h>
+#endif
#define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
@@ -88,6 +90,12 @@ struct s3c2410ts {
static struct s3c2410ts ts;
+enum s3c_cpu_type {
+ TYPE_S3C2410,
+ TYPE_S3C2440,
+ TYPE_S3C64XX,
+};
+
/**
* s3c2410_ts_connect - configure gpio for s3c2410 systems
*
@@ -95,6 +103,7 @@ static struct s3c2410ts ts;
* connected to the device (later systems such as the S3C2440 integrate
* these into the device).
*/
+#ifdef PLAT_S3C24XX
static inline void s3c2410_ts_connect(void)
{
s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
@@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
}
+#endif
/**
* get_down - return the down state of the pen
@@ -169,6 +179,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;
@@ -187,6 +198,12 @@ 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;
}
@@ -295,9 +312,11 @@ static int __devinit s3c2410ts_probe(struct
platform_device *pdev)
goto err_clk;
}
+#ifdef PLAT_S3C24XX
/* Configure the touchscreen external FETs on the S3C2410 */
- if (!platform_get_device_id(pdev)->driver_data)
+ if (platform_get_device_id(pdev)->driver_data == TYPE_S3C2410)
s3c2410_ts_connect();
+#endif
ts.client = s3c_adc_register(pdev, s3c24xx_ts_select,
s3c24xx_ts_conversion, 1);
@@ -418,15 +437,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 = "s3c-ts",
.owner = THIS_MODULE,
#ifdef CONFIG_PM
.pm = &s3c_ts_pmops,
--
1.6.6.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
2010-01-25 9:46 ` Arnaud Patard (Rtp)
@ 2010-01-25 9:45 ` Maurus Cuelenaere
2010-01-25 10:22 ` Arnaud Patard (Rtp)
0 siblings, 1 reply; 6+ messages in thread
From: Maurus Cuelenaere @ 2010-01-25 9:45 UTC (permalink / raw)
To: linux-arm-kernel
Op 25-01-10 10:46, Arnaud Patard (Rtp) schreef:
> Maurus Cuelenaere<mcuelenaere@gmail.com> writes:
>
> Hi,
>
>
>> ARM: S3C64XX: Add s3c64xx support to touchscreen driver
>>
>> This ack's the extra interrupt s3c64xx platforms have in the touchscreen driver.
>>
>> Signed-off-by: Maurus Cuelenaere<mcuelenaere@gmail.com>
>> ---
>> drivers/input/touchscreen/Kconfig | 6 +++---
>> drivers/input/touchscreen/s3c2410_ts.c | 28 ++++++++++++++++++++++++----
>> 2 files changed, 27 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/input/touchscreen/Kconfig
>> b/drivers/input/touchscreen/Kconfig
>> index dfafc76..0378b3d 100644
>> --- a/drivers/input/touchscreen/Kconfig
>> +++ b/drivers/input/touchscreen/Kconfig
>> @@ -146,11 +146,11 @@ config TOUCHSCREEN_FUJITSU
>> module will be called fujitsu-ts.
>>
>> config TOUCHSCREEN_S3C2410
>> - tristate "Samsung S3C2410 touchscreen input driver"
>> - depends on ARCH_S3C2410
>> + tristate "Samsung S3C touchscreen input driver"
>> + depends on ARCH_S3C2410 || ARCH_S3C64XX
>> select S3C24XX_ADC
>> help
>> - Say Y here if you have the s3c2410 touchscreen.
>> + Say Y here if you have the s3c touchscreen.
>>
>> If unsure, say N.
>>
>> diff --git a/drivers/input/touchscreen/s3c2410_ts.c
>> b/drivers/input/touchscreen/s3c2410_ts.c
>> index 3debbc2..7dfbc38 100644
>> --- a/drivers/input/touchscreen/s3c2410_ts.c
>> +++ b/drivers/input/touchscreen/s3c2410_ts.c
>> @@ -40,7 +40,9 @@
>> #include<plat/regs-adc.h>
>> #include<plat/ts.h>
>>
>> +#ifdef PLAT_S3C24XX
>> #include<mach/regs-gpio.h>
>> +#endif
>>
>> #define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
>>
>> @@ -88,6 +90,12 @@ struct s3c2410ts {
>>
>> static struct s3c2410ts ts;
>>
>> +enum s3c_cpu_type {
>> + TYPE_S3C2410,
>> + TYPE_S3C2440,
>> + TYPE_S3C64XX,
>> +};
>> +
>> /**
>> * s3c2410_ts_connect - configure gpio for s3c2410 systems
>> *
>> @@ -95,6 +103,7 @@ static struct s3c2410ts ts;
>> * connected to the device (later systems such as the S3C2440 integrate
>> * these into the device).
>> */
>> +#ifdef PLAT_S3C24XX
>> static inline void s3c2410_ts_connect(void)
>> {
>> s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
>> @@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
>> s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
>> s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
>> }
>> +#endif
>>
> Please, remove all theses #ifdef. I don't see the point of them as it's
> only few lines of C code and they don't get executed when running on
> other platforms than 2410.
>
> Arnaud
>
The problem is that s3c2410_gpio_cfgpin() and S3C2410_* isn't defined on
S3C64XX builds so this gives implicit declaration errors.
Regards,
Maurus Cuelenaere
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
2010-01-22 22:47 [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver Maurus Cuelenaere
@ 2010-01-25 9:46 ` Arnaud Patard (Rtp)
2010-01-25 9:45 ` Maurus Cuelenaere
0 siblings, 1 reply; 6+ messages in thread
From: Arnaud Patard (Rtp) @ 2010-01-25 9:46 UTC (permalink / raw)
To: linux-arm-kernel
Maurus Cuelenaere <mcuelenaere@gmail.com> writes:
Hi,
> ARM: S3C64XX: Add s3c64xx support to touchscreen driver
>
> This ack's the extra interrupt s3c64xx platforms have in the touchscreen driver.
>
> Signed-off-by: Maurus Cuelenaere <mcuelenaere@gmail.com>
> ---
> drivers/input/touchscreen/Kconfig | 6 +++---
> drivers/input/touchscreen/s3c2410_ts.c | 28 ++++++++++++++++++++++++----
> 2 files changed, 27 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/input/touchscreen/Kconfig
> b/drivers/input/touchscreen/Kconfig
> index dfafc76..0378b3d 100644
> --- a/drivers/input/touchscreen/Kconfig
> +++ b/drivers/input/touchscreen/Kconfig
> @@ -146,11 +146,11 @@ config TOUCHSCREEN_FUJITSU
> module will be called fujitsu-ts.
>
> config TOUCHSCREEN_S3C2410
> - tristate "Samsung S3C2410 touchscreen input driver"
> - depends on ARCH_S3C2410
> + tristate "Samsung S3C touchscreen input driver"
> + depends on ARCH_S3C2410 || ARCH_S3C64XX
> select S3C24XX_ADC
> help
> - Say Y here if you have the s3c2410 touchscreen.
> + Say Y here if you have the s3c touchscreen.
>
> If unsure, say N.
>
> diff --git a/drivers/input/touchscreen/s3c2410_ts.c
> b/drivers/input/touchscreen/s3c2410_ts.c
> index 3debbc2..7dfbc38 100644
> --- a/drivers/input/touchscreen/s3c2410_ts.c
> +++ b/drivers/input/touchscreen/s3c2410_ts.c
> @@ -40,7 +40,9 @@
> #include <plat/regs-adc.h>
> #include <plat/ts.h>
>
> +#ifdef PLAT_S3C24XX
> #include <mach/regs-gpio.h>
> +#endif
>
> #define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
>
> @@ -88,6 +90,12 @@ struct s3c2410ts {
>
> static struct s3c2410ts ts;
>
> +enum s3c_cpu_type {
> + TYPE_S3C2410,
> + TYPE_S3C2440,
> + TYPE_S3C64XX,
> +};
> +
> /**
> * s3c2410_ts_connect - configure gpio for s3c2410 systems
> *
> @@ -95,6 +103,7 @@ static struct s3c2410ts ts;
> * connected to the device (later systems such as the S3C2440 integrate
> * these into the device).
> */
> +#ifdef PLAT_S3C24XX
> static inline void s3c2410_ts_connect(void)
> {
> s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
> @@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
> s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
> s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
> }
> +#endif
Please, remove all theses #ifdef. I don't see the point of them as it's
only few lines of C code and they don't get executed when running on
other platforms than 2410.
Arnaud
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
2010-01-25 9:45 ` Maurus Cuelenaere
@ 2010-01-25 10:22 ` Arnaud Patard (Rtp)
2010-01-25 10:32 ` Maurus Cuelenaere
2010-01-26 14:58 ` Ben Dooks
0 siblings, 2 replies; 6+ messages in thread
From: Arnaud Patard (Rtp) @ 2010-01-25 10:22 UTC (permalink / raw)
To: linux-arm-kernel
Maurus Cuelenaere <mcuelenaere@gmail.com> writes:
[...]
>>> @@ -40,7 +40,9 @@
>>> #include<plat/regs-adc.h>
>>> #include<plat/ts.h>
>>>
>>> +#ifdef PLAT_S3C24XX
>>> #include<mach/regs-gpio.h>
>>> +#endif
>>>
>>> #define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
>>>
>>> @@ -88,6 +90,12 @@ struct s3c2410ts {
>>>
>>> static struct s3c2410ts ts;
>>>
>>> +enum s3c_cpu_type {
>>> + TYPE_S3C2410,
>>> + TYPE_S3C2440,
>>> + TYPE_S3C64XX,
>>> +};
>>> +
>>> /**
>>> * s3c2410_ts_connect - configure gpio for s3c2410 systems
>>> *
>>> @@ -95,6 +103,7 @@ static struct s3c2410ts ts;
>>> * connected to the device (later systems such as the S3C2440 integrate
>>> * these into the device).
>>> */
>>> +#ifdef PLAT_S3C24XX
>>> static inline void s3c2410_ts_connect(void)
>>> {
>>> s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
>>> @@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
>>> s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
>>> s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
>>> }
>>> +#endif
>>>
>> Please, remove all theses #ifdef. I don't see the point of them as it's
>> only few lines of C code and they don't get executed when running on
>> other platforms than 2410.
>>
>> Arnaud
>>
>
> The problem is that s3c2410_gpio_cfgpin() and S3C2410_* isn't defined
> on S3C64XX builds so this gives implicit declaration errors.
hmm... I didn't look in details but I thought such kind of issues was
going to be fixed thanks to the changes in Ben's -next-* branches.
Arnaud
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
2010-01-25 10:22 ` Arnaud Patard (Rtp)
@ 2010-01-25 10:32 ` Maurus Cuelenaere
2010-01-26 14:58 ` Ben Dooks
1 sibling, 0 replies; 6+ messages in thread
From: Maurus Cuelenaere @ 2010-01-25 10:32 UTC (permalink / raw)
To: linux-arm-kernel
Op 25-01-10 11:22, Arnaud Patard (Rtp) schreef:
> Maurus Cuelenaere<mcuelenaere@gmail.com> writes:
>
> [...]
>
>
>>>> @@ -40,7 +40,9 @@
>>>> #include<plat/regs-adc.h>
>>>> #include<plat/ts.h>
>>>>
>>>> +#ifdef PLAT_S3C24XX
>>>> #include<mach/regs-gpio.h>
>>>> +#endif
>>>>
>>>> #define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
>>>>
>>>> @@ -88,6 +90,12 @@ struct s3c2410ts {
>>>>
>>>> static struct s3c2410ts ts;
>>>>
>>>> +enum s3c_cpu_type {
>>>> + TYPE_S3C2410,
>>>> + TYPE_S3C2440,
>>>> + TYPE_S3C64XX,
>>>> +};
>>>> +
>>>> /**
>>>> * s3c2410_ts_connect - configure gpio for s3c2410 systems
>>>> *
>>>> @@ -95,6 +103,7 @@ static struct s3c2410ts ts;
>>>> * connected to the device (later systems such as the S3C2440 integrate
>>>> * these into the device).
>>>> */
>>>> +#ifdef PLAT_S3C24XX
>>>> static inline void s3c2410_ts_connect(void)
>>>> {
>>>> s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
>>>> @@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
>>>> s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
>>>> s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
>>>> }
>>>> +#endif
>>>>
>>>>
>>> Please, remove all theses #ifdef. I don't see the point of them as it's
>>> only few lines of C code and they don't get executed when running on
>>> other platforms than 2410.
>>>
>> The problem is that s3c2410_gpio_cfgpin() and S3C2410_* isn't defined
>> on S3C64XX builds so this gives implicit declaration errors.
>>
> hmm... I didn't look in details but I thought such kind of issues was
> going to be fixed thanks to the changes in Ben's -next-* branches.
>
Hmm I checked next-samsung but didn't see anything relevant..
Normally I check Ben's tree pretty regularly (this diff was based on an
older next-samsung), so if he changes something I should pickup.
I can remove one pair of #ifdef's though, if I move the first one inside
s3c2410_ts_connect() there's no need for the second one.
Regards,
Maurus Cuelenaere
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver
2010-01-25 10:22 ` Arnaud Patard (Rtp)
2010-01-25 10:32 ` Maurus Cuelenaere
@ 2010-01-26 14:58 ` Ben Dooks
1 sibling, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2010-01-26 14:58 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Jan 25, 2010 at 11:22:34AM +0100, Arnaud Patard wrote:
> Maurus Cuelenaere <mcuelenaere@gmail.com> writes:
>
> [...]
>
> >>> @@ -40,7 +40,9 @@
> >>> #include<plat/regs-adc.h>
> >>> #include<plat/ts.h>
> >>>
> >>> +#ifdef PLAT_S3C24XX
> >>> #include<mach/regs-gpio.h>
> >>> +#endif
> >>>
> >>> #define TSC_SLEEP (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
> >>>
> >>> @@ -88,6 +90,12 @@ struct s3c2410ts {
> >>>
> >>> static struct s3c2410ts ts;
> >>>
> >>> +enum s3c_cpu_type {
> >>> + TYPE_S3C2410,
> >>> + TYPE_S3C2440,
> >>> + TYPE_S3C64XX,
> >>> +};
> >>> +
> >>> /**
> >>> * s3c2410_ts_connect - configure gpio for s3c2410 systems
> >>> *
> >>> @@ -95,6 +103,7 @@ static struct s3c2410ts ts;
> >>> * connected to the device (later systems such as the S3C2440 integrate
> >>> * these into the device).
> >>> */
> >>> +#ifdef PLAT_S3C24XX
> >>> static inline void s3c2410_ts_connect(void)
> >>> {
> >>> s3c2410_gpio_cfgpin(S3C2410_GPG(12), S3C2410_GPG12_XMON);
> >>> @@ -102,6 +111,7 @@ static inline void s3c2410_ts_connect(void)
> >>> s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_YMON);
> >>> s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_nYPON);
> >>> }
> >>> +#endif
> >>>
> >> Please, remove all theses #ifdef. I don't see the point of them as it's
> >> only few lines of C code and they don't get executed when running on
> >> other platforms than 2410.
> >>
> >> Arnaud
> >>
> >
> > The problem is that s3c2410_gpio_cfgpin() and S3C2410_* isn't defined
> > on S3C64XX builds so this gives implicit declaration errors.
>
> hmm... I didn't look in details but I thought such kind of issues was
> going to be fixed thanks to the changes in Ben's -next-* branches.
there's nothing currently in here to deal with this.
The thing is that will configuring the GPIOs to their special function
before the driver is loaded do any damage to the SoC? If not then it
may be worth moving the s3c2410 case into the machines that need it (iirc,
about two so far) and simply remove it from the driver and thus avoid the
need for S3C2410/S3C2440 detection. Input welcome.
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-01-26 14:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-22 22:47 [PATCH 4/4] ARM: S3C64XX: Add s3c64xx support to touchscreen driver Maurus Cuelenaere
2010-01-25 9:46 ` Arnaud Patard (Rtp)
2010-01-25 9:45 ` Maurus Cuelenaere
2010-01-25 10:22 ` Arnaud Patard (Rtp)
2010-01-25 10:32 ` Maurus Cuelenaere
2010-01-26 14:58 ` Ben Dooks
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).