Lines Matching full:sensor

25 #include <linux/sensor-dev.h>
101 /****************operate according to sensor chip:start************/
104 struct sensor_private_data *sensor = in sensor_active() local
109 sensor->ops->ctrl_data = AK09918_MODE_SNG_MEASURE; in sensor_active()
111 sensor->ops->ctrl_data = AK09918_MODE_POWERDOWN; in sensor_active()
114 sensor->ops->ctrl_reg, sensor->ops->ctrl_data); in sensor_active()
117 "%s: fail to active sensor(%d)\n", __func__, result); in sensor_active()
124 struct sensor_private_data *sensor = in sensor_init() local
130 result = sensor->ops->active(client, 0, 0); in sensor_init()
137 sensor->status_cur = SENSOR_OFF; in sensor_init()
168 struct sensor_private_data *sensor = in compass_report_value() local
178 if (atomic_read(&sensor->flags.mv_flag) && (g_akm_rbuf[0] & MAG_DATA_READY)) { in compass_report_value()
183 if ((sensor->axis.x == g_akm_rbuf[5]) && in compass_report_value()
184 (sensor->axis.y == g_akm_rbuf[6]) && (sensor->axis.z == g_akm_rbuf[7])) { in compass_report_value()
187 sensor->axis.x += 1; in compass_report_value()
188 sensor->axis.y += 1; in compass_report_value()
189 sensor->axis.z += 1; in compass_report_value()
192 sensor->axis.x -= 1; in compass_report_value()
193 sensor->axis.y -= 1; in compass_report_value()
194 sensor->axis.z -= 1; in compass_report_value()
197 sensor->axis.x = g_akm_rbuf[5]; in compass_report_value()
198 sensor->axis.y = g_akm_rbuf[6]; in compass_report_value()
199 sensor->axis.z = g_akm_rbuf[7]; in compass_report_value()
201 input_report_abs(sensor->input_dev, ABS_HAT0X, sensor->axis.x); in compass_report_value()
202 input_report_abs(sensor->input_dev, ABS_HAT0Y, sensor->axis.y); in compass_report_value()
203 input_report_abs(sensor->input_dev, ABS_BRAKE, sensor->axis.z); in compass_report_value()
204 input_report_abs(sensor->input_dev, ABS_HAT1X, g_akm_rbuf[8]); in compass_report_value()
206 input_sync(sensor->input_dev); in compass_report_value()
211 struct sensor_private_data *sensor = in sensor_report_value() local
219 mutex_lock(&sensor->data_mutex); in sensor_report_value()
221 mutex_unlock(&sensor->data_mutex); in sensor_report_value()
223 if (sensor->ops->read_len < SENSOR_DATA_SIZE) { in sensor_report_value()
225 __func__, sensor->ops->read_len); in sensor_report_value()
230 *buffer = sensor->ops->read_reg; in sensor_report_value()
231 ret = sensor_rx_data(client, buffer, sensor->ops->read_len); in sensor_report_value()
251 mutex_lock(&sensor->data_mutex); in sensor_report_value()
252 memcpy(sensor->sensor_data, buffer, sensor->ops->read_len); in sensor_report_value()
253 mutex_unlock(&sensor->data_mutex); in sensor_report_value()
255 if ((sensor->pdata->irq_enable) && (sensor->ops->int_status_reg >= 0)) in sensor_report_value()
256 value = sensor_read_reg(client, sensor->ops->int_status_reg); in sensor_report_value()
259 ret = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data); in sensor_report_value()
293 struct sensor_private_data *sensor = in compass_akm_set_mode() local
301 if (sensor->status_cur == SENSOR_OFF) { in compass_akm_set_mode()
302 sensor->stop_work = 0; in compass_akm_set_mode()
303 sensor->status_cur = SENSOR_ON; in compass_akm_set_mode()
305 schedule_delayed_work(&sensor->delaywork, 0); in compass_akm_set_mode()
310 if (sensor->status_cur == SENSOR_ON) { in compass_akm_set_mode()
311 sensor->stop_work = 1; in compass_akm_set_mode()
312 cancel_delayed_work_sync(&sensor->delaywork); in compass_akm_set_mode()
315 sensor->status_cur = SENSOR_OFF; in compass_akm_set_mode()
322 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK09918_MODE_SNG_MEASURE); in compass_akm_set_mode()
328 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK09918_MODE_SELF_TEST); in compass_akm_set_mode()
334 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK09918_MODE_FUSE_ACCESS); in compass_akm_set_mode()
341 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK09918_MODE_POWERDOWN); in compass_akm_set_mode()
357 struct sensor_private_data *sensor = in compass_akm_reset() local
361 if (sensor->pdata->reset_pin > 0) { in compass_akm_reset()
362 gpio_direction_output(sensor->pdata->reset_pin, GPIO_LOW); in compass_akm_reset()
364 gpio_direction_output(sensor->pdata->reset_pin, GPIO_HIGH); in compass_akm_reset()
367 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK09918_MODE_SNG_MEASURE); in compass_akm_reset()
380 struct sensor_private_data *sensor = in compass_akm_get_openstatus() local
383 wait_event_interruptible(sensor->flags.open_wq, (atomic_read(&sensor->flags.open_flag) != 0)); in compass_akm_get_openstatus()
385 return atomic_read(&sensor->flags.open_flag); in compass_akm_get_openstatus()
390 struct sensor_private_data *sensor = in compass_akm_get_closestatus() local
393 wait_event_interruptible(sensor->flags.open_wq, (atomic_read(&sensor->flags.open_flag) <= 0)); in compass_akm_get_closestatus()
395 return atomic_read(&sensor->flags.open_flag); in compass_akm_get_closestatus()
401 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_dev_ioctl() local
462 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
464 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
469 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
475 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
478 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
480 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
487 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
493 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
496 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
497 if (sensor->ops->ctrl_data != mode) { in compass_dev_ioctl()
503 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
507 sensor->ops->ctrl_data = mode; in compass_dev_ioctl()
509 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
512 mutex_lock(&sensor->data_mutex); in compass_dev_ioctl()
513 memcpy(compass_data, sensor->sensor_data, SENSOR_DATA_SIZE); in compass_dev_ioctl()
514 mutex_unlock(&sensor->data_mutex); in compass_dev_ioctl()
517 mutex_lock(&sensor->data_mutex); in compass_dev_ioctl()
519 mutex_unlock(&sensor->data_mutex); in compass_dev_ioctl()
528 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
529 delay[0] = sensor->flags.delay; in compass_dev_ioctl()
530 delay[1] = sensor->flags.delay; in compass_dev_ioctl()
531 delay[2] = sensor->flags.delay; in compass_dev_ioctl()
532 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
544 if ((sensor->pdata->layout >= 1) && (sensor->pdata->layout <= 8)) in compass_dev_ioctl()
545 layout = sensor->pdata->layout; in compass_dev_ioctl()
658 /****************operate according to sensor chip:end************/