コード例 #1
0
static int mpu6050_init(void *mlsl_handle,
		       struct ext_slave_descr *slave,
		       struct ext_slave_platform_data *pdata)
{
	int result;
	struct mpu6050_private_data *private_data;


	private_data = kzalloc(sizeof(*private_data), GFP_KERNEL);

	if (!private_data)
		return INV_ERROR_MEMORY_EXAUSTED;

	pdata->private_data = private_data;

	result = mpu6050_set_odr(mlsl_handle, pdata, &private_data->suspend,
				 false, 0);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_odr(mlsl_handle, pdata, &private_data->resume,
				 false, 200000);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_fsr(mlsl_handle, pdata, &private_data->suspend,
				 false, 2000);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_fsr(mlsl_handle, pdata, &private_data->resume,
				 false, 2000);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}

	result = mpu6050_set_irq(mlsl_handle, pdata, &private_data->suspend,
				 false, MPU_SLAVE_IRQ_TYPE_NONE);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_irq(mlsl_handle, pdata, &private_data->resume,
				 false, MPU_SLAVE_IRQ_TYPE_NONE);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}

	result = mpu6050_set_ths(mlsl_handle, pdata, &private_data->suspend,
				 false, 80);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_ths(mlsl_handle, pdata, &private_data->resume,
				 false, 40);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_dur(mlsl_handle, pdata, &private_data->suspend,
				 false, 1000);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}
	result = mpu6050_set_dur(mlsl_handle, pdata, &private_data->resume,
				 false, 2540);
	if (result) {
		LOG_RESULT_LOCATION(result);
		return result;
	}

	return 0;
}
コード例 #2
0
static int mpu6050_config(void *mlsl_handle,
			 struct ext_slave_descr *slave,
			 struct ext_slave_platform_data *pdata,
			 struct ext_slave_config *data)
{
	struct mpu6050_private_data *private_data =
		(struct mpu6050_private_data *)pdata->private_data;
	if (!data->data)
		return INV_ERROR_INVALID_PARAMETER;

	switch (data->key) {
	case MPU_SLAVE_CONFIG_ODR_SUSPEND:
		return mpu6050_set_odr(mlsl_handle, pdata,
				      &private_data->suspend,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_ODR_RESUME:
		return mpu6050_set_odr(mlsl_handle, pdata,
				      &private_data->resume,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_FSR_SUSPEND:
		return mpu6050_set_fsr(mlsl_handle, pdata,
				      &private_data->suspend,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_FSR_RESUME:
		return mpu6050_set_fsr(mlsl_handle, pdata,
				      &private_data->resume,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_MOT_THS:
		return mpu6050_set_ths(mlsl_handle, pdata,
				      &private_data->suspend,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_NMOT_THS:
		return mpu6050_set_ths(mlsl_handle, pdata,
				      &private_data->resume,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_MOT_DUR:
		return mpu6050_set_dur(mlsl_handle, pdata,
				      &private_data->suspend,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_NMOT_DUR:
		return mpu6050_set_dur(mlsl_handle, pdata,
				      &private_data->resume,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_IRQ_SUSPEND:
		return mpu6050_set_irq(mlsl_handle, pdata,
				      &private_data->suspend,
				      data->apply, *((long *)data->data));
		break;
	case MPU_SLAVE_CONFIG_IRQ_RESUME:
		return mpu6050_set_irq(mlsl_handle, pdata,
				      &private_data->resume,
				      data->apply, *((long *)data->data));
	case MPU_SLAVE_CONFIG_INTERNAL_REFERENCE:
		return mpu6050_set_mldl_cfg_ref(mlsl_handle, pdata,
					       (struct mldl_cfg *)data->data);
		break;

	default:
		return INV_ERROR_FEATURE_NOT_IMPLEMENTED;
	};

	return 0;
}