Lines Matching +full:hw +full:- +full:device +full:- +full:address

1 /* SPDX-License-Identifier: GPL-2.0-only */
14 #include <linux/device.h>
27 #define ST_LSM6DS3TRC_DEV_NAME "lsm6ds3tr-c"
29 #define ST_LSM9DS1_DEV_NAME "lsm9ds1-imu"
84 .address = addr, \
105 .address = addr, \
163 * struct st_lsm6dsx_fifo_ops - ST IMU FIFO settings
173 int (*read_fifo)(struct st_lsm6dsx_hw *hw);
187 * struct st_lsm6dsx_hw_ts_settings - ST IMU hw timer settings
188 * @timer_en: Hw timer enable register info (addr + mask).
189 * @hr_timer: Hw timer resolution register info (addr + mask).
190 * @fifo_en: Hw timer FIFO enable register info (addr + mask).
191 * @decimator: Hw timer FIFO decimator register info (addr + mask).
203 * struct st_lsm6dsx_shub_settings - ST IMU hw i2c controller settings
206 * @pullup_en: i2c controller pull-up register info (addr + mask).
212 * @slv0_addr: slave0 address in secondary page.
213 * @dw_slv0_addr: slave0 write register address in secondary page.
258 * struct st_lsm6dsx_ext_dev_settings - i2c controller slave settings
259 * @i2c_addr: I2c slave address list.
260 * @wai: Wai address info.
294 * struct st_lsm6dsx_settings - ST IMU sensor settings
295 * @reset: register address for reset.
296 * @boot: register address for boot.
297 * @bdu: register address for Block Data Update.
298 * @id: List of hw id/device name supported by the driver configuration.
299 * @channels: IIO channels supported by the device.
301 * @drdy_mask: register info for data-ready mask (addr + mask).
302 * @odr_table: Hw sensors odr table (Hz + val).
304 * @fs_table: Hw sensors gain table (gain + val).
307 * @fifo_ops: Sensor hw FIFO parameters.
308 * @ts_settings: Hw timer related settings.
361 * struct st_lsm6dsx_sensor - ST IMU sensor instance
364 * @hw: Pointer to instance of struct st_lsm6dsx_hw.
371 * @ts_ref: Sensor timestamp reference for hw one.
377 struct st_lsm6dsx_hw *hw; member
396 * struct st_lsm6dsx_hw - ST IMU MEMS hw instance
397 * @dev: Pointer to instance of struct device (I2C or SPI).
398 * @regmap: Register map of the device.
399 * @irq: Device interrupt line (I2C or SPI).
400 * @fifo_lock: Mutex to prevent concurrent access to the hw FIFO.
405 * @fifo_mask: Enabled hw FIFO bitmask.
406 * @ts_gain: Hw timestamp rate after internal calibration.
409 * @buff: Device read buffer.
419 struct device *dev;
465 int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
469 int st_lsm6dsx_fifo_setup(struct st_lsm6dsx_hw *hw);
474 int st_lsm6dsx_flush_fifo(struct st_lsm6dsx_hw *hw);
475 int st_lsm6dsx_resume_fifo(struct st_lsm6dsx_hw *hw);
476 int st_lsm6dsx_read_fifo(struct st_lsm6dsx_hw *hw);
477 int st_lsm6dsx_read_tagged_fifo(struct st_lsm6dsx_hw *hw);
479 int st_lsm6dsx_shub_probe(struct st_lsm6dsx_hw *hw, const char *name);
481 int st_lsm6dsx_shub_read_output(struct st_lsm6dsx_hw *hw, u8 *data, int len);
482 int st_lsm6dsx_set_page(struct st_lsm6dsx_hw *hw, bool enable);
485 st_lsm6dsx_update_bits_locked(struct st_lsm6dsx_hw *hw, unsigned int addr, in st_lsm6dsx_update_bits_locked() argument
490 mutex_lock(&hw->page_lock); in st_lsm6dsx_update_bits_locked()
491 err = regmap_update_bits(hw->regmap, addr, mask, val); in st_lsm6dsx_update_bits_locked()
492 mutex_unlock(&hw->page_lock); in st_lsm6dsx_update_bits_locked()
498 st_lsm6dsx_read_locked(struct st_lsm6dsx_hw *hw, unsigned int addr, in st_lsm6dsx_read_locked() argument
503 mutex_lock(&hw->page_lock); in st_lsm6dsx_read_locked()
504 err = regmap_bulk_read(hw->regmap, addr, val, len); in st_lsm6dsx_read_locked()
505 mutex_unlock(&hw->page_lock); in st_lsm6dsx_read_locked()
511 st_lsm6dsx_write_locked(struct st_lsm6dsx_hw *hw, unsigned int addr, in st_lsm6dsx_write_locked() argument
516 mutex_lock(&hw->page_lock); in st_lsm6dsx_write_locked()
517 err = regmap_write(hw->regmap, addr, val); in st_lsm6dsx_write_locked()
518 mutex_unlock(&hw->page_lock); in st_lsm6dsx_write_locked()
528 struct st_lsm6dsx_hw *hw = sensor->hw; in st_lsm6dsx_get_mount_matrix() local
530 return &hw->orientation; in st_lsm6dsx_get_mount_matrix()
536 if (sensor->id == ST_LSM6DSX_ID_EXT0 || in st_lsm6dsx_device_set_enable()
537 sensor->id == ST_LSM6DSX_ID_EXT1 || in st_lsm6dsx_device_set_enable()
538 sensor->id == ST_LSM6DSX_ID_EXT2) in st_lsm6dsx_device_set_enable()