| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -145,12 +145,11 @@ void sensors_poke(struct CameraState *s, int request_id) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int size = sizeof(struct cam_packet); | 
					 | 
					 | 
					 | 
					  int size = sizeof(struct cam_packet); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  struct cam_packet *pkt = (struct cam_packet *)alloc(s->video0_fd, size, 8, | 
					 | 
					 | 
					 | 
					  struct cam_packet *pkt = (struct cam_packet *)alloc(s->video0_fd, size, 8, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, &cam_packet_handle); | 
					 | 
					 | 
					 | 
					    CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, &cam_packet_handle); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->num_cmd_buf = 1; | 
					 | 
					 | 
					 | 
					  pkt->num_cmd_buf = 0; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->kmd_cmd_buf_index = -1; | 
					 | 
					 | 
					 | 
					  pkt->kmd_cmd_buf_index = -1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->header.size = size; | 
					 | 
					 | 
					 | 
					  pkt->header.size = size; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->header.op_code = 0x7f; | 
					 | 
					 | 
					 | 
					  pkt->header.op_code = 0x7f; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->header.request_id = request_id; | 
					 | 
					 | 
					 | 
					  pkt->header.request_id = request_id; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  //struct cam_cmd_buf_desc *buf_desc = (struct cam_cmd_buf_desc *)&pkt->payload;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  struct cam_config_dev_cmd config_dev_cmd = {}; | 
					 | 
					 | 
					 | 
					  struct cam_config_dev_cmd config_dev_cmd = {}; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  config_dev_cmd.session_handle = s->session_handle; | 
					 | 
					 | 
					 | 
					  config_dev_cmd.session_handle = s->session_handle; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -177,10 +176,10 @@ void sensors_i2c(struct CameraState *s, struct i2c_random_wr_payload* dat, int l | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pkt->header.op_code = op_code; | 
					 | 
					 | 
					 | 
					  pkt->header.op_code = op_code; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  struct cam_cmd_buf_desc *buf_desc = (struct cam_cmd_buf_desc *)&pkt->payload; | 
					 | 
					 | 
					 | 
					  struct cam_cmd_buf_desc *buf_desc = (struct cam_cmd_buf_desc *)&pkt->payload; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  buf_desc[0].size = buf_desc[0].length = sizeof(struct cam_cmd_i2c_random_wr) + (len-1)*sizeof(struct i2c_random_wr_payload); | 
					 | 
					 | 
					 | 
					  buf_desc[0].size = buf_desc[0].length = sizeof(struct i2c_rdwr_header) + len*sizeof(struct i2c_random_wr_payload); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  buf_desc[0].type = CAM_CMD_BUF_I2C; | 
					 | 
					 | 
					 | 
					  buf_desc[0].type = CAM_CMD_BUF_I2C; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  struct cam_cmd_power *power = (struct cam_cmd_power *)alloc(s->video0_fd, buf_desc[0].size, 8, CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, (uint32_t*)&buf_desc[0].mem_handle); | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  struct cam_cmd_i2c_random_wr *i2c_random_wr = (struct cam_cmd_i2c_random_wr *)power; | 
					 | 
					 | 
					 | 
					  struct cam_cmd_i2c_random_wr *i2c_random_wr = (struct cam_cmd_i2c_random_wr *)alloc(s->video0_fd, buf_desc[0].size, 8, CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, (uint32_t*)&buf_desc[0].mem_handle); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  i2c_random_wr->header.count = len; | 
					 | 
					 | 
					 | 
					  i2c_random_wr->header.count = len; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  i2c_random_wr->header.op_code = 1; | 
					 | 
					 | 
					 | 
					  i2c_random_wr->header.op_code = 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  i2c_random_wr->header.cmd_type = CAMERA_SENSOR_CMD_TYPE_I2C_RNDM_WR; | 
					 | 
					 | 
					 | 
					  i2c_random_wr->header.cmd_type = CAMERA_SENSOR_CMD_TYPE_I2C_RNDM_WR; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -197,7 +196,7 @@ void sensors_i2c(struct CameraState *s, struct i2c_random_wr_payload* dat, int l | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int ret = cam_control(s->sensor_fd, CAM_CONFIG_DEV, &config_dev_cmd, sizeof(config_dev_cmd)); | 
					 | 
					 | 
					 | 
					  int ret = cam_control(s->sensor_fd, CAM_CONFIG_DEV, &config_dev_cmd, sizeof(config_dev_cmd)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  assert(ret == 0); | 
					 | 
					 | 
					 | 
					  assert(ret == 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  munmap(power, buf_desc[0].size); | 
					 | 
					 | 
					 | 
					  munmap(i2c_random_wr, buf_desc[0].size); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  release_fd(s->video0_fd, buf_desc[0].mem_handle); | 
					 | 
					 | 
					 | 
					  release_fd(s->video0_fd, buf_desc[0].mem_handle); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  munmap(pkt, size); | 
					 | 
					 | 
					 | 
					  munmap(pkt, size); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  release_fd(s->video0_fd, cam_packet_handle); | 
					 | 
					 | 
					 | 
					  release_fd(s->video0_fd, cam_packet_handle); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -733,16 +732,18 @@ static void camera_open(CameraState *s) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  LOG("-- Config CSI PHY"); | 
					 | 
					 | 
					 | 
					  LOG("-- Config CSI PHY"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  { | 
					 | 
					 | 
					 | 
					  { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    uint32_t cam_packet_handle = 0; | 
					 | 
					 | 
					 | 
					    uint32_t cam_packet_handle = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    struct cam_packet *pkt = (struct cam_packet *)alloc(s->video0_fd, sizeof(struct cam_packet)+sizeof(struct cam_cmd_buf_desc)*1, 8, | 
					 | 
					 | 
					 | 
					    int size = sizeof(struct cam_packet)+sizeof(struct cam_cmd_buf_desc)*1; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    struct cam_packet *pkt = (struct cam_packet *)alloc(s->video0_fd, size, 8, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, &cam_packet_handle); | 
					 | 
					 | 
					 | 
					      CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, &cam_packet_handle); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    pkt->num_cmd_buf = 1; | 
					 | 
					 | 
					 | 
					    pkt->num_cmd_buf = 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    pkt->kmd_cmd_buf_index = -1; | 
					 | 
					 | 
					 | 
					    pkt->kmd_cmd_buf_index = -1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    pkt->header.size = size; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    struct cam_cmd_buf_desc *buf_desc = (struct cam_cmd_buf_desc *)&pkt->payload; | 
					 | 
					 | 
					 | 
					    struct cam_cmd_buf_desc *buf_desc = (struct cam_cmd_buf_desc *)&pkt->payload; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    buf_desc[0].size = buf_desc[0].length = sizeof(struct cam_csiphy_info); | 
					 | 
					 | 
					 | 
					    buf_desc[0].size = buf_desc[0].length = sizeof(struct cam_csiphy_info); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    buf_desc[0].type = CAM_CMD_BUF_GENERIC; | 
					 | 
					 | 
					 | 
					    buf_desc[0].type = CAM_CMD_BUF_GENERIC; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    struct cam_csiphy_info *csiphy_info = (struct cam_csiphy_info *)alloc(s->video0_fd, buf_desc[0].size, 8, CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, (uint32_t*)&buf_desc[0].mem_handle); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    struct cam_csiphy_info *csiphy_info = (struct cam_csiphy_info *)alloc(s->video0_fd, buf_desc[0].size, 8, CAM_MEM_FLAG_KMD_ACCESS | CAM_MEM_FLAG_UMD_ACCESS | CAM_MEM_FLAG_CMD_BUF_TYPE, (uint32_t*)&buf_desc[0].mem_handle); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    csiphy_info->lane_mask = 0x1f; | 
					 | 
					 | 
					 | 
					    csiphy_info->lane_mask = 0x1f; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    csiphy_info->lane_assign = 0x3210;// skip clk. How is this 16 bit for 5 channels??
 | 
					 | 
					 | 
					 | 
					    csiphy_info->lane_assign = 0x3210;// skip clk. How is this 16 bit for 5 channels??
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    csiphy_info->csiphy_3phase = 0x0; // no 3 phase, only 2 conductors per lane
 | 
					 | 
					 | 
					 | 
					    csiphy_info->csiphy_3phase = 0x0; // no 3 phase, only 2 conductors per lane
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |