static int mantis_config(void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata, struct ext_slave_config *data) { struct mantis_private_data *private_data = pdata->private_data; if (!data->data) return ML_ERROR_INVALID_PARAMETER; switch (data->key) { case MPU_SLAVE_CONFIG_ODR_SUSPEND: mantis_set_odr(&private_data->suspend, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_ODR_RESUME: mantis_set_odr(&private_data->resume, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_FSR_SUSPEND: mantis_set_fsr(&private_data->suspend, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_FSR_RESUME: mantis_set_fsr(&private_data->resume, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_MOT_THS: mantis_set_ths(&private_data->suspend, (*((long *)data->data))); break; case MPU_SLAVE_CONFIG_NMOT_THS: mantis_set_ths(&private_data->resume, (*((long *)data->data))); break; case MPU_SLAVE_CONFIG_MOT_DUR: mantis_set_dur(&private_data->suspend, (*((long *)data->data))); break; case MPU_SLAVE_CONFIG_NMOT_DUR: mantis_set_dur(&private_data->resume, (*((long *)data->data))); break; default: return ML_ERROR_FEATURE_NOT_IMPLEMENTED; }; return ML_SUCCESS; }
static int mantis_init(void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata) { struct mantis_private_data *private_data; long range; #ifdef CONFIG_MPU_SENSORS_MPU3050 (void *)private_data; return INV_ERROR_INVALID_MODULE; #endif private_data = (struct mantis_private_data *) inv_malloc(sizeof(struct mantis_private_data)); if (!private_data) return INV_ERROR_MEMORY_EXAUSTED; pdata->private_data = private_data; mantis_set_odr(mlsl_handle, pdata, &private_data->suspend, FALSE, 0); mantis_set_odr(mlsl_handle, pdata, &private_data->resume, FALSE, 200000); range = RANGE_FIXEDPOINT_TO_LONG_MG(slave->range); mantis_set_fsr(mlsl_handle, pdata, &private_data->suspend, FALSE, range); mantis_set_fsr(mlsl_handle, pdata, &private_data->resume, FALSE, range); mantis_set_irq(mlsl_handle, pdata, &private_data->suspend, FALSE, MPU_SLAVE_IRQ_TYPE_NONE); mantis_set_irq(mlsl_handle, pdata, &private_data->resume, FALSE, MPU_SLAVE_IRQ_TYPE_NONE); mantis_set_ths(mlsl_handle, pdata, &private_data->suspend, FALSE, 80); mantis_set_ths(mlsl_handle, pdata, &private_data->resume, FALSE, 40); mantis_set_dur(mlsl_handle, pdata, &private_data->suspend, FALSE, 1000); mantis_set_dur(mlsl_handle, pdata, &private_data->resume, FALSE, 2540); return INV_SUCCESS; }
static int mantis_init(void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata) { struct mantis_private_data *private_data; private_data = (struct mantis_private_data *) MLOSMalloc(sizeof(struct mantis_private_data)); if (!private_data) return ML_ERROR_MEMORY_EXAUSTED; pdata->private_data = private_data; mantis_set_odr(&private_data->suspend, 0); mantis_set_odr(&private_data->resume, 200000); mantis_set_fsr(&private_data->suspend, 2000); mantis_set_fsr(&private_data->resume, 2000); mantis_set_ths(&private_data->suspend, 80); mantis_set_ths(&private_data->resume, 40); mantis_set_dur(&private_data->suspend, 1000); mantis_set_dur(&private_data->resume, 2540); return ML_SUCCESS; }
static int mantis_config(void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata, struct ext_slave_config *data) { struct mantis_private_data *private_data = pdata->private_data; if (!data->data) return INV_ERROR_INVALID_PARAMETER; switch (data->key) { case MPU_SLAVE_CONFIG_ODR_SUSPEND: return mantis_set_odr(mlsl_handle, pdata, &private_data->suspend, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_ODR_RESUME: return mantis_set_odr(mlsl_handle, pdata, &private_data->resume, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_FSR_SUSPEND: return mantis_set_fsr(mlsl_handle, pdata, &private_data->suspend, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_FSR_RESUME: return mantis_set_fsr(mlsl_handle, pdata, &private_data->resume, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_MOT_THS: return mantis_set_ths(mlsl_handle, pdata, &private_data->suspend, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_NMOT_THS: return mantis_set_ths(mlsl_handle, pdata, &private_data->resume, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_MOT_DUR: return mantis_set_dur(mlsl_handle, pdata, &private_data->suspend, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_NMOT_DUR: return mantis_set_dur(mlsl_handle, pdata, &private_data->resume, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_IRQ_SUSPEND: return mantis_set_irq(mlsl_handle, pdata, &private_data->suspend, data->apply, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_IRQ_RESUME: return mantis_set_irq(mlsl_handle, pdata, &private_data->resume, data->apply, *((long *)data->data)); break; case MPU_SLAVE_CONFIG_INTERNAL_REFERENCE: return mantis_set_mldl_cfg_ref(mlsl_handle, pdata, (struct mldl_cfg *)data->data); break; default: return INV_ERROR_FEATURE_NOT_IMPLEMENTED; }; return INV_SUCCESS; }