I've got an 8-bit input to CSI0 in gated mode. I have a 720p30 input to the CSI running with a sensor size of 1650x750. I'm having trouble getting the video to crop down correctly to 1280x720.
In my ioctl_g_fmt_cap, if I return a pixel height of 1280x720 I get a stable video, but the cropping is incorrect (I get black bars to the top and left of the video, as expected).
If I modify ioctl_g_fmt_cap to return a sensor height of 1651x750 (for some reason 1650 shows distorted data, 1651 works) I get the full frame, but the video scrolls.
I attempt to modify the cropping area in mxc_v4l2_capture.c by forcing the value of crop_current.top, .left, .width, and .height to be 1280x720 with the proper left/top offsets in mxc_v4l2_s_param(). This results in a properly sized video, but again the video still scrolls vertically. I've tried adjusting the top value to stop the scrolling, but there is no number that results in a steady video.
I'm testing using the gstreamer pipeline "gst-launch mfw_v4lsrc ! video/x-raw-yuv, framerate=30/1, height=720, width=1280 ! vpuenc codec=0 ! matroskamux ! filesink location=test.mkv --gst-debug=2".
Here are some register values I see:
imx-ipuv3 2400000.ipu: CSI_SENS_CONF = 0x00008A00
imx-ipuv3 2400000.ipu: CSI_ACT_FRM_SIZE = 0x02CF04FF
imx-ipuv3 2400000.ipu: CSI_SENS_FRM_SIZE = 0x02ED0672
The only one that really sticks out at me is the fact that the CSI0_DATA_DEST is not IDMAC via SMFC or IC, its just 0 (which is listed as reserved in the datasheet).
I'm using 3.10.17ga for everything.
Any help is very much appreciated.