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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <46871a84-3b17-5474-9608-cfbe7e6f4c7f@suse.de>
Date:   Tue, 2 Aug 2022 16:16:29 +0200
From:   Thomas Zimmermann <tzimmermann@...e.de>
To:     Jani Nikula <jani.nikula@...ux.intel.com>,
        Maxime Ripard <maxime@...no.tech>,
        Jernej Skrabec <jernej.skrabec@...il.com>,
        Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
        Chen-Yu Tsai <wens@...e.org>,
        Philipp Zabel <p.zabel@...gutronix.de>,
        Jerome Brunet <jbrunet@...libre.com>,
        Samuel Holland <samuel@...lland.org>,
        Daniel Vetter <daniel@...ll.ch>, Emma Anholt <emma@...olt.net>,
        David Airlie <airlied@...ux.ie>,
        Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
        Noralf Trønnes <noralf@...nnes.org>,
        Kevin Hilman <khilman@...libre.com>,
        Neil Armstrong <narmstrong@...libre.com>,
        Maxime Ripard <mripard@...nel.org>
Cc:     Dom Cobley <dom@...pberrypi.com>,
        Dave Stevenson <dave.stevenson@...pberrypi.com>,
        linux-kernel@...r.kernel.org, dri-devel@...ts.freedesktop.org,
        Mateusz Kwiatkowski <kfyatek+publicgit@...il.com>,
        Geert Uytterhoeven <geert@...ux-m68k.org>,
        linux-amlogic@...ts.infradead.org, linux-sunxi@...ts.linux.dev,
        Phil Elwell <phil@...pberrypi.com>,
        linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH v1 04/35] drm/modes: Introduce 480i and 576i modes

Hi

Am 02.08.22 um 15:58 schrieb Jani Nikula:
> On Fri, 29 Jul 2022, Maxime Ripard <maxime@...no.tech> wrote:
>> Multiple drivers (meson, vc4) define the analog TV 525-lines and 625-lines
>> modes in the drivers.
>>
>> Since those modes are fairly standards, and that we'll need to use them in
>> more places in the future, let's move the meson definition into the
>> framework.
> 
> I think you should always expose interfaces, not data. Data is not an
> interface, and I think this sets a bad example that will be cargo
> culted.

Although I wrote the opposite wrt patch 8, I agree with Jani here when 
it comes to 'official' interfaces. The cases I've seen of exported data 
structures often lead to intransparent code.

Best regards
Thomas

> 
> 
> BR,
> Jani.
> 
>>
>> The meson one was chosen because vc4's isn't accurate and doesn't amount to
>> 525 and 625 lines.
>>
>> Signed-off-by: Maxime Ripard <maxime@...no.tech>
>>
>> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
>> index 304004fb80aa..a4c1bd688338 100644
>> --- a/drivers/gpu/drm/drm_modes.c
>> +++ b/drivers/gpu/drm/drm_modes.c
>> @@ -48,6 +48,24 @@
>>   
>>   #include "drm_crtc_internal.h"
>>   
>> +const struct drm_display_mode drm_mode_480i = {
>> +	DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500,
>> +		 720, 739, 801, 858, 0,
>> +		 480, 488, 494, 525, 0,
>> +		 DRM_MODE_FLAG_INTERLACE),
>> +	.picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
>> +};
>> +EXPORT_SYMBOL_GPL(drm_mode_480i);
>> +
>> +const struct drm_display_mode drm_mode_576i = {
>> +	DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500,
>> +		 720, 732, 795, 864, 0,
>> +		 576, 580, 586, 625, 0,
>> +		 DRM_MODE_FLAG_INTERLACE),
>> +	.picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
>> +};
>> +EXPORT_SYMBOL_GPL(drm_mode_576i);
>> +
>>   /**
>>    * drm_mode_debug_printmodeline - print a mode to dmesg
>>    * @mode: mode to print
>> diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/meson/meson_encoder_cvbs.c
>> index 8110a6e39320..98ec3e563155 100644
>> --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c
>> +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c
>> @@ -45,21 +45,11 @@ struct meson_encoder_cvbs {
>>   struct meson_cvbs_mode meson_cvbs_modes[MESON_CVBS_MODES_COUNT] = {
>>   	{ /* PAL */
>>   		.enci = &meson_cvbs_enci_pal,
>> -		.mode = {
>> -			DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500,
>> -				 720, 732, 795, 864, 0, 576, 580, 586, 625, 0,
>> -				 DRM_MODE_FLAG_INTERLACE),
>> -			.picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
>> -		},
>> +		.mode = &drm_mode_576i,
>>   	},
>>   	{ /* NTSC */
>>   		.enci = &meson_cvbs_enci_ntsc,
>> -		.mode = {
>> -			DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500,
>> -				720, 739, 801, 858, 0, 480, 488, 494, 525, 0,
>> -				DRM_MODE_FLAG_INTERLACE),
>> -			.picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
>> -		},
>> +		.mode = &drm_mode_480i,
>>   	},
>>   };
>>   
>> @@ -71,7 +61,7 @@ meson_cvbs_get_mode(const struct drm_display_mode *req_mode)
>>   	for (i = 0; i < MESON_CVBS_MODES_COUNT; ++i) {
>>   		struct meson_cvbs_mode *meson_mode = &meson_cvbs_modes[i];
>>   
>> -		if (drm_mode_match(req_mode, &meson_mode->mode,
>> +		if (drm_mode_match(req_mode, meson_mode->mode,
>>   				   DRM_MODE_MATCH_TIMINGS |
>>   				   DRM_MODE_MATCH_CLOCK |
>>   				   DRM_MODE_MATCH_FLAGS |
>> @@ -104,7 +94,7 @@ static int meson_encoder_cvbs_get_modes(struct drm_bridge *bridge,
>>   	for (i = 0; i < MESON_CVBS_MODES_COUNT; ++i) {
>>   		struct meson_cvbs_mode *meson_mode = &meson_cvbs_modes[i];
>>   
>> -		mode = drm_mode_duplicate(priv->drm, &meson_mode->mode);
>> +		mode = drm_mode_duplicate(priv->drm, meson_mode->mode);
>>   		if (!mode) {
>>   			dev_err(priv->dev, "Failed to create a new display mode\n");
>>   			return 0;
>> diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.h b/drivers/gpu/drm/meson/meson_encoder_cvbs.h
>> index 61d9d183ce7f..26cefb202924 100644
>> --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.h
>> +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.h
>> @@ -16,7 +16,7 @@
>>   
>>   struct meson_cvbs_mode {
>>   	struct meson_cvbs_enci_mode *enci;
>> -	struct drm_display_mode mode;
>> +	const struct drm_display_mode *mode;
>>   };
>>   
>>   #define MESON_CVBS_MODES_COUNT	2
>> diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
>> index a80ae9639e96..b4a440e2688c 100644
>> --- a/include/drm/drm_modes.h
>> +++ b/include/drm/drm_modes.h
>> @@ -394,6 +394,9 @@ struct drm_display_mode {
>>   
>>   };
>>   
>> +extern const struct drm_display_mode drm_mode_480i;
>> +extern const struct drm_display_mode drm_mode_576i;
>> +
>>   /**
>>    * DRM_MODE_FMT - printf string for &struct drm_display_mode
>>    */
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

Download attachment "OpenPGP_signature" of type "application/pgp-signature" (841 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ