Skip to content

Commit

Permalink
lis3lv02d: remove calibaration functionality
Browse files Browse the repository at this point in the history
Chip is calibrated by the manufacturer.  There is no need to calibarate it
at driver level.  If the chip is used as a joystick, calibaration can be
done using joystick device calibration mechanism.

Signed-off-by: Samu Onkalo <[email protected]>
Acked-by: Éric Piel <[email protected]>
Cc: Pavel Machek <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Samu Onkalo authored and torvalds committed Dec 15, 2009
1 parent 2db4a76 commit 5399541
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 32 deletions.
32 changes: 3 additions & 29 deletions drivers/hwmon/lis3lv02d.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,19 +350,12 @@ static void lis3lv02d_joystick_poll(struct input_polled_dev *pidev)
int x, y, z;

lis3lv02d_get_xyz(&lis3_dev, &x, &y, &z);
input_report_abs(pidev->input, ABS_X, x - lis3_dev.xcalib);
input_report_abs(pidev->input, ABS_Y, y - lis3_dev.ycalib);
input_report_abs(pidev->input, ABS_Z, z - lis3_dev.zcalib);
input_report_abs(pidev->input, ABS_X, x);
input_report_abs(pidev->input, ABS_Y, y);
input_report_abs(pidev->input, ABS_Z, z);
input_sync(pidev->input);
}


static inline void lis3lv02d_calibrate_joystick(void)
{
lis3lv02d_get_xyz(&lis3_dev,
&lis3_dev.xcalib, &lis3_dev.ycalib, &lis3_dev.zcalib);
}

int lis3lv02d_joystick_enable(void)
{
struct input_dev *input_dev;
Expand All @@ -379,8 +372,6 @@ int lis3lv02d_joystick_enable(void)
lis3_dev.idev->poll_interval = MDPS_POLL_INTERVAL;
input_dev = lis3_dev.idev->input;

lis3lv02d_calibrate_joystick();

input_dev->name = "ST LIS3LV02DL Accelerometer";
input_dev->phys = DRIVER_NAME "/input0";
input_dev->id.bustype = BUS_HOST;
Expand Down Expand Up @@ -436,20 +427,6 @@ static ssize_t lis3lv02d_position_show(struct device *dev,
return sprintf(buf, "(%d,%d,%d)\n", x, y, z);
}

static ssize_t lis3lv02d_calibrate_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return sprintf(buf, "(%d,%d,%d)\n", lis3_dev.xcalib, lis3_dev.ycalib, lis3_dev.zcalib);
}

static ssize_t lis3lv02d_calibrate_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
lis3lv02d_calibrate_joystick();
return count;
}

static ssize_t lis3lv02d_rate_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
Expand All @@ -458,14 +435,11 @@ static ssize_t lis3lv02d_rate_show(struct device *dev,

static DEVICE_ATTR(selftest, S_IRUSR, lis3lv02d_selftest_show, NULL);
static DEVICE_ATTR(position, S_IRUGO, lis3lv02d_position_show, NULL);
static DEVICE_ATTR(calibrate, S_IRUGO|S_IWUSR, lis3lv02d_calibrate_show,
lis3lv02d_calibrate_store);
static DEVICE_ATTR(rate, S_IRUGO, lis3lv02d_rate_show, NULL);

static struct attribute *lis3lv02d_attributes[] = {
&dev_attr_selftest.attr,
&dev_attr_position.attr,
&dev_attr_calibrate.attr,
&dev_attr_rate.attr,
NULL
};
Expand Down
3 changes: 0 additions & 3 deletions drivers/hwmon/lis3lv02d.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,6 @@ struct lis3lv02d {
struct input_polled_dev *idev; /* input device */
struct platform_device *pdev; /* platform device */
atomic_t count; /* interrupt count after last read */
int xcalib; /* calibrated null value for x */
int ycalib; /* calibrated null value for y */
int zcalib; /* calibrated null value for z */
struct axis_conversion ac; /* hw -> logical axis */

u32 irq; /* IRQ number */
Expand Down

0 comments on commit 5399541

Please sign in to comment.