diff options
-rw-r--r-- | drivers/hwmon/lis3lv02d.c | 32 | ||||
-rw-r--r-- | drivers/hwmon/lis3lv02d.h | 3 |
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 | |||
360 | static 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 | |||
366 | int lis3lv02d_joystick_enable(void) | 359 | int 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 | ||
439 | static 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 | |||
445 | static 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 | |||
453 | static ssize_t lis3lv02d_rate_show(struct device *dev, | 430 | static 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 | ||
459 | static DEVICE_ATTR(selftest, S_IRUSR, lis3lv02d_selftest_show, NULL); | 436 | static DEVICE_ATTR(selftest, S_IRUSR, lis3lv02d_selftest_show, NULL); |
460 | static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL); | 437 | static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL); |
461 | static DEVICE_ATTR(calibrate, S_IRUGO|S_IWUSR, lis3lv02d_calibrate_show, | ||
462 | lis3lv02d_calibrate_store); | ||
463 | static DEVICE_ATTR(rate, S_IRUGO, lis3lv02d_rate_show, NULL); | 438 | static DEVICE_ATTR(rate, S_IRUGO, lis3lv02d_rate_show, NULL); |
464 | 439 | ||
465 | static struct attribute *lis3lv02d_attributes[] = { | 440 | static 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 */ |