Most switcheroo setups attach power management to one of the GPUs. This is not always the case, so provide a mechanism for handlers to declare that they can change the power state of GPUs and permit drivers to obtain this information. Signed-off-by: Matthew Garrett <matthew.garrett@xxxxxxxxxx> --- drivers/gpu/vga/vga_switcheroo.c | 8 ++++++++ include/linux/vga_switcheroo.h | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/drivers/gpu/vga/vga_switcheroo.c b/drivers/gpu/vga/vga_switcheroo.c index 1a80b93..c5e97d4 100644 --- a/drivers/gpu/vga/vga_switcheroo.c +++ b/drivers/gpu/vga/vga_switcheroo.c @@ -825,6 +825,14 @@ struct edid *vga_switcheroo_get_edid(struct pci_dev *pdev) } EXPORT_SYMBOL(vga_switcheroo_get_edid); +bool vga_switcheroo_handler_pm(void) { + if (!vgasr_priv.handler) + return false; + + return vgasr_priv.handler->handler_pm; +} +EXPORT_SYMBOL(vga_switcheroo_handler_pm); + static int __init vga_switcheroo_setup(char *str) { if (!strcmp(str, "IGD")) diff --git a/include/linux/vga_switcheroo.h b/include/linux/vga_switcheroo.h index 07b07fc..4bba934 100644 --- a/include/linux/vga_switcheroo.h +++ b/include/linux/vga_switcheroo.h @@ -36,6 +36,7 @@ struct vga_switcheroo_handler { enum vga_switcheroo_state state); int (*init)(void); int (*get_client_id)(struct pci_dev *pdev); + bool handler_pm; }; struct vga_switcheroo_client_ops { @@ -76,6 +77,8 @@ u8 *vga_switcheroo_get_dpcd(struct pci_dev *pdev); int vga_switcheroo_set_edid(struct edid *edid); struct edid *vga_switcheroo_get_edid(struct pci_dev *pdev); +bool vga_switcheroo_handler_pm(void); + #else static inline void vga_switcheroo_unregister_client(struct pci_dev *dev) {} @@ -101,5 +104,7 @@ static inline u8 *vga_switcheroo_get_dpcd(struct pci_dev *pdev) { return NULL }; static inline int vga_switcheroo_set_edid(struct edid *edid) { return 0 }; static inline struct edid *vga_switcheroo_get_edid(struct pci_dev *pdev) { return NULL }; +static inline bool vga_switcheroo_handler_pm(void) { return false; }; + #endif #endif /* _LINUX_VGA_SWITCHEROO_H_ */ -- 1.8.5.3 -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html