Lines Matching refs:msa311

411 static int msa311_get_odr(struct msa311_priv *msa311, unsigned int *odr)  in msa311_get_odr()  argument
415 err = regmap_field_read(msa311->fields[F_ODR], odr); in msa311_get_odr()
451 static int msa311_set_odr(struct msa311_priv *msa311, unsigned int odr) in msa311_set_odr() argument
453 struct device *dev = msa311->dev; in msa311_set_odr()
458 err = regmap_field_read(msa311->fields[F_PWR_MODE], &pwr_mode); in msa311_set_odr()
477 return regmap_field_write(msa311->fields[F_ODR], odr); in msa311_set_odr()
487 static int msa311_wait_for_next_data(struct msa311_priv *msa311) in msa311_wait_for_next_data() argument
490 struct device *dev = msa311->dev; in msa311_wait_for_next_data()
496 err = msa311_get_odr(msa311, &odr); in msa311_wait_for_next_data()
532 static int msa311_set_pwr_mode(struct msa311_priv *msa311, unsigned int mode) in msa311_set_pwr_mode() argument
534 struct device *dev = msa311->dev; in msa311_set_pwr_mode()
543 err = regmap_field_read(msa311->fields[F_PWR_MODE], &prev_mode); in msa311_set_pwr_mode()
547 err = regmap_field_write(msa311->fields[F_PWR_MODE], mode); in msa311_set_pwr_mode()
554 return msa311_wait_for_next_data(msa311); in msa311_set_pwr_mode()
570 static int msa311_get_axis(struct msa311_priv *msa311, in msa311_get_axis() argument
574 struct device *dev = msa311->dev; in msa311_get_axis()
586 return regmap_bulk_read(msa311->regs, axis_reg, axis, sizeof(*axis)); in msa311_get_axis()
593 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_read_raw_data() local
594 struct device *dev = msa311->dev; in msa311_read_raw_data()
606 mutex_lock(&msa311->lock); in msa311_read_raw_data()
607 err = msa311_get_axis(msa311, chan, &axis); in msa311_read_raw_data()
608 mutex_unlock(&msa311->lock); in msa311_read_raw_data()
633 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_read_scale() local
634 struct device *dev = msa311->dev; in msa311_read_scale()
638 mutex_lock(&msa311->lock); in msa311_read_scale()
639 err = regmap_field_read(msa311->fields[F_FS], &fs); in msa311_read_scale()
640 mutex_unlock(&msa311->lock); in msa311_read_scale()
655 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_read_samp_freq() local
656 struct device *dev = msa311->dev; in msa311_read_samp_freq()
660 mutex_lock(&msa311->lock); in msa311_read_samp_freq()
661 err = msa311_get_odr(msa311, &odr); in msa311_read_samp_freq()
662 mutex_unlock(&msa311->lock); in msa311_read_samp_freq()
721 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_write_scale() local
722 struct device *dev = msa311->dev; in msa311_write_scale()
738 mutex_lock(&msa311->lock); in msa311_write_scale()
739 err = regmap_field_write(msa311->fields[F_FS], fs); in msa311_write_scale()
740 mutex_unlock(&msa311->lock); in msa311_write_scale()
755 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_write_samp_freq() local
756 struct device *dev = msa311->dev; in msa311_write_samp_freq()
777 mutex_lock(&msa311->lock); in msa311_write_samp_freq()
778 err = msa311_set_odr(msa311, odr); in msa311_write_samp_freq()
779 mutex_unlock(&msa311->lock); in msa311_write_samp_freq()
814 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_debugfs_reg_access() local
815 struct device *dev = msa311->dev; in msa311_debugfs_reg_access()
818 if (reg > regmap_get_max_register(msa311->regs)) in msa311_debugfs_reg_access()
825 mutex_lock(&msa311->lock); in msa311_debugfs_reg_access()
828 err = regmap_read(msa311->regs, reg, readval); in msa311_debugfs_reg_access()
830 err = regmap_write(msa311->regs, reg, writeval); in msa311_debugfs_reg_access()
832 mutex_unlock(&msa311->lock); in msa311_debugfs_reg_access()
846 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_buffer_preenable() local
847 struct device *dev = msa311->dev; in msa311_buffer_preenable()
854 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_buffer_postdisable() local
855 struct device *dev = msa311->dev; in msa311_buffer_postdisable()
866 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_set_new_data_trig_state() local
867 struct device *dev = msa311->dev; in msa311_set_new_data_trig_state()
870 mutex_lock(&msa311->lock); in msa311_set_new_data_trig_state()
871 err = regmap_field_write(msa311->fields[F_NEW_DATA_INT_EN], state); in msa311_set_new_data_trig_state()
872 mutex_unlock(&msa311->lock); in msa311_set_new_data_trig_state()
890 struct msa311_priv *msa311 = iio_priv(pf->indio_dev); in msa311_buffer_thread() local
893 struct device *dev = msa311->dev; in msa311_buffer_thread()
903 mutex_lock(&msa311->lock); in msa311_buffer_thread()
909 err = msa311_get_axis(msa311, chan, &axis); in msa311_buffer_thread()
911 mutex_unlock(&msa311->lock); in msa311_buffer_thread()
920 mutex_unlock(&msa311->lock); in msa311_buffer_thread()
933 struct msa311_priv *msa311 = iio_priv(p); in msa311_irq_thread() local
935 struct device *dev = msa311->dev; in msa311_irq_thread()
938 mutex_lock(&msa311->lock); in msa311_irq_thread()
945 err = regmap_field_read(msa311->fields[F_NEW_DATA_INT_EN], in msa311_irq_thread()
948 mutex_unlock(&msa311->lock); in msa311_irq_thread()
956 iio_trigger_poll_chained(msa311->new_data_trig); in msa311_irq_thread()
978 static int msa311_check_partid(struct msa311_priv *msa311) in msa311_check_partid() argument
980 struct device *dev = msa311->dev; in msa311_check_partid()
984 err = regmap_read(msa311->regs, MSA311_PARTID_REG, &partid); in msa311_check_partid()
992 msa311->chip_name = devm_kasprintf(dev, GFP_KERNEL, in msa311_check_partid()
994 if (!msa311->chip_name) in msa311_check_partid()
1000 static int msa311_soft_reset(struct msa311_priv *msa311) in msa311_soft_reset() argument
1002 struct device *dev = msa311->dev; in msa311_soft_reset()
1005 err = regmap_write(msa311->regs, MSA311_SOFT_RESET_REG, in msa311_soft_reset()
1014 static int msa311_chip_init(struct msa311_priv *msa311) in msa311_chip_init() argument
1016 struct device *dev = msa311->dev; in msa311_chip_init()
1020 err = regmap_write(msa311->regs, MSA311_RANGE_REG, MSA311_FS_16G); in msa311_chip_init()
1025 err = regmap_bulk_write(msa311->regs, MSA311_INT_SET_0_REG, in msa311_chip_init()
1032 err = regmap_bulk_write(msa311->regs, MSA311_INT_MAP_0_REG, in msa311_chip_init()
1039 err = regmap_update_bits(msa311->regs, MSA311_ODR_REG, in msa311_chip_init()
1046 err = msa311_set_odr(msa311, MSA311_ODR_125_HZ); in msa311_chip_init()
1054 static int msa311_setup_interrupts(struct msa311_priv *msa311) in msa311_setup_interrupts() argument
1056 struct device *dev = msa311->dev; in msa311_setup_interrupts()
1068 msa311->chip_name, indio_dev); in msa311_setup_interrupts()
1072 trig = devm_iio_trigger_alloc(dev, "%s-new-data", msa311->chip_name); in msa311_setup_interrupts()
1077 msa311->new_data_trig = trig; in msa311_setup_interrupts()
1078 msa311->new_data_trig->ops = &msa311_new_data_trig_ops; in msa311_setup_interrupts()
1079 iio_trigger_set_drvdata(msa311->new_data_trig, indio_dev); in msa311_setup_interrupts()
1081 err = devm_iio_trigger_register(dev, msa311->new_data_trig); in msa311_setup_interrupts()
1086 err = regmap_field_write(msa311->fields[F_INT1_OD], in msa311_setup_interrupts()
1092 err = regmap_field_write(msa311->fields[F_INT1_LVL], in msa311_setup_interrupts()
1098 err = regmap_field_write(msa311->fields[F_LATCH_INT], in msa311_setup_interrupts()
1104 err = regmap_field_write(msa311->fields[F_RESET_INT], 1); in msa311_setup_interrupts()
1109 err = regmap_field_write(msa311->fields[F_INT1_NEW_DATA], 1); in msa311_setup_interrupts()
1117 static int msa311_regmap_init(struct msa311_priv *msa311) in msa311_regmap_init() argument
1119 struct regmap_field **fields = msa311->fields; in msa311_regmap_init()
1120 struct device *dev = msa311->dev; in msa311_regmap_init()
1130 msa311->regs = regmap; in msa311_regmap_init()
1134 msa311->regs, in msa311_regmap_init()
1136 if (IS_ERR(msa311->fields[i])) in msa311_regmap_init()
1137 return dev_err_probe(dev, PTR_ERR(msa311->fields[i]), in msa311_regmap_init()
1144 static void msa311_powerdown(void *msa311) in msa311_powerdown() argument
1146 msa311_set_pwr_mode(msa311, MSA311_PWR_MODE_SUSPEND); in msa311_powerdown()
1157 struct msa311_priv *msa311; in msa311_probe() local
1161 indio_dev = devm_iio_device_alloc(dev, sizeof(*msa311)); in msa311_probe()
1166 msa311 = iio_priv(indio_dev); in msa311_probe()
1167 msa311->dev = dev; in msa311_probe()
1170 err = msa311_regmap_init(msa311); in msa311_probe()
1174 mutex_init(&msa311->lock); in msa311_probe()
1176 msa311->vdd = devm_regulator_get(dev, "vdd"); in msa311_probe()
1177 if (IS_ERR(msa311->vdd)) in msa311_probe()
1178 return dev_err_probe(dev, PTR_ERR(msa311->vdd), in msa311_probe()
1181 err = regulator_enable(msa311->vdd); in msa311_probe()
1185 err = devm_add_action_or_reset(dev, msa311_vdd_disable, msa311->vdd); in msa311_probe()
1190 err = msa311_check_partid(msa311); in msa311_probe()
1194 err = msa311_soft_reset(msa311); in msa311_probe()
1198 err = msa311_set_pwr_mode(msa311, MSA311_PWR_MODE_NORMAL); in msa311_probe()
1213 err = devm_add_action_or_reset(dev, msa311_powerdown, msa311); in msa311_probe()
1229 err = msa311_chip_init(msa311); in msa311_probe()
1236 indio_dev->name = msa311->chip_name; in msa311_probe()
1247 err = msa311_setup_interrupts(msa311); in msa311_probe()
1264 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_runtime_suspend() local
1267 mutex_lock(&msa311->lock); in msa311_runtime_suspend()
1268 err = msa311_set_pwr_mode(msa311, MSA311_PWR_MODE_SUSPEND); in msa311_runtime_suspend()
1269 mutex_unlock(&msa311->lock); in msa311_runtime_suspend()
1280 struct msa311_priv *msa311 = iio_priv(indio_dev); in msa311_runtime_resume() local
1283 mutex_lock(&msa311->lock); in msa311_runtime_resume()
1284 err = msa311_set_pwr_mode(msa311, MSA311_PWR_MODE_NORMAL); in msa311_runtime_resume()
1285 mutex_unlock(&msa311->lock); in msa311_runtime_resume()