drm/sysfb: Provide single mode-init helper

Merge the mode-init functions of ofdrm and simpledrm to the new helper
drm_sysfb_mode(). Also implement the DPI defaults there. Replace the
code in each driver with the shared helper.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://lore.kernel.org/r/20250401094056.32904-7-tzimmermann@suse.de
This commit is contained in:
Thomas Zimmermann
2025-04-01 11:37:09 +02:00
parent b5626f6f8f
commit 333376e9cf
4 changed files with 31 additions and 38 deletions

View File

@@ -756,18 +756,6 @@ static const struct drm_mode_config_funcs simpledrm_mode_config_funcs = {
* Init / Cleanup
*/
static struct drm_display_mode simpledrm_mode(unsigned int width,
unsigned int height,
unsigned int width_mm,
unsigned int height_mm)
{
const struct drm_display_mode mode = {
DRM_MODE_INIT(60, width, height, width_mm, height_mm)
};
return mode;
}
static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv,
struct platform_device *pdev)
{
@@ -855,16 +843,7 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv,
return ERR_PTR(-EINVAL);
}
/*
* Assume a monitor resolution of 96 dpi if physical dimensions
* are not specified to get a somewhat reasonable screen size.
*/
if (!width_mm)
width_mm = DRM_MODE_RES_MM(width, 96ul);
if (!height_mm)
height_mm = DRM_MODE_RES_MM(height, 96ul);
sysfb->fb_mode = simpledrm_mode(width, height, width_mm, height_mm);
sysfb->fb_mode = drm_sysfb_mode(width, height, width_mm, height_mm);
sysfb->fb_format = format;
sysfb->fb_pitch = stride;