From: Sam Ravnborg <sam@ravnborg.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: david@lechnology.com, emma@anholt.net, airlied@linux.ie,
javierm@redhat.com, noralf@tronnes.org,
dri-devel@lists.freedesktop.org, kamlesh.gurudasani@gmail.com
Subject: Re: [PATCH 3/4] drm/modes: Add initializer macro DRM_MODE_INIT()
Date: Wed, 10 Aug 2022 21:29:23 +0200 [thread overview]
Message-ID: <YvQHE51Ouj6FgfG6@ravnborg.org> (raw)
In-Reply-To: <20220810112053.19547-4-tzimmermann@suse.de>
On Wed, Aug 10, 2022 at 01:20:52PM +0200, Thomas Zimmermann wrote:
> The macro DRM_MODE_INIT() initializes an instance of
> struct drm_display_mode with typical parameters. Convert simpledrm
> and also update the macro DRM_SIMPLE_MODE().
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
It is nice that the macros are now documented.
Sam
> ---
> drivers/gpu/drm/tiny/simpledrm.c | 23 ++++++++-------------
> include/drm/drm_modes.h | 35 +++++++++++++++++++++++++++-----
> 2 files changed, 39 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c
> index 31d3bc6c5acf..cc509154b296 100644
> --- a/drivers/gpu/drm/tiny/simpledrm.c
> +++ b/drivers/gpu/drm/tiny/simpledrm.c
> @@ -30,16 +30,6 @@
> #define DRIVER_MAJOR 1
> #define DRIVER_MINOR 0
>
> -/*
> - * Assume a monitor resolution of 96 dpi to
> - * get a somewhat reasonable screen size.
> - */
> -#define RES_MM(d) \
> - (((d) * 254ul) / (96ul * 10ul))
> -
> -#define SIMPLEDRM_MODE(hd, vd) \
> - DRM_SIMPLE_MODE(hd, vd, RES_MM(hd), RES_MM(vd))
> -
> /*
> * Helpers for simplefb
> */
> @@ -641,10 +631,15 @@ static const struct drm_mode_config_funcs simpledrm_mode_config_funcs = {
> static struct drm_display_mode simpledrm_mode(unsigned int width,
> unsigned int height)
> {
> - struct drm_display_mode mode = { SIMPLEDRM_MODE(width, height) };
> -
> - mode.clock = mode.hdisplay * mode.vdisplay * 60 / 1000 /* kHz */;
> - drm_mode_set_name(&mode);
> + /*
> + * Assume a monitor resolution of 96 dpi to
> + * get a somewhat reasonable screen size.
> + */
> + const struct drm_display_mode mode = {
> + DRM_MODE_INIT(60, width, height,
> + DRM_MODE_RES_MM(width, 96ul),
> + DRM_MODE_RES_MM(height, 96ul))
> + };
>
> return mode;
> }
> diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
> index a80ae9639e96..bb932806f029 100644
> --- a/include/drm/drm_modes.h
> +++ b/include/drm/drm_modes.h
> @@ -138,6 +138,35 @@ enum drm_mode_status {
> .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), \
> .vscan = (vs), .flags = (f)
>
> +/**
> + * DRM_MODE_RES_MM - Calculates the display size from resolution and DPI
> + * @res: The resolution in pixel
> + * @dpi: The number of dots per inch
> + */
> +#define DRM_MODE_RES_MM(res, dpi) \
> + (((res) * 254ul) / ((dpi) * 10ul))
> +
> +#define __DRM_MODE_INIT(pix, hd, vd, hd_mm, vd_mm) \
> + .type = DRM_MODE_TYPE_DRIVER, .clock = (pix), \
> + .hdisplay = (hd), .hsync_start = (hd), .hsync_end = (hd), \
> + .htotal = (hd), .vdisplay = (vd), .vsync_start = (vd), \
> + .vsync_end = (vd), .vtotal = (vd), .width_mm = (hd_mm), \
> + .height_mm = (vd_mm)
> +
> +/**
> + * DRM_SIMPLE_MODE_INIT - Initialize display mode
> + * @hz: Vertical refresh rate in Hertz
> + * @hd: Horizontal resolution, width
> + * @vd: Vertical resolution, height
> + * @hd_mm: Display width in millimeters
> + * @vd_mm: Display height in millimeters
> + *
> + * This macro initializes a &drm_display_mode that contains information about
> + * refresh rate, resolution and physical size.
> + */
> +#define DRM_MODE_INIT(hz, hd, vd, hd_mm, vd_mm) \
> + __DRM_MODE_INIT((hd) * (vd) * (hz) / 1000 /* kHz */, hd, vd, hd_mm, vd_mm)
> +
> /**
> * DRM_SIMPLE_MODE - Simple display mode
> * @hd: Horizontal resolution, width
> @@ -149,11 +178,7 @@ enum drm_mode_status {
> * resolution and physical size.
> */
> #define DRM_SIMPLE_MODE(hd, vd, hd_mm, vd_mm) \
> - .type = DRM_MODE_TYPE_DRIVER, .clock = 1 /* pass validation */, \
> - .hdisplay = (hd), .hsync_start = (hd), .hsync_end = (hd), \
> - .htotal = (hd), .vdisplay = (vd), .vsync_start = (vd), \
> - .vsync_end = (vd), .vtotal = (vd), .width_mm = (hd_mm), \
> - .height_mm = (vd_mm)
> + __DRM_MODE_INIT(1 /* pass validation */, hd, vd, hd_mm, vd_mm)
>
> #define CRTC_INTERLACE_HALVE_V (1 << 0) /* halve V values for interlacing */
> #define CRTC_STEREO_DOUBLE (1 << 1) /* adjust timings for stereo modes */
> --
> 2.37.1
next prev parent reply other threads:[~2022-08-10 19:29 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-10 11:20 [PATCH 0/4] drm/probe-helper, modes: Helpers for single-mode displays Thomas Zimmermann
2022-08-10 11:20 ` [PATCH 1/4] drm/probe-helper: Add drm_connector_helper_get_modes_static() Thomas Zimmermann
2022-08-10 19:21 ` Sam Ravnborg
2022-08-11 18:22 ` Thomas Zimmermann
2022-08-10 11:20 ` [PATCH 2/4] drm/probe-helper: Add drm_crtc_helper_mode_valid_static() Thomas Zimmermann
2022-08-10 19:26 ` Sam Ravnborg
2022-08-12 16:37 ` Thomas Zimmermann
2022-08-12 17:34 ` Sam Ravnborg
2022-08-10 11:20 ` [PATCH 3/4] drm/modes: Add initializer macro DRM_MODE_INIT() Thomas Zimmermann
2022-08-10 19:29 ` Sam Ravnborg [this message]
2022-08-10 11:20 ` [PATCH 4/4] drm/format-helper: Add drm_fb_build_fourcc_list() helper Thomas Zimmermann
2022-08-12 18:19 ` Sam Ravnborg
2022-08-16 13:38 ` Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YvQHE51Ouj6FgfG6@ravnborg.org \
--to=sam@ravnborg.org \
--cc=airlied@linux.ie \
--cc=david@lechnology.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emma@anholt.net \
--cc=javierm@redhat.com \
--cc=kamlesh.gurudasani@gmail.com \
--cc=noralf@tronnes.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.