Lines Matching refs:st

139 static int ad799x_write_config(struct ad799x_state *st, u16 val)  in ad799x_write_config()  argument
141 switch (st->id) { in ad799x_write_config()
144 return i2c_smbus_write_word_swapped(st->client, AD7998_CONF_REG, in ad799x_write_config()
149 return i2c_smbus_write_byte_data(st->client, AD7998_CONF_REG, in ad799x_write_config()
153 st->config = val; in ad799x_write_config()
158 static int ad799x_read_config(struct ad799x_state *st) in ad799x_read_config() argument
160 switch (st->id) { in ad799x_read_config()
163 return i2c_smbus_read_word_swapped(st->client, AD7998_CONF_REG); in ad799x_read_config()
167 return i2c_smbus_read_byte_data(st->client, AD7998_CONF_REG); in ad799x_read_config()
170 return st->config; in ad799x_read_config()
184 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_trigger_handler() local
188 switch (st->id) { in ad799x_trigger_handler()
192 cmd = st->config | in ad799x_trigger_handler()
209 b_sent = i2c_smbus_read_i2c_block_data(st->client, in ad799x_trigger_handler()
210 cmd, st->transfer_size, st->rx_buf); in ad799x_trigger_handler()
214 iio_push_to_buffers_with_timestamp(indio_dev, st->rx_buf, in ad799x_trigger_handler()
225 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_update_scan_mode() local
227 kfree(st->rx_buf); in ad799x_update_scan_mode()
228 st->rx_buf = kmalloc(indio_dev->scan_bytes, GFP_KERNEL); in ad799x_update_scan_mode()
229 if (!st->rx_buf) in ad799x_update_scan_mode()
232 st->transfer_size = bitmap_weight(scan_mask, indio_dev->masklength) * 2; in ad799x_update_scan_mode()
234 switch (st->id) { in ad799x_update_scan_mode()
240 st->config &= ~(GENMASK(7, 0) << AD799X_CHANNEL_SHIFT); in ad799x_update_scan_mode()
241 st->config |= (*scan_mask << AD799X_CHANNEL_SHIFT); in ad799x_update_scan_mode()
242 return ad799x_write_config(st, st->config); in ad799x_update_scan_mode()
248 static int ad799x_scan_direct(struct ad799x_state *st, unsigned ch) in ad799x_scan_direct() argument
252 switch (st->id) { in ad799x_scan_direct()
256 cmd = st->config | (BIT(ch) << AD799X_CHANNEL_SHIFT); in ad799x_scan_direct()
271 return i2c_smbus_read_word_swapped(st->client, cmd); in ad799x_scan_direct()
281 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_read_raw() local
289 ret = ad799x_scan_direct(st, chan->scan_index); in ad799x_read_raw()
298 ret = regulator_get_voltage(st->vref); in ad799x_read_raw()
322 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_read_frequency() local
324 int ret = i2c_smbus_read_byte_data(st->client, AD7998_CYCLE_TMR_REG); in ad799x_read_frequency()
337 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_write_frequency() local
347 ret = i2c_smbus_read_byte_data(st->client, AD7998_CYCLE_TMR_REG); in ad799x_write_frequency()
361 ret = i2c_smbus_write_byte_data(st->client, AD7998_CYCLE_TMR_REG, in ad799x_write_frequency()
378 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_read_event_config() local
380 if (!(st->config & AD7998_ALERT_EN)) in ad799x_read_event_config()
383 if ((st->config >> AD799X_CHANNEL_SHIFT) & BIT(chan->scan_index)) in ad799x_read_event_config()
395 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_write_event_config() local
405 st->config |= BIT(chan->scan_index) << AD799X_CHANNEL_SHIFT; in ad799x_write_event_config()
407 st->config &= ~(BIT(chan->scan_index) << AD799X_CHANNEL_SHIFT); in ad799x_write_event_config()
409 if (st->config >> AD799X_CHANNEL_SHIFT) in ad799x_write_event_config()
410 st->config |= AD7998_ALERT_EN; in ad799x_write_event_config()
412 st->config &= ~AD7998_ALERT_EN; in ad799x_write_event_config()
414 ret = ad799x_write_config(st, st->config); in ad799x_write_event_config()
449 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_write_event_value() local
455 ret = i2c_smbus_write_word_swapped(st->client, in ad799x_write_event_value()
471 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_read_event_value() local
474 ret = i2c_smbus_read_word_swapped(st->client, in ad799x_read_event_value()
488 struct ad799x_state *st = iio_priv(private); in ad799x_event_handler() local
491 ret = i2c_smbus_read_byte_data(st->client, AD7998_ALERT_STAT_REG); in ad799x_event_handler()
495 if (i2c_smbus_write_byte_data(st->client, AD7998_ALERT_STAT_REG, in ad799x_event_handler()
776 struct ad799x_state *st; in ad799x_probe() local
781 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st)); in ad799x_probe()
785 st = iio_priv(indio_dev); in ad799x_probe()
789 st->id = id->driver_data; in ad799x_probe()
791 st->chip_config = &chip_info->irq_config; in ad799x_probe()
793 st->chip_config = &chip_info->noirq_config; in ad799x_probe()
797 st->reg = devm_regulator_get(&client->dev, "vcc"); in ad799x_probe()
798 if (IS_ERR(st->reg)) in ad799x_probe()
799 return PTR_ERR(st->reg); in ad799x_probe()
800 ret = regulator_enable(st->reg); in ad799x_probe()
803 st->vref = devm_regulator_get(&client->dev, "vref"); in ad799x_probe()
804 if (IS_ERR(st->vref)) { in ad799x_probe()
805 ret = PTR_ERR(st->vref); in ad799x_probe()
808 ret = regulator_enable(st->vref); in ad799x_probe()
812 st->client = client; in ad799x_probe()
816 indio_dev->info = st->chip_config->info; in ad799x_probe()
819 indio_dev->channels = st->chip_config->channel; in ad799x_probe()
822 ret = ad799x_write_config(st, st->chip_config->default_config); in ad799x_probe()
825 ret = ad799x_read_config(st); in ad799x_probe()
828 st->config = ret; in ad799x_probe()
856 regulator_disable(st->vref); in ad799x_probe()
858 regulator_disable(st->reg); in ad799x_probe()
866 struct ad799x_state *st = iio_priv(indio_dev); in ad799x_remove() local
871 regulator_disable(st->vref); in ad799x_remove()
872 regulator_disable(st->reg); in ad799x_remove()
873 kfree(st->rx_buf); in ad799x_remove()