From 428ef3d77709ddc166603fb9b3f48f7a56eceb6e Mon Sep 17 00:00:00 2001 From: ddl Date: Wed, 1 Feb 2012 16:36:41 +0800 Subject: [PATCH] camera: Improve test framerate method and version update to v0.x.6 --- arch/arm/mach-rk29/board-rk29-ddr3sdk.c | 28 +++++----- arch/arm/mach-rk29/board-rk29-k97.c | 28 +++++----- drivers/media/video/rk29_camera.c | 28 +++++----- drivers/media/video/rk29_camera_oneframe.c | 65 ++++++++++++++-------- 4 files changed, 84 insertions(+), 65 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c index 7ac18e91acc5..1efc7f82f460 100755 --- a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c +++ b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c @@ -82,13 +82,13 @@ #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_0 RK29_CAM_POWERDNACTIVE_H #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_L -#define CONFIG_SENSOR_QCIF_FPS_FIXED_0 15 -#define CONFIG_SENSOR_QVGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_CIF_FPS_FIXED_0 15 -#define CONFIG_SENSOR_VGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_480P_FPS_FIXED_0 15 -#define CONFIG_SENSOR_SVGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_720P_FPS_FIXED_0 30 +#define CONFIG_SENSOR_QCIF_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_QVGA_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_CIF_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_VGA_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_480P_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_SVGA_FPS_FIXED_0 15000 +#define CONFIG_SENSOR_720P_FPS_FIXED_0 30000 #define CONFIG_SENSOR_1 RK29_CAM_SENSOR_OV2659 /* front camera sensor */ #define CONFIG_SENSOR_IIC_ADDR_1 0x60 @@ -103,13 +103,13 @@ #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1 RK29_CAM_POWERDNACTIVE_H #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_1 RK29_CAM_FLASHACTIVE_L -#define CONFIG_SENSOR_QCIF_FPS_FIXED_1 15 -#define CONFIG_SENSOR_QVGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_CIF_FPS_FIXED_1 15 -#define CONFIG_SENSOR_VGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_480P_FPS_FIXED_1 15 -#define CONFIG_SENSOR_SVGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_720P_FPS_FIXED_1 30 +#define CONFIG_SENSOR_QCIF_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_QVGA_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_CIF_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_VGA_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_480P_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_SVGA_FPS_FIXED_1 15000 +#define CONFIG_SENSOR_720P_FPS_FIXED_1 30000 #endif //#ifdef CONFIG_VIDEO_RK29 /*---------------- Camera Sensor Configuration Macro End------------------------*/ diff --git a/arch/arm/mach-rk29/board-rk29-k97.c b/arch/arm/mach-rk29/board-rk29-k97.c index a2a6aee5b00e..6e9f58684b64 100755 --- a/arch/arm/mach-rk29/board-rk29-k97.c +++ b/arch/arm/mach-rk29/board-rk29-k97.c @@ -84,13 +84,13 @@ #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_0 RK29_CAM_FLASHACTIVE_L #endif -#define CONFIG_SENSOR_QCIF_FPS_FIXED_0 15 -#define CONFIG_SENSOR_QVGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_CIF_FPS_FIXED_0 15 -#define CONFIG_SENSOR_VGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_480P_FPS_FIXED_0 0 -#define CONFIG_SENSOR_SVGA_FPS_FIXED_0 15 -#define CONFIG_SENSOR_720P_FPS_FIXED_0 0 +#define CONFIG_SENSOR_QCIF_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_QVGA_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_CIF_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_VGA_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_480P_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_SVGA_FPS_FIXED_0 12504 +#define CONFIG_SENSOR_720P_FPS_FIXED_0 6256 #ifdef CONFIG_SOC_CAMERA_OV9665 #define CONFIG_SENSOR_1 RK29_CAM_SENSOR_OV9665 /* front camera sensor */ #define CONFIG_SENSOR_IIC_ADDR_1 0x60 @@ -118,13 +118,13 @@ #define CONFIG_SENSOR_POWERDNACTIVE_LEVEL_1 RK29_CAM_POWERDNACTIVE_H #define CONFIG_SENSOR_FLASHACTIVE_LEVEL_1 RK29_CAM_FLASHACTIVE_L -#define CONFIG_SENSOR_QCIF_FPS_FIXED_1 15 -#define CONFIG_SENSOR_QVGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_CIF_FPS_FIXED_1 15 -#define CONFIG_SENSOR_VGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_480P_FPS_FIXED_1 0 -#define CONFIG_SENSOR_SVGA_FPS_FIXED_1 15 -#define CONFIG_SENSOR_720P_FPS_FIXED_1 0 +#define CONFIG_SENSOR_QCIF_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_QVGA_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_CIF_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_VGA_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_480P_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_SVGA_FPS_FIXED_1 12504 +#define CONFIG_SENSOR_720P_FPS_FIXED_1 6256 #endif //#ifdef CONFIG_VIDEO_RK29 /*---------------- Camera Sensor Configuration Macro End------------------------*/ #include "../../../drivers/media/video/rk29_camera.c" diff --git a/drivers/media/video/rk29_camera.c b/drivers/media/video/rk29_camera.c index 83678fd25809..e8c4898f4f94 100755 --- a/drivers/media/video/rk29_camera.c +++ b/drivers/media/video/rk29_camera.c @@ -1341,7 +1341,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_QCIF_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_QCIF_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 176; @@ -1352,7 +1352,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_QVGA_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_QVGA_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 320; @@ -1363,7 +1363,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_CIF_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_CIF_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 352; @@ -1374,7 +1374,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_VGA_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_VGA_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 640; @@ -1385,7 +1385,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_480P_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_480P_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 720; @@ -1396,7 +1396,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_SVGA_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_SVGA_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 800; @@ -1407,7 +1407,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_720P_FPS_FIXED_0 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_720P_FPS_FIXED_0; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 1280; @@ -1419,7 +1419,7 @@ static int rk29_sensor_io_init(void) } else { #if CONFIG_SENSOR_QCIF_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_QCIF_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 176; @@ -1430,7 +1430,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_QVGA_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_QVGA_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 320; @@ -1441,7 +1441,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_CIF_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_CIF_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 352; @@ -1452,7 +1452,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_VGA_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_VGA_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 640; @@ -1463,7 +1463,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_480P_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_480P_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 720; @@ -1474,7 +1474,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_SVGA_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_SVGA_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 800; @@ -1485,7 +1485,7 @@ static int rk29_sensor_io_init(void) #if CONFIG_SENSOR_720P_FPS_FIXED_1 rk29_camera_platform_data.info[i].fival[j].discrete.denominator = CONFIG_SENSOR_720P_FPS_FIXED_1; - rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1; + rk29_camera_platform_data.info[i].fival[j].discrete.numerator= 1000; rk29_camera_platform_data.info[i].fival[j].index = 0; rk29_camera_platform_data.info[i].fival[j].pixel_format = V4L2_PIX_FMT_NV12; rk29_camera_platform_data.info[i].fival[j].width = 1280; diff --git a/drivers/media/video/rk29_camera_oneframe.c b/drivers/media/video/rk29_camera_oneframe.c index cabaa4c3c0b3..53232ef559e1 100755 --- a/drivers/media/video/rk29_camera_oneframe.c +++ b/drivers/media/video/rk29_camera_oneframe.c @@ -147,8 +147,9 @@ module_param(debug, int, S_IRUGO|S_IWUSR); *v0.x.3 : this driver support VIDIOC_ENUM_FRAMEINTERVALS; *v0.x.4 : this driver support digital zoom; *v0.x.5 : this driver support test framerate and query framerate from board file configuration; +*v0.x.6 : this driver improve test framerate method; */ -#define RK29_CAM_VERSION_CODE KERNEL_VERSION(0, 1, 5) +#define RK29_CAM_VERSION_CODE KERNEL_VERSION(0, 1, 6) /* limit to rk29 hardware capabilities */ #define RK29_CAM_BUS_PARAM (SOCAM_MASTER |\ @@ -169,6 +170,7 @@ module_param(debug, int, S_IRUGO|S_IWUSR); #define RK29_CAM_H_MAX 2764 #define RK29_CAM_FRAME_INVAL_INIT 3 #define RK29_CAM_FRAME_INVAL_DC 3 /* ddl@rock-chips.com : */ +#define RK29_CAM_FRAME_MEASURE 5 #define RK29_CAM_AXI 0 #define RK29_CAM_AHB 1 @@ -251,12 +253,15 @@ struct rk29_camera_dev int frame_inval; /* ddl@rock-chips.com : The first frames is invalidate */ unsigned int irq; unsigned int fps; + unsigned long frame_interval; unsigned int pixfmt; unsigned int vipmem_phybase; unsigned int vipmem_size; unsigned int vipmem_bsize; int host_width; int host_height; + int icd_width; + int icd_height; struct rk29camera_platform_data *pdata; struct resource *res; @@ -600,15 +605,20 @@ static irqreturn_t rk29_camera_irq(int irq, void *data) struct rk29_camera_dev *pcdev = data; struct videobuf_buffer *vb; struct rk29_camera_work *wk; + static struct timeval first_tv; + struct timeval tv; read_vip_reg(RK29_VIP_INT_STS); /* clear vip interrupte single */ /* ddl@rock-chps.com : Current VIP is run in One Frame Mode, Frame 1 is validate */ if (read_vip_reg(RK29_VIP_FB_SR) & 0x01) { + if (!pcdev->fps) { + do_gettimeofday(&first_tv); + } pcdev->fps++; if (!pcdev->active) goto RK29_CAMERA_IRQ_END; - if (pcdev->frame_inval>0) { + if (pcdev->frame_inval>0) { pcdev->frame_inval--; rk29_videobuf_capture(pcdev->active); goto RK29_CAMERA_IRQ_END; @@ -617,6 +627,12 @@ static irqreturn_t rk29_camera_irq(int irq, void *data) pcdev->frame_inval = 0; } + if(pcdev->fps == RK29_CAM_FRAME_MEASURE) { + do_gettimeofday(&tv); + pcdev->frame_interval = ((tv.tv_sec*1000000 + tv.tv_usec) - (first_tv.tv_sec*1000000 + first_tv.tv_usec)) + /(RK29_CAM_FRAME_MEASURE-1); + } + vb = pcdev->active; /* ddl@rock-chips.com : this vb may be deleted from queue */ if ((vb->state == VIDEOBUF_QUEUED) || (vb->state == VIDEOBUF_ACTIVE)) { @@ -1252,7 +1268,7 @@ static int rk29_camera_set_fmt(struct soc_camera_device *icd, struct v4l2_pix_format *pix = &f->fmt.pix; struct v4l2_mbus_framefmt mf; struct v4l2_rect rect; - int ret,usr_w,usr_h; + int ret,usr_w,usr_h,icd_width,icd_height; int stream_on = 0; usr_w = pix->width; @@ -1286,7 +1302,9 @@ static int rk29_camera_set_fmt(struct soc_camera_device *icd, if (mf.code != xlate->code) return -EINVAL; - + + icd_width = mf.width; + icd_height = mf.height; #ifdef CONFIG_VIDEO_RK29_WORK_IPP if ((mf.width != usr_w) || (mf.height != usr_h)) { if (unlikely((mf.width <16) || (mf.width > 8190) || (mf.height < 16) || (mf.height > 8190))) { @@ -1345,6 +1363,8 @@ static int rk29_camera_set_fmt(struct soc_camera_device *icd, if (CAM_IPPWORK_IS_EN()) { BUG_ON(pcdev->vipmem_phybase == 0); } + pcdev->icd_width = icd_width; + pcdev->icd_height = icd_height; pix->width = mf.width; pix->height = mf.height; @@ -1681,22 +1701,17 @@ static enum hrtimer_restart rk29_camera_fps_func(struct hrtimer *timer) && (fival_nxt->fival.height == rk29_camdev_info_ptr->icd->user_height) && (fival_nxt->fival.width == rk29_camdev_info_ptr->icd->user_width)) || (fival_nxt->fival.discrete.denominator == 0)) { - - if (fival_nxt->fival.discrete.denominator == 0) { - fival_nxt->fival.index = 0; - fival_nxt->fival.width = rk29_camdev_info_ptr->icd->user_width; - fival_nxt->fival.height= rk29_camdev_info_ptr->icd->user_height; - fival_nxt->fival.pixel_format = rk29_camdev_info_ptr->pixfmt; - fival_nxt->fival.discrete.denominator = rk29_camdev_info_ptr->fps+2; - fival_nxt->fival.discrete.numerator = 1; - fival_nxt->fival.type = V4L2_FRMIVAL_TYPE_DISCRETE; - } else { - if (abs(rk29_camdev_info_ptr->fps + 2 - fival_nxt->fival.discrete.numerator) > 2) { - fival_nxt->fival.discrete.denominator = rk29_camdev_info_ptr->fps+2; - fival_nxt->fival.discrete.numerator = 1; - fival_nxt->fival.type = V4L2_FRMIVAL_TYPE_DISCRETE; - } - } + + fival_nxt->fival.index = 0; + fival_nxt->fival.width = rk29_camdev_info_ptr->icd->user_width; + fival_nxt->fival.height= rk29_camdev_info_ptr->icd->user_height; + fival_nxt->fival.pixel_format = rk29_camdev_info_ptr->pixfmt; + fival_nxt->fival.discrete.denominator = rk29_camdev_info_ptr->frame_interval; + fival_nxt->fival.reserved[1] = (rk29_camdev_info_ptr->icd_width<<16) + |(rk29_camdev_info_ptr->icd_height); + fival_nxt->fival.discrete.numerator = 1000000; + fival_nxt->fival.type = V4L2_FRMIVAL_TYPE_DISCRETE; + rec_flag = 1; fival_rec = fival_nxt; } @@ -1712,8 +1727,12 @@ static enum hrtimer_restart rk29_camera_fps_func(struct hrtimer *timer) fival_pre->nxt->fival.height= rk29_camdev_info_ptr->icd->user_height; fival_pre->nxt->fival.pixel_format = rk29_camdev_info_ptr->pixfmt; - fival_pre->nxt->fival.discrete.denominator = rk29_camdev_info_ptr->fps+2; - fival_pre->nxt->fival.discrete.numerator = 1; + fival_pre->nxt->fival.discrete.denominator = rk29_camdev_info_ptr->frame_interval; + + fival_pre->nxt->fival.reserved[1] = (rk29_camdev_info_ptr->icd_width<<16) + |(rk29_camdev_info_ptr->icd_height); + + fival_pre->nxt->fival.discrete.numerator = 1000000; fival_pre->nxt->fival.type = V4L2_FRMIVAL_TYPE_DISCRETE; rec_flag = 1; fival_rec = fival_pre->nxt; @@ -1731,7 +1750,7 @@ static int rk29_camera_s_stream(struct soc_camera_device *icd, int enable) int ret; WARN_ON(pcdev->icd != icd); - + pcdev->frame_interval = 0; vip_ctrl_val = read_vip_reg(RK29_VIP_CTRL); if (enable) { pcdev->fps = 0; -- 2.34.1