Lines Matching refs:lis3_dev
72 struct lis3lv02d lis3_dev = {
73 .misc_wait = __WAIT_QUEUE_HEAD_INITIALIZER(lis3_dev.misc_wait),
76 EXPORT_SYMBOL_GPL(lis3_dev);
148 lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
149 ctrl &= lis3_dev.odr_mask;
150 shift = ffs(lis3_dev.odr_mask) - 1;
151 return lis3_dev.odrs[(ctrl >> shift)];
159 lis3_dev.read(&lis3_dev, CTRL_REG1, &ctrl);
160 ctrl &= ~lis3_dev.odr_mask;
161 len = 1 << hweight_long(lis3_dev.odr_mask); /* # of possible values */
162 shift = ffs(lis3_dev.odr_mask) - 1;
165 if (lis3_dev.odrs[i] == rate) {
166 lis3_dev.write(&lis3_dev, CTRL_REG1,
181 if (lis3_dev.whoami == WAI_12B)
256 mutex_lock(&lis3_dev.mutex);
257 lis3lv02d_get_xyz(&lis3_dev, &x, &y, &z);
262 mutex_unlock(&lis3_dev.mutex);
267 if (!test_bit(0, &lis3_dev.misc_opened))
275 atomic_inc(&lis3_dev.count);
277 wake_up_interruptible(&lis3_dev.misc_wait);
278 kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN);
280 if (lis3_dev.pdata && lis3_dev.whoami == WAI_8B && lis3_dev.idev &&
281 lis3_dev.idev->input->users)
325 lis3lv02d_joystick_poll(lis3_dev.idev);
356 if (test_and_set_bit(0, &lis3_dev.misc_opened))
359 atomic_set(&lis3_dev.count, 0);
365 fasync_helper(-1, file, 0, &lis3_dev.async_queue);
366 clear_bit(0, &lis3_dev.misc_opened); /* release the device */
381 add_wait_queue(&lis3_dev.misc_wait, &wait);
384 data = atomic_xchg(&lis3_dev.count, 0);
414 remove_wait_queue(&lis3_dev.misc_wait, &wait);
421 poll_wait(file, &lis3_dev.misc_wait, wait);
422 if (atomic_read(&lis3_dev.count))
429 return fasync_helper(fd, file, on, &lis3_dev.async_queue);
455 if (lis3_dev.idev)
458 lis3_dev.idev = input_allocate_polled_device();
459 if (!lis3_dev.idev)
462 lis3_dev.idev->poll = lis3lv02d_joystick_poll;
463 lis3_dev.idev->poll_interval = MDPS_POLL_INTERVAL;
464 lis3_dev.idev->poll_interval_min = MDPS_POLL_MIN;
465 lis3_dev.idev->poll_interval_max = MDPS_POLL_MAX;
466 input_dev = lis3_dev.idev->input;
472 input_dev->dev.parent = &lis3_dev.pdev->dev;
475 max_val = (lis3_dev.mdps_max_val * lis3_dev.scale) / LIS3_ACCURACY;
476 fuzz = (LIS3_DEFAULT_FUZZ * lis3_dev.scale) / LIS3_ACCURACY;
477 flat = (LIS3_DEFAULT_FLAT * lis3_dev.scale) / LIS3_ACCURACY;
482 lis3_dev.mapped_btns[0] = lis3lv02d_get_axis(abs(lis3_dev.ac.x), btns);
483 lis3_dev.mapped_btns[1] = lis3lv02d_get_axis(abs(lis3_dev.ac.y), btns);
484 lis3_dev.mapped_btns[2] = lis3lv02d_get_axis(abs(lis3_dev.ac.z), btns);
486 err = input_register_polled_device(lis3_dev.idev);
488 input_free_polled_device(lis3_dev.idev);
489 lis3_dev.idev = NULL;
498 if (lis3_dev.irq)
499 free_irq(lis3_dev.irq, &lis3_dev);
500 if (lis3_dev.pdata && lis3_dev.pdata->irq2)
501 free_irq(lis3_dev.pdata->irq2, &lis3_dev);
503 if (!lis3_dev.idev)
506 if (lis3_dev.irq)
508 input_unregister_polled_device(lis3_dev.idev);
509 input_free_polled_device(lis3_dev.idev);
510 lis3_dev.idev = NULL;
521 result = lis3lv02d_selftest(&lis3_dev, values);
531 mutex_lock(&lis3_dev.mutex);
532 lis3lv02d_get_xyz(&lis3_dev, &x, &y, &z);
533 mutex_unlock(&lis3_dev.mutex);
609 struct input_dev *input_dev = lis3_dev.idev->input;
640 DRIVER_NAME, &lis3_dev);
729 DRIVER_NAME, &lis3_dev);