Lines Matching refs:vbox
25 void vbox_report_caps(struct vbox_private *vbox)
31 hgsmi_send_caps_info(vbox->guest_pool, caps);
33 hgsmi_send_caps_info(vbox->guest_pool, caps);
36 static int vbox_accel_init(struct vbox_private *vbox)
41 vbox->vbva_info = devm_kcalloc(vbox->ddev.dev, vbox->num_crtcs,
42 sizeof(*vbox->vbva_info), GFP_KERNEL);
43 if (!vbox->vbva_info)
47 vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
49 vbox->vbva_buffers = pci_iomap_range(vbox->ddev.pdev, 0,
50 vbox->available_vram_size,
51 vbox->num_crtcs *
53 if (!vbox->vbva_buffers)
56 for (i = 0; i < vbox->num_crtcs; ++i) {
57 vbva_setup_buffer_context(&vbox->vbva_info[i],
58 vbox->available_vram_size +
61 vbva = (void __force *)vbox->vbva_buffers +
63 if (!vbva_enable(&vbox->vbva_info[i],
64 vbox->guest_pool, vbva, i)) {
73 static void vbox_accel_fini(struct vbox_private *vbox)
77 for (i = 0; i < vbox->num_crtcs; ++i)
78 vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i);
80 pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers);
84 static bool have_hgsmi_mode_hints(struct vbox_private *vbox)
89 ret = hgsmi_query_conf(vbox->guest_pool,
95 ret = hgsmi_query_conf(vbox->guest_pool,
114 int vbox_hw_init(struct vbox_private *vbox)
118 vbox->full_vram_size = inl(VBE_DISPI_IOPORT_DATA);
119 vbox->any_pitch = vbox_check_supported(VBE_DISPI_ID_ANYX);
121 DRM_INFO("VRAM %08x\n", vbox->full_vram_size);
124 vbox->guest_heap =
125 pci_iomap_range(vbox->ddev.pdev, 0, GUEST_HEAP_OFFSET(vbox),
127 if (!vbox->guest_heap)
131 vbox->guest_pool = gen_pool_create(4, -1);
132 if (!vbox->guest_pool)
135 ret = gen_pool_add_virt(vbox->guest_pool,
136 (unsigned long)vbox->guest_heap,
137 GUEST_HEAP_OFFSET(vbox),
142 ret = hgsmi_test_query_conf(vbox->guest_pool);
149 vbox->available_vram_size = GUEST_HEAP_OFFSET(vbox);
151 hgsmi_query_conf(vbox->guest_pool, VBOX_VBVA_CONF32_MONITOR_COUNT,
152 &vbox->num_crtcs);
153 vbox->num_crtcs = clamp_t(u32, vbox->num_crtcs, 1, VBOX_MAX_SCREENS);
155 if (!have_hgsmi_mode_hints(vbox)) {
160 vbox->last_mode_hints = devm_kcalloc(vbox->ddev.dev, vbox->num_crtcs,
163 if (!vbox->last_mode_hints) {
168 ret = vbox_accel_init(vbox);
175 gen_pool_destroy(vbox->guest_pool);
177 pci_iounmap(vbox->ddev.pdev, vbox->guest_heap);
181 void vbox_hw_fini(struct vbox_private *vbox)
183 vbox_accel_fini(vbox);
184 gen_pool_destroy(vbox->guest_pool);
185 pci_iounmap(vbox->ddev.pdev, vbox->guest_heap);