Lines Matching +full:aux +full:- +full:reg

1 /* ST Microelectronics IIS2ICLX 2-axis accelerometer sensor driver
5 * SPDX-License-Identifier: Apache-2.0
74 struct iis2iclx_data *data = dev->data; in iis2iclx_lis2mdl_init()
77 data->magn_gain = LIS2MDL_SENSITIVITY; in iis2iclx_lis2mdl_init()
84 k_sleep(K_MSEC(10)); /* turn-on time in ms */ in iis2iclx_lis2mdl_init()
110 return -ENOTSUP; in iis2iclx_lis2mdl_odr_set()
128 return iis2iclx_lis2mdl_odr_set(dev, i2c_addr, val->val1); in iis2iclx_lis2mdl_conf()
131 return -ENOTSUP; in iis2iclx_lis2mdl_conf()
155 struct iis2iclx_data *data = dev->data; in hts221_read_conv_data()
157 struct hts221_data *ht = &data->hts221; in hts221_read_conv_data()
160 unsigned char len = MIN(7, sizeof(buf) - i); in hts221_read_conv_data()
167 return -EIO; in hts221_read_conv_data()
171 ht->y0 = buf[0] / 2; in hts221_read_conv_data()
172 ht->y1 = buf[1] / 2; in hts221_read_conv_data()
173 ht->x0 = buf[6] | (buf[7] << 8); in hts221_read_conv_data()
174 ht->x1 = buf[10] | (buf[11] << 8); in hts221_read_conv_data()
206 return -ENOTSUP; in iis2iclx_hts221_odr_set()
224 return iis2iclx_hts221_odr_set(dev, i2c_addr, val->val1); in iis2iclx_hts221_conf()
227 return -ENOTSUP; in iis2iclx_hts221_conf()
256 k_sleep(K_MSEC(1)); /* turn-on time in ms */ in iis2iclx_lps22hb_init()
290 k_sleep(K_MSEC(100)); /* turn-on time in ms */ in iis2iclx_lps22hh_init()
319 return -ENOTSUP; in iis2iclx_lps22hh_odr_set()
337 return iis2iclx_lps22hh_odr_set(data, i2c_addr, val->val1); in iis2iclx_lps22hh_conf()
340 return -ENOTSUP; in iis2iclx_lps22hh_conf()
424 iis2iclx_sh_status_get((stmdev_ctx_t *)&cfg->ctx, &status); in iis2iclx_shub_wait_completed()
432 (void) iis2iclx_mem_bank_set((stmdev_ctx_t *)&cfg->ctx, in iis2iclx_shub_embedded_en()
435 (void) iis2iclx_mem_bank_set((stmdev_ctx_t *)&cfg->ctx, in iis2iclx_shub_embedded_en()
448 if (iis2iclx_read_reg((stmdev_ctx_t *)&cfg->ctx, reg_addr, value, len) < 0) { in iis2iclx_shub_read_embedded_regs()
449 LOG_ERR("shub: failed to read external reg: %02x", reg_addr); in iis2iclx_shub_read_embedded_regs()
451 return -EIO; in iis2iclx_shub_read_embedded_regs()
465 if (iis2iclx_write_reg((stmdev_ctx_t *)&cfg->ctx, reg_addr, value, len) < 0) { in iis2iclx_shub_write_embedded_regs()
466 LOG_ERR("shub: failed to write external reg: %02x", reg_addr); in iis2iclx_shub_write_embedded_regs()
468 return -EIO; in iis2iclx_shub_write_embedded_regs()
478 const struct iis2iclx_config *cfg = dev->config; in iis2iclx_shub_enable()
479 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_enable()
482 if (!data->accel_freq) { in iis2iclx_shub_enable()
485 if (iis2iclx_xl_data_rate_set((stmdev_ctx_t *)&cfg->ctx, odr) < 0) { in iis2iclx_shub_enable()
493 if (iis2iclx_sh_master_set((stmdev_ctx_t *)&cfg->ctx, enable) < 0) { in iis2iclx_shub_enable()
509 LOG_ERR("shub: error reading embedded reg"); in iis2iclx_shub_check_slv0_nack()
510 return -EIO; in iis2iclx_shub_check_slv0_nack()
515 return -EIO; in iis2iclx_shub_check_slv0_nack()
528 const struct iis2iclx_config *cfg = dev->config; in iis2iclx_shub_read_slave_reg()
537 LOG_ERR("shub: error writing embedded reg"); in iis2iclx_shub_read_slave_reg()
538 return -EIO; in iis2iclx_shub_read_slave_reg()
547 return -EIO; in iis2iclx_shub_read_slave_reg()
552 if (iis2iclx_read_reg((stmdev_ctx_t *)&cfg->ctx, IIS2ICLX_SHUB_DATA_OUT, in iis2iclx_shub_read_slave_reg()
556 return -EIO; in iis2iclx_shub_read_slave_reg()
571 const struct iis2iclx_config *cfg = dev->config; in iis2iclx_shub_write_slave_reg()
582 LOG_ERR("shub: error writing embedded reg"); in iis2iclx_shub_write_slave_reg()
583 return -EIO; in iis2iclx_shub_write_slave_reg()
590 LOG_ERR("shub: error writing embedded reg"); in iis2iclx_shub_write_slave_reg()
591 return -EIO; in iis2iclx_shub_write_slave_reg()
600 return -EIO; in iis2iclx_shub_write_slave_reg()
614 LOG_ERR("shub: error writing embedded reg"); in iis2iclx_shub_write_slave_reg()
615 return -EIO; in iis2iclx_shub_write_slave_reg()
624 * - SLAVE 0: used for configuring all slave devices
625 * - SLAVE 1: used as data read channel for external slave device #1
626 * - SLAVE 2: used as data read channel for external slave device #2
627 * - SLAVE 3: used for generic reads while data channel is enabled
631 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_set_data_channel()
632 const struct iis2iclx_config *cfg = dev->config; in iis2iclx_shub_set_data_channel()
637 for (n = 0; n < data->num_ext_dev; n++) { in iis2iclx_shub_set_data_channel()
638 sp = &iis2iclx_shub_slist[data->shub_ext[n]]; in iis2iclx_shub_set_data_channel()
641 slv_cfg[i] = (sp->ext_i2c_addr << 1) | IIS2ICLX_SHUB_SLVX_READ; in iis2iclx_shub_set_data_channel()
642 slv_cfg[i + 1] = sp->out_data_addr; in iis2iclx_shub_set_data_channel()
643 slv_cfg[i + 2] = sp->out_data_len; in iis2iclx_shub_set_data_channel()
649 LOG_ERR("shub: error writing embedded reg"); in iis2iclx_shub_set_data_channel()
650 return -EIO; in iis2iclx_shub_set_data_channel()
654 iis2iclx_aux_sens_on_t aux = IIS2ICLX_SLV_0_1_2; in iis2iclx_shub_set_data_channel() local
656 if (iis2iclx_sh_slave_connected_set((stmdev_ctx_t *)&cfg->ctx, aux) < 0) { in iis2iclx_shub_set_data_channel()
657 LOG_ERR("shub: error setting aux sensors"); in iis2iclx_shub_set_data_channel()
658 return -EIO; in iis2iclx_shub_set_data_channel()
663 if (iis2iclx_sh_write_mode_set((stmdev_ctx_t *)&cfg->ctx, wo) < 0) { in iis2iclx_shub_set_data_channel()
665 return -EIO; in iis2iclx_shub_set_data_channel()
680 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_get_idx()
682 for (n = 0; n < data->num_ext_dev; n++) { in iis2iclx_shub_get_idx()
683 sp = &iis2iclx_shub_slist[data->shub_ext[n]]; in iis2iclx_shub_get_idx()
685 if (sp->type == type) { in iis2iclx_shub_get_idx()
690 return -ENOTSUP; in iis2iclx_shub_get_idx()
696 const struct iis2iclx_config *cfg = dev->config; in iis2iclx_shub_fetch_external_devs()
697 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_fetch_external_devs()
703 for (n = 0; n < data->num_ext_dev; n++) { in iis2iclx_shub_fetch_external_devs()
704 sp = &iis2iclx_shub_slist[data->shub_ext[n]]; in iis2iclx_shub_fetch_external_devs()
706 if (iis2iclx_read_reg((stmdev_ctx_t *)&cfg->ctx, sp->sh_out_reg, in iis2iclx_shub_fetch_external_devs()
707 data->ext_data[n], sp->out_data_len) < 0) { in iis2iclx_shub_fetch_external_devs()
710 return -EIO; in iis2iclx_shub_fetch_external_devs()
723 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_config()
727 for (n = 0; n < data->num_ext_dev; n++) { in iis2iclx_shub_config()
728 sp = &iis2iclx_shub_slist[data->shub_ext[n]]; in iis2iclx_shub_config()
730 if (sp->type == chan) { in iis2iclx_shub_config()
735 if (n == data->num_ext_dev) { in iis2iclx_shub_config()
737 return -ENOTSUP; in iis2iclx_shub_config()
740 if (sp == NULL || sp->dev_conf == NULL) { in iis2iclx_shub_config()
742 return -ENOTSUP; in iis2iclx_shub_config()
745 return sp->dev_conf(dev, sp->ext_i2c_addr, chan, attr, val); in iis2iclx_shub_config()
753 struct iis2iclx_data *data = dev->data; in iis2iclx_shub_init()
755 LOG_INF("shub: start sensorhub for %s", dev->name); in iis2iclx_shub_init()
757 if (data->num_ext_dev >= IIS2ICLX_SHUB_MAX_NUM_SLVS) { in iis2iclx_shub_init()
769 for (i = 0U; i < ARRAY_SIZE(sp->i2c_addr); i++) { in iis2iclx_shub_init()
771 sp->i2c_addr[i], in iis2iclx_shub_init()
772 sp->wai_addr, in iis2iclx_shub_init()
776 if (chip_id == sp->wai_val) { in iis2iclx_shub_init()
781 if (i >= ARRAY_SIZE(sp->i2c_addr)) { in iis2iclx_shub_init()
786 sp->ext_i2c_addr = sp->i2c_addr[i]; in iis2iclx_shub_init()
788 data->shub_ext[data->num_ext_dev++] = n; in iis2iclx_shub_init()
791 LOG_DBG("shub: dev %s - num_ext_dev %d", dev->name, data->num_ext_dev); in iis2iclx_shub_init()
792 if (data->num_ext_dev == 0) { in iis2iclx_shub_init()
794 return -ENOTSUP; in iis2iclx_shub_init()
798 for (n = 0, regn = 0; n < data->num_ext_dev; n++) { in iis2iclx_shub_init()
799 sp = &iis2iclx_shub_slist[data->shub_ext[n]]; in iis2iclx_shub_init()
800 sp->sh_out_reg = IIS2ICLX_SHUB_DATA_OUT + regn; in iis2iclx_shub_init()
801 regn += sp->out_data_len; in iis2iclx_shub_init()
802 sp->dev_init(dev, sp->ext_i2c_addr); in iis2iclx_shub_init()