diff options
| author | Hans de Goede <hdegoede@redhat.com> | 2024-09-05 16:51:58 +0200 |
|---|---|---|
| committer | Hans de Goede <hdegoede@redhat.com> | 2024-09-05 16:57:36 +0200 |
| commit | 56d8b784c56588cd40f98e4b1d4f6e29e3cb02b8 (patch) | |
| tree | 5edd10e48440fcbb5a76bbb9b78dc1706b3d5cec /drivers/firmware/sysfb.c | |
| parent | platform/x86: thinkpad_acpi: Fix uninitialized symbol 's' warning (diff) | |
| parent | hwmon: (hp-wmi-sensors) Check if WMI event data exists (diff) | |
| download | linux-56d8b784c56588cd40f98e4b1d4f6e29e3cb02b8.tar.gz linux-56d8b784c56588cd40f98e4b1d4f6e29e3cb02b8.zip | |
Merge tag 'hwmon-for-v6.11-rc7' into review-hans
Merge "hwmon fixes for v6.11-rc7" into review-hans to bring in
commit a54da9df75cd ("hwmon: (hp-wmi-sensors) Check if WMI event
data exists").
This is a dependency for a set of WMI event data refactoring changes.
Diffstat (limited to 'drivers/firmware/sysfb.c')
| -rw-r--r-- | drivers/firmware/sysfb.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c index 921f61507ae8..02a07d3d0d40 100644 --- a/drivers/firmware/sysfb.c +++ b/drivers/firmware/sysfb.c @@ -39,6 +39,8 @@ static struct platform_device *pd; static DEFINE_MUTEX(disable_lock); static bool disabled; +static struct device *sysfb_parent_dev(const struct screen_info *si); + static bool sysfb_unregister(void) { if (IS_ERR_OR_NULL(pd)) @@ -52,6 +54,7 @@ static bool sysfb_unregister(void) /** * sysfb_disable() - disable the Generic System Framebuffers support + * @dev: the device to check if non-NULL * * This disables the registration of system framebuffer devices that match the * generic drivers that make use of the system framebuffer set up by firmware. @@ -61,17 +64,21 @@ static bool sysfb_unregister(void) * Context: The function can sleep. A @disable_lock mutex is acquired to serialize * against sysfb_init(), that registers a system framebuffer device. */ -void sysfb_disable(void) +void sysfb_disable(struct device *dev) { + struct screen_info *si = &screen_info; + mutex_lock(&disable_lock); - sysfb_unregister(); - disabled = true; + if (!dev || dev == sysfb_parent_dev(si)) { + sysfb_unregister(); + disabled = true; + } mutex_unlock(&disable_lock); } EXPORT_SYMBOL_GPL(sysfb_disable); #if defined(CONFIG_PCI) -static __init bool sysfb_pci_dev_is_enabled(struct pci_dev *pdev) +static bool sysfb_pci_dev_is_enabled(struct pci_dev *pdev) { /* * TODO: Try to integrate this code into the PCI subsystem @@ -87,13 +94,13 @@ static __init bool sysfb_pci_dev_is_enabled(struct pci_dev *pdev) return true; } #else -static __init bool sysfb_pci_dev_is_enabled(struct pci_dev *pdev) +static bool sysfb_pci_dev_is_enabled(struct pci_dev *pdev) { return false; } #endif -static __init struct device *sysfb_parent_dev(const struct screen_info *si) +static struct device *sysfb_parent_dev(const struct screen_info *si) { struct pci_dev *pdev; |
