aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/vga_switcheroo.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-05-11 01:51:17 -0400
committerTakashi Iwai <tiwai@suse.de>2012-05-13 05:24:09 -0400
commit26ec685ff9d9c16525d8ec4c97e52fcdb187b302 (patch)
tree2536e4fd8fc9b41736c481822fb032a4e4efc81a /include/linux/vga_switcheroo.h
parent79721e0a91b5e8f662f12eeb50ea205c761e6bf8 (diff)
vga_switcheroo: Introduce struct vga_switcheroo_client_ops
This changes the API as a clean-up. Instead of passing multiple function pointers at each time, introduce a new struct holding the whole callback functions and pass it to the registration. The same struct will be used for the upcoming audio client registration, too. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/linux/vga_switcheroo.h')
-rw-r--r--include/linux/vga_switcheroo.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/include/linux/vga_switcheroo.h b/include/linux/vga_switcheroo.h
index 4b9a7f596f9..3c54ebc2e52 100644
--- a/include/linux/vga_switcheroo.h
+++ b/include/linux/vga_switcheroo.h
@@ -28,13 +28,16 @@ struct vga_switcheroo_handler {
28 int (*get_client_id)(struct pci_dev *pdev); 28 int (*get_client_id)(struct pci_dev *pdev);
29}; 29};
30 30
31struct vga_switcheroo_client_ops {
32 void (*set_gpu_state)(struct pci_dev *dev, enum vga_switcheroo_state);
33 void (*reprobe)(struct pci_dev *dev);
34 bool (*can_switch)(struct pci_dev *dev);
35};
31 36
32#if defined(CONFIG_VGA_SWITCHEROO) 37#if defined(CONFIG_VGA_SWITCHEROO)
33void vga_switcheroo_unregister_client(struct pci_dev *dev); 38void vga_switcheroo_unregister_client(struct pci_dev *dev);
34int vga_switcheroo_register_client(struct pci_dev *dev, 39int vga_switcheroo_register_client(struct pci_dev *dev,
35 void (*set_gpu_state)(struct pci_dev *dev, enum vga_switcheroo_state), 40 const struct vga_switcheroo_client_ops *ops);
36 void (*reprobe)(struct pci_dev *dev),
37 bool (*can_switch)(struct pci_dev *dev));
38 41
39void vga_switcheroo_client_fb_set(struct pci_dev *dev, 42void vga_switcheroo_client_fb_set(struct pci_dev *dev,
40 struct fb_info *info); 43 struct fb_info *info);
@@ -48,9 +51,7 @@ int vga_switcheroo_process_delayed_switch(void);
48 51
49static inline void vga_switcheroo_unregister_client(struct pci_dev *dev) {} 52static inline void vga_switcheroo_unregister_client(struct pci_dev *dev) {}
50static inline int vga_switcheroo_register_client(struct pci_dev *dev, 53static inline int vga_switcheroo_register_client(struct pci_dev *dev,
51 void (*set_gpu_state)(struct pci_dev *dev, enum vga_switcheroo_state), 54 const struct vga_switcheroo_client_ops *ops) { return 0; }
52 void (*reprobe)(struct pci_dev *dev),
53 bool (*can_switch)(struct pci_dev *dev)) { return 0; }
54static inline void vga_switcheroo_client_fb_set(struct pci_dev *dev, struct fb_info *info) {} 55static inline void vga_switcheroo_client_fb_set(struct pci_dev *dev, struct fb_info *info) {}
55static inline int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) { return 0; } 56static inline int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) { return 0; }
56static inline void vga_switcheroo_unregister_handler(void) {} 57static inline void vga_switcheroo_unregister_handler(void) {}