Lines Matching full:sensor

32 #include <linux/sensor-dev.h>
109 /****************operate according to sensor chip:start************/
113 struct sensor_private_data *sensor = in sensor_active() local
118 sensor->ops->ctrl_data = AK8963_MODE_SNG_MEASURE; in sensor_active()
120 sensor->ops->ctrl_data = AK8963_MODE_POWERDOWN; in sensor_active()
122 result = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data); in sensor_active()
124 pr_err("%s:fail to active sensor\n", __func__); in sensor_active()
131 struct sensor_private_data *sensor = in sensor_init() local
138 result = sensor->ops->active(client, 0, 0); in sensor_init()
144 sensor->status_cur = SENSOR_OFF; in sensor_init()
148 pr_err("%s:info=0x%x,it is not %s\n", __func__, info, sensor->ops->name); in sensor_init()
163 struct sensor_private_data *sensor = in compass_report_value() local
173 if (atomic_read(&sensor->flags.mv_flag) && (g_akm_rbuf[0] & MAG_DATA_READY)) { in compass_report_value()
178 if ((sensor->axis.x == g_akm_rbuf[5]) && in compass_report_value()
179 (sensor->axis.y == g_akm_rbuf[6]) && (sensor->axis.z == g_akm_rbuf[7])) { in compass_report_value()
182 sensor->axis.x += 1; in compass_report_value()
183 sensor->axis.y += 1; in compass_report_value()
184 sensor->axis.z += 1; 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 = g_akm_rbuf[5]; in compass_report_value()
193 sensor->axis.y = g_akm_rbuf[6]; in compass_report_value()
194 sensor->axis.z = g_akm_rbuf[7]; in compass_report_value()
196 input_report_abs(sensor->input_dev, ABS_HAT0X, sensor->axis.x); in compass_report_value()
197 input_report_abs(sensor->input_dev, ABS_HAT0Y, sensor->axis.y); in compass_report_value()
198 input_report_abs(sensor->input_dev, ABS_BRAKE, sensor->axis.z); in compass_report_value()
199 input_report_abs(sensor->input_dev, ABS_HAT1X, g_akm_rbuf[8]); in compass_report_value()
201 input_sync(sensor->input_dev); in compass_report_value()
206 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(client); in sensor_report_value() local
213 mutex_lock(&sensor->data_mutex); in sensor_report_value()
215 mutex_unlock(&sensor->data_mutex); in sensor_report_value()
217 if (sensor->ops->read_len < 8) { in sensor_report_value()
218 pr_err("%s:length is error,len=%d\n", __func__, sensor->ops->read_len); in sensor_report_value()
226 *buffer = sensor->ops->read_reg; in sensor_report_value()
227 ret = sensor_rx_data(client, buffer, sensor->ops->read_len); in sensor_report_value()
263 * disturbance; it indicates, the sensor data is incorrect and should in sensor_report_value()
273 mutex_lock(&sensor->data_mutex); in sensor_report_value()
274 memcpy(sensor->sensor_data, buffer, sensor->ops->read_len); in sensor_report_value()
275 mutex_unlock(&sensor->data_mutex); in sensor_report_value()
277 if ((sensor->pdata->irq_enable) && (sensor->ops->int_status_reg >= 0)) in sensor_report_value()
278 value = sensor_read_reg(client, sensor->ops->int_status_reg); in sensor_report_value()
280 ret = sensor_write_reg(client, sensor->ops->ctrl_reg, sensor->ops->ctrl_data); in sensor_report_value()
282 pr_err("%s:fail to set ctrl_data:0x%x\n", __func__, sensor->ops->ctrl_data); in sensor_report_value()
313 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_akm_set_mode() local
320 if (sensor->status_cur == SENSOR_OFF) { in compass_akm_set_mode()
321 sensor->stop_work = 0; in compass_akm_set_mode()
322 sensor->status_cur = SENSOR_ON; in compass_akm_set_mode()
324 schedule_delayed_work(&sensor->delaywork, msecs_to_jiffies(sensor->pdata->poll_delay_ms)); in compass_akm_set_mode()
329 if (sensor->status_cur == SENSOR_ON) { in compass_akm_set_mode()
330 sensor->stop_work = 1; in compass_akm_set_mode()
331 cancel_delayed_work_sync(&sensor->delaywork); in compass_akm_set_mode()
334 sensor->status_cur = SENSOR_OFF; in compass_akm_set_mode()
341 result = sensor_write_reg(client, sensor->ops->ctrl_reg, mode); in compass_akm_set_mode()
346 result = sensor_write_reg(client, sensor->ops->ctrl_reg, mode); in compass_akm_set_mode()
351 result = sensor_write_reg(client, sensor->ops->ctrl_reg, mode); in compass_akm_set_mode()
357 result = sensor_write_reg(client, sensor->ops->ctrl_reg, AK8963_MODE_POWERDOWN); in compass_akm_set_mode()
373 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_akm_reset() local
376 if (sensor->pdata->reset_pin > 0) { in compass_akm_reset()
377 gpio_direction_output(sensor->pdata->reset_pin, GPIO_LOW); in compass_akm_reset()
379 gpio_direction_output(sensor->pdata->reset_pin, GPIO_HIGH); in compass_akm_reset()
394 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_akm_get_openstatus() local
396 wait_event_interruptible(sensor->flags.open_wq, (atomic_read(&sensor->flags.open_flag) != 0)); in compass_akm_get_openstatus()
398 return atomic_read(&sensor->flags.open_flag); in compass_akm_get_openstatus()
403 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_akm_get_closestatus() local
405 wait_event_interruptible(sensor->flags.open_wq, (atomic_read(&sensor->flags.open_flag) <= 0)); in compass_akm_get_closestatus()
407 return atomic_read(&sensor->flags.open_flag); in compass_akm_get_closestatus()
413 struct sensor_private_data *sensor = (struct sensor_private_data *)i2c_get_clientdata(this_client); in compass_dev_ioctl() local
477 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
479 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
493 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
495 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
502 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
504 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
509 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
513 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
516 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
518 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
524 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
528 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
531 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
532 if (sensor->ops->ctrl_data != mode) { in compass_dev_ioctl()
536 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
540 sensor->ops->ctrl_data = mode; in compass_dev_ioctl()
542 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
545 mutex_lock(&sensor->data_mutex); in compass_dev_ioctl()
546 memcpy(compass_data, sensor->sensor_data, SENSOR_DATA_SIZE); in compass_dev_ioctl()
547 mutex_unlock(&sensor->data_mutex); in compass_dev_ioctl()
550 mutex_lock(&sensor->data_mutex); in compass_dev_ioctl()
552 mutex_unlock(&sensor->data_mutex); in compass_dev_ioctl()
561 mutex_lock(&sensor->operation_mutex); in compass_dev_ioctl()
562 delay[0] = sensor->flags.delay; in compass_dev_ioctl()
563 delay[1] = sensor->flags.delay; in compass_dev_ioctl()
564 delay[2] = sensor->flags.delay; in compass_dev_ioctl()
565 mutex_unlock(&sensor->operation_mutex); in compass_dev_ioctl()
576 layout = sensor->pdata->layout; in compass_dev_ioctl()
680 /****************operate according to sensor chip:end************/