Lines Matching +full:cros +full:- +full:ec

1 // SPDX-License-Identifier: GPL-2.0
3 * cros_ec_baro - Driver for barometer sensor behind CrosEC.
43 int idx = chan->scan_index; in cros_ec_baro_read()
45 mutex_lock(&st->core.cmd_lock); in cros_ec_baro_read()
58 st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE; in cros_ec_baro_read()
59 st->core.param.sensor_range.data = EC_MOTION_SENSE_NO_VALUE; in cros_ec_baro_read()
61 ret = cros_ec_motion_send_host_cmd(&st->core, 0); in cros_ec_baro_read()
65 *val = st->core.resp->sensor_range.ret; in cros_ec_baro_read()
67 /* scale * in_pressure_raw --> kPa */ in cros_ec_baro_read()
72 ret = cros_ec_sensors_core_read(&st->core, chan, val, val2, in cros_ec_baro_read()
77 mutex_unlock(&st->core.cmd_lock); in cros_ec_baro_read()
89 mutex_lock(&st->core.cmd_lock); in cros_ec_baro_write()
93 st->core.param.cmd = MOTIONSENSE_CMD_SENSOR_RANGE; in cros_ec_baro_write()
94 st->core.param.sensor_range.data = val; in cros_ec_baro_write()
97 st->core.param.sensor_range.roundup = 1; in cros_ec_baro_write()
99 ret = cros_ec_motion_send_host_cmd(&st->core, 0); in cros_ec_baro_write()
101 st->core.range_updated = true; in cros_ec_baro_write()
102 st->core.curr_range = val; in cros_ec_baro_write()
106 ret = cros_ec_sensors_core_write(&st->core, chan, val, val2, in cros_ec_baro_write()
111 mutex_unlock(&st->core.cmd_lock); in cros_ec_baro_write()
124 struct device *dev = &pdev->dev; in cros_ec_baro_probe()
125 struct cros_ec_dev *ec_dev = dev_get_drvdata(dev->parent); in cros_ec_baro_probe()
131 if (!ec_dev || !ec_dev->ec_dev) { in cros_ec_baro_probe()
132 dev_warn(dev, "No CROS EC device found.\n"); in cros_ec_baro_probe()
133 return -EINVAL; in cros_ec_baro_probe()
138 return -ENOMEM; in cros_ec_baro_probe()
147 indio_dev->info = &cros_ec_baro_info; in cros_ec_baro_probe()
149 state->core.type = state->core.resp->info.type; in cros_ec_baro_probe()
150 state->core.loc = state->core.resp->info.location; in cros_ec_baro_probe()
151 channel = state->channels; in cros_ec_baro_probe()
153 channel->info_mask_separate = BIT(IIO_CHAN_INFO_RAW); in cros_ec_baro_probe()
154 channel->info_mask_shared_by_all = in cros_ec_baro_probe()
157 channel->info_mask_shared_by_all_available = in cros_ec_baro_probe()
159 channel->scan_type.realbits = CROS_EC_SENSOR_BITS; in cros_ec_baro_probe()
160 channel->scan_type.storagebits = CROS_EC_SENSOR_BITS; in cros_ec_baro_probe()
161 channel->scan_type.shift = 0; in cros_ec_baro_probe()
162 channel->scan_index = 0; in cros_ec_baro_probe()
163 channel->ext_info = cros_ec_sensors_ext_info; in cros_ec_baro_probe()
164 channel->scan_type.sign = 'u'; in cros_ec_baro_probe()
167 switch (state->core.type) { in cros_ec_baro_probe()
169 channel->type = IIO_PRESSURE; in cros_ec_baro_probe()
173 return -EINVAL; in cros_ec_baro_probe()
178 channel->type = IIO_TIMESTAMP; in cros_ec_baro_probe()
179 channel->channel = -1; in cros_ec_baro_probe()
180 channel->scan_index = 1; in cros_ec_baro_probe()
181 channel->scan_type.sign = 's'; in cros_ec_baro_probe()
182 channel->scan_type.realbits = 64; in cros_ec_baro_probe()
183 channel->scan_type.storagebits = 64; in cros_ec_baro_probe()
185 indio_dev->channels = state->channels; in cros_ec_baro_probe()
186 indio_dev->num_channels = CROS_EC_BARO_MAX_CHANNELS; in cros_ec_baro_probe()
188 state->core.read_ec_sensors_data = cros_ec_sensors_read_cmd; in cros_ec_baro_probe()
195 .name = "cros-ec-baro",
203 .name = "cros-ec-baro",
211 MODULE_DESCRIPTION("ChromeOS EC barometer sensor driver");