Lines Matching refs:vgadev
124 struct vga_device *vgadev; in vgadev_find() local
126 list_for_each_entry(vgadev, &vga_list, list) in vgadev_find()
127 if (pdev == vgadev->pdev) in vgadev_find()
128 return vgadev; in vgadev_find()
149 static inline void vga_irq_set_state(struct vga_device *vgadev, bool state) in vga_irq_set_state() argument
151 if (vgadev->irq_set_state) in vga_irq_set_state()
152 vgadev->irq_set_state(vgadev->cookie, state); in vga_irq_set_state()
170 static struct vga_device *__vga_tryget(struct vga_device *vgadev, in __vga_tryget() argument
182 (vgadev->decodes & VGA_RSRC_LEGACY_IO)) in __vga_tryget()
185 (vgadev->decodes & VGA_RSRC_LEGACY_MEM)) in __vga_tryget()
189 pr_debug("%s: owns: %d\n", __func__, vgadev->owns); in __vga_tryget()
192 wants = rsrc & ~vgadev->owns; in __vga_tryget()
211 if (vgadev == conflict) in __vga_tryget()
217 if (!vga_conflicts(vgadev->pdev, conflict->pdev)) in __vga_tryget()
226 if (vgadev->pdev->bus != conflict->pdev->bus) { in __vga_tryget()
289 if (!vgadev->bridge_has_one_vga) { in __vga_tryget()
299 pci_set_vga_state(vgadev->pdev, true, pci_bits, flags); in __vga_tryget()
301 if (!vgadev->bridge_has_one_vga) { in __vga_tryget()
302 vga_irq_set_state(vgadev, true); in __vga_tryget()
304 vgadev->owns |= wants; in __vga_tryget()
306 vgadev->locks |= (rsrc & VGA_RSRC_LEGACY_MASK); in __vga_tryget()
308 vgadev->io_lock_cnt++; in __vga_tryget()
310 vgadev->mem_lock_cnt++; in __vga_tryget()
312 vgadev->io_norm_cnt++; in __vga_tryget()
314 vgadev->mem_norm_cnt++; in __vga_tryget()
319 static void __vga_put(struct vga_device *vgadev, unsigned int rsrc) in __vga_put() argument
321 unsigned int old_locks = vgadev->locks; in __vga_put()
328 if ((rsrc & VGA_RSRC_NORMAL_IO) && vgadev->io_norm_cnt > 0) { in __vga_put()
329 vgadev->io_norm_cnt--; in __vga_put()
330 if (vgadev->decodes & VGA_RSRC_LEGACY_IO) in __vga_put()
333 if ((rsrc & VGA_RSRC_NORMAL_MEM) && vgadev->mem_norm_cnt > 0) { in __vga_put()
334 vgadev->mem_norm_cnt--; in __vga_put()
335 if (vgadev->decodes & VGA_RSRC_LEGACY_MEM) in __vga_put()
338 if ((rsrc & VGA_RSRC_LEGACY_IO) && vgadev->io_lock_cnt > 0) in __vga_put()
339 vgadev->io_lock_cnt--; in __vga_put()
340 if ((rsrc & VGA_RSRC_LEGACY_MEM) && vgadev->mem_lock_cnt > 0) in __vga_put()
341 vgadev->mem_lock_cnt--; in __vga_put()
346 if (vgadev->io_lock_cnt == 0) in __vga_put()
347 vgadev->locks &= ~VGA_RSRC_LEGACY_IO; in __vga_put()
348 if (vgadev->mem_lock_cnt == 0) in __vga_put()
349 vgadev->locks &= ~VGA_RSRC_LEGACY_MEM; in __vga_put()
354 if (old_locks != vgadev->locks) in __vga_put()
360 struct vga_device *vgadev, *conflict; in vga_get() local
374 vgadev = vgadev_find(pdev); in vga_get()
375 if (vgadev == NULL) { in vga_get()
380 conflict = __vga_tryget(vgadev, rsrc); in vga_get()
410 struct vga_device *vgadev; in vga_tryget() local
422 vgadev = vgadev_find(pdev); in vga_tryget()
423 if (vgadev == NULL) { in vga_tryget()
427 if (__vga_tryget(vgadev, rsrc)) in vga_tryget()
437 struct vga_device *vgadev; in vga_put() local
446 vgadev = vgadev_find(pdev); in vga_put()
447 if (vgadev == NULL) in vga_put()
449 __vga_put(vgadev, rsrc); in vga_put()
464 static void vga_arbiter_check_bridge_sharing(struct vga_device *vgadev) in vga_arbiter_check_bridge_sharing() argument
470 vgadev->bridge_has_one_vga = true; in vga_arbiter_check_bridge_sharing()
476 new_bus = vgadev->pdev->bus; in vga_arbiter_check_bridge_sharing()
499 if (bridge == vgadev->pdev->bus->self) in vga_arbiter_check_bridge_sharing()
500 vgadev->bridge_has_one_vga = false; in vga_arbiter_check_bridge_sharing()
517 struct vga_device *vgadev; in vga_arbiter_add_pci_device() local
528 vgadev = kmalloc(sizeof(struct vga_device), GFP_KERNEL); in vga_arbiter_add_pci_device()
529 if (vgadev == NULL) { in vga_arbiter_add_pci_device()
538 memset(vgadev, 0, sizeof(*vgadev)); in vga_arbiter_add_pci_device()
546 vgadev->pdev = pdev; in vga_arbiter_add_pci_device()
549 vgadev->decodes = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM | in vga_arbiter_add_pci_device()
559 vgadev->owns |= VGA_RSRC_LEGACY_IO; in vga_arbiter_add_pci_device()
561 vgadev->owns |= VGA_RSRC_LEGACY_MEM; in vga_arbiter_add_pci_device()
572 vgadev->owns = 0; in vga_arbiter_add_pci_device()
583 ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) { in vga_arbiter_add_pci_device()
589 vga_arbiter_check_bridge_sharing(vgadev); in vga_arbiter_add_pci_device()
592 list_add(&vgadev->list, &vga_list); in vga_arbiter_add_pci_device()
596 vga_iostate_to_str(vgadev->decodes), in vga_arbiter_add_pci_device()
597 vga_iostate_to_str(vgadev->owns), in vga_arbiter_add_pci_device()
598 vga_iostate_to_str(vgadev->locks)); in vga_arbiter_add_pci_device()
604 kfree(vgadev); in vga_arbiter_add_pci_device()
610 struct vga_device *vgadev; in vga_arbiter_del_pci_device() local
615 vgadev = vgadev_find(pdev); in vga_arbiter_del_pci_device()
616 if (vgadev == NULL) { in vga_arbiter_del_pci_device()
624 if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM)) in vga_arbiter_del_pci_device()
628 list_del(&vgadev->list); in vga_arbiter_del_pci_device()
639 kfree(vgadev); in vga_arbiter_del_pci_device()
644 static inline void vga_update_device_decodes(struct vga_device *vgadev, in vga_update_device_decodes() argument
649 old_decodes = vgadev->decodes; in vga_update_device_decodes()
651 decodes_unlocked = vgadev->locks & decodes_removed; in vga_update_device_decodes()
652 vgadev->decodes = new_decodes; in vga_update_device_decodes()
655 pci_name(vgadev->pdev), in vga_update_device_decodes()
657 vga_iostate_to_str(vgadev->decodes), in vga_update_device_decodes()
658 vga_iostate_to_str(vgadev->owns)); in vga_update_device_decodes()
663 vgadev->io_lock_cnt = 0; in vga_update_device_decodes()
665 vgadev->mem_lock_cnt = 0; in vga_update_device_decodes()
666 __vga_put(vgadev, decodes_unlocked); in vga_update_device_decodes()
681 struct vga_device *vgadev; in __vga_set_legacy_decoding() local
687 vgadev = vgadev_find(pdev); in __vga_set_legacy_decoding()
688 if (vgadev == NULL) in __vga_set_legacy_decoding()
692 if (userspace && vgadev->set_vga_decode) in __vga_set_legacy_decoding()
696 vga_update_device_decodes(vgadev, decodes); in __vga_set_legacy_decoding()
718 struct vga_device *vgadev; in vga_client_register() local
722 vgadev = vgadev_find(pdev); in vga_client_register()
723 if (!vgadev) in vga_client_register()
726 vgadev->irq_set_state = irq_set_state; in vga_client_register()
727 vgadev->set_vga_decode = set_vga_decode; in vga_client_register()
728 vgadev->cookie = cookie; in vga_client_register()
839 struct vga_device *vgadev; in vga_arb_read() local
864 vgadev = vgadev_find(pdev); in vga_arb_read()
865 if (vgadev == NULL) { in vga_arb_read()
880 vga_iostate_to_str(vgadev->decodes), in vga_arb_read()
881 vga_iostate_to_str(vgadev->owns), in vga_arb_read()
882 vga_iostate_to_str(vgadev->locks), in vga_arb_read()
883 vgadev->io_lock_cnt, vgadev->mem_lock_cnt); in vga_arb_read()
1064 struct vga_device *vgadev; in vga_arb_write() local
1091 vgadev = vgadev_find(pdev); in vga_arb_write()
1092 pr_debug("vgaarb: vgadev %p\n", vgadev); in vga_arb_write()
1093 if (vgadev == NULL) { in vga_arb_write()
1234 struct vga_device *vgadev; in vga_arbiter_notify_clients() local
1243 list_for_each_entry(vgadev, &vga_list, list) { in vga_arbiter_notify_clients()
1248 if (vgadev->set_vga_decode) { in vga_arbiter_notify_clients()
1249 new_decodes = vgadev->set_vga_decode(vgadev->cookie, new_state); in vga_arbiter_notify_clients()
1250 vga_update_device_decodes(vgadev, new_decodes); in vga_arbiter_notify_clients()
1299 struct vga_device *vgadev; in vga_arb_device_init() local
1317 list_for_each_entry(vgadev, &vga_list, list) { in vga_arb_device_init()
1329 if (!(pci_resource_flags(vgadev->pdev, i) & IORESOURCE_MEM)) in vga_arb_device_init()
1332 start = pci_resource_start(vgadev->pdev, i); in vga_arb_device_init()
1333 end = pci_resource_end(vgadev->pdev, i); in vga_arb_device_init()
1343 pci_name(vgadev->pdev)); in vga_arb_device_init()
1344 else if (vgadev->pdev != vga_default_device()) in vga_arb_device_init()
1346 pci_name(vgadev->pdev)); in vga_arb_device_init()
1347 vga_set_default_device(vgadev->pdev); in vga_arb_device_init()
1350 if (vgadev->bridge_has_one_vga) in vga_arb_device_init()
1351 pr_info("vgaarb: bridge control possible %s\n", pci_name(vgadev->pdev)); in vga_arb_device_init()
1353 pr_info("vgaarb: no bridge control possible %s\n", pci_name(vgadev->pdev)); in vga_arb_device_init()