Lines Matching full:sensor

5  * slave devices using accelerometer sensor as trigger for i2c
158 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_wait_complete() local
161 sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]); in st_lsm6dsx_shub_wait_complete()
162 odr = (hw->enable_mask & BIT(ST_LSM6DSX_ID_ACC)) ? sensor->odr : 12500; in st_lsm6dsx_shub_wait_complete()
242 static int st_lsm6dsx_shub_master_enable(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_master_enable() argument
246 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_master_enable()
250 /* enable acc sensor as trigger */ in st_lsm6dsx_shub_master_enable()
251 err = st_lsm6dsx_sensor_set_enable(sensor, enable); in st_lsm6dsx_shub_master_enable()
283 st_lsm6dsx_shub_read(struct st_lsm6dsx_sensor *sensor, u8 addr, in st_lsm6dsx_shub_read() argument
288 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_read()
299 config[0] = (sensor->ext_info.addr << 1) | 1; in st_lsm6dsx_shub_read()
308 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_read()
319 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_read()
335 st_lsm6dsx_shub_write(struct st_lsm6dsx_sensor *sensor, u8 addr, in st_lsm6dsx_shub_write() argument
339 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_write()
357 config[0] = sensor->ext_info.addr << 1; in st_lsm6dsx_shub_write()
371 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_write()
377 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_write()
386 st_lsm6dsx_shub_write_with_mask(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_write_with_mask() argument
392 err = st_lsm6dsx_shub_read(sensor, addr, &data, sizeof(data)); in st_lsm6dsx_shub_write_with_mask()
398 return st_lsm6dsx_shub_write(sensor, addr, &data, sizeof(data)); in st_lsm6dsx_shub_write_with_mask()
402 st_lsm6dsx_shub_get_odr_val(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_get_odr_val() argument
408 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_get_odr_val()
422 st_lsm6dsx_shub_set_odr(struct st_lsm6dsx_sensor *sensor, u32 odr) in st_lsm6dsx_shub_set_odr() argument
428 err = st_lsm6dsx_shub_get_odr_val(sensor, odr, &val); in st_lsm6dsx_shub_set_odr()
432 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_set_odr()
433 return st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_odr()
441 st_lsm6dsx_shub_config_channels(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_config_channels() argument
447 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_config_channels()
453 enable_mask = hw->enable_mask | BIT(sensor->id); in st_lsm6dsx_shub_config_channels()
455 enable_mask = hw->enable_mask & ~BIT(sensor->id); in st_lsm6dsx_shub_config_channels()
466 config[j] = (sensor->ext_info.addr << 1) | 1; in st_lsm6dsx_shub_config_channels()
478 int st_lsm6dsx_shub_set_enable(struct st_lsm6dsx_sensor *sensor, bool enable) in st_lsm6dsx_shub_set_enable() argument
483 err = st_lsm6dsx_shub_config_channels(sensor, enable); in st_lsm6dsx_shub_set_enable()
487 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_set_enable()
489 err = st_lsm6dsx_shub_set_odr(sensor, in st_lsm6dsx_shub_set_enable()
490 sensor->ext_info.slv_odr); in st_lsm6dsx_shub_set_enable()
494 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_enable()
506 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_enable()
513 return st_lsm6dsx_shub_master_enable(sensor, enable); in st_lsm6dsx_shub_set_enable()
517 st_lsm6dsx_shub_read_oneshot(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_read_oneshot() argument
524 err = st_lsm6dsx_shub_set_enable(sensor, true); in st_lsm6dsx_shub_read_oneshot()
528 delay = 1000000000 / sensor->ext_info.slv_odr; in st_lsm6dsx_shub_read_oneshot()
532 err = st_lsm6dsx_shub_read(sensor, ch->address, data, len); in st_lsm6dsx_shub_read_oneshot()
536 err = st_lsm6dsx_shub_set_enable(sensor, false); in st_lsm6dsx_shub_read_oneshot()
556 struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); in st_lsm6dsx_shub_read_raw() local
564 ret = st_lsm6dsx_shub_read_oneshot(sensor, ch, val); in st_lsm6dsx_shub_read_raw()
568 *val = sensor->ext_info.slv_odr / 1000; in st_lsm6dsx_shub_read_raw()
569 *val2 = (sensor->ext_info.slv_odr % 1000) * 1000; in st_lsm6dsx_shub_read_raw()
574 *val2 = sensor->gain; in st_lsm6dsx_shub_read_raw()
586 st_lsm6dsx_shub_set_full_scale(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_set_full_scale() argument
592 fs_table = &sensor->ext_info.settings->fs_table; in st_lsm6dsx_shub_set_full_scale()
604 err = st_lsm6dsx_shub_write_with_mask(sensor, fs_table->reg.addr, in st_lsm6dsx_shub_set_full_scale()
610 sensor->gain = gain; in st_lsm6dsx_shub_set_full_scale()
620 struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); in __st_lsm6dsx_shub_write_raw() local
625 struct st_lsm6dsx_hw *hw = sensor->hw; in __st_lsm6dsx_shub_write_raw()
632 err = st_lsm6dsx_shub_get_odr_val(sensor, val, &data); in __st_lsm6dsx_shub_write_raw()
641 sensor->ext_info.slv_odr = val; in __st_lsm6dsx_shub_write_raw()
642 sensor->odr = odr; in __st_lsm6dsx_shub_write_raw()
646 return st_lsm6dsx_shub_set_full_scale(sensor, val2); in __st_lsm6dsx_shub_write_raw()
674 struct st_lsm6dsx_sensor *sensor = iio_priv(dev_get_drvdata(dev)); in st_lsm6dsx_shub_sampling_freq_avail() local
678 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_sampling_freq_avail()
694 struct st_lsm6dsx_sensor *sensor = iio_priv(dev_get_drvdata(dev)); in st_lsm6dsx_shub_scale_avail() local
698 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_scale_avail()
735 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_alloc_iiodev() local
738 iio_dev = devm_iio_device_alloc(hw->dev, sizeof(*sensor)); in st_lsm6dsx_shub_alloc_iiodev()
745 sensor = iio_priv(iio_dev); in st_lsm6dsx_shub_alloc_iiodev()
746 sensor->id = id; in st_lsm6dsx_shub_alloc_iiodev()
747 sensor->hw = hw; in st_lsm6dsx_shub_alloc_iiodev()
748 sensor->odr = hw->settings->odr_table[ref_id].odr_avl[0].milli_hz; in st_lsm6dsx_shub_alloc_iiodev()
749 sensor->ext_info.slv_odr = info->odr_table.odr_avl[0].milli_hz; in st_lsm6dsx_shub_alloc_iiodev()
750 sensor->gain = info->fs_table.fs_avl[0].gain; in st_lsm6dsx_shub_alloc_iiodev()
751 sensor->ext_info.settings = info; in st_lsm6dsx_shub_alloc_iiodev()
752 sensor->ext_info.addr = i2c_addr; in st_lsm6dsx_shub_alloc_iiodev()
753 sensor->watermark = 1; in st_lsm6dsx_shub_alloc_iiodev()
777 scnprintf(sensor->name, sizeof(sensor->name), "%s_magn", in st_lsm6dsx_shub_alloc_iiodev()
784 iio_dev->name = sensor->name; in st_lsm6dsx_shub_alloc_iiodev()
789 static int st_lsm6dsx_shub_init_device(struct st_lsm6dsx_sensor *sensor) in st_lsm6dsx_shub_init_device() argument
794 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_init_device()
796 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
804 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
812 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
829 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_check_wai() local
833 sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]); in st_lsm6dsx_shub_check_wai()
855 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_check_wai()
863 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_check_wai()
891 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_probe() local
909 sensor = iio_priv(hw->iio_devs[id]); in st_lsm6dsx_shub_probe()
910 err = st_lsm6dsx_shub_init_device(sensor); in st_lsm6dsx_shub_probe()