aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen/s5pc210_ts_sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/touchscreen/s5pc210_ts_sysfs.c')
-rw-r--r--drivers/input/touchscreen/s5pc210_ts_sysfs.c287
1 files changed, 0 insertions, 287 deletions
diff --git a/drivers/input/touchscreen/s5pc210_ts_sysfs.c b/drivers/input/touchscreen/s5pc210_ts_sysfs.c
deleted file mode 100644
index fbdc3de..0000000
--- a/drivers/input/touchscreen/s5pc210_ts_sysfs.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/* drivers/input/touschcreen/s5pc210_ts_sysfs.c
- *
- * Copyright (c) 2011 Samsung Electronics Co., Ltd.
- * http://www.samsung.com
- *
- * Samsung S5PC210 10.1" touchscreen sensor interface driver
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the term of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Copyright 2010 Hardkernel Co.,Ltd. <odroid@hardkernel.com>
- * Copyright 2010 Samsung Electronics <samsung.com>
- *
- */
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/module.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/irq.h>
-#include <linux/interrupt.h>
-#include <linux/sysfs.h>
-
-#include "s5pc210_ts_gpio_i2c.h"
-#include "s5pc210_ts.h"
-
-/* sysfs function prototype define */
-/* screen hold control (on -> hold, off -> normal mode) */
-static ssize_t show_hold_state(struct device *dev,
- struct device_attribute *attr, char *buf);
-static ssize_t set_hold_state(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count);
-static DEVICE_ATTR(hold_state, S_IRWXUGO, show_hold_state, set_hold_state);
-
-/* touch sampling rate control (5, 10, 20 : unit msec) */
-static ssize_t show_sampling_rate(struct device *dev,
- struct device_attribute *attr, char *buf);
-static ssize_t set_sampling_rate(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count);
-static DEVICE_ATTR(sampling_rate, S_IRWXUGO, show_sampling_rate,
- set_sampling_rate);
-
-/* touch threshold control (range 0 - 10) : default 3 */
-#define THRESHOLD_MAX 10
-
-static ssize_t show_threshold_x(struct device *dev,
- struct device_attribute *attr, char *buf);
-static ssize_t set_threshold_x(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count);
-static DEVICE_ATTR(threshold_x, S_IRWXUGO, show_threshold_x, set_threshold_x);
-
-static ssize_t show_threshold_y(struct device *dev,
- struct device_attribute *attr, char *buf);
-static ssize_t set_threshold_y(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count);
-static DEVICE_ATTR(threshold_y, S_IRWXUGO, show_threshold_y, set_threshold_y);
-
-/* touch calibration */
-#if defined(CONFIG_TOUCHSCREEN_EXYNOS4)
-static ssize_t set_ts_cal(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count);
-static DEVICE_ATTR(ts_cal, S_IWUGO, NULL, set_ts_cal);
-#endif
-
-static struct attribute *s5pv310_ts_sysfs_entries[] = {
- &dev_attr_hold_state.attr,
- &dev_attr_sampling_rate.attr,
- &dev_attr_threshold_x.attr,
- &dev_attr_threshold_y.attr,
-#if defined(CONFIG_TOUCHSCREEN_EXYNOS4)
- &dev_attr_ts_cal.attr,
-#endif
- NULL
-};
-
-static struct attribute_group s5pv310_ts_attr_group = {
- .name = NULL,
- .attrs = s5pv310_ts_sysfs_entries,
-};
-
-static ssize_t show_hold_state(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- if (s5pv310_ts.hold_status)
- return sprintf(buf, "on\n");
- else
- return sprintf(buf, "off\n");
-}
-
-static ssize_t set_hold_state(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- unsigned long flags;
- unsigned char wdata;
-
- local_irq_save(flags);
-
- if (!strcmp(buf, "on\n"))
- s5pv310_ts.hold_status = 1;
- else {
-#if defined(CONFIG_TOUCHSCREEN_EXYNOS4)
- /* INT_mode : disable interrupt, low-active, finger moving */
- wdata = 0x01;
- s5pv310_ts_write(MODULE_INTMODE, &wdata, 1);
- mdelay(10);
- /* INT_mode : enable interrupt, low-active, finger moving */
- wdata = 0x09;
- s5pv310_ts_write(MODULE_INTMODE, &wdata, 1);
- mdelay(10);
-#endif
- s5pv310_ts.hold_status = 0;
- }
-
- local_irq_restore(flags);
-
- return count;
-}
-
-static ssize_t show_sampling_rate(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- switch (s5pv310_ts.sampling_rate) {
- default:
- s5pv310_ts.sampling_rate = 0;
- case 0:
- return sprintf(buf, "10 msec\n");
- case 1:
- return sprintf(buf, "20 msec\n");
- case 2:
- return sprintf(buf, "50 msec\n");
- }
-}
-
-static ssize_t set_sampling_rate(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- unsigned long flags;
- unsigned int val;
-
- if (!(sscanf(buf, "%u\n", &val)))
- return -EINVAL;
-
- local_irq_save(flags);
- if (val > 20)
- s5pv310_ts.sampling_rate = 2;
- else if (val > 10)
- s5pv310_ts.sampling_rate = 1;
- else
- s5pv310_ts.sampling_rate = 0;
-
- local_irq_restore(flags);
-
- return count;
-}
-
-static ssize_t show_threshold_x(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- if (s5pv310_ts.threshold_x > THRESHOLD_MAX)
- s5pv310_ts.threshold_x = THRESHOLD_MAX;
-
- return sprintf(buf, "%d\n", s5pv310_ts.threshold_x);
-}
-
-static ssize_t set_threshold_x(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- unsigned long flags;
- unsigned int val;
-
- if (!(sscanf(buf, "%u\n", &val)))
- return -EINVAL;
-
- local_irq_save(flags);
-
- if (val < 0)
- val *= (-1);
-
- if (val > THRESHOLD_MAX)
- val = THRESHOLD_MAX;
-
- s5pv310_ts.threshold_x = val;
-
- local_irq_restore(flags);
-
- return count;
-}
-static ssize_t show_threshold_y(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- if (s5pv310_ts.threshold_y > THRESHOLD_MAX)
- s5pv310_ts.threshold_y = THRESHOLD_MAX;
-
- return sprintf(buf, "%d\n", s5pv310_ts.threshold_y);
-}
-static ssize_t set_threshold_y(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- unsigned long flags;
- unsigned int val;
-
- if (!(sscanf(buf, "%u\n", &val)))
- return -EINVAL;
-
- local_irq_save(flags);
-
- if (val < 0)
- val *= (-1);
-
- if (val > THRESHOLD_MAX)
- val = THRESHOLD_MAX;
-
- s5pv310_ts.threshold_y = val;
-
- local_irq_restore(flags);
-
- return count;
-}
-
-#if defined(CONFIG_TOUCHSCREEN_EXYNOS4)
-static ssize_t set_ts_cal(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t count)
-{
- unsigned char wdata;
- unsigned long flags;
-
- local_irq_save(flags);
-
- /* INT_mode : disable interrupt */
- wdata = 0x00;
- s5pv310_ts_write(MODULE_INTMODE, &wdata, 1);
-
- /* touch calibration */
- wdata = 0x03;
- s5pv310_ts_write(MODULE_CALIBRATION, &wdata, 1);
-
- mdelay(500);
-
- /* INT_mode : enable interrupt, low-active, periodically*/
- wdata = 0x09;
- s5pv310_ts_write(MODULE_INTMODE, &wdata, 1);
-
- local_irq_restore(flags);
-
- return count;
-}
-#endif
-
-int s5pv310_ts_sysfs_create(struct platform_device *pdev)
-{
- /* variable init */
- s5pv310_ts.hold_status = 0;
-
- /* 5 msec sampling */
- s5pv310_ts.sampling_rate = 0;
- /* x data threshold (0~10) */
- s5pv310_ts.threshold_x = TS_X_THRESHOLD;
- /* y data threshold (0~10) */
- s5pv310_ts.threshold_y = TS_Y_THRESHOLD;
-
- return sysfs_create_group(&pdev->dev.kobj, &s5pv310_ts_attr_group);
-}
-void s5pv310_ts_sysfs_remove(struct platform_device *pdev)
-{
- sysfs_remove_group(&pdev->dev.kobj, &s5pv310_ts_attr_group);
-}