/* sensor layout init for different board */ void sensor_layout_init(void) { unsigned int sensor_type; sensor_type = get_sensor_type(); switch (sensor_type) { case E_SENSOR_TYPE_PHONE: gs_platform_data.negate_x = 1; gs_platform_data.negate_y = 1; mma8452_platform_data.config_mxc_mma_position = 1; adxl34x_default_init.config_adxl34x_position = 0; compass_platform_data.config_akm_position = 3; l3g4200d_gyr_platform_data.negate_x = 1; l3g4200d_gyr_platform_data.negate_y = 1; break; case E_SENSOR_TYPE_PLATFORM: gs_platform_data.negate_x = 0; gs_platform_data.negate_y = 0; mma8452_platform_data.config_mxc_mma_position = 3; adxl34x_default_init.config_adxl34x_position = 2; compass_platform_data.config_akm_position = 1; l3g4200d_gyr_platform_data.negate_x = 0; l3g4200d_gyr_platform_data.negate_y = 0; break; case E_SENSOR_TYPE_PAD: printk("wanglin test boardid sensor,boardid %d\n",get_boardid()); gs_platform_data.negate_x = 0; gs_platform_data.negate_z = 1; mma8452_platform_data.config_mxc_mma_position = 1; adxl34x_default_init.config_adxl34x_position = 6; compass_platform_data.config_akm_position = 7; l3g4200d_gyr_platform_data.negate_x = 0; l3g4200d_gyr_platform_data.negate_z = 1; break; case E_SENSOR_TYPE_LINK: printk("test boardid sensor,boardid %d\n",get_boardid()); gs_platform_data.axis_map_x = 1; gs_platform_data.axis_map_y = 0; gs_platform_data.negate_y = 0; mma8452_platform_data.config_mxc_mma_position = 1; adxl34x_default_init.config_adxl34x_position = 3; compass_platform_data.config_akm_position = 7; l3g4200d_gyr_platform_data.negate_x = 0; l3g4200d_gyr_platform_data.negate_z = 1; default: pr_err("sensor_type unsupported\n"); break; } }
static ssize_t config_boardid_read(struct file *filp, char __user *buffer, size_t count, loff_t *ppos) { int len = 0; char idarray[32]; memset(idarray, 0, 32); len = sprintf(idarray, "0x%02x\n", get_boardid()); return simple_read_from_buffer(buffer, count, ppos, (void *)idarray, len); }
static long boardid_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { void __user *argp = (void __user *)arg; unsigned int boardid = 0; int ret = 0; switch (cmd) { case BOARDID_READ_DATA: boardid = get_boardid(); pr_info("%s: get boardid : %d\n", __func__, boardid); if (copy_to_user(argp, &boardid, sizeof(int))){ pr_err("%s: copy_to_user error\n", __func__); ret = -EFAULT; } break; default: pr_err("%s: invalid command %d\n", __func__, _IOC_NR(cmd)); break; } return ret; }