Commit 91df77d7 authored by Naveen Krishna's avatar Naveen Krishna Committed by Ben Dooks

Input: s3c24xx_ts - Add FEAT for Samsung touchscreen support

This patch adds a feature bit field in the touchscreen driver for Samsung SoCs.
Which can be used to distinguish the TSADC module features.
Signed-off-by: default avatarNaveen Krishna Ch <ch.naveen@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
[ben-linux@fluff.org: minor fix to title]
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
Acked-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 658ad39e
...@@ -55,6 +55,8 @@ ...@@ -55,6 +55,8 @@
S3C2410_ADCTSC_AUTO_PST | \ S3C2410_ADCTSC_AUTO_PST | \
S3C2410_ADCTSC_XY_PST(0)) S3C2410_ADCTSC_XY_PST(0))
#define FEAT_PEN_IRQ (1 << 0) /* HAS ADCCLRINTPNDNUP */
/* Per-touchscreen data. */ /* Per-touchscreen data. */
/** /**
...@@ -69,6 +71,7 @@ ...@@ -69,6 +71,7 @@
* @irq_tc: The interrupt number for pen up/down interrupt * @irq_tc: The interrupt number for pen up/down interrupt
* @count: The number of samples collected. * @count: The number of samples collected.
* @shift: The log2 of the maximum count to read in one go. * @shift: The log2 of the maximum count to read in one go.
* @features: The features supported by the TSADC MOdule.
*/ */
struct s3c2410ts { struct s3c2410ts {
struct s3c_adc_client *client; struct s3c_adc_client *client;
...@@ -81,6 +84,7 @@ struct s3c2410ts { ...@@ -81,6 +84,7 @@ struct s3c2410ts {
int irq_tc; int irq_tc;
int count; int count;
int shift; int shift;
int features;
}; };
static struct s3c2410ts ts; static struct s3c2410ts ts;
...@@ -171,6 +175,11 @@ static irqreturn_t stylus_irq(int irq, void *dev_id) ...@@ -171,6 +175,11 @@ static irqreturn_t stylus_irq(int irq, void *dev_id)
else else
dev_info(ts.dev, "%s: count=%d\n", __func__, ts.count); dev_info(ts.dev, "%s: count=%d\n", __func__, ts.count);
if (ts.features & FEAT_PEN_IRQ) {
/* Clear pen down/up interrupt */
writel(0x0, ts.io + S3C64XX_ADCCLRINTPNDNUP);
}
return IRQ_HANDLED; return IRQ_HANDLED;
} }
...@@ -317,6 +326,7 @@ static int __devinit s3c2410ts_probe(struct platform_device *pdev) ...@@ -317,6 +326,7 @@ static int __devinit s3c2410ts_probe(struct platform_device *pdev)
ts.input->id.version = 0x0102; ts.input->id.version = 0x0102;
ts.shift = info->oversampling_shift; ts.shift = info->oversampling_shift;
ts.features = platform_get_device_id(pdev)->driver_data;
ret = request_irq(ts.irq_tc, stylus_irq, IRQF_DISABLED, ret = request_irq(ts.irq_tc, stylus_irq, IRQF_DISABLED,
"s3c2410_ts_pen", ts.input); "s3c2410_ts_pen", ts.input);
...@@ -403,15 +413,14 @@ static struct dev_pm_ops s3c_ts_pmops = { ...@@ -403,15 +413,14 @@ static struct dev_pm_ops s3c_ts_pmops = {
#endif #endif
static struct platform_device_id s3cts_driver_ids[] = { static struct platform_device_id s3cts_driver_ids[] = {
{ "s3c2410-ts", 0 }, { "s3c64xx-ts", FEAT_PEN_IRQ },
{ "s3c2440-ts", 1 },
{ } { }
}; };
MODULE_DEVICE_TABLE(platform, s3cts_driver_ids); MODULE_DEVICE_TABLE(platform, s3cts_driver_ids);
static struct platform_driver s3c_ts_driver = { static struct platform_driver s3c_ts_driver = {
.driver = { .driver = {
.name = "s3c24xx-ts", .name = "samsung-ts",
.owner = THIS_MODULE, .owner = THIS_MODULE,
#ifdef CONFIG_PM #ifdef CONFIG_PM
.pm = &s3c_ts_pmops, .pm = &s3c_ts_pmops,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment