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()
244 static int st_lsm6dsx_shub_master_enable(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_master_enable() argument
248 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_master_enable()
252 /* enable acc sensor as trigger */ in st_lsm6dsx_shub_master_enable()
253 err = st_lsm6dsx_sensor_set_enable(sensor, enable); in st_lsm6dsx_shub_master_enable()
285 st_lsm6dsx_shub_read(struct st_lsm6dsx_sensor *sensor, u8 addr, in st_lsm6dsx_shub_read() argument
290 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_read()
301 config[0] = (sensor->ext_info.addr << 1) | 1; in st_lsm6dsx_shub_read()
310 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_read()
321 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_read()
337 st_lsm6dsx_shub_write(struct st_lsm6dsx_sensor *sensor, u8 addr, in st_lsm6dsx_shub_write() argument
341 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_write()
359 config[0] = sensor->ext_info.addr << 1; in st_lsm6dsx_shub_write()
373 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_write()
379 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_write()
388 st_lsm6dsx_shub_write_with_mask(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_write_with_mask() argument
394 err = st_lsm6dsx_shub_read(sensor, addr, &data, sizeof(data)); in st_lsm6dsx_shub_write_with_mask()
400 return st_lsm6dsx_shub_write(sensor, addr, &data, sizeof(data)); in st_lsm6dsx_shub_write_with_mask()
404 st_lsm6dsx_shub_get_odr_val(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_get_odr_val() argument
410 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_get_odr_val()
424 st_lsm6dsx_shub_set_odr(struct st_lsm6dsx_sensor *sensor, u32 odr) in st_lsm6dsx_shub_set_odr() argument
430 err = st_lsm6dsx_shub_get_odr_val(sensor, odr, &val); in st_lsm6dsx_shub_set_odr()
434 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_set_odr()
435 return st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_odr()
443 st_lsm6dsx_shub_config_channels(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_config_channels() argument
449 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_config_channels()
455 enable_mask = hw->enable_mask | BIT(sensor->id); in st_lsm6dsx_shub_config_channels()
457 enable_mask = hw->enable_mask & ~BIT(sensor->id); in st_lsm6dsx_shub_config_channels()
468 config[j] = (sensor->ext_info.addr << 1) | 1; in st_lsm6dsx_shub_config_channels()
480 int st_lsm6dsx_shub_set_enable(struct st_lsm6dsx_sensor *sensor, bool enable) in st_lsm6dsx_shub_set_enable() argument
485 err = st_lsm6dsx_shub_config_channels(sensor, enable); in st_lsm6dsx_shub_set_enable()
489 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_set_enable()
491 err = st_lsm6dsx_shub_set_odr(sensor, in st_lsm6dsx_shub_set_enable()
492 sensor->ext_info.slv_odr); in st_lsm6dsx_shub_set_enable()
496 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_enable()
508 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_set_enable()
515 return st_lsm6dsx_shub_master_enable(sensor, enable); in st_lsm6dsx_shub_set_enable()
519 st_lsm6dsx_shub_read_oneshot(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_read_oneshot() argument
526 err = st_lsm6dsx_shub_set_enable(sensor, true); in st_lsm6dsx_shub_read_oneshot()
530 delay = 1000000000 / sensor->ext_info.slv_odr; in st_lsm6dsx_shub_read_oneshot()
534 err = st_lsm6dsx_shub_read(sensor, ch->address, data, len); in st_lsm6dsx_shub_read_oneshot()
538 err = st_lsm6dsx_shub_set_enable(sensor, false); in st_lsm6dsx_shub_read_oneshot()
558 struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); in st_lsm6dsx_shub_read_raw() local
567 ret = st_lsm6dsx_shub_read_oneshot(sensor, ch, val); in st_lsm6dsx_shub_read_raw()
571 *val = sensor->ext_info.slv_odr / 1000; in st_lsm6dsx_shub_read_raw()
572 *val2 = (sensor->ext_info.slv_odr % 1000) * 1000; in st_lsm6dsx_shub_read_raw()
577 *val2 = sensor->gain; in st_lsm6dsx_shub_read_raw()
589 st_lsm6dsx_shub_set_full_scale(struct st_lsm6dsx_sensor *sensor, in st_lsm6dsx_shub_set_full_scale() argument
595 fs_table = &sensor->ext_info.settings->fs_table; in st_lsm6dsx_shub_set_full_scale()
607 err = st_lsm6dsx_shub_write_with_mask(sensor, fs_table->reg.addr, in st_lsm6dsx_shub_set_full_scale()
613 sensor->gain = gain; in st_lsm6dsx_shub_set_full_scale()
623 struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); in st_lsm6dsx_shub_write_raw() local
635 err = st_lsm6dsx_shub_get_odr_val(sensor, val, &data); in st_lsm6dsx_shub_write_raw()
637 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_shub_write_raw()
649 sensor->ext_info.slv_odr = val; in st_lsm6dsx_shub_write_raw()
650 sensor->odr = odr; in st_lsm6dsx_shub_write_raw()
655 err = st_lsm6dsx_shub_set_full_scale(sensor, val2); in st_lsm6dsx_shub_write_raw()
673 struct st_lsm6dsx_sensor *sensor = iio_priv(dev_get_drvdata(dev)); in st_lsm6dsx_shub_sampling_freq_avail() local
677 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_sampling_freq_avail()
693 struct st_lsm6dsx_sensor *sensor = iio_priv(dev_get_drvdata(dev)); in st_lsm6dsx_shub_scale_avail() local
697 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_scale_avail()
734 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_alloc_iiodev() local
737 iio_dev = devm_iio_device_alloc(hw->dev, sizeof(*sensor)); in st_lsm6dsx_shub_alloc_iiodev()
744 sensor = iio_priv(iio_dev); in st_lsm6dsx_shub_alloc_iiodev()
745 sensor->id = id; in st_lsm6dsx_shub_alloc_iiodev()
746 sensor->hw = hw; in st_lsm6dsx_shub_alloc_iiodev()
747 sensor->odr = hw->settings->odr_table[ref_id].odr_avl[0].milli_hz; in st_lsm6dsx_shub_alloc_iiodev()
748 sensor->ext_info.slv_odr = info->odr_table.odr_avl[0].milli_hz; in st_lsm6dsx_shub_alloc_iiodev()
749 sensor->gain = info->fs_table.fs_avl[0].gain; in st_lsm6dsx_shub_alloc_iiodev()
750 sensor->ext_info.settings = info; in st_lsm6dsx_shub_alloc_iiodev()
751 sensor->ext_info.addr = i2c_addr; in st_lsm6dsx_shub_alloc_iiodev()
752 sensor->watermark = 1; in st_lsm6dsx_shub_alloc_iiodev()
776 scnprintf(sensor->name, sizeof(sensor->name), "%s_magn", in st_lsm6dsx_shub_alloc_iiodev()
783 iio_dev->name = sensor->name; in st_lsm6dsx_shub_alloc_iiodev()
788 static int st_lsm6dsx_shub_init_device(struct st_lsm6dsx_sensor *sensor) in st_lsm6dsx_shub_init_device() argument
793 settings = sensor->ext_info.settings; in st_lsm6dsx_shub_init_device()
795 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
803 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
811 err = st_lsm6dsx_shub_write_with_mask(sensor, in st_lsm6dsx_shub_init_device()
828 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_check_wai() local
832 sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]); in st_lsm6dsx_shub_check_wai()
854 err = st_lsm6dsx_shub_master_enable(sensor, true); in st_lsm6dsx_shub_check_wai()
862 st_lsm6dsx_shub_master_enable(sensor, false); in st_lsm6dsx_shub_check_wai()
890 struct st_lsm6dsx_sensor *sensor; in st_lsm6dsx_shub_probe() local
908 sensor = iio_priv(hw->iio_devs[id]); in st_lsm6dsx_shub_probe()
909 err = st_lsm6dsx_shub_init_device(sensor); in st_lsm6dsx_shub_probe()