lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <756729ed-18d6-519c-ba61-98afeecaa0b7@gpxsee.org>
Date:   Tue, 13 Jun 2023 16:46:26 +0200
From:   Martin Tůma <tumic@...see.org>
To:     Hans Verkuil <hverkuil-cisco@...all.nl>,
        Mauro Carvalho Chehab <mchehab@...nel.org>
Cc:     linux-media@...r.kernel.org, linux-kernel@...r.kernel.org,
        Martin Tůma <martin.tuma@...iteqautomotive.com>
Subject: Re: [RESEND PATCH v6 1/1] Added Digiteq Automotive MGB4 driver

On 13. 06. 23 14:18, Hans Verkuil wrote:
> Hi Martin,
> 
> On 12/06/2023 13:34, Martin Tůma wrote:
>> On 12. 06. 23 10:51, Hans Verkuil wrote:
>>> On 08/06/2023 17:30, Martin Tůma wrote:
>>>> On 08. 06. 23 12:23, Hans Verkuil wrote:
>>>>
>>>>> Can you make a list of which sysfs properties correspond to existing V4L2
>>>>> format or timing fields and which are 'new'?
>>>>>
>>>>
>>>> On the left all the current mgb4 sysfs properties (see the admin-guide doc from the patch for description), on the right v4l2 structures where they could be mapped (may not be true for all of them in
>>>> the patch, I will check it and update the code in v7)
>>>>
>>>>
>>>> --- PCIE CARD ---
>>>>
>>>> module_type        -
>>>> module_version        -
>>>> fw_type            -
>>>> fw_version        -
>>>> serial_number        -
>>>> temperature        hwmon
>>>>
>>>> --- INPUTS ---
>>>>
>>>> input_id        -
>>>> oldi_lane_width        -
>>>> color_mapping        -
>>>> link_status        v4l2_input.status (V4L2_IN_ST_NO_SYNC)
>>>> stream_status        v4l2_input.status (V4L2_IN_ST_NO_SIGNAL)
>>>> video_width        v4l2_bt_timings.width
>>>> video_height        v4l2_bt_timings.height
>>>> vsync_status        v4l2_bt_timings.polarities
>>>> hsync_status        v4l2_bt_timings.polarities
>>>> vsync_gap_length    -
>>>> hsync_gap_length    -
>>>> pclk_frequency        v4l2_bt_timings.pixelclock
>>>> hsync_width        v4l2_bt_timings.hsync
>>>> vsync_width        v4l2_bt_timings.vsync
>>>> hback_porch        v4l2_bt_timings.hbackporch
>>>> hfront_porch        v4l2_bt_timings.hfrontporch
>>>> vback_porch        v4l2_bt_timings.vbackporch
>>>> vfront_porch        v4l2_bt_timings.vfrontporch
>>>> frequency_range        -
>>>> alignment        v4l2_pix_format.bytesperline
>>>> fpdl3_input_width    -
>>>> gmsl_mode        -
>>>> gmsl_stream_id        -
>>>> gmsl_fec        -
>>>>
>>>> --- OUTPUTS ---
>>>>
>>>> output_id        -
>>>> video_source        -
>>>> display_width        v4l2_bt_timings.width
>>>> display_height        v4l2_bt_timings.height
>>>> frame_rate        v4l2_frmivalenum
>>>
>>> The frame rate is a property of the width/height+blanking and the
>>> pixel clock frequency. IMHO it does not make sense to have this as
>>> a writable property. Read-only is OK.
>>>
>>>> hsync_polarity        v4l2_bt_timings.polarities
>>>> vsync_polarity        v4l2_bt_timings.polarities
>>>> de_polarity        -
>>>> pclk_frequency        v4l2_bt_timings.pixelclock
>>>> hsync_width        v4l2_bt_timings.hsync
>>>> vsync_width        v4l2_bt_timings.vsync
>>>> vsync_width        v4l2_bt_timings.vsync
>>>> hback_porch        v4l2_bt_timings.hbackporch
>>>> hfront_porch        v4l2_bt_timings.hfrontporch
>>>> vback_porch        v4l2_bt_timings.vbackporch
>>>> vfront_porch        v4l2_bt_timings.vfrontporch
>>>> alignment        v4l2_pix_format.bytesperline
>>>> fpdl3_output_width    -
>>>>
>>>>
>>>> M.
>>>
>>> The property I am most concerned with is alignment (both for input and output).
>>> But it is not clear to me what the use-case is.
>>>
>>
>> Hi,
>> The use-case is to provide the alignment required by some video processing chips. We have a product based on NVIDIA Jetson TX2 that uses the mgb4 cards and the HW video encoding needs a specific
>> alignment to work.
> 
> OK. I would suggest that for this property it has a default value of 0 (i.e. a 1 byte alignment),
> and in that case VIDIOC_S_FMT allows userspace to set bytesperline to whatever they want. I.e.,
> this is the normal behavior for DMA engines that can deal with custom padding at the end of each
> line.
> 
> If it is > 0, then bytesperline is fixed, based on this value.
> 
> That way both methods are supported fairly cleanly.
> 
> BTW, what is missing in the property documentation for writable properties is what the default
> value is. That must be documented as well.
> 

The default value is 1 (no padding, 1 byte alignment), I will add it to 
the documentation.

I would really urge to stick with the "set all the properties at one 
place in sysfs, report them in v4l2" mechanism. Like with most of the 
properties, there are some special cases and HW related dependencies 
across inputs/outputs (the output alignment has to comply with input 
alignment - see the documentation rst for details) and duplicating this 
logic together with some additional logic handling changes from another 
source - VIDIOC_S_FMT - will make the driver much more complicated and 
"messy" for no benefit for the user (he will be even more confused).

M.

> Regards,
> 
> 	Hans

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ