Exemple #1
0
int hsad_sensor_get_type(void)
{
	return hsad_sensor_get_gpio("sensor/sensor_type");
}
/* sensor layout init for different board */
void sensor_layout_init(void)
{
	unsigned int sensor_type = SENSOR_TYPE;
	int compass_gpio_num = -1;
	int ps_gpio_num = -1;
	int hand_gpio_num = -1;
	int layout_num = COMPASS_LAYOUT;
	unsigned int compass_softiron_type = 0;

	sensor_type = hsad_sensor_get_type();
	if (-1==sensor_type) {
		pr_err("%s: Failed to get compass_layout number in hsad.",
                   __func__);
		layout_num = SENSOR_TYPE;
	}

	compass_softiron_type = hsad_compass_softiron_type();
	g_compass_softiron_type = compass_softiron_type;

	compass_gpio_num= hsad_sensor_get_gpio("sensor/compass_gpio");
	if (-1 == compass_gpio_num) {
		pr_err("%s: Failed to get compass_gpio number in hsad.",
                   __func__);
    }

#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_AKM8963
	compass_akm8963_platform_data.gpio_DRDY = compass_gpio_num;
#endif

	layout_num= hsad_sensor_get_gpio("sensor/compass_layout");
	if (-1==layout_num) {
		pr_err("%s: Failed to get compass_layout number in hsad.",
                   __func__);
		layout_num = COMPASS_LAYOUT;
	}

#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_AKM8963
	compass_akm8963_platform_data.layout = layout_num;
#endif
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_AKM09911
	compass_akm09911_platform_data.layout = layout_num;
#endif

	ps_gpio_num= hsad_sensor_get_gpio("sensor/proximity_gpio");
	if (-1==ps_gpio_num) {
		 pr_err("%s: Failed to get proximity_gpio number in hsad.",
                   __func__);
	}
	apds990x_light_platform_data.apds990x_gpio = ps_gpio_num;

	hand_gpio_num= hsad_sensor_get_gpio("sensor/ad7146_gpio");
	if (-1==hand_gpio_num) {
		pr_err("%s: Failed to get ad7146_gpio number in hsad.",
                   __func__);
	 }
	ad7146_i2c_platform_data.ad7146_gpio = hand_gpio_num;

	switch (sensor_type) {
		case E_SENSOR_TYPE_UEDGE_G_PLUS_VA:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACC_GYRO_LSM330
		lsm330_acc_pdata.axis_map_x = 0;
		lsm330_acc_pdata.axis_map_y = 1;
		lsm330_acc_pdata.axis_map_z = 2;
		lsm330_acc_pdata.negate_x = 0;
		lsm330_acc_pdata.negate_y = 1;
		lsm330_acc_pdata.negate_z = 1;
		lsm330_gyr_pdata.axis_map_x =0;
		lsm330_gyr_pdata.axis_map_y = 1;
		lsm330_gyr_pdata.axis_map_z = 2;
		lsm330_gyr_pdata.negate_x = 0;
		lsm330_gyr_pdata.negate_y = 0;
		lsm330_gyr_pdata.negate_z = 1;
 #endif
             gs_platform_data.axis_map_x = 1;
		gs_platform_data.axis_map_y = 0;
		gs_platform_data.axis_map_z = 2;
		gs_platform_data.negate_x = 0;
		gs_platform_data.negate_y = 0;
		gs_platform_data.negate_z = 1;
		mma8452_platform_data.config_mxc_mma_position = 6;
		break;
  
		case E_SENSOR_TYPE_OSCAR_3G:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACC_GYRO_LSM330
		lsm330_acc_pdata.axis_map_x = 1;
		lsm330_acc_pdata.axis_map_y = 0;
		lsm330_acc_pdata.axis_map_z = 2;
		lsm330_acc_pdata.negate_x = 0;
		lsm330_acc_pdata.negate_y = 1;
		lsm330_acc_pdata.negate_z = 0;
		lsm330_gyr_pdata.axis_map_x =1;
		lsm330_gyr_pdata.axis_map_y = 0;
		lsm330_gyr_pdata.axis_map_z = 2;
		lsm330_gyr_pdata.negate_x = 0;
		lsm330_gyr_pdata.negate_y = 0;
		lsm330_gyr_pdata.negate_z = 0;
#endif
		gs_platform_data.axis_map_x = 1;
		gs_platform_data.axis_map_y = 0;
		gs_platform_data.axis_map_z = 2;
		gs_platform_data.negate_x = 0;
		gs_platform_data.negate_y = 0;
		gs_platform_data.negate_z = 1;
		mma8452_platform_data.config_mxc_mma_position = 6;
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_YAMAHA_COMPASS
		yamaha_compass_platform_data.layout = 0;
#endif
		l3g4200d_gyr_platform_data.negate_x = 0;
		l3g4200d_gyr_platform_data.negate_y = 0;
		l3g4200d_gyr_platform_data.negate_z = 0;
		break;

		case E_SENSOR_TYPE_UDP:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACC_GYRO_LSM330
		lsm330_acc_pdata.axis_map_x = 0;
		lsm330_acc_pdata.axis_map_y = 1;
		lsm330_acc_pdata.axis_map_z = 2;
		lsm330_acc_pdata.negate_x = 1;
		lsm330_acc_pdata.negate_y = 1;
		lsm330_acc_pdata.negate_z = 0;
		lsm330_gyr_pdata.axis_map_x = 0;
		lsm330_gyr_pdata.axis_map_y = 1;
		lsm330_gyr_pdata.axis_map_z = 2;
		lsm330_gyr_pdata.negate_x = 1;
		lsm330_gyr_pdata.negate_y = 0;
		lsm330_gyr_pdata.negate_z = 0;
#endif
		break;

		case E_SENSOR_TYPE_SOPHIA_TL:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACC_GYRO_LSM330
		lsm330_acc_pdata.axis_map_x = 1;
		lsm330_acc_pdata.axis_map_y = 0;
		lsm330_acc_pdata.axis_map_z = 2;
		lsm330_acc_pdata.negate_x = 1;
		lsm330_acc_pdata.negate_y = 1;
		lsm330_acc_pdata.negate_z = 1;
		lsm330_gyr_pdata.axis_map_x = 1;
		lsm330_gyr_pdata.axis_map_y = 0;
		lsm330_gyr_pdata.axis_map_z = 2;
		lsm330_gyr_pdata.negate_x = 1;
		lsm330_gyr_pdata.negate_y = 0;
		lsm330_gyr_pdata.negate_z = 1;
#endif
		break;

		case E_SENSOR_TYPE_SOPHIA_UL_V1:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACC_GYRO_LSM330
		lsm330_acc_pdata.axis_map_x = 1;
		lsm330_acc_pdata.axis_map_y = 0;
		lsm330_acc_pdata.axis_map_z = 2;
		lsm330_acc_pdata.negate_x = 0;
		lsm330_acc_pdata.negate_y = 0;
		lsm330_acc_pdata.negate_z = 1;
		lsm330_gyr_pdata.axis_map_x = 1;
		lsm330_gyr_pdata.axis_map_y = 0;
		lsm330_gyr_pdata.axis_map_z = 2;
		lsm330_gyr_pdata.negate_x = 0;
		lsm330_gyr_pdata.negate_y = 1;
		lsm330_gyr_pdata.negate_z = 1;
#endif
		break;
		case E_SENSOR_TYPE_H30L:
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACCELEROMETER_ST_LIS3XH
              printk("lihai_%s_ifdef\n", __func__);
		gs_platform_data.axis_map_x = 1;
		gs_platform_data.axis_map_y = 0;
		gs_platform_data.axis_map_z = 2;
		gs_platform_data.negate_x = 1;
		gs_platform_data.negate_y = 1;
		gs_platform_data.negate_z = 1;
#endif
#ifdef CONFIG_HUAWEI_FEATURE_SENSORS_ACCELEROMETER_ROHM_KX023
		kx023_gs_platform_data.axis_map_x = 1;
		kx023_gs_platform_data.axis_map_y = 0;
		kx023_gs_platform_data.axis_map_z = 2;
		kx023_gs_platform_data.negate_x = 1;
		kx023_gs_platform_data.negate_y = 1;
		kx023_gs_platform_data.negate_z = 1;
#endif
		break;			



	default:
		pr_err("sensor_type unsupported\n");
		break;
	}
}