Lines Matching refs:st

120 static int icp10100_send_cmd(struct icp10100_state *st,  in icp10100_send_cmd()  argument
130 .addr = st->client->addr, in icp10100_send_cmd()
135 .addr = st->client->addr, in icp10100_send_cmd()
152 dev_dbg(&st->client->dev, "sending cmd %#x\n", be16_to_cpu(cmd->cmd)); in icp10100_send_cmd()
156 ret = icp10100_i2c_xfer(st->client->adapter, msgs, in icp10100_send_cmd()
162 ret = icp10100_i2c_xfer(st->client->adapter, &msgs[0], 1); in icp10100_send_cmd()
169 ret = icp10100_i2c_xfer(st->client->adapter, &msgs[1], 1); in icp10100_send_cmd()
183 dev_err(&st->client->dev, "crc error recv=%#x calc=%#x\n", in icp10100_send_cmd()
194 static int icp10100_read_cal_otp(struct icp10100_state *st) in icp10100_read_cal_otp() argument
201 ret = i2c_master_send(st->client, icp10100_switch_mode_otp, in icp10100_read_cal_otp()
210 ret = icp10100_send_cmd(st, &icp10100_cmd_read_otp, in icp10100_read_cal_otp()
214 st->cal[i] = be16_to_cpu(val); in icp10100_read_cal_otp()
215 dev_dbg(&st->client->dev, "cal[%d] = %d\n", i, st->cal[i]); in icp10100_read_cal_otp()
221 static int icp10100_init_chip(struct icp10100_state *st) in icp10100_init_chip() argument
228 ret = icp10100_send_cmd(st, &icp10100_cmd_read_id, &val, sizeof(val)); in icp10100_init_chip()
233 dev_err(&st->client->dev, "invalid id %#x\n", id); in icp10100_init_chip()
238 ret = icp10100_read_cal_otp(st); in icp10100_init_chip()
243 return icp10100_send_cmd(st, &icp10100_cmd_soft_reset, NULL, 0); in icp10100_init_chip()
246 static int icp10100_get_measures(struct icp10100_state *st, in icp10100_get_measures() argument
253 ret = pm_runtime_resume_and_get(&st->client->dev); in icp10100_get_measures()
257 mutex_lock(&st->lock); in icp10100_get_measures()
258 cmd = &icp10100_cmd_measure[st->mode]; in icp10100_get_measures()
259 ret = icp10100_send_cmd(st, cmd, measures, sizeof(measures)); in icp10100_get_measures()
260 mutex_unlock(&st->lock); in icp10100_get_measures()
268 pm_runtime_mark_last_busy(&st->client->dev); in icp10100_get_measures()
270 pm_runtime_put_autosuspend(&st->client->dev); in icp10100_get_measures()
274 static uint32_t icp10100_get_pressure(struct icp10100_state *st, in icp10100_get_pressure() argument
288 dev_dbg(&st->client->dev, "raw: pressure = %u, temp = %u\n", in icp10100_get_pressure()
294 val1 = (int64_t)st->cal[0] * (int64_t)t_square; in icp10100_get_pressure()
296 val1 = (int64_t)st->cal[1] * (int64_t)t_square; in icp10100_get_pressure()
297 p_lut[1] = offset_factor * st->cal[3] + in icp10100_get_pressure()
299 val1 = (int64_t)st->cal[2] * (int64_t)t_square; in icp10100_get_pressure()
301 dev_dbg(&st->client->dev, "p_lut = [%d, %d, %d]\n", in icp10100_get_pressure()
315 dev_dbg(&st->client->dev, "val1 = %lld, val2 = %lld, c = %lld\n", in icp10100_get_pressure()
322 dev_dbg(&st->client->dev, "val1 = %lld, val2 = %lld, a = %lld\n", in icp10100_get_pressure()
325 dev_dbg(&st->client->dev, "b = %lld\n", b); in icp10100_get_pressure()
340 struct icp10100_state *st = iio_priv(indio_dev); in icp10100_read_raw_measures() local
350 ret = icp10100_get_measures(st, &raw_pressure, &raw_temp); in icp10100_read_raw_measures()
356 pressure_mPa = icp10100_get_pressure(st, raw_pressure, in icp10100_read_raw_measures()
381 struct icp10100_state *st = iio_priv(indio_dev); in icp10100_read_raw() local
409 mutex_lock(&st->lock); in icp10100_read_raw()
410 *val = 1 << st->mode; in icp10100_read_raw()
411 mutex_unlock(&st->lock); in icp10100_read_raw()
440 struct icp10100_state *st = iio_priv(indio_dev); in icp10100_write_raw() local
455 mutex_lock(&st->lock); in icp10100_write_raw()
456 st->mode = mode; in icp10100_write_raw()
457 mutex_unlock(&st->lock); in icp10100_write_raw()
504 static int icp10100_enable_regulator(struct icp10100_state *st) in icp10100_enable_regulator() argument
508 ret = regulator_enable(st->vdd); in icp10100_enable_regulator()
518 struct icp10100_state *st = data; in icp10100_disable_regulator_action() local
521 ret = regulator_disable(st->vdd); in icp10100_disable_regulator_action()
523 dev_err(&st->client->dev, "error %d disabling vdd\n", ret); in icp10100_disable_regulator_action()
536 struct icp10100_state *st; in icp10100_probe() local
544 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*st)); in icp10100_probe()
555 st = iio_priv(indio_dev); in icp10100_probe()
556 mutex_init(&st->lock); in icp10100_probe()
557 st->client = client; in icp10100_probe()
558 st->mode = ICP10100_MODE_N; in icp10100_probe()
560 st->vdd = devm_regulator_get(&client->dev, "vdd"); in icp10100_probe()
561 if (IS_ERR(st->vdd)) in icp10100_probe()
562 return PTR_ERR(st->vdd); in icp10100_probe()
564 ret = icp10100_enable_regulator(st); in icp10100_probe()
569 icp10100_disable_regulator_action, st); in icp10100_probe()
576 ret = icp10100_init_chip(st); in icp10100_probe()
599 struct icp10100_state *st = iio_priv(dev_get_drvdata(dev)); in icp10100_suspend() local
602 mutex_lock(&st->lock); in icp10100_suspend()
603 ret = regulator_disable(st->vdd); in icp10100_suspend()
604 mutex_unlock(&st->lock); in icp10100_suspend()
611 struct icp10100_state *st = iio_priv(dev_get_drvdata(dev)); in icp10100_resume() local
614 mutex_lock(&st->lock); in icp10100_resume()
616 ret = icp10100_enable_regulator(st); in icp10100_resume()
621 ret = icp10100_send_cmd(st, &icp10100_cmd_soft_reset, NULL, 0); in icp10100_resume()
624 mutex_unlock(&st->lock); in icp10100_resume()