aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lis3lv02d.c
diff options
context:
space:
mode:
authorSamu Onkalo <samu.p.onkalo@nokia.com>2010-05-24 17:33:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-25 11:07:06 -0400
commit342c5f128140d54961c435d1702eadcaba97a37a (patch)
tree884b712d67b3319c9d8d747d5dd0cd5e0234f842 /drivers/hwmon/lis3lv02d.c
parentecc437aeee65afeea2e1bed963ccf6c384c555ea (diff)
lis3: introduce platform data for second ff / wu unit
8 bit device has two wakeup / free fall units. It was not possible to configure the second unit. This patch introduces configuration entry to the platform data and also corresponding changes to the 8 bit setup function. High pass filters were enabled by default. Patch introduces configuration option for high pass filter cut off frequency and also possibility to disable or enable the filter via platform data. Since the control is a new one and default state was filter enabled, new option is used to disable the filter. This way old platform data is still compatible with the change. Signed-off-by: Samu Onkalo <samu.p.onkalo@nokia.com> Acked-by: Eric Piel <eric.piel@tremplin-utc.net> Tested-by: Daniel Mack <daniel@caiaq.de> Cc: Pavel Machek <pavel@ucw.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/hwmon/lis3lv02d.c')
-rw-r--r--drivers/hwmon/lis3lv02d.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
index 99fd45deda41..50f312339608 100644
--- a/drivers/hwmon/lis3lv02d.c
+++ b/drivers/hwmon/lis3lv02d.c
@@ -524,6 +524,8 @@ EXPORT_SYMBOL_GPL(lis3lv02d_remove_fs);
524static void lis3lv02d_8b_configure(struct lis3lv02d *dev, 524static void lis3lv02d_8b_configure(struct lis3lv02d *dev,
525 struct lis3lv02d_platform_data *p) 525 struct lis3lv02d_platform_data *p)
526{ 526{
527 int ctrl2 = p->hipass_ctrl;
528
527 if (p->click_flags) { 529 if (p->click_flags) {
528 dev->write(dev, CLICK_CFG, p->click_flags); 530 dev->write(dev, CLICK_CFG, p->click_flags);
529 dev->write(dev, CLICK_TIMELIMIT, p->click_time_limit); 531 dev->write(dev, CLICK_TIMELIMIT, p->click_time_limit);
@@ -540,9 +542,18 @@ static void lis3lv02d_8b_configure(struct lis3lv02d *dev,
540 dev->write(dev, FF_WU_THS_1, p->wakeup_thresh & 0x7f); 542 dev->write(dev, FF_WU_THS_1, p->wakeup_thresh & 0x7f);
541 /* default to 2.5ms for now */ 543 /* default to 2.5ms for now */
542 dev->write(dev, FF_WU_DURATION_1, 1); 544 dev->write(dev, FF_WU_DURATION_1, 1);
543 /* enable high pass filter for both free-fall units */ 545 ctrl2 ^= HP_FF_WU1; /* Xor to keep compatible with old pdata*/
544 dev->write(dev, CTRL_REG2, HP_FF_WU1 | HP_FF_WU2); 546 }
547
548 if (p->wakeup_flags2) {
549 dev->write(dev, FF_WU_CFG_2, p->wakeup_flags2);
550 dev->write(dev, FF_WU_THS_2, p->wakeup_thresh2 & 0x7f);
551 /* default to 2.5ms for now */
552 dev->write(dev, FF_WU_DURATION_2, 1);
553 ctrl2 ^= HP_FF_WU2; /* Xor to keep compatible with old pdata*/
545 } 554 }
555 /* Configure hipass filters */
556 dev->write(dev, CTRL_REG2, ctrl2);
546} 557}
547 558
548/* 559/*