Lines Matching refs:vgadev
108 struct vga_device *vgadev; in vgadev_find() local
110 list_for_each_entry(vgadev, &vga_list, list) in vgadev_find()
111 if (pdev == vgadev->pdev) in vgadev_find()
112 return vgadev; in vgadev_find()
210 static struct vga_device *__vga_tryget(struct vga_device *vgadev, in __vga_tryget() argument
213 struct device *dev = &vgadev->pdev->dev; in __vga_tryget()
223 (vgadev->decodes & VGA_RSRC_LEGACY_IO)) in __vga_tryget()
226 (vgadev->decodes & VGA_RSRC_LEGACY_MEM)) in __vga_tryget()
230 vgaarb_dbg(dev, "%s: owns: %d\n", __func__, vgadev->owns); in __vga_tryget()
233 wants = rsrc & ~vgadev->owns; in __vga_tryget()
252 if (vgadev == conflict) in __vga_tryget()
261 if (vgadev->pdev->bus != conflict->pdev->bus) { in __vga_tryget()
322 if (!vgadev->bridge_has_one_vga) { in __vga_tryget()
332 pci_set_vga_state(vgadev->pdev, true, pci_bits, flags); in __vga_tryget()
334 vgadev->owns |= wants; in __vga_tryget()
336 vgadev->locks |= (rsrc & VGA_RSRC_LEGACY_MASK); in __vga_tryget()
338 vgadev->io_lock_cnt++; in __vga_tryget()
340 vgadev->mem_lock_cnt++; in __vga_tryget()
342 vgadev->io_norm_cnt++; in __vga_tryget()
344 vgadev->mem_norm_cnt++; in __vga_tryget()
349 static void __vga_put(struct vga_device *vgadev, unsigned int rsrc) in __vga_put() argument
351 struct device *dev = &vgadev->pdev->dev; in __vga_put()
352 unsigned int old_locks = vgadev->locks; in __vga_put()
359 if ((rsrc & VGA_RSRC_NORMAL_IO) && vgadev->io_norm_cnt > 0) { in __vga_put()
360 vgadev->io_norm_cnt--; in __vga_put()
361 if (vgadev->decodes & VGA_RSRC_LEGACY_IO) in __vga_put()
364 if ((rsrc & VGA_RSRC_NORMAL_MEM) && vgadev->mem_norm_cnt > 0) { in __vga_put()
365 vgadev->mem_norm_cnt--; in __vga_put()
366 if (vgadev->decodes & VGA_RSRC_LEGACY_MEM) in __vga_put()
369 if ((rsrc & VGA_RSRC_LEGACY_IO) && vgadev->io_lock_cnt > 0) in __vga_put()
370 vgadev->io_lock_cnt--; in __vga_put()
371 if ((rsrc & VGA_RSRC_LEGACY_MEM) && vgadev->mem_lock_cnt > 0) in __vga_put()
372 vgadev->mem_lock_cnt--; in __vga_put()
377 if (vgadev->io_lock_cnt == 0) in __vga_put()
378 vgadev->locks &= ~VGA_RSRC_LEGACY_IO; in __vga_put()
379 if (vgadev->mem_lock_cnt == 0) in __vga_put()
380 vgadev->locks &= ~VGA_RSRC_LEGACY_MEM; in __vga_put()
385 if (old_locks != vgadev->locks) in __vga_put()
425 struct vga_device *vgadev, *conflict; in vga_get() local
439 vgadev = vgadev_find(pdev); in vga_get()
440 if (vgadev == NULL) { in vga_get()
445 conflict = __vga_tryget(vgadev, rsrc); in vga_get()
492 struct vga_device *vgadev; in vga_tryget() local
504 vgadev = vgadev_find(pdev); in vga_tryget()
505 if (vgadev == NULL) { in vga_tryget()
509 if (__vga_tryget(vgadev, rsrc)) in vga_tryget()
528 struct vga_device *vgadev; in vga_put() local
537 vgadev = vgadev_find(pdev); in vga_put()
538 if (vgadev == NULL) in vga_put()
540 __vga_put(vgadev, rsrc); in vga_put()
600 static bool vga_is_boot_device(struct vga_device *vgadev) in vga_is_boot_device() argument
603 struct pci_dev *pdev = vgadev->pdev; in vga_is_boot_device()
623 vgadev->is_firmware_default = true; in vga_is_boot_device()
640 if ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK) in vga_is_boot_device()
693 static void vga_arbiter_check_bridge_sharing(struct vga_device *vgadev) in vga_arbiter_check_bridge_sharing() argument
699 vgadev->bridge_has_one_vga = true; in vga_arbiter_check_bridge_sharing()
702 vgaarb_info(&vgadev->pdev->dev, "bridge control possible\n"); in vga_arbiter_check_bridge_sharing()
707 new_bus = vgadev->pdev->bus; in vga_arbiter_check_bridge_sharing()
735 if (bridge && bridge == vgadev->pdev->bus->self) in vga_arbiter_check_bridge_sharing()
736 vgadev->bridge_has_one_vga = false; in vga_arbiter_check_bridge_sharing()
744 if (vgadev->bridge_has_one_vga) in vga_arbiter_check_bridge_sharing()
745 vgaarb_info(&vgadev->pdev->dev, "bridge control possible\n"); in vga_arbiter_check_bridge_sharing()
747 vgaarb_info(&vgadev->pdev->dev, "no bridge control possible\n"); in vga_arbiter_check_bridge_sharing()
758 struct vga_device *vgadev; in vga_arbiter_add_pci_device() local
769 vgadev = kzalloc(sizeof(struct vga_device), GFP_KERNEL); in vga_arbiter_add_pci_device()
770 if (vgadev == NULL) { in vga_arbiter_add_pci_device()
785 vgadev->pdev = pdev; in vga_arbiter_add_pci_device()
788 vgadev->decodes = VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM | in vga_arbiter_add_pci_device()
798 vgadev->owns |= VGA_RSRC_LEGACY_IO; in vga_arbiter_add_pci_device()
800 vgadev->owns |= VGA_RSRC_LEGACY_MEM; in vga_arbiter_add_pci_device()
811 vgadev->owns = 0; in vga_arbiter_add_pci_device()
818 if (vga_is_boot_device(vgadev)) { in vga_arbiter_add_pci_device()
825 vga_arbiter_check_bridge_sharing(vgadev); in vga_arbiter_add_pci_device()
828 list_add_tail(&vgadev->list, &vga_list); in vga_arbiter_add_pci_device()
831 vga_iostate_to_str(vgadev->decodes), in vga_arbiter_add_pci_device()
832 vga_iostate_to_str(vgadev->owns), in vga_arbiter_add_pci_device()
833 vga_iostate_to_str(vgadev->locks)); in vga_arbiter_add_pci_device()
839 kfree(vgadev); in vga_arbiter_add_pci_device()
845 struct vga_device *vgadev; in vga_arbiter_del_pci_device() local
850 vgadev = vgadev_find(pdev); in vga_arbiter_del_pci_device()
851 if (vgadev == NULL) { in vga_arbiter_del_pci_device()
859 if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM)) in vga_arbiter_del_pci_device()
863 list_del(&vgadev->list); in vga_arbiter_del_pci_device()
870 kfree(vgadev); in vga_arbiter_del_pci_device()
875 static inline void vga_update_device_decodes(struct vga_device *vgadev, in vga_update_device_decodes() argument
878 struct device *dev = &vgadev->pdev->dev; in vga_update_device_decodes()
881 old_decodes = vgadev->decodes; in vga_update_device_decodes()
883 decodes_unlocked = vgadev->locks & decodes_removed; in vga_update_device_decodes()
884 vgadev->decodes = new_decodes; in vga_update_device_decodes()
888 vga_iostate_to_str(vgadev->decodes), in vga_update_device_decodes()
889 vga_iostate_to_str(vgadev->owns)); in vga_update_device_decodes()
894 vgadev->io_lock_cnt = 0; in vga_update_device_decodes()
896 vgadev->mem_lock_cnt = 0; in vga_update_device_decodes()
897 __vga_put(vgadev, decodes_unlocked); in vga_update_device_decodes()
914 struct vga_device *vgadev; in __vga_set_legacy_decoding() local
920 vgadev = vgadev_find(pdev); in __vga_set_legacy_decoding()
921 if (vgadev == NULL) in __vga_set_legacy_decoding()
925 if (userspace && vgadev->set_decode) in __vga_set_legacy_decoding()
929 vga_update_device_decodes(vgadev, decodes); in __vga_set_legacy_decoding()
984 struct vga_device *vgadev; in vga_client_register() local
988 vgadev = vgadev_find(pdev); in vga_client_register()
989 if (!vgadev) in vga_client_register()
992 vgadev->set_decode = set_decode; in vga_client_register()
1103 struct vga_device *vgadev; in vga_arb_read() local
1126 vgadev = vgadev_find(pdev); in vga_arb_read()
1127 if (vgadev == NULL) { in vga_arb_read()
1140 vga_iostate_to_str(vgadev->decodes), in vga_arb_read()
1141 vga_iostate_to_str(vgadev->owns), in vga_arb_read()
1142 vga_iostate_to_str(vgadev->locks), in vga_arb_read()
1143 vgadev->io_lock_cnt, vgadev->mem_lock_cnt); in vga_arb_read()
1319 struct vga_device *vgadev; in vga_arb_write() local
1347 vgadev = vgadev_find(pdev); in vga_arb_write()
1348 pr_debug("vgadev %p\n", vgadev); in vga_arb_write()
1349 if (vgadev == NULL) { in vga_arb_write()
1480 struct vga_device *vgadev; in vga_arbiter_notify_clients() local
1489 list_for_each_entry(vgadev, &vga_list, list) { in vga_arbiter_notify_clients()
1494 if (vgadev->set_decode) { in vga_arbiter_notify_clients()
1495 new_decodes = vgadev->set_decode(vgadev->pdev, in vga_arbiter_notify_clients()
1497 vga_update_device_decodes(vgadev, new_decodes); in vga_arbiter_notify_clients()