On 10/21/2014 03:16 PM, Jean-Michel Hautbois wrote:
Hi, I am trying to use the CODA960 driver on a 3.18 kernel. It seems pretty good when the module is probed (appart from the unsupported firmware version) but when I try using the encoder, it fails allocating dma buffers. Here is the DT part I added : &vpu { compatible = "fsl,imx6q-vpu"; clocks = <&clks 168>, <&clks 140>, <&clks 142>; clock-names = "per", "ahb", "ocram"; iramsize = <0x21000>; iram = <&ocram>; resets = <&src 1>; status = "okay"; }; When booting, I see : [ 4.410645] coda 2040000.vpu: Firmware code revision: 46056 [ 4.416312] coda 2040000.vpu: Initialized CODA960. [ 4.421123] coda 2040000.vpu: Unsupported firmware version: 3.1.1 [ 4.483577] coda 2040000.vpu: codec registered as /dev/video[0-1] I can start v4l2-ctl and it shows that the device seems to be ok : v4l2-ctl --all -d /dev/video1 Driver Info (not using libv4l2): Driver name : coda Card type : CODA960 Bus info : platform:coda Driver version: 3.18.0 Capabilities : 0x84208000 Video Memory-to-Memory Streaming Extended Pix Format Device Capabilities Device Caps : 0x04208000 Video Memory-to-Memory Streaming Extended Pix Format Priority: 2 Format Video Capture: Width/Height : 1920/1088 Pixel Format : 'YU12' Field : None Bytes per Line: 1920 Size Image : 3133440 Colorspace : HDTV and modern devices (ITU709) Flags : Format Video Output: Width/Height : 1920/1088 Pixel Format : 'H264' Field : None Bytes per Line: 0 Size Image : 1048576 Colorspace : HDTV and modern devices (ITU709) Flags : Selection: compose, Left 0, Top 0, Width 1920, Height 1088 Selection: compose_default, Left 0, Top 0, Width 1920, Height 1088 Selection: compose_bounds, Left 0, Top 0, Width 1920, Height 1088 Selection: compose_padded, Left 0, Top 0, Width 1920, Height 1088 Selection: crop, Left 0, Top 0, Width 1920, Height 1088 Selection: crop_default, Left 0, Top 0, Width 1920, Height 1088 Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1088 User Controls horizontal_flip (bool) : default=0 value=0 vertical_flip (bool) : default=0 value=0 Codec Controls video_gop_size (int) : min=1 max=60 step=1 default=16 value=16 video_bitrate (int) : min=0 max=32767000 step=1 default=0 value=0 number_of_intra_refresh_mbs (int) : min=0 max=8160 step=1 default=0 value=0 sequence_header_mode (menu) : min=0 max=1 default=1 value=1 maximum_bytes_in_a_slice (int) : min=1 max=1073741823 step=1 default=500 value=500 number_of_mbs_in_a_slice (int) : min=1 max=1073741823 step=1 default=1 value=1 slice_partitioning_method (menu) : min=0 max=2 default=0 value=0 h264_i_frame_qp_value (int) : min=0 max=51 step=1 default=25 value=25 h264_p_frame_qp_value (int) : min=0 max=51 step=1 default=25 value=25 h264_maximum_qp_value (int) : min=0 max=51 step=1 default=51 value=51 h264_loop_filter_alpha_offset (int) : min=0 max=15 step=1 default=0 value=0 h264_loop_filter_beta_offset (int) : min=0 max=15 step=1 default=0 value=0 h264_loop_filter_mode (menu) : min=0 max=1 default=0 value=0 mpeg4_i_frame_qp_value (int) : min=1 max=31 step=1 default=2 value=2 mpeg4_p_frame_qp_value (int) : min=1 max=31 step=1 default=2 value=2 horizontal_flip (bool) : default=0 value=0 vertical_flip (bool) : default=0 value=0 But when I try to get a file outputed, it fails : v4l2-ctl -d1 --stream-out-mmap --stream-mmap --stream-to x.raw [ 1197.292256] coda 2040000.vpu: dma_alloc_coherent of size 1048576 failed VIDIOC_REQBUFS: failed: Cannot allocate memory Did I forget to do something ?
I assume this is physically contiguous memory. Do you have that much phys. cont. memory available at all? If the memory is fragmented you won't be able to get it. Use cma (contiguous memory allocator). You probably have to do very little expect add a kernel option to assign enough memory for these buffers. Regards, Hans -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html