diff options
Diffstat (limited to 'include/linux/vgaarb.h')
-rw-r--r-- | include/linux/vgaarb.h | 49 |
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 | ||
83 | static inline int vga_get_interruptible(struct pci_dev *pdev, | 83 | static 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 | ||
95 | static inline int vga_get_uninterruptible(struct pci_dev *pdev, | 95 | static 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 | */ |
191 | int vga_client_register(struct pci_dev *pdev, void *cookie, | 196 | int 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), |