summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/sysfb
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2026-02-09 20:49:19 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2026-02-09 20:49:19 -0800
commit0c61526621ec1916527d6f6226d8a466340cca22 (patch)
tree22ee5ea165acd724cca10cac89659a5f8e2666fe /drivers/gpu/drm/sysfb
parent33120a2f8fc47f388506b7df1209bd5ac85dd584 (diff)
parentc5a8f13f1e476c90f4bc184a58751d3e7ff88f2b (diff)
downloadlinux-0c61526621ec1916527d6f6226d8a466340cca22.tar.gz
linux-0c61526621ec1916527d6f6226d8a466340cca22.tar.bz2
linux-0c61526621ec1916527d6f6226d8a466340cca22.zip
Merge tag 'efi-next-for-v7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi
Pull EFI updates from Ard Biesheuvel: - Quirk the broken EFI framebuffer geometry on the Valve Steam Deck - Capture the EDID information of the primary display also on non-x86 EFI systems when booting via the EFI stub. * tag 'efi-next-for-v7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi: efi: Support EDID information sysfb: Move edid_info into sysfb_primary_display sysfb: Pass sysfb_primary_display to devices sysfb: Replace screen_info with sysfb_primary_display sysfb: Add struct sysfb_display_info efi: sysfb_efi: Reduce number of references to global screen_info efi: earlycon: Reduce number of references to global screen_info efi: sysfb_efi: Fix efidrmfb and simpledrmfb on Valve Steam Deck efi: sysfb_efi: Convert swap width and height quirk to a callback efi: sysfb_efi: Fix lfb_linelength calculation when applying quirks efi: sysfb_efi: Replace open coded swap with the macro
Diffstat (limited to 'drivers/gpu/drm/sysfb')
-rw-r--r--drivers/gpu/drm/sysfb/efidrm.c14
-rw-r--r--drivers/gpu/drm/sysfb/vesadrm.c14
2 files changed, 16 insertions, 12 deletions
diff --git a/drivers/gpu/drm/sysfb/efidrm.c b/drivers/gpu/drm/sysfb/efidrm.c
index 1b683d55d6ea..50e0aeef709c 100644
--- a/drivers/gpu/drm/sysfb/efidrm.c
+++ b/drivers/gpu/drm/sysfb/efidrm.c
@@ -4,7 +4,7 @@
#include <linux/efi.h>
#include <linux/limits.h>
#include <linux/platform_device.h>
-#include <linux/screen_info.h>
+#include <linux/sysfb.h>
#include <drm/clients/drm_client_setup.h>
#include <drm/drm_atomic.h>
@@ -24,7 +24,6 @@
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
-#include <video/edid.h>
#include <video/pixel_format.h>
#include "drm_sysfb_helper.h"
@@ -141,6 +140,7 @@ static const struct drm_mode_config_funcs efidrm_mode_config_funcs = {
static struct efidrm_device *efidrm_device_create(struct drm_driver *drv,
struct platform_device *pdev)
{
+ const struct sysfb_display_info *dpy;
const struct screen_info *si;
const struct drm_format_info *format;
int width, height, stride;
@@ -160,9 +160,11 @@ static struct efidrm_device *efidrm_device_create(struct drm_driver *drv,
size_t nformats;
int ret;
- si = dev_get_platdata(&pdev->dev);
- if (!si)
+ dpy = dev_get_platdata(&pdev->dev);
+ if (!dpy)
return ERR_PTR(-ENODEV);
+ si = &dpy->screen;
+
if (screen_info_video_type(si) != VIDEO_TYPE_EFI)
return ERR_PTR(-ENODEV);
@@ -204,8 +206,8 @@ static struct efidrm_device *efidrm_device_create(struct drm_driver *drv,
&format->format, width, height, stride);
#if defined(CONFIG_FIRMWARE_EDID)
- if (drm_edid_header_is_valid(edid_info.dummy) == 8)
- sysfb->edid = edid_info.dummy;
+ if (drm_edid_header_is_valid(dpy->edid.dummy) == 8)
+ sysfb->edid = dpy->edid.dummy;
#endif
sysfb->fb_mode = drm_sysfb_mode(width, height, 0, 0);
sysfb->fb_format = format;
diff --git a/drivers/gpu/drm/sysfb/vesadrm.c b/drivers/gpu/drm/sysfb/vesadrm.c
index 7b7b5ba26317..0680638b8131 100644
--- a/drivers/gpu/drm/sysfb/vesadrm.c
+++ b/drivers/gpu/drm/sysfb/vesadrm.c
@@ -4,7 +4,7 @@
#include <linux/ioport.h>
#include <linux/limits.h>
#include <linux/platform_device.h>
-#include <linux/screen_info.h>
+#include <linux/sysfb.h>
#include <drm/clients/drm_client_setup.h>
#include <drm/drm_atomic.h>
@@ -25,7 +25,6 @@
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
-#include <video/edid.h>
#include <video/pixel_format.h>
#include <video/vga.h>
@@ -391,6 +390,7 @@ static const struct drm_mode_config_funcs vesadrm_mode_config_funcs = {
static struct vesadrm_device *vesadrm_device_create(struct drm_driver *drv,
struct platform_device *pdev)
{
+ const struct sysfb_display_info *dpy;
const struct screen_info *si;
const struct drm_format_info *format;
int width, height, stride;
@@ -410,9 +410,11 @@ static struct vesadrm_device *vesadrm_device_create(struct drm_driver *drv,
size_t nformats;
int ret;
- si = dev_get_platdata(&pdev->dev);
- if (!si)
+ dpy = dev_get_platdata(&pdev->dev);
+ if (!dpy)
return ERR_PTR(-ENODEV);
+ si = &dpy->screen;
+
if (screen_info_video_type(si) != VIDEO_TYPE_VLFB)
return ERR_PTR(-ENODEV);
@@ -471,8 +473,8 @@ static struct vesadrm_device *vesadrm_device_create(struct drm_driver *drv,
}
#if defined(CONFIG_FIRMWARE_EDID)
- if (drm_edid_header_is_valid(edid_info.dummy) == 8)
- sysfb->edid = edid_info.dummy;
+ if (drm_edid_header_is_valid(dpy->edid.dummy) == 8)
+ sysfb->edid = dpy->edid.dummy;
#endif
sysfb->fb_mode = drm_sysfb_mode(width, height, 0, 0);
sysfb->fb_format = format;