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; } }