diff --git a/techpack/camera-xiaomi-cas/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c b/techpack/camera-xiaomi-cas/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c index 510df8318ef1..e842e80b3f83 100644 --- a/techpack/camera-xiaomi-cas/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c +++ b/techpack/camera-xiaomi-cas/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c @@ -502,11 +502,11 @@ static int cam_ife_csid_global_reset(struct cam_ife_csid_hw *csid_hw) cam_io_w_mb(0x2, soc_info->reg_map[0].mem_base + csid_reg->rdi_reg[i]->csid_rdi_cfg0_addr); - /* reset HW regs first, then SW */ - rc = cam_ife_csid_reset_regs(csid_hw, true); + /* reset SW regs first, then HW */ + rc = cam_ife_csid_reset_regs(csid_hw, false); if (rc < 0) goto end; - rc = cam_ife_csid_reset_regs(csid_hw, false); + rc = cam_ife_csid_reset_regs(csid_hw, true); if (rc < 0) goto end; diff --git a/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_flash/cam_flash_core.c b/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_flash/cam_flash_core.c index ce5440dff75b..8b1ec60097bd 100644 --- a/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_flash/cam_flash_core.c +++ b/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_flash/cam_flash_core.c @@ -1454,6 +1454,15 @@ int cam_flash_pmic_pkt_parser(struct cam_flash_ctrl *fctrl, void *arg) "Apply setting failed: %d", rc); + //xiaomi add start + if(rc && CAM_FLASH_STATE_START == fctrl->flash_state) + { + CAM_ERR(CAM_FLASH, "cannot apply settings rc = %d for state %d", + rc, fctrl->flash_state); + return rc; + } + //xiaomi add end + fctrl->flash_state = CAM_FLASH_STATE_CONFIG; break; } diff --git a/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_ois/cam_ois_core.c b/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_ois/cam_ois_core.c index 0c61626ada40..1bfa45662a19 100755 --- a/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_ois/cam_ois_core.c +++ b/techpack/camera-xiaomi-cas/drivers/cam_sensor_module/cam_ois/cam_ois_core.c @@ -951,10 +951,19 @@ static int cam_ois_get_data(struct cam_ois_ctrl_t *o_ctrl, t_now = get_cycles(); boottime64 = (uint64_t)((ts64.tv_sec * 1000000000) + ts64.tv_nsec); - rc = camera_io_dev_read_seq(&(o_ctrl->io_master_info), - OIS_DATA_ADDR, o_ctrl->ois_data.data, - CAMERA_SENSOR_I2C_TYPE_BYTE, CAMERA_SENSOR_I2C_TYPE_BYTE, - num_data); + if (o_ctrl->opcode.ois_get_data != 0) { + uint32_t ois_addr = (o_ctrl->opcode.ois_get_data & 0xFFFF0000) >> 16; + uint32_t ois_addr_type = o_ctrl->opcode.ois_get_data & 0xFFFF; + rc = camera_io_dev_read_seq(&(o_ctrl->io_master_info), + ois_addr, o_ctrl->ois_data.data, + ois_addr_type, CAMERA_SENSOR_I2C_TYPE_BYTE, + num_data); + } else { + rc = camera_io_dev_read_seq(&(o_ctrl->io_master_info), + OIS_DATA_ADDR, o_ctrl->ois_data.data, + CAMERA_SENSOR_I2C_TYPE_BYTE, CAMERA_SENSOR_I2C_TYPE_BYTE, + num_data); + } o_ctrl->ois_data.data_timestamp = (uint64_t)(t_now*10000/192);//< QTimer Freq = 19.2 MHz if (rc < 0) { diff --git a/techpack/camera-xiaomi-cas/include/uapi/media/cam_sensor.h b/techpack/camera-xiaomi-cas/include/uapi/media/cam_sensor.h index 700672d98255..c1e3a55ea610 100644 --- a/techpack/camera-xiaomi-cas/include/uapi/media/cam_sensor.h +++ b/techpack/camera-xiaomi-cas/include/uapi/media/cam_sensor.h @@ -118,6 +118,7 @@ struct cam_ois_opcode { uint32_t coeff; uint32_t pheripheral; uint32_t memory; + uint32_t ois_get_data; //Xiaomi add uint8_t fw_addr_type; uint8_t is_addr_increase; uint8_t is_addr_indata;