aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch131
1 files changed, 0 insertions, 131 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch
deleted file mode 100644
index 9aa9a3a7d4..0000000000
--- a/target/linux/s3c24xx/patches-2.6.24/1307--lis302dl-threshold-configuration-in-mg.patch.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 5e2b5ddaf95985744e0e0c28ba6dac83c093fd15 Mon Sep 17 00:00:00 2001
-From: Simon Kagstrom <simon.kagstrom@gmail.com>
-Date: Thu, 16 Oct 2008 01:19:29 +0100
-Subject: [PATCH] : lis302dl-threshold-configuration-in-mg.patch
-
-Change the threshold configuration to be set in mg instead
-
-From: Simon Kagstrom <simon.kagstrom@gmail.com>
-
-This patch changes the threshold sysfs file to handle values in mg
-instead of the device-values. Overrun values have also been corrected
-and the sampler function now honors the FS bit.
-
-Signed-off-by: Simon Kagstrom <simon.kagstrom@gmail.com>
----
- drivers/input/misc/lis302dl.c | 49 ++++++++++++++++++++++++++++++++--------
- 1 files changed, 39 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/input/misc/lis302dl.c b/drivers/input/misc/lis302dl.c
-index 300918d..c1b1d67 100644
---- a/drivers/input/misc/lis302dl.c
-+++ b/drivers/input/misc/lis302dl.c
-@@ -97,6 +97,24 @@ static int __duration_to_ms(struct lis302dl_info *lis, int duration)
- return duration * 10;
- }
-
-+static u8 __mg_to_threshold(struct lis302dl_info *lis, int mg)
-+{
-+ /* If FS is set each bit is 71mg, otherwise 18mg. The THS register
-+ * has 7 bits for the threshold value */
-+ if (lis->flags & LIS302DL_F_FS)
-+ return min(mg / 71, 127);
-+
-+ return min(mg / 18, 127);
-+}
-+
-+static int __threshold_to_mg(struct lis302dl_info *lis, u8 threshold)
-+{
-+ if (lis->flags & LIS302DL_F_FS)
-+ return threshold * 71;
-+
-+ return threshold * 18;
-+}
-+
- /* interrupt handling related */
-
- enum lis302dl_intmode {
-@@ -146,23 +164,24 @@ static void _report_btn_double(struct input_dev *inp, int btn)
- }
- #endif
-
--#define MG_PER_SAMPLE 18
-
- static void lis302dl_bitbang_read_sample(struct lis302dl_info *lis)
- {
- u8 data = 0xc0 | LIS302DL_REG_OUT_X; /* read, autoincrement */
- u8 read[5];
- unsigned long flags;
-+ int mg_per_sample;
-
- local_irq_save(flags);
-+ mg_per_sample = __threshold_to_mg(lis, 1);
-
- (lis->pdata->lis302dl_bitbang)(lis, &data, 1, &read[0], 5);
-
- local_irq_restore(flags);
-
-- input_report_rel(lis->input_dev, REL_X, MG_PER_SAMPLE * (s8)read[0]);
-- input_report_rel(lis->input_dev, REL_Y, MG_PER_SAMPLE * (s8)read[2]);
-- input_report_rel(lis->input_dev, REL_Z, MG_PER_SAMPLE * (s8)read[4]);
-+ input_report_rel(lis->input_dev, REL_X, mg_per_sample * (s8)read[0]);
-+ input_report_rel(lis->input_dev, REL_Y, mg_per_sample * (s8)read[2]);
-+ input_report_rel(lis->input_dev, REL_Z, mg_per_sample * (s8)read[4]);
-
- input_sync(lis->input_dev);
-
-@@ -234,15 +253,24 @@ static ssize_t set_scale(struct device *dev, struct device_attribute *attr,
- {
- struct lis302dl_info *lis = dev_get_drvdata(dev);
- unsigned long flags;
-+ int threshold_mg = __threshold_to_mg(lis, lis->threshold);
-
- local_irq_save(flags);
-
-- if (!strcmp(buf, "9.2\n"))
-+ if (!strcmp(buf, "9.2\n")) {
- __reg_set_bit_mask(lis, LIS302DL_REG_CTRL1, LIS302DL_CTRL1_FS,
- LIS302DL_CTRL1_FS);
-- else
-+ lis->flags |= LIS302DL_F_FS;
-+ } else {
- __reg_set_bit_mask(lis, LIS302DL_REG_CTRL1, LIS302DL_CTRL1_FS,
-- 0);
-+ 0);
-+ lis->flags &= ~LIS302DL_F_FS;
-+ }
-+
-+ /* Adjust the threshold */
-+ lis->threshold = __mg_to_threshold(lis, threshold_mg);
-+ if (lis->flags & LIS302DL_F_INPUT_OPEN)
-+ __reg_write(lis, LIS302DL_REG_FF_WU_THS_1, lis->threshold);
-
- local_irq_restore(flags);
-
-@@ -256,7 +284,7 @@ static ssize_t show_threshold(struct device *dev, struct device_attribute *attr,
- {
- struct lis302dl_info *lis = dev_get_drvdata(dev);
-
-- return sprintf(buf, "%d\n", lis->threshold);
-+ return sprintf(buf, "%d\n", __threshold_to_mg(lis, lis->threshold));
- }
-
- static ssize_t set_threshold(struct device *dev, struct device_attribute *attr,
-@@ -267,11 +295,12 @@ static ssize_t set_threshold(struct device *dev, struct device_attribute *attr,
-
- if (sscanf(buf, "%d\n", &val) != 1)
- return -EINVAL;
-- if (val < 0 || val > 255)
-+ /* 8g is the maximum if FS is 1 */
-+ if (val < 0 || val > 8000)
- return -ERANGE;
-
- /* Set the threshold and write it out if the device is used */
-- lis->threshold = val;
-+ lis->threshold = __mg_to_threshold(lis, val);
- if (lis->flags & LIS302DL_F_INPUT_OPEN)
- __reg_write(lis, LIS302DL_REG_FF_WU_THS_1, lis->threshold);
-
---
-1.5.6.5
-