aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/vgaarb.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/vgaarb.h')
-rw-r--r--include/linux/vgaarb.h49
1 files changed, 27 insertions, 22 deletions
diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h
index 68229ce80fde..e81c64af80c1 100644
--- a/include/linux/vgaarb.h
+++ b/include/linux/vgaarb.h
@@ -46,9 +46,9 @@ extern void vga_set_legacy_decoding(struct pci_dev *pdev,
46/** 46/**
47 * vga_get - acquire & locks VGA resources 47 * vga_get - acquire & locks VGA resources
48 * 48 *
49 * pdev: pci device of the VGA card or NULL for the system default 49 * @pdev: pci device of the VGA card or NULL for the system default
50 * rsrc: bit mask of resources to acquire and lock 50 * @rsrc: bit mask of resources to acquire and lock
51 * interruptible: blocking should be interruptible by signals ? 51 * @interruptible: blocking should be interruptible by signals ?
52 * 52 *
53 * This function acquires VGA resources for the given 53 * This function acquires VGA resources for the given
54 * card and mark those resources locked. If the resource requested 54 * card and mark those resources locked. If the resource requested
@@ -81,19 +81,19 @@ extern int vga_get(struct pci_dev *pdev, unsigned int rsrc,
81 */ 81 */
82 82
83static inline int vga_get_interruptible(struct pci_dev *pdev, 83static inline int vga_get_interruptible(struct pci_dev *pdev,
84 unsigned int rsrc) 84 unsigned int rsrc)
85{ 85{
86 return vga_get(pdev, rsrc, 1); 86 return vga_get(pdev, rsrc, 1);
87} 87}
88 88
89/** 89/**
90 * vga_get_interruptible 90 * vga_get_uninterruptible
91 * 91 *
92 * Shortcut to vga_get 92 * Shortcut to vga_get
93 */ 93 */
94 94
95static inline int vga_get_uninterruptible(struct pci_dev *pdev, 95static inline int vga_get_uninterruptible(struct pci_dev *pdev,
96 unsigned int rsrc) 96 unsigned int rsrc)
97{ 97{
98 return vga_get(pdev, rsrc, 0); 98 return vga_get(pdev, rsrc, 0);
99} 99}
@@ -165,28 +165,33 @@ static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2)
165} 165}
166#endif 166#endif
167 167
168/* 168/**
169 * Register a client with the VGA arbitration logic 169 * vga_client_register
170 * return value: number of VGA devices in system. 170 *
171 * 171 * @pdev: pci device of the VGA client
172 * Clients have two callback mechanisms they can use. 172 * @cookie: client cookie to be used in callbacks
173 * irq enable/disable callback - 173 * @irq_set_state: irq state change callback
174 * If a client can't disable its GPUs VGA resources, then we 174 * @set_vga_decode: vga decode change callback
175 * need to be able to ask it to turn off its irqs when we 175 *
176 * turn off its mem and io decoding. 176 * return value: 0 on success, -1 on failure
177 * set_vga_decode 177 * Register a client with the VGA arbitration logic
178 * If a client can disable its GPU VGA resource, it will 178 *
179 * get a callback from this to set the encode/decode state 179 * Clients have two callback mechanisms they can use.
180 * 180 * irq enable/disable callback -
181 * Clients with disable abilities should check the return value 181 * If a client can't disable its GPUs VGA resources, then we
182 * of this function and if the VGA device count is > 1, should 182 * need to be able to ask it to turn off its irqs when we
183 * disable VGA decoding resources. 183 * turn off its mem and io decoding.
184 * set_vga_decode
185 * If a client can disable its GPU VGA resource, it will
186 * get a callback from this to set the encode/decode state
184 * 187 *
185 * Rationale: we cannot disable VGA decode resources unconditionally 188 * Rationale: we cannot disable VGA decode resources unconditionally
186 * some single GPU laptops seem to require ACPI or BIOS access to the 189 * some single GPU laptops seem to require ACPI or BIOS access to the
187 * VGA registers to control things like backlights etc. 190 * VGA registers to control things like backlights etc.
188 * Hopefully newer multi-GPU laptops do something saner, and desktops 191 * Hopefully newer multi-GPU laptops do something saner, and desktops
189 * won't have any special ACPI for this. 192 * won't have any special ACPI for this.
193 * They driver will get a callback when VGA arbitration is first used
194 * by userspace since we some older X servers have issues.
190 */ 195 */
191int vga_client_register(struct pci_dev *pdev, void *cookie, 196int vga_client_register(struct pci_dev *pdev, void *cookie,
192 void (*irq_set_state)(void *cookie, bool state), 197 void (*irq_set_state)(void *cookie, bool state),