Lines Matching refs:data
127 static int stk8312_otp_init(struct stk8312_data *data) in stk8312_otp_init() argument
131 struct i2c_client *client = data->client; in stk8312_otp_init()
159 ret = i2c_smbus_write_byte_data(data->client, STK8312_REG_AFECTRL, ret); in stk8312_otp_init()
171 static int stk8312_set_mode(struct stk8312_data *data, u8 mode) in stk8312_set_mode() argument
174 struct i2c_client *client = data->client; in stk8312_set_mode()
176 if (mode == data->mode) in stk8312_set_mode()
185 data->mode = mode; in stk8312_set_mode()
189 ret = stk8312_otp_init(data); in stk8312_set_mode()
195 static int stk8312_set_interrupts(struct stk8312_data *data, u8 int_mask) in stk8312_set_interrupts() argument
199 struct i2c_client *client = data->client; in stk8312_set_interrupts()
201 mode = data->mode; in stk8312_set_interrupts()
203 ret = stk8312_set_mode(data, STK8312_MODE_STANDBY); in stk8312_set_interrupts()
210 stk8312_set_mode(data, mode); in stk8312_set_interrupts()
214 return stk8312_set_mode(data, mode); in stk8312_set_interrupts()
221 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_data_rdy_trigger_set_state() local
225 ret = stk8312_set_interrupts(data, STK8312_DREADY_BIT); in stk8312_data_rdy_trigger_set_state()
227 ret = stk8312_set_interrupts(data, 0x00); in stk8312_data_rdy_trigger_set_state()
230 dev_err(&data->client->dev, "failed to set trigger state\n"); in stk8312_data_rdy_trigger_set_state()
234 data->dready_trigger_on = state; in stk8312_data_rdy_trigger_set_state()
244 static int stk8312_set_sample_rate(struct stk8312_data *data, u8 rate) in stk8312_set_sample_rate() argument
249 struct i2c_client *client = data->client; in stk8312_set_sample_rate()
251 if (rate == data->sample_rate_idx) in stk8312_set_sample_rate()
254 mode = data->mode; in stk8312_set_sample_rate()
256 ret = stk8312_set_mode(data, STK8312_MODE_STANDBY); in stk8312_set_sample_rate()
270 data->sample_rate_idx = rate; in stk8312_set_sample_rate()
272 return stk8312_set_mode(data, mode); in stk8312_set_sample_rate()
276 stk8312_set_mode(data, mode); in stk8312_set_sample_rate()
281 static int stk8312_set_range(struct stk8312_data *data, u8 range) in stk8312_set_range() argument
286 struct i2c_client *client = data->client; in stk8312_set_range()
290 else if (range == data->range) in stk8312_set_range()
293 mode = data->mode; in stk8312_set_range()
295 ret = stk8312_set_mode(data, STK8312_MODE_STANDBY); in stk8312_set_range()
310 data->range = range; in stk8312_set_range()
312 return stk8312_set_mode(data, mode); in stk8312_set_range()
316 stk8312_set_mode(data, mode); in stk8312_set_range()
321 static int stk8312_read_accel(struct stk8312_data *data, u8 address) in stk8312_read_accel() argument
324 struct i2c_client *client = data->client; in stk8312_read_accel()
340 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_read_raw() local
347 mutex_lock(&data->lock); in stk8312_read_raw()
348 ret = stk8312_set_mode(data, data->mode | STK8312_MODE_ACTIVE); in stk8312_read_raw()
350 mutex_unlock(&data->lock); in stk8312_read_raw()
353 ret = stk8312_read_accel(data, chan->address); in stk8312_read_raw()
355 stk8312_set_mode(data, in stk8312_read_raw()
356 data->mode & (~STK8312_MODE_ACTIVE)); in stk8312_read_raw()
357 mutex_unlock(&data->lock); in stk8312_read_raw()
361 ret = stk8312_set_mode(data, in stk8312_read_raw()
362 data->mode & (~STK8312_MODE_ACTIVE)); in stk8312_read_raw()
363 mutex_unlock(&data->lock); in stk8312_read_raw()
368 *val = stk8312_scale_table[data->range - 1][0]; in stk8312_read_raw()
369 *val2 = stk8312_scale_table[data->range - 1][1]; in stk8312_read_raw()
372 *val = stk8312_samp_freq_table[data->sample_rate_idx].val; in stk8312_read_raw()
373 *val2 = stk8312_samp_freq_table[data->sample_rate_idx].val2; in stk8312_read_raw()
387 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_write_raw() local
400 mutex_lock(&data->lock); in stk8312_write_raw()
401 ret = stk8312_set_range(data, index); in stk8312_write_raw()
402 mutex_unlock(&data->lock); in stk8312_write_raw()
414 mutex_lock(&data->lock); in stk8312_write_raw()
415 ret = stk8312_set_sample_rate(data, index); in stk8312_write_raw()
416 mutex_unlock(&data->lock); in stk8312_write_raw()
435 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_trigger_handler() local
438 mutex_lock(&data->lock); in stk8312_trigger_handler()
444 ret = i2c_smbus_read_i2c_block_data(data->client, in stk8312_trigger_handler()
447 data->buffer); in stk8312_trigger_handler()
449 dev_err(&data->client->dev, "register read failed\n"); in stk8312_trigger_handler()
450 mutex_unlock(&data->lock); in stk8312_trigger_handler()
456 ret = stk8312_read_accel(data, bit); in stk8312_trigger_handler()
458 mutex_unlock(&data->lock); in stk8312_trigger_handler()
461 data->buffer[i++] = ret; in stk8312_trigger_handler()
464 mutex_unlock(&data->lock); in stk8312_trigger_handler()
466 iio_push_to_buffers_with_timestamp(indio_dev, data->buffer, in stk8312_trigger_handler()
477 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_data_rdy_trig_poll() local
479 if (data->dready_trigger_on) in stk8312_data_rdy_trig_poll()
480 iio_trigger_poll(data->dready_trig); in stk8312_data_rdy_trig_poll()
487 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_buffer_preenable() local
489 return stk8312_set_mode(data, data->mode | STK8312_MODE_ACTIVE); in stk8312_buffer_preenable()
494 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_buffer_postdisable() local
496 return stk8312_set_mode(data, data->mode & (~STK8312_MODE_ACTIVE)); in stk8312_buffer_postdisable()
511 struct stk8312_data *data; in stk8312_probe() local
513 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); in stk8312_probe()
519 data = iio_priv(indio_dev); in stk8312_probe()
520 data->client = client; in stk8312_probe()
522 mutex_init(&data->lock); in stk8312_probe()
532 ret = i2c_smbus_write_byte_data(data->client, STK8312_REG_RESET, 0x00); in stk8312_probe()
537 data->sample_rate_idx = STK8312_SR_400HZ_IDX; in stk8312_probe()
538 ret = stk8312_set_range(data, STK8312_RNG_6G); in stk8312_probe()
542 ret = stk8312_set_mode(data, in stk8312_probe()
561 data->dready_trig = devm_iio_trigger_alloc(&client->dev, in stk8312_probe()
565 if (!data->dready_trig) { in stk8312_probe()
570 data->dready_trig->dev.parent = &client->dev; in stk8312_probe()
571 data->dready_trig->ops = &stk8312_trigger_ops; in stk8312_probe()
572 iio_trigger_set_drvdata(data->dready_trig, indio_dev); in stk8312_probe()
573 ret = iio_trigger_register(data->dready_trig); in stk8312_probe()
600 if (data->dready_trig) in stk8312_probe()
601 iio_trigger_unregister(data->dready_trig); in stk8312_probe()
603 stk8312_set_mode(data, STK8312_MODE_STANDBY); in stk8312_probe()
610 struct stk8312_data *data = iio_priv(indio_dev); in stk8312_remove() local
615 if (data->dready_trig) in stk8312_remove()
616 iio_trigger_unregister(data->dready_trig); in stk8312_remove()
618 return stk8312_set_mode(data, STK8312_MODE_STANDBY); in stk8312_remove()
624 struct stk8312_data *data; in stk8312_suspend() local
626 data = iio_priv(i2c_get_clientdata(to_i2c_client(dev))); in stk8312_suspend()
628 return stk8312_set_mode(data, data->mode & (~STK8312_MODE_ACTIVE)); in stk8312_suspend()
633 struct stk8312_data *data; in stk8312_resume() local
635 data = iio_priv(i2c_get_clientdata(to_i2c_client(dev))); in stk8312_resume()
637 return stk8312_set_mode(data, data->mode | STK8312_MODE_ACTIVE); in stk8312_resume()