Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

vgaswitcheroo: add vga_switcheroo_fini_domain_pm_ops

Drivers should call this on unload to unregister pmops.

Bug:
https://bugzilla.kernel.org/show_bug.cgi?id=84431

Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Cc: Ben Skeggs <bskeggs@redhat.com>

+8
+6
drivers/gpu/vga/vga_switcheroo.c
··· 660 660 } 661 661 EXPORT_SYMBOL(vga_switcheroo_init_domain_pm_ops); 662 662 663 + void vga_switcheroo_fini_domain_pm_ops(struct device *dev) 664 + { 665 + dev->pm_domain = NULL; 666 + } 667 + EXPORT_SYMBOL(vga_switcheroo_fini_domain_pm_ops); 668 + 663 669 static int vga_switcheroo_runtime_resume_hdmi_audio(struct device *dev) 664 670 { 665 671 struct pci_dev *pdev = to_pci_dev(dev);
+2
include/linux/vga_switcheroo.h
··· 64 64 void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic); 65 65 66 66 int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain); 67 + void vga_switcheroo_fini_domain_pm_ops(struct device *dev); 67 68 int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain); 68 69 #else 69 70 ··· 83 82 static inline void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic) {} 84 83 85 84 static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; } 85 + static inline void vga_switcheroo_fini_domain_pm_ops(struct device *dev) {} 86 86 static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; } 87 87 88 88 #endif