static int imx328_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint16_t sensor_id = 0; uint8_t modue_id = 0; cam_info("%s TODO.", __func__); misp_get_module_info(sensor->board_info->sensor_index,&sensor_id,&modue_id); if(sensor_id == 0x328) { cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); } else { cdata->data = SENSOR_INDEX_INVALID; } cam_info("%s TODO. cdata->data=%d", __func__, cdata->data); return 0; }
/* 0x300A chipid 0x00 chipid[23:16] 0x300B chipid 0x88 chipid[15:8] 0x300C chipid 0x65 chipid[7:0] */ static int ov8858_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; struct sensor_cfg_data cdata_h; struct sensor_cfg_data cdata_l; u16 sensor_id = 0; cdata_h.cfg.reg.subaddr = 0x300B; cdata_h.cfg.reg.value = 0; cdata_l.cfg.reg.subaddr = 0x300C; cdata_l.cfg.reg.value = 0; ov8858_i2c_read(si, &cdata_h); ov8858_i2c_read(si, &cdata_l); sensor_id = (cdata_h.cfg.reg.value) << 8 | (cdata_l.cfg.reg.value); cam_notice( "%s, line %d, sensor id: 0x%x", __func__, __LINE__, sensor_id); if (0x8858 == sensor_id) { cam_info("%s succeed to match id.", __func__); } else { cam_info("%s failed to match id.", __func__); sensor->board_info->sensor_index = CAMERA_SENSOR_INVALID; } cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); return 0; }
static int ov8865_carrera_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint16_t sensor_id = 0; uint8_t modue_id = 0; char * sensor_name = "ov8865"; cam_info("%s TODO.", __func__); misp_get_module_info(sensor->board_info->sensor_index,&sensor_id,&modue_id); if(sensor_id == 0x8865) { strncpy(cdata->cfg.name, sensor_name, DEVICE_NAME_SIZE); cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, cdata->cfg.name); } else { cdata->data = SENSOR_INDEX_INVALID; } cam_info("%s TODO. cdata->data=%d", __func__, cdata->data); return 0; }
static int ar1335_match_id(hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint16_t sensor_id = 0; uint8_t modue_id = 0; uint8_t retry = 0; cam_info("%s TODO.", __func__); for(retry = 0;retry < 2; retry++){ misp_get_module_info(sensor->board_info->sensor_index,&sensor_id,&modue_id); if(sensor_id==0){ cam_info("%s try to read camera id again",__func__); continue; }else{ break; } } if(sensor_id == 0x1335) { cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); } else { cdata->data = SENSOR_INDEX_INVALID; } cam_info("%s TODO. cdata->data=%d", __func__, cdata->data); return 0; }
static int ov8865_rear_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); hwsensor_board_info_t *board_info = sensor->board_info; struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; int sensor_index = CAMERA_SENSOR_INVALID; int ret = 0; int camif_id = -1; cam_info("%s TODO.", __func__); if(0 == board_info->gpios[FSIN].gpio) { cam_err("%s gpio type[FSIN] is not actived.", __func__); ret = -1; goto out; } ret = gpio_request(board_info->gpios[FSIN].gpio, "camif_id"); if(ret < 0) { cam_err("failed to request gpio[%d]", board_info->gpios[FSIN].gpio); goto out; } ret = gpio_direction_input(board_info->gpios[FSIN].gpio); if(ret < 0) { cam_err("failed to control gpio[%d]", board_info->gpios[FSIN].gpio); goto out_gpio; } ret = gpio_get_value(board_info->gpios[FSIN].gpio); if(ret < 0) { cam_err("failed to get gpio[%d]", board_info->gpios[FSIN].gpio); goto out_gpio; } else { camif_id = ret; cam_notice("%s camif id = %d.", __func__, camif_id); } if (camif_id != board_info->camif_id) { cam_notice("%s camera[%s] module is not match.", __func__, board_info->name); board_info->sensor_index = CAMERA_SENSOR_INVALID; ret = -1; } else { cam_notice("%s camera[%s] match successfully.", __func__, board_info->name); sensor_index = board_info->sensor_index; ret = 0; } out_gpio: gpio_free(board_info->gpios[FSIN].gpio); out: memset(cdata->cfg.name, 0, sizeof(cdata->cfg.name)); cdata->data = sensor_index; if (ret == 0) hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); return ret; }
static int imx179_front_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint32_t gpio_id; int ret, value; cam_info("%s TODO.", __func__); /* id = read_i2c(); if (id == chipid) { cam_info("%s succeed to match id.", __func__); } else { cam_info("%s failed to match id.", __func__); sensor->board_info->sensor_index = CAMERA_SENSOR_INVALID; } */ cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); gpio_id = SENSOR_SCAMIF_GPIO; ret = gpio_request(gpio_id, "factory_gpio"); if (ret < 0) { cam_err("%s failed to request sensor factory gpio pin.", __func__); gpio_free(gpio_id); return ret; } gpio_direction_input(gpio_id); value = gpio_get_value(gpio_id); if(value < 0) { cam_err("%s failed to get sensor factory gpio value.", __func__); gpio_free(gpio_id); return value; } else { cdata->mode = value; } memset(cdata->cfg.name, 0, sizeof(cdata->cfg.name)); snprintf(cdata->cfg.name, sizeof(cdata->cfg.name)-1, "imx179_front_%s", ((value == 0) ? "sunny":"liteon")); cam_debug("renew imx179 module name = %s.", cdata->cfg.name); gpio_free(gpio_id); return 0; }
static int imx214_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; #if 0 struct sensor_cfg_data cdata_h; struct sensor_cfg_data cdata_l; u16 id_h = 0; u16 id_l = 0; u16 sensor_id = 0; cam_info("%s TODO.", __func__); cdata_h.cfg.reg.subaddr = 0x0016; cdata_h.cfg.reg.value = 0; cdata_l.cfg.reg.subaddr = 0x0017; cdata_l.cfg.reg.value = 0; imx214_i2c_read(sensor, &cdata_h); imx214_i2c_read(sensor, &cdata_l); sensor_id = (cdata_h.cfg.reg.value) << 8 | (cdata_l.cfg.reg.value); cam_notice( "%s, line %d, sensor id: 0x%x", __func__, __LINE__, sensor_id); id = read_i2c(); if (id == chipid) { cam_info("%s succeed to match id.", __func__); } else { cam_info("%s failed to match id.", __func__); sensor->board_info->sensor_index = CAMERA_SENSOR_INVALID; } #endif cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); return 0; }
static int imx230_plk_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint16_t sensor_id = 0; uint8_t module_id = 0; cam_info("%s TODO.", __func__); if (NULL == cdata ) { cam_err("%s with NULL data", __func__); return 0; } misp_get_module_info(sensor->board_info->sensor_index,&sensor_id,&module_id); if(sensor_id == 0x230) { cdata->data = sensor->board_info->sensor_index; if (MODULE_ID_SUNNY == module_id) { strncpy(cdata->cfg.name, MODULE_NAME_SUNNY, DEVICE_NAME_SIZE); } else if (MODULE_ID_LITEON == module_id) { strncpy(cdata->cfg.name, MODULE_NAME_LITEON, DEVICE_NAME_SIZE); } else if (MODULE_ID_LG == module_id) { strncpy(cdata->cfg.name, MODULE_NAME_LG, DEVICE_NAME_SIZE); } else { strncpy(cdata->cfg.name, MODULE_NAME_DEFAULT, DEVICE_NAME_SIZE); } cdata->cfg.name[DEVICE_NAME_SIZE - 1] = '\0'; cam_info("%s module_name %s", __func__, cdata->cfg.name); hwsensor_writefile(sensor->board_info->sensor_index, cdata->cfg.name); } else { cdata->data = SENSOR_INDEX_INVALID; } cam_info("%s TODO. cdata->data=%d", __func__, cdata->data); return 0; }
static int ov5648_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; cam_info("%s TODO.", __func__); /* id = read_i2c(); if (id == chipid) { cam_info("%s succeed to match id.", __func__); } else { cam_info("%s failed to match id.", __func__); sensor->board_info->sensor_index = CAMERA_SENSOR_INVALID; } */ cdata->data = sensor->board_info->sensor_index; hwsensor_writefile(sensor->board_info->sensor_index, sensor->board_info->name); return 0; }
static int imx278_carrera_match_id( hwsensor_intf_t* si, void * data) { sensor_t* sensor = I2S(si); struct sensor_cfg_data *cdata = (struct sensor_cfg_data *)data; uint16_t sensor_id = 0; uint8_t modue_id = 0; char *sensor_name[4]={"imx278_sunny","imx278_liteon","imx278_lg","imx278"}; cam_info("%s TODO.", __func__); misp_load_fw(NULL); misp_get_module_info(sensor->board_info->sensor_index,&sensor_id,&modue_id); if (sensor_id == 0x278) { cdata->data = sensor->board_info->sensor_index; if(modue_id == 0x01) { strncpy(cdata->cfg.name, sensor_name[0], DEVICE_NAME_SIZE); } else if (modue_id == 0x03) { strncpy(cdata->cfg.name, sensor_name[1], DEVICE_NAME_SIZE); } else if (modue_id == 0x07) { strncpy(cdata->cfg.name, sensor_name[2], DEVICE_NAME_SIZE); } else { strncpy(cdata->cfg.name, sensor_name[3], DEVICE_NAME_SIZE); } hwsensor_writefile(sensor->board_info->sensor_index, cdata->cfg.name); } else { cdata->data = SENSOR_INDEX_INVALID; } cam_info("%s TODO. cdata->data=%d", __func__, cdata->data); return 0; }