aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hwmon/lis3lv02d.c32
-rw-r--r--drivers/hwmon/lis3lv02d.h3
2 files changed, 3 insertions, 32 deletions
diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
index 55ec883e2026..02ac5fa5a05c 100644
--- a/drivers/hwmon/lis3lv02d.c
+++ b/drivers/hwmon/lis3lv02d.c
@@ -350,19 +350,12 @@ static void lis3lv02d_joystick_poll(struct input_polled_dev *pidev)
350 int x, y, z; 350 int x, y, z;
351 351
352 lis3lv02d_get_xyz(&lis3_dev, &x, &y, &z); 352 lis3lv02d_get_xyz(&lis3_dev, &x, &y, &z);
353 input_report_abs(pidev->input, ABS_X, x - lis3_dev.xcalib); 353 input_report_abs(pidev->input, ABS_X, x);
354 input_report_abs(pidev->input, ABS_Y, y - lis3_dev.ycalib); 354 input_report_abs(pidev->input, ABS_Y, y);
355 input_report_abs(pidev->input, ABS_Z, z - lis3_dev.zcalib); 355 input_report_abs(pidev->input, ABS_Z, z);
356 input_sync(pidev->input); 356 input_sync(pidev->input);
357} 357}
358 358
359
360static inline void lis3lv02d_calibrate_joystick(void)
361{
362 lis3lv02d_get_xyz(&lis3_dev,
363 &lis3_dev.xcalib, &lis3_dev.ycalib, &lis3_dev.zcalib);
364}
365
366int lis3lv02d_joystick_enable(void) 359int lis3lv02d_joystick_enable(void)
367{ 360{
368 struct input_dev *input_dev; 361 struct input_dev *input_dev;
@@ -379,8 +372,6 @@ int lis3lv02d_joystick_enable(void)
379 lis3_dev.idev->poll_interval = MDPS_POLL_INTERVAL; 372 lis3_dev.idev->poll_interval = MDPS_POLL_INTERVAL;
380 input_dev = lis3_dev.idev->input; 373 input_dev = lis3_dev.idev->input;
381 374
382 lis3lv02d_calibrate_joystick();
383
384 input_dev->name = "ST LIS3LV02DL Accelerometer"; 375 input_dev->name = "ST LIS3LV02DL Accelerometer";
385 input_dev->phys = DRIVER_NAME "/input0"; 376 input_dev->phys = DRIVER_NAME "/input0";
386 input_dev->id.bustype = BUS_HOST; 377 input_dev->id.bustype = BUS_HOST;
@@ -436,20 +427,6 @@ static ssize_t lis3lv02d_position_show(struct device *dev,
436 return sprintf(buf, "(%d,%d,%d)\n", x, y, z); 427 return sprintf(buf, "(%d,%d,%d)\n", x, y, z);
437} 428}
438 429
439static ssize_t lis3lv02d_calibrate_show(struct device *dev,
440 struct device_attribute *attr, char *buf)
441{
442 return sprintf(buf, "(%d,%d,%d)\n", lis3_dev.xcalib, lis3_dev.ycalib, lis3_dev.zcalib);
443}
444
445static ssize_t lis3lv02d_calibrate_store(struct device *dev,
446 struct device_attribute *attr,
447 const char *buf, size_t count)
448{
449 lis3lv02d_calibrate_joystick();
450 return count;
451}
452
453static ssize_t lis3lv02d_rate_show(struct device *dev, 430static ssize_t lis3lv02d_rate_show(struct device *dev,
454 struct device_attribute *attr, char *buf) 431 struct device_attribute *attr, char *buf)
455{ 432{
@@ -458,14 +435,11 @@ static ssize_t lis3lv02d_rate_show(struct device *dev,
458 435
459static DEVICE_ATTR(selftest, S_IRUSR, lis3lv02d_selftest_show, NULL); 436static DEVICE_ATTR(selftest, S_IRUSR, lis3lv02d_selftest_show, NULL);
460static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL); 437static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL);
461static DEVICE_ATTR(calibrate, S_IRUGO|S_IWUSR, lis3lv02d_calibrate_show,
462 lis3lv02d_calibrate_store);
463static DEVICE_ATTR(rate, S_IRUGO, lis3lv02d_rate_show, NULL); 438static DEVICE_ATTR(rate, S_IRUGO, lis3lv02d_rate_show, NULL);
464 439
465static struct attribute *lis3lv02d_attributes[] = { 440static struct attribute *lis3lv02d_attributes[] = {
466 &dev_attr_selftest.attr, 441 &dev_attr_selftest.attr,
467 &dev_attr_position.attr, 442 &dev_attr_position.attr,
468 &dev_attr_calibrate.attr,
469 &dev_attr_rate.attr, 443 &dev_attr_rate.attr,
470 NULL 444 NULL
471}; 445};
diff --git a/drivers/hwmon/lis3lv02d.h b/drivers/hwmon/lis3lv02d.h
index 166794cb91a3..1e9fb03dcd59 100644
--- a/drivers/hwmon/lis3lv02d.h
+++ b/drivers/hwmon/lis3lv02d.h
@@ -216,9 +216,6 @@ struct lis3lv02d {
216 struct input_polled_dev *idev; /* input device */ 216 struct input_polled_dev *idev; /* input device */
217 struct platform_device *pdev; /* platform device */ 217 struct platform_device *pdev; /* platform device */
218 atomic_t count; /* interrupt count after last read */ 218 atomic_t count; /* interrupt count after last read */
219 int xcalib; /* calibrated null value for x */
220 int ycalib; /* calibrated null value for y */
221 int zcalib; /* calibrated null value for z */
222 struct axis_conversion ac; /* hw -> logical axis */ 219 struct axis_conversion ac; /* hw -> logical axis */
223 220
224 u32 irq; /* IRQ number */ 221 u32 irq; /* IRQ number */