diff --git a/drivers/video/rockchip/vehicle/vehicle_cfg.h b/drivers/video/rockchip/vehicle/vehicle_cfg.h index 96241b7b5128..7702edd187ec 100644 --- a/drivers/video/rockchip/vehicle/vehicle_cfg.h +++ b/drivers/video/rockchip/vehicle/vehicle_cfg.h @@ -15,7 +15,7 @@ static int vehicle_debug; #define VEHICLE_DG(format, ...) do { \ if (vehicle_debug) \ - pr_info("%s %s(%d): " format, __func__, __LINE__, ## __VA_ARGS__); \ + pr_info("%s(%d): " format, __func__, __LINE__, ## __VA_ARGS__); \ } while (0) #define VEHICLE_DGERR(format, ...) \ @@ -43,6 +43,29 @@ enum { CIF_OUTPUT_FORMAT_420 = 1, }; +/* Serial flags */ +/* CSI-2 D-PHY number of data lanes. */ +#define V4L2_MBUS_CSI2_1_LANE BIT(0) +#define V4L2_MBUS_CSI2_2_LANE BIT(1) +#define V4L2_MBUS_CSI2_3_LANE BIT(2) +#define V4L2_MBUS_CSI2_4_LANE BIT(3) +/* CSI-2 Virtual Channel identifiers. */ +#define V4L2_MBUS_CSI2_CHANNEL_0 BIT(4) +#define V4L2_MBUS_CSI2_CHANNEL_1 BIT(5) +#define V4L2_MBUS_CSI2_CHANNEL_2 BIT(6) +#define V4L2_MBUS_CSI2_CHANNEL_3 BIT(7) +/* Clock non-continuous mode support. */ +#define V4L2_MBUS_CSI2_CONTINUOUS_CLOCK BIT(8) + +#define V4L2_MBUS_CSI2_LANES (V4L2_MBUS_CSI2_1_LANE | \ + V4L2_MBUS_CSI2_2_LANE | \ + V4L2_MBUS_CSI2_3_LANE | \ + V4L2_MBUS_CSI2_4_LANE) +#define V4L2_MBUS_CSI2_CHANNELS (V4L2_MBUS_CSI2_CHANNEL_0 | \ + V4L2_MBUS_CSI2_CHANNEL_1 | \ + V4L2_MBUS_CSI2_CHANNEL_2 | \ + V4L2_MBUS_CSI2_CHANNEL_3) + struct vehicle_cfg { /* output */ int width; diff --git a/drivers/video/rockchip/vehicle/vehicle_cif.c b/drivers/video/rockchip/vehicle/vehicle_cif.c index 2671d9bc1394..22defc8e7204 100644 --- a/drivers/video/rockchip/vehicle/vehicle_cif.c +++ b/drivers/video/rockchip/vehicle/vehicle_cif.c @@ -4515,7 +4515,7 @@ static void vehicle_csi2_err_print_work(struct work_struct *work) pr_err("mipi_csi2: ERR%d:0x%x %s\n", err_state->err_num, err_state->err_val, err_state->err_str); if (err_state->err_num == 1) - pr_info("mipi_csi2: err_stat:0x%x\n", err_state->err_stat); + pr_info("mipi_csi2: err_stat:0x%lx\n", err_state->err_stat); } static irqreturn_t vehicle_csirx_irq1(int irq, void *data) diff --git a/drivers/video/rockchip/vehicle/vehicle_flinger.c b/drivers/video/rockchip/vehicle/vehicle_flinger.c index e2c0e676ba85..f645bfa9346d 100644 --- a/drivers/video/rockchip/vehicle/vehicle_flinger.c +++ b/drivers/video/rockchip/vehicle/vehicle_flinger.c @@ -724,7 +724,6 @@ static int rk_flinger_rga_scaler(struct flinger *flinger, if (!file_ready) { int frame_len = src_buffer->src.w * src_buffer->src.h * 3 / 2; char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -735,13 +734,8 @@ static int rk_flinger_rga_scaler(struct flinger *flinger, VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, - (unsigned char __user *)(src_buffer->vir_addr), - frame_len, &pos); + kernel_write(filep, src_buffer->vir_addr, frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; } @@ -761,7 +755,6 @@ static int rk_flinger_rga_scaler(struct flinger *flinger, /* NV12 */ int frame_len = dst_buffer->src.w * dst_buffer->src.h * 3 / 2; char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -772,13 +765,8 @@ static int rk_flinger_rga_scaler(struct flinger *flinger, VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, - (unsigned char __user *)(dst_buffer->vir_addr), - frame_len, &pos); + kernel_write(filep, dst_buffer->vir_addr, frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; } @@ -1006,7 +994,6 @@ static int rk_flinger_rga_render(struct flinger *flinger, if (!file_ready) { int frame_len = dst_buffer->src.w * dst_buffer->src.h * 3 / 2;//NV12 char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -1017,13 +1004,8 @@ static int rk_flinger_rga_render(struct flinger *flinger, VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, - (unsigned char __user *)(dst_buffer->vir_addr), - frame_len, &pos); + kernel_write(filep, dst_buffer->vir_addr, frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; } @@ -1075,7 +1057,6 @@ static void rk_drm_vehicle_commit(struct flinger *flinger, struct graphic_buffer int frame_len = buffer->drm_buffer->width * buffer->drm_buffer->height * 3 / 2;//NV12 char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -1087,13 +1068,9 @@ static void rk_drm_vehicle_commit(struct flinger *flinger, struct graphic_buffer VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, - (unsigned char __user *)(buffer->drm_buffer->vir_addr[0]), - frame_len, &pos); + kernel_write(filep, + buffer->drm_buffer->vir_addr[0], frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; } @@ -1149,7 +1126,6 @@ static int rk_flinger_vop_show(struct flinger *flinger, if (!file_ready) { int frame_len = buffer->src.w * buffer->src.h * 3 / 2;//NV12 char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -1160,13 +1136,8 @@ static int rk_flinger_vop_show(struct flinger *flinger, VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, - (unsigned char __user *)(buffer->vir_addr), - frame_len, &pos); + kernel_write(filep, buffer->vir_addr, frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; } @@ -1275,7 +1246,6 @@ try_again: //nv12 frame_len=w*h*3/2 int frame_len = src_buffer->src.w * src_buffer->src.h * 3 / 2; char path[128] = {0}; - mm_segment_t fs; VEHICLE_DG("save vop frame(%d) frame_len(%d)\n", frame_count++, frame_len); @@ -1286,11 +1256,8 @@ try_again: VEHICLE_DGERR(" %s filp_open failed!\n", path); file_ready = false; } else { - fs = get_fs(); - set_fs(KERNEL_DS); - vfs_write(filep, src_buffer->vir_addr, frame_len, &pos); + kernel_write(filep, src_buffer->vir_addr, frame_len, &pos); filp_close(filep, NULL); - set_fs(fs); VEHICLE_INFO(" %s file saved ok!\n", path); file_ready = true; }