diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch deleted file mode 100644 index bae3a54..0000000 --- a/target/linux/s3c24xx/patches-2.6.24/1309--lis302dl-open-floodgates-on-zero-threshold.patch.patch +++ /dev/null @@ -1,138 +0,0 @@ -From ca57dbb5effd245e2619f4b730f8247f7279f954 Mon Sep 17 00:00:00 2001 -From: Simon Kagstrom <simon.kagstrom@gmail.com> -Date: Thu, 16 Oct 2008 01:19:47 +0100 -Subject: [PATCH] : lis302dl-open-floodgates-on-zero-threshold.patch - -Generate data ready interrupts if threshold is zero - -From: Simon Kagstrom <simon.kagstrom@gmail.com> - -If the threshold is set to zero, enable the data ready interrupt -(generated one interrupt per datum). Otherwise use the freefall -interrupt as source. - -Signed-off-by: Simon Kagstrom <simon.kagstrom@gmail.com> ---- - drivers/input/misc/lis302dl.c | 64 +++++++++++++++++++++++++++------------- - 1 files changed, 43 insertions(+), 21 deletions(-) - -diff --git a/drivers/input/misc/lis302dl.c b/drivers/input/misc/lis302dl.c -index d738199..e404a45 100644 ---- a/drivers/input/misc/lis302dl.c -+++ b/drivers/input/misc/lis302dl.c -@@ -44,6 +44,7 @@ - #include <linux/lis302dl.h> - - /* Utility functions */ -+ - static u8 __reg_read(struct lis302dl_info *lis, u8 reg) - { - return (lis->pdata->lis302dl_bitbang_reg_read)(lis, reg); -@@ -132,6 +133,36 @@ static void __lis302dl_int_mode(struct device *dev, int int_pin, - } - } - -+static void __enable_data_collection(struct lis302dl_info *lis) -+{ -+ u_int8_t ctrl1 = LIS302DL_CTRL1_PD | LIS302DL_CTRL1_Xen | -+ LIS302DL_CTRL1_Yen | LIS302DL_CTRL1_Zen; -+ -+ /* make sure we're powered up and generate data ready */ -+ __reg_set_bit_mask(lis, LIS302DL_REG_CTRL1, ctrl1, ctrl1); -+ -+ /* If the threshold is zero, let the device generated an interrupt -+ * on each datum */ -+ if (lis->threshold == 0) { -+ __reg_write(lis, LIS302DL_REG_CTRL2, 0); -+ __lis302dl_int_mode(lis->dev, 1, LIS302DL_INTMODE_DATA_READY); -+ __lis302dl_int_mode(lis->dev, 2, LIS302DL_INTMODE_DATA_READY); -+ } else { -+ __reg_write(lis, LIS302DL_REG_CTRL2, -+ LIS302DL_CTRL2_HPFF1); -+ __reg_write(lis, LIS302DL_REG_FF_WU_THS_1, lis->threshold); -+ __reg_write(lis, LIS302DL_REG_FF_WU_DURATION_1, lis->duration); -+ -+ /* Clear the HP filter "starting point" */ -+ __reg_read(lis, LIS302DL_REG_HP_FILTER_RESET); -+ __reg_write(lis, LIS302DL_REG_FF_WU_CFG_1, -+ LIS302DL_FFWUCFG_XHIE | LIS302DL_FFWUCFG_YHIE | -+ LIS302DL_FFWUCFG_ZHIE); -+ __lis302dl_int_mode(lis->dev, 1, LIS302DL_INTMODE_FF_WU_12); -+ __lis302dl_int_mode(lis->dev, 2, LIS302DL_INTMODE_FF_WU_12); -+ } -+} -+ - #if 0 - static void _report_btn_single(struct input_dev *inp, int btn) - { -@@ -263,7 +294,7 @@ static ssize_t set_scale(struct device *dev, struct device_attribute *attr, - /* 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); -+ __enable_data_collection(lis); - - local_irq_restore(flags); - -@@ -294,8 +325,14 @@ static ssize_t set_threshold(struct device *dev, struct device_attribute *attr, - - /* Set the threshold and write it out if the device is used */ - 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); -+ -+ if (lis->flags & LIS302DL_F_INPUT_OPEN) { -+ unsigned long flags; -+ -+ local_irq_save(flags); -+ __enable_data_collection(lis); -+ local_irq_restore(flags); -+ } - - return count; - } -@@ -562,29 +599,14 @@ static struct attribute_group lis302dl_attr_group = { - }; - - /* input device handling and driver core interaction */ -- - static int lis302dl_input_open(struct input_dev *inp) - { - struct lis302dl_info *lis = inp->private; -- u_int8_t ctrl1 = LIS302DL_CTRL1_PD | LIS302DL_CTRL1_Xen | -- LIS302DL_CTRL1_Yen | LIS302DL_CTRL1_Zen; -- u_int8_t ctrl2 = LIS302DL_CTRL2_HPFF1; - unsigned long flags; - - local_irq_save(flags); -- /* make sure we're powered up and generate data ready */ -- __reg_set_bit_mask(lis, LIS302DL_REG_CTRL1, ctrl1, ctrl1); -- -- __reg_write(lis, LIS302DL_REG_CTRL2, -- ctrl2); -- __reg_write(lis, LIS302DL_REG_FF_WU_THS_1, lis->threshold); -- __reg_write(lis, LIS302DL_REG_FF_WU_DURATION_1, lis->duration); -- -- /* Clear the HP filter "starting point" */ -- __reg_read(lis, LIS302DL_REG_HP_FILTER_RESET); -- __reg_write(lis, LIS302DL_REG_FF_WU_CFG_1, LIS302DL_FFWUCFG_XHIE | -- LIS302DL_FFWUCFG_YHIE | LIS302DL_FFWUCFG_ZHIE); - -+ __enable_data_collection(lis); - lis->flags |= LIS302DL_F_INPUT_OPEN; - - /* kick it off -- since we are edge triggered, if we missed the edge -@@ -736,8 +758,8 @@ static int __devinit lis302dl_probe(struct platform_device *pdev) - /* push-pull, active-low */ - __reg_write(lis, LIS302DL_REG_CTRL3, LIS302DL_CTRL3_IHL); - -- __lis302dl_int_mode(lis->dev, 1, LIS302DL_INTMODE_FF_WU_12); -- __lis302dl_int_mode(lis->dev, 2, LIS302DL_INTMODE_FF_WU_12); -+ __lis302dl_int_mode(lis->dev, 1, LIS302DL_INTMODE_GND); -+ __lis302dl_int_mode(lis->dev, 2, LIS302DL_INTMODE_GND); - - __reg_read(lis, LIS302DL_REG_STATUS); - __reg_read(lis, LIS302DL_REG_FF_WU_SRC_1); --- -1.5.6.5 - |