Lines Matching +full:z +full:- +full:threshold
1 /* ST Microelectronics IIS2DLPC 3-axis accelerometer driver
5 * SPDX-License-Identifier: Apache-2.0
29 * iis2dlpc_set_range - set full scale range for acc
36 struct iis2dlpc_data *iis2dlpc = dev->data; in iis2dlpc_set_range()
37 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_set_range()
38 stmdev_ctx_t *ctx = (stmdev_ctx_t *)&cfg->ctx; in iis2dlpc_set_range()
43 if (cfg->pm == IIS2DLPC_CONT_LOW_PWR_12bit) { in iis2dlpc_set_range()
49 iis2dlpc->gain = IIS2DLPC_FS_TO_GAIN(fs, shift_gain); in iis2dlpc_set_range()
56 * iis2dlpc_set_odr - set new sampling frequency
62 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_set_odr()
63 stmdev_ctx_t *ctx = (stmdev_ctx_t *)&cfg->ctx; in iis2dlpc_set_odr()
74 return -ENOTSUP; in iis2dlpc_set_odr()
88 val->val1 = dval / 1000000LL; in iis2dlpc_convert()
89 val->val2 = dval % 1000000LL; in iis2dlpc_convert()
98 struct iis2dlpc_data *iis2dlpc = dev->data; in iis2dlpc_channel_get_acc()
117 iis2dlpc_convert(pval++, iis2dlpc->acc[i], iis2dlpc->gain); in iis2dlpc_channel_get_acc()
137 return -ENOTSUP; in iis2dlpc_channel_get()
144 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_set_slope_th()
145 stmdev_ctx_t *ctx = (stmdev_ctx_t *) &cfg->ctx; in iis2dlpc_set_slope_th()
158 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_set_slope_dur()
159 stmdev_ctx_t *ctx = (stmdev_ctx_t *) &cfg->ctx; in iis2dlpc_set_slope_dur()
190 return iis2dlpc_set_odr(dev, val->val1); in iis2dlpc_dev_config()
193 return iis2dlpc_set_slope_th(dev, val->val1); in iis2dlpc_dev_config()
195 return iis2dlpc_set_slope_dur(dev, val->val1); in iis2dlpc_dev_config()
202 return -ENOTSUP; in iis2dlpc_dev_config()
221 return -ENOTSUP; in iis2dlpc_attr_set()
227 struct iis2dlpc_data *iis2dlpc = dev->data; in iis2dlpc_sample_fetch()
228 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_sample_fetch()
229 stmdev_ctx_t *ctx = (stmdev_ctx_t *)&cfg->ctx; in iis2dlpc_sample_fetch()
236 return -EIO; in iis2dlpc_sample_fetch()
240 if (cfg->pm == IIS2DLPC_CONT_LOW_PWR_12bit) { in iis2dlpc_sample_fetch()
246 iis2dlpc->acc[0] = buf[0] >> shift; in iis2dlpc_sample_fetch()
247 iis2dlpc->acc[1] = buf[1] >> shift; in iis2dlpc_sample_fetch()
248 iis2dlpc->acc[2] = buf[2] >> shift; in iis2dlpc_sample_fetch()
283 struct iis2dlpc_data *iis2dlpc = dev->data; in iis2dlpc_init()
284 const struct iis2dlpc_config *cfg = dev->config; in iis2dlpc_init()
285 stmdev_ctx_t *ctx = (stmdev_ctx_t *)&cfg->ctx; in iis2dlpc_init()
288 iis2dlpc->dev = dev; in iis2dlpc_init()
292 return -EIO; in iis2dlpc_init()
297 return -EINVAL; in iis2dlpc_init()
302 return -EIO; in iis2dlpc_init()
308 return -EIO; in iis2dlpc_init()
312 LOG_INF("power-mode is %d", cfg->pm); in iis2dlpc_init()
313 if (iis2dlpc_set_power_mode(ctx, cfg->pm)) { in iis2dlpc_init()
314 return -EIO; in iis2dlpc_init()
320 return -EIO; in iis2dlpc_init()
323 LOG_INF("range is %d", cfg->range); in iis2dlpc_init()
324 if (iis2dlpc_set_range(dev, IIS2DLPC_FS_TO_REG(cfg->range)) < 0) { in iis2dlpc_init()
325 LOG_ERR("range init error %d", cfg->range); in iis2dlpc_init()
326 return -EIO; in iis2dlpc_init()
332 return -EIO; in iis2dlpc_init()
336 LOG_INF("TAP: tap mode is %d", cfg->tap_mode); in iis2dlpc_init()
337 if (iis2dlpc_tap_mode_set(ctx, cfg->tap_mode) < 0) { in iis2dlpc_init()
339 return -EIO; in iis2dlpc_init()
342 LOG_INF("TAP: ths_x is %02x", cfg->tap_threshold[0]); in iis2dlpc_init()
343 if (iis2dlpc_tap_threshold_x_set(ctx, cfg->tap_threshold[0]) < 0) { in iis2dlpc_init()
344 LOG_ERR("Failed to set tap X axis threshold"); in iis2dlpc_init()
345 return -EIO; in iis2dlpc_init()
348 LOG_INF("TAP: ths_y is %02x", cfg->tap_threshold[1]); in iis2dlpc_init()
349 if (iis2dlpc_tap_threshold_y_set(ctx, cfg->tap_threshold[1]) < 0) { in iis2dlpc_init()
350 LOG_ERR("Failed to set tap Y axis threshold"); in iis2dlpc_init()
351 return -EIO; in iis2dlpc_init()
354 LOG_INF("TAP: ths_z is %02x", cfg->tap_threshold[2]); in iis2dlpc_init()
355 if (iis2dlpc_tap_threshold_z_set(ctx, cfg->tap_threshold[2]) < 0) { in iis2dlpc_init()
356 LOG_ERR("Failed to set tap Z axis threshold"); in iis2dlpc_init()
357 return -EIO; in iis2dlpc_init()
360 if (cfg->tap_threshold[0] > 0) { in iis2dlpc_init()
364 return -EIO; in iis2dlpc_init()
368 if (cfg->tap_threshold[1] > 0) { in iis2dlpc_init()
372 return -EIO; in iis2dlpc_init()
376 if (cfg->tap_threshold[2] > 0) { in iis2dlpc_init()
379 LOG_ERR("Failed to set tap detection on Z axis"); in iis2dlpc_init()
380 return -EIO; in iis2dlpc_init()
384 LOG_INF("TAP: shock is %02x", cfg->tap_shock); in iis2dlpc_init()
385 if (iis2dlpc_tap_shock_set(ctx, cfg->tap_shock) < 0) { in iis2dlpc_init()
387 return -EIO; in iis2dlpc_init()
390 LOG_INF("TAP: latency is %02x", cfg->tap_latency); in iis2dlpc_init()
391 if (iis2dlpc_tap_dur_set(ctx, cfg->tap_latency) < 0) { in iis2dlpc_init()
393 return -EIO; in iis2dlpc_init()
396 LOG_INF("TAP: quiet time is %02x", cfg->tap_quiet); in iis2dlpc_init()
397 if (iis2dlpc_tap_quiet_set(ctx, cfg->tap_quiet) < 0) { in iis2dlpc_init()
399 return -EIO; in iis2dlpc_init()
487 * bus-specific macro at preprocessor time.