Lines Matching refs:dev

18     QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev);  in config_readb()  local
19 return qpci_io_readb(dev->pdev, dev->bar, dev->device_cfg_offset + addr); in config_readb()
24 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in config_readw() local
25 return qpci_io_readw(dev->pdev, dev->bar, dev->device_cfg_offset + addr); in config_readw()
30 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in config_readl() local
31 return qpci_io_readl(dev->pdev, dev->bar, dev->device_cfg_offset + addr); in config_readl()
36 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in config_readq() local
37 return qpci_io_readq(dev->pdev, dev->bar, dev->device_cfg_offset + addr); in config_readq()
42 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_features() local
45 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in get_features()
49 lo = qpci_io_readl(dev->pdev, dev->bar, dev->common_cfg_offset + in get_features()
52 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in get_features()
56 hi = qpci_io_readl(dev->pdev, dev->bar, dev->common_cfg_offset + in get_features()
64 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in set_features() local
69 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_features()
73 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_features()
77 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_features()
81 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_features()
89 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_guest_features() local
92 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in get_guest_features()
96 lo = qpci_io_readl(dev->pdev, dev->bar, dev->common_cfg_offset + in get_guest_features()
99 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in get_guest_features()
103 hi = qpci_io_readl(dev->pdev, dev->bar, dev->common_cfg_offset + in get_guest_features()
111 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_status() local
113 return qpci_io_readb(dev->pdev, dev->bar, dev->common_cfg_offset + in get_status()
120 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in set_status() local
122 return qpci_io_writeb(dev->pdev, dev->bar, dev->common_cfg_offset + in set_status()
128 static bool get_msix_status(QVirtioPCIDevice *dev, uint32_t msix_entry, in get_msix_status() argument
134 if (qpci_msix_masked(dev->pdev, msix_entry)) { in get_msix_status()
136 return qpci_msix_pending(dev->pdev, msix_entry); in get_msix_status()
139 data = qtest_readl(dev->pdev->bus->qts, msix_addr); in get_msix_status()
141 qtest_writel(dev->pdev->bus->qts, msix_addr, 0); in get_msix_status()
150 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_queue_isr_status() local
152 if (dev->pdev->msix_enabled) { in get_queue_isr_status()
155 return get_msix_status(dev, vqpci->msix_entry, vqpci->msix_addr, in get_queue_isr_status()
159 return qpci_io_readb(dev->pdev, dev->bar, dev->isr_cfg_offset) & 1; in get_queue_isr_status()
164 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_config_isr_status() local
166 if (dev->pdev->msix_enabled) { in get_config_isr_status()
167 return get_msix_status(dev, dev->config_msix_entry, in get_config_isr_status()
168 dev->config_msix_addr, dev->config_msix_data); in get_config_isr_status()
171 return qpci_io_readb(dev->pdev, dev->bar, dev->isr_cfg_offset) & 2; in get_config_isr_status()
176 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in wait_config_isr_status() local
181 qtest_clock_step(dev->pdev->bus->qts, 100); in wait_config_isr_status()
187 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in queue_select() local
189 qpci_io_writew(dev->pdev, dev->bar, dev->common_cfg_offset + in queue_select()
196 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in get_queue_size() local
198 return qpci_io_readw(dev->pdev, dev->bar, dev->common_cfg_offset + in get_queue_size()
204 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in set_queue_address() local
206 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
209 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
213 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
216 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
220 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
223 qpci_io_writel(dev->pdev, dev->bar, dev->common_cfg_offset + in set_queue_address()
231 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in virtqueue_setup() local
239 notify_off = qpci_io_readw(dev->pdev, dev->bar, dev->common_cfg_offset + in virtqueue_setup()
243 vqpci->notify_offset = dev->notify_cfg_offset + in virtqueue_setup()
244 notify_off * dev->notify_off_multiplier; in virtqueue_setup()
246 qpci_io_writew(dev->pdev, dev->bar, dev->common_cfg_offset + in virtqueue_setup()
254 QVirtioPCIDevice *dev = container_of(d, QVirtioPCIDevice, vdev); in virtqueue_kick() local
257 qpci_io_writew(dev->pdev, dev->bar, vqpci->notify_offset, vq->index); in virtqueue_kick()
312 static bool probe_device_type(QVirtioPCIDevice *dev) in probe_device_type() argument
318 vendor_id = qpci_config_readw(dev->pdev, PCI_VENDOR_ID); in probe_device_type()
327 device_id = qpci_config_readw(dev->pdev, PCI_DEVICE_ID); in probe_device_type()
341 dev->vdev.device_type = qpci_config_readw(dev->pdev, PCI_SUBSYSTEM_ID); in probe_device_type()
347 dev->vdev.device_type = device_id - 0x1040; in probe_device_type()
354 static bool find_structure(QVirtioPCIDevice *dev, uint8_t cfg_type, in find_structure() argument
360 while ((addr = qpci_find_capability(dev->pdev, PCI_CAP_ID_VNDR, in find_structure()
364 type = qpci_config_readb(dev->pdev, in find_structure()
370 *bar = qpci_config_readb(dev->pdev, in find_structure()
372 *offset = qpci_config_readl(dev->pdev, in find_structure()
374 *length = qpci_config_readl(dev->pdev, in find_structure()
386 static bool probe_device_layout(QVirtioPCIDevice *dev) in probe_device_layout() argument
397 if (!find_structure(dev, VIRTIO_PCI_CAP_COMMON_CFG, &bar, in probe_device_layout()
398 &dev->common_cfg_offset, &length, NULL)) { in probe_device_layout()
401 dev->bar_idx = bar; in probe_device_layout()
403 if (!find_structure(dev, VIRTIO_PCI_CAP_NOTIFY_CFG, &bar, in probe_device_layout()
404 &dev->notify_cfg_offset, &length, &cfg_addr)) { in probe_device_layout()
407 g_assert_cmphex(bar, ==, dev->bar_idx); in probe_device_layout()
409 dev->notify_off_multiplier = qpci_config_readl(dev->pdev, in probe_device_layout()
413 if (!find_structure(dev, VIRTIO_PCI_CAP_ISR_CFG, &bar, in probe_device_layout()
414 &dev->isr_cfg_offset, &length, NULL)) { in probe_device_layout()
417 g_assert_cmphex(bar, ==, dev->bar_idx); in probe_device_layout()
419 if (!find_structure(dev, VIRTIO_PCI_CAP_DEVICE_CFG, &bar, in probe_device_layout()
420 &dev->device_cfg_offset, &length, NULL)) { in probe_device_layout()
423 g_assert_cmphex(bar, ==, dev->bar_idx); in probe_device_layout()
429 bool qvirtio_pci_init_virtio_1(QVirtioPCIDevice *dev) in qvirtio_pci_init_virtio_1() argument
431 if (!probe_device_type(dev)) { in qvirtio_pci_init_virtio_1()
435 if (!probe_device_layout(dev)) { in qvirtio_pci_init_virtio_1()
439 dev->vdev.bus = &qvirtio_pci_virtio_1; in qvirtio_pci_init_virtio_1()
440 dev->msix_ops = &qvirtio_pci_msix_ops_virtio_1; in qvirtio_pci_init_virtio_1()
441 dev->vdev.big_endian = false; in qvirtio_pci_init_virtio_1()