From: Thomas Zimmermann <tzimmermann@suse.de>
To: arnd@arndb.de, deller@gmx.de, daniel@ffwll.ch, airlied@gmail.com
Cc: linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org,
linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org,
linux-ia64@vger.kernel.org, loongarch@lists.linux.dev,
linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-sh@vger.kernel.org,
sparclinux@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-hyperv@vger.kernel.org, linux-fbdev@vger.kernel.org,
linux-staging@lists.linux.dev, linux-arch@vger.kernel.org,
Thomas Zimmermann <tzimmermann@suse.de>,
Antonino Daplas <adaplas@gmail.com>,
Maik Broemme <mbroemme@libmpq.org>,
Randy Dunlap <rdunlap@infradead.org>
Subject: [PATCH 10/12] fbdev/core: Use fb_is_primary_device() in fb_firmware_edid()
Date: Thu, 29 Jun 2023 13:45:49 +0200 [thread overview]
Message-ID: <20230629121952.10559-11-tzimmermann@suse.de> (raw)
In-Reply-To: <20230629121952.10559-1-tzimmermann@suse.de>
Detect the primary VGA device with fb_is_primary_device() in the
implementation of fb_firmware_edid(). Remove the existing code.
Adapt the function to receive an instance of struct fb_info and
update all callers.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Helge Deller <deller@gmx.de>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Maik Broemme <mbroemme@libmpq.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
---
drivers/video/fbdev/core/fbmon.c | 25 +++++++----------------
drivers/video/fbdev/i810/i810-i2c.c | 2 +-
drivers/video/fbdev/intelfb/intelfbdrv.c | 2 +-
drivers/video/fbdev/nvidia/nv_i2c.c | 2 +-
drivers/video/fbdev/savage/savagefb-i2c.c | 2 +-
include/linux/fb.h | 2 +-
6 files changed, 12 insertions(+), 23 deletions(-)
diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c
index 79e5bfbdd34c2..35be4431f649a 100644
--- a/drivers/video/fbdev/core/fbmon.c
+++ b/drivers/video/fbdev/core/fbmon.c
@@ -28,7 +28,6 @@
*/
#include <linux/fb.h>
#include <linux/module.h>
-#include <linux/pci.h>
#include <linux/slab.h>
#include <video/edid.h>
#include <video/of_videomode.h>
@@ -1482,31 +1481,21 @@ int fb_validate_mode(const struct fb_var_screeninfo *var, struct fb_info *info)
}
#if defined(CONFIG_FIRMWARE_EDID) && defined(CONFIG_X86)
-
-/*
- * We need to ensure that the EDID block is only returned for
- * the primary graphics adapter.
- */
-
-const unsigned char *fb_firmware_edid(struct device *device)
+const unsigned char *fb_firmware_edid(struct fb_info *info)
{
- struct pci_dev *dev = NULL;
- struct resource *res = NULL;
unsigned char *edid = NULL;
- if (device)
- dev = to_pci_dev(device);
-
- if (dev)
- res = &dev->resource[PCI_ROM_RESOURCE];
-
- if (res && res->flags & IORESOURCE_ROM_SHADOW)
+ /*
+ * We need to ensure that the EDID block is only
+ * returned for the primary graphics adapter.
+ */
+ if (fb_is_primary_device(info))
edid = edid_info.dummy;
return edid;
}
#else
-const unsigned char *fb_firmware_edid(struct device *device)
+const unsigned char *fb_firmware_edid(struct fb_info *info)
{
return NULL;
}
diff --git a/drivers/video/fbdev/i810/i810-i2c.c b/drivers/video/fbdev/i810/i810-i2c.c
index 7db17d0d8a8cf..b605e96620c1f 100644
--- a/drivers/video/fbdev/i810/i810-i2c.c
+++ b/drivers/video/fbdev/i810/i810-i2c.c
@@ -161,7 +161,7 @@ int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, int conn)
if (conn < par->ddc_num) {
edid = fb_ddc_read(&par->chan[conn].adapter);
} else {
- const u8 *e = fb_firmware_edid(info->device);
+ const u8 *e = fb_firmware_edid(info);
if (e != NULL) {
DPRINTK("i810-i2c: Getting EDID from BIOS\n");
diff --git a/drivers/video/fbdev/intelfb/intelfbdrv.c b/drivers/video/fbdev/intelfb/intelfbdrv.c
index a81095b2b1ea5..4633a75e3a613 100644
--- a/drivers/video/fbdev/intelfb/intelfbdrv.c
+++ b/drivers/video/fbdev/intelfb/intelfbdrv.c
@@ -1024,7 +1024,7 @@ static int intelfb_init_var(struct intelfb_info *dinfo)
sizeof(struct fb_var_screeninfo));
msrc = 5;
} else {
- const u8 *edid_s = fb_firmware_edid(&dinfo->pdev->dev);
+ const u8 *edid_s = fb_firmware_edid(dinfo->info);
u8 *edid_d = NULL;
if (edid_s) {
diff --git a/drivers/video/fbdev/nvidia/nv_i2c.c b/drivers/video/fbdev/nvidia/nv_i2c.c
index 0b48965a6420c..632e7d622ebfa 100644
--- a/drivers/video/fbdev/nvidia/nv_i2c.c
+++ b/drivers/video/fbdev/nvidia/nv_i2c.c
@@ -159,7 +159,7 @@ int nvidia_probe_i2c_connector(struct fb_info *info, int conn, u8 **out_edid)
if (!edid && conn == 1) {
/* try to get from firmware */
- const u8 *e = fb_firmware_edid(info->device);
+ const u8 *e = fb_firmware_edid(info);
if (e != NULL)
edid = kmemdup(e, EDID_LENGTH, GFP_KERNEL);
diff --git a/drivers/video/fbdev/savage/savagefb-i2c.c b/drivers/video/fbdev/savage/savagefb-i2c.c
index 80fa87e2ae2ff..cf9c376f76526 100644
--- a/drivers/video/fbdev/savage/savagefb-i2c.c
+++ b/drivers/video/fbdev/savage/savagefb-i2c.c
@@ -227,7 +227,7 @@ int savagefb_probe_i2c_connector(struct fb_info *info, u8 **out_edid)
if (!edid) {
/* try to get from firmware */
- const u8 *e = fb_firmware_edid(info->device);
+ const u8 *e = fb_firmware_edid(info);
if (e)
edid = kmemdup(e, EDID_LENGTH, GFP_KERNEL);
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 1d5c13f34b098..5ffd2223326bf 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -761,7 +761,7 @@ extern int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var,
extern int fb_validate_mode(const struct fb_var_screeninfo *var,
struct fb_info *info);
extern int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var);
-extern const unsigned char *fb_firmware_edid(struct device *device);
+extern const unsigned char *fb_firmware_edid(struct fb_info *info);
extern void fb_edid_to_monspecs(unsigned char *edid,
struct fb_monspecs *specs);
extern void fb_destroy_modedb(struct fb_videomode *modedb);
--
2.41.0
next prev parent reply other threads:[~2023-06-29 11:45 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-29 11:45 [PATCH 00/12] arch,fbdev: Move screen_info into arch/ Thomas Zimmermann
2023-06-29 11:45 ` [PATCH 01/12] efi: Do not include <linux/screen_info.h> from EFI header Thomas Zimmermann
2023-07-04 16:23 ` Javier Martinez Canillas
2023-07-05 1:40 ` [01/12] " Sui Jingfeng
2023-07-05 8:00 ` Thomas Zimmermann
2023-06-29 11:45 ` [PATCH 02/12] fbdev/sm712fb: Do not include <linux/screen_info.h> Thomas Zimmermann
2023-07-04 16:25 ` Javier Martinez Canillas
2023-06-29 11:45 ` [PATCH 03/12] sysfb: Do not include <linux/screen_info.h> from sysfb header Thomas Zimmermann
2023-07-04 16:26 ` Javier Martinez Canillas
2023-07-05 1:41 ` [03/12] " Sui Jingfeng
2023-06-29 11:45 ` [PATCH 04/12] staging/sm750fb: Do not include <linux/screen_info.h> Thomas Zimmermann
2023-07-04 16:27 ` Javier Martinez Canillas
2023-06-29 11:45 ` [PATCH 05/12] arch: Remove trailing whitespaces Thomas Zimmermann
2023-07-04 16:27 ` Javier Martinez Canillas
2023-07-05 1:25 ` [05/12] " Sui Jingfeng
2023-06-29 11:45 ` [PATCH 06/12] arch: Declare screen_info in <asm/screen_info.h> Thomas Zimmermann
2023-06-29 12:55 ` WANG Xuerui
2023-06-29 13:03 ` Arnd Bergmann
2023-06-29 13:18 ` Thomas Zimmermann
2023-07-05 1:21 ` [06/12] " Sui Jingfeng
2023-07-05 8:02 ` Thomas Zimmermann
2023-08-18 14:04 ` suijingfeng
2023-08-18 14:18 ` suijingfeng
2023-06-29 11:45 ` [PATCH 07/12] arch/x86: Declare edid_info " Thomas Zimmermann
2023-06-29 12:35 ` Arnd Bergmann
2023-06-29 13:01 ` Thomas Zimmermann
2023-06-29 13:21 ` Arnd Bergmann
2023-06-30 7:46 ` Thomas Zimmermann
2023-06-30 11:53 ` Arnd Bergmann
2023-07-05 8:18 ` Thomas Zimmermann
2023-07-18 14:47 ` Arnd Bergmann
2023-06-29 11:45 ` [PATCH 08/12] drivers/firmware: Remove trailing whitespaces Thomas Zimmermann
2023-07-05 1:26 ` [08/12] " Sui Jingfeng
2023-07-05 7:46 ` [PATCH 08/12] " Javier Martinez Canillas
2023-06-29 11:45 ` [PATCH 09/12] drivers: Add dependencies on CONFIG_ARCH_HAS_SCREEN_INFO Thomas Zimmermann
2023-06-29 11:45 ` Thomas Zimmermann [this message]
2023-07-05 8:02 ` [PATCH 10/12] fbdev/core: Use fb_is_primary_device() in fb_firmware_edid() Javier Martinez Canillas
2023-06-29 11:45 ` [PATCH 11/12] fbdev/core: Protect edid_info with CONFIG_ARCH_HAS_EDID_INFO Thomas Zimmermann
2023-07-05 1:43 ` [11/12] " Sui Jingfeng
2023-06-29 11:45 ` [PATCH 12/12] fbdev/core: Define empty fb_firmware_edid() in <linux/fb.h> Thomas Zimmermann
2023-06-29 13:31 ` [PATCH 00/12] arch,fbdev: Move screen_info into arch/ Arnd Bergmann
2023-06-29 14:15 ` Thomas Zimmermann
2023-06-29 14:42 ` Arnd Bergmann
2023-06-29 14:29 ` Arnd Bergmann
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=20230629121952.10559-11-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=adaplas@gmail.com \
--cc=airlied@gmail.com \
--cc=arnd@arndb.de \
--cc=daniel@ffwll.ch \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-csky@vger.kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-hexagon@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=loongarch@lists.linux.dev \
--cc=mbroemme@libmpq.org \
--cc=rdunlap@infradead.org \
--cc=sparclinux@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).