Lines Matching defs:vgasr_priv

126  * protects access to struct vgasr_priv
131 * struct vgasr_priv - vga_switcheroo private data
149 struct vgasr_priv {
170 static void vga_switcheroo_debugfs_init(struct vgasr_priv *priv);
171 static void vga_switcheroo_debugfs_fini(struct vgasr_priv *priv);
174 static struct vgasr_priv vgasr_priv = {
175 .clients = LIST_HEAD_INIT(vgasr_priv.clients),
176 .mux_hw_lock = __MUTEX_INITIALIZER(vgasr_priv.mux_hw_lock),
182 return !vgasr_priv.active &&
183 vgasr_priv.registered_clients == 2 && vgasr_priv.handler;
192 if (vgasr_priv.handler->init)
193 vgasr_priv.handler->init();
195 list_for_each_entry(client, &vgasr_priv.clients, list) {
200 ret = vgasr_priv.handler->get_client_id(client->pdev);
207 list_for_each_entry(client, &vgasr_priv.clients, list) {
212 ret = vgasr_priv.handler->get_client_id(client->vga_dev);
221 vga_switcheroo_debugfs_init(&vgasr_priv);
222 vgasr_priv.active = true;
240 if (vgasr_priv.handler) {
245 vgasr_priv.handler = handler;
246 vgasr_priv.handler_flags = handler_flags;
264 mutex_lock(&vgasr_priv.mux_hw_lock);
265 vgasr_priv.handler_flags = 0;
266 vgasr_priv.handler = NULL;
267 if (vgasr_priv.active) {
269 vga_switcheroo_debugfs_fini(&vgasr_priv);
270 vgasr_priv.active = false;
272 mutex_unlock(&vgasr_priv.mux_hw_lock);
287 return vgasr_priv.handler_flags;
313 list_add_tail(&client->list, &vgasr_priv.clients);
315 vgasr_priv.registered_clients++;
376 if (vgasr_priv.active) {
377 id = vgasr_priv.handler->get_client_id(vga_dev);
446 !vgasr_priv.handler_flags)
482 client = find_client_from_pci(&vgasr_priv.clients, pdev);
503 client = find_client_from_pci(&vgasr_priv.clients, pdev);
506 vgasr_priv.registered_clients--;
510 if (vgasr_priv.active && vgasr_priv.registered_clients < 2) {
512 vga_switcheroo_debugfs_fini(&vgasr_priv);
513 vgasr_priv.active = false;
533 client = find_client_from_pci(&vgasr_priv.clients, pdev);
563 mutex_lock(&vgasr_priv.mux_hw_lock);
564 if (!vgasr_priv.handler || !vgasr_priv.handler->switch_ddc) {
565 vgasr_priv.old_ddc_owner = -ENODEV;
569 id = vgasr_priv.handler->get_client_id(pdev);
570 vgasr_priv.old_ddc_owner = vgasr_priv.handler->switch_ddc(id);
571 return vgasr_priv.old_ddc_owner;
594 int ret = vgasr_priv.old_ddc_owner;
596 if (WARN_ON_ONCE(!mutex_is_locked(&vgasr_priv.mux_hw_lock)))
599 if (vgasr_priv.old_ddc_owner >= 0) {
600 id = vgasr_priv.handler->get_client_id(pdev);
601 if (vgasr_priv.old_ddc_owner != id)
602 ret = vgasr_priv.handler->switch_ddc(
603 vgasr_priv.old_ddc_owner);
605 mutex_unlock(&vgasr_priv.mux_hw_lock);
652 list_for_each_entry(client, &vgasr_priv.clients, list) {
676 if (vgasr_priv.handler->power_state)
677 vgasr_priv.handler->power_state(client->id, VGA_SWITCHEROO_ON);
690 if (vgasr_priv.handler->power_state)
691 vgasr_priv.handler->power_state(client->id, VGA_SWITCHEROO_OFF);
701 client = find_client_from_id(&vgasr_priv.clients, id | ID_BIT_AUDIO);
711 active = find_active_client(&vgasr_priv.clients);
728 active = find_active_client(&vgasr_priv.clients);
741 mutex_lock(&vgasr_priv.mux_hw_lock);
742 ret = vgasr_priv.handler->switchto(new_client->id);
743 mutex_unlock(&vgasr_priv.mux_hw_lock);
765 list_for_each_entry(client, &vgasr_priv.clients, list) {
793 if (!vgasr_priv.active) {
800 list_for_each_entry(client, &vgasr_priv.clients, list) {
813 list_for_each_entry(client, &vgasr_priv.clients, list) {
853 client = find_client_from_id(&vgasr_priv.clients, client_id);
857 vgasr_priv.delayed_switch_active = false;
860 mutex_lock(&vgasr_priv.mux_hw_lock);
861 ret = vgasr_priv.handler->switchto(client_id);
862 mutex_unlock(&vgasr_priv.mux_hw_lock);
886 vgasr_priv.delayed_switch_active = true;
887 vgasr_priv.delayed_client_id = client_id;
908 static void vga_switcheroo_debugfs_fini(struct vgasr_priv *priv)
914 static void vga_switcheroo_debugfs_init(struct vgasr_priv *priv)
943 if (!vgasr_priv.delayed_switch_active)
947 vgasr_priv.delayed_client_id);
949 client = find_client_from_id(&vgasr_priv.clients,
950 vgasr_priv.delayed_client_id);
958 vgasr_priv.delayed_switch_active = false;
1000 if (!vgasr_priv.handler->power_state)
1003 client = find_client_from_pci(&vgasr_priv.clients, pdev);
1010 vgasr_priv.handler->power_state(client->id, state);
1023 if (vgasr_priv.handler->switchto) {
1024 mutex_lock(&vgasr_priv.mux_hw_lock);
1025 vgasr_priv.handler->switchto(VGA_SWITCHEROO_IGD);
1026 mutex_unlock(&vgasr_priv.mux_hw_lock);