Hi everyone, On Mon, Jan 28, 2019 at 01:20:37PM +0530, Jagan Teki wrote: > On Fri, Jan 25, 2019 at 9:10 PM Maxime Ripard wrote: > > > > On Thu, Jan 24, 2019 at 11:28:01PM +0530, Jagan Teki wrote: > > > The ov5640_try_frame_interval operation updates the FPS as per user > > > input based on default ov5640_frame_rate, OV5640_30_FPS which is failed > > > to update when user trigger 15fps. > > > > > > So, initialize the default ov5640_frame_rate to OV5640_15_FPS so-that > > > it can satisfy to update all fps. > > > > > > Fixes: 5a3ad937bc78 ("media: ov5640: Make the return rate type more explicit") > > > Signed-off-by: Jagan Teki > > > > I'm pretty sure I tested this and it was working fine. You're > > mentionning a regression, but what regression is there exactly (ie, > > what was working before that commit that doesn't work anymore?). What > > tools/commands are you using to see this behaviour? > I think Jagan's right, here. For the 15FPS use case, the below condition in the for loop of ov5640_try_frame_interval() never gets satisfied (0 < 0 ?) and 'rate' retains its initial value of 30FPS. if (abs(curr_fps - fps) < abs(best_fps - fps)) { best_fps = curr_fps; rate = i; } To make more clear what's happening, I would initialize 'rate' just before 'best_fps' before the for loop. Anyway, please add: Acked-by: Jacopo Mondi Maxime, does this make sense to you? Thanks j > In fact I have mentioned this on your v9 [1], may be you missed it. > > I have reproduced with media-ctl, below is the full log. let me know > if I still miss anything. > > Before this change: > # media-ctl -p > Media controller API version 5.0.0 > > Media device information > ------------------------ > driver sun6i-csi > model Allwinner Video Capture Device > serial > bus info > hw revision 0x0 > driver version 5.0.0 > > Device topology > - entity 1: sun6i-csi (1 pad, 1 link) > type Node subtype V4L flags 0 > device node name /dev/video0 > pad0: Sink > <- "ov5640 1-003c":0 [ENABLED,IMMUTABLE] > > - entity 5: ov5640 1-003c (1 pad, 1 link) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev0 > pad0: Source > [fmt:UYVY8_2X8/640x480@1/30 field:none colorspace:srgb > xfer:srgb ycbcr:601 quantization:full-range] > -> "sun6i-csi":0 [ENABLED,IMMUTABLE] > > # media-ctl --set-v4l2 "'ov5640 1-003c':0[fmt:UYVY8_2X8/640x480@1/15 field:none] > " > # media-ctl -p > Media controller API version 5.0.0 > > Media device information > ------------------------ > driver sun6i-csi > model Allwinner Video Capture Device > serial > bus info > hw revision 0x0 > driver version 5.0.0 > > Device topology > - entity 1: sun6i-csi (1 pad, 1 link) > type Node subtype V4L flags 0 > device node name /dev/video0 > pad0: Sink > <- "ov5640 1-003c":0 [ENABLED,IMMUTABLE] > > - entity 5: ov5640 1-003c (1 pad, 1 link) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev0 > pad0: Source > [fmt:UYVY8_2X8/640x480@1/30 field:none colorspace:srgb > xfer:srgb ycbcr:601 quantization:full-range] > -> "sun6i-csi":0 [ENABLED,IMMUTABLE] > > > After this change: > # media-ctl -p > Media controller API version 5.0.0 > > Media device information > ------------------------ > driver sun6i-csi > model Allwinner Video Capture Device > serial > bus info > hw revision 0x0 > driver version 5.0.0 > > Device topology > - entity 1: sun6i-csi (1 pad, 1 link) > type Node subtype V4L flags 0 > device node name /dev/video0 > pad0: Sink > <- "ov5640 1-003c":0 [ENABLED,IMMUTABLE] > > - entity 5: ov5640 1-003c (1 pad, 1 link) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev0 > pad0: Source > [fmt:UYVY8_2X8/640x480@1/30 field:none colorspace:srgb > xfer:srgb ycbcr:601 quantization:full-range] > -> "sun6i-csi":0 [ENABLED,IMMUTABLE] > > # media-ctl --set-v4l2 "'ov5640 1-003c':0[fmt:UYVY8_2X8/640x480@1/15 field:none] > " > # media-ctl -p > Media controller API version 5.0.0 > > Media device information > ------------------------ > driver sun6i-csi > model Allwinner Video Capture Device > serial > bus info > hw revision 0x0 > driver version 5.0.0 > > Device topology > - entity 1: sun6i-csi (1 pad, 1 link) > type Node subtype V4L flags 0 > device node name /dev/video0 > pad0: Sink > <- "ov5640 1-003c":0 [ENABLED,IMMUTABLE] > > - entity 5: ov5640 1-003c (1 pad, 1 link) > type V4L2 subdev subtype Sensor flags 0 > device node name /dev/v4l-subdev0 > pad0: Source > [fmt:UYVY8_2X8/640x480@1/15 field:none colorspace:srgb > xfer:srgb ycbcr:601 quantization:full-range] > -> "sun6i-csi":0 [ENABLED,IMMUTABLE] > > [1] https://patchwork.kernel.org/patch/10708931/