Lines Matching refs:oct_hw

24 	struct octep_hw *oct_hw;  member
30 struct octep_hw oct_hw; member
44 return oct_vdpa->oct_hw; in vdpa_to_octep_hw()
49 struct octep_hw *oct_hw = data; in octep_vdpa_intr_handler() local
63 for (i = irq - oct_hw->irqs[0]; i < oct_hw->nr_vring; i += oct_hw->nb_irqs) { in octep_vdpa_intr_handler()
64 if (ioread8(oct_hw->vqs[i].cb_notify_addr)) { in octep_vdpa_intr_handler()
66 iowrite8(0, oct_hw->vqs[i].cb_notify_addr); in octep_vdpa_intr_handler()
68 if (likely(oct_hw->vqs[i].cb.callback)) in octep_vdpa_intr_handler()
69 oct_hw->vqs[i].cb.callback(oct_hw->vqs[i].cb.private); in octep_vdpa_intr_handler()
75 if (unlikely(irq == oct_hw->irqs[0] && ioread8(oct_hw->isr))) { in octep_vdpa_intr_handler()
76 iowrite8(0, oct_hw->isr); in octep_vdpa_intr_handler()
78 if (oct_hw->config_cb.callback) in octep_vdpa_intr_handler()
79 oct_hw->config_cb.callback(oct_hw->config_cb.private); in octep_vdpa_intr_handler()
85 static void octep_free_irqs(struct octep_hw *oct_hw) in octep_free_irqs() argument
87 struct pci_dev *pdev = oct_hw->pdev; in octep_free_irqs()
90 if (!oct_hw->irqs) in octep_free_irqs()
93 for (irq = 0; irq < oct_hw->nb_irqs; irq++) { in octep_free_irqs()
94 if (!oct_hw->irqs[irq]) in octep_free_irqs()
97 devm_free_irq(&pdev->dev, oct_hw->irqs[irq], oct_hw); in octep_free_irqs()
101 devm_kfree(&pdev->dev, oct_hw->irqs); in octep_free_irqs()
102 oct_hw->irqs = NULL; in octep_free_irqs()
105 static int octep_request_irqs(struct octep_hw *oct_hw) in octep_request_irqs() argument
107 struct pci_dev *pdev = oct_hw->pdev; in octep_request_irqs()
110 oct_hw->irqs = devm_kcalloc(&pdev->dev, oct_hw->nb_irqs, sizeof(int), GFP_KERNEL); in octep_request_irqs()
111 if (!oct_hw->irqs) in octep_request_irqs()
114 ret = pci_alloc_irq_vectors(pdev, 1, oct_hw->nb_irqs, PCI_IRQ_MSIX); in octep_request_irqs()
120 for (idx = 0; idx < oct_hw->nb_irqs; idx++) { in octep_request_irqs()
123 dev_name(&pdev->dev), oct_hw); in octep_request_irqs()
128 oct_hw->irqs[idx] = irq; in octep_request_irqs()
134 octep_free_irqs(oct_hw); in octep_request_irqs()
140 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_device_features() local
142 return oct_hw->features; in octep_vdpa_get_device_features()
147 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_driver_features() local
154 dev_warn(&oct_hw->pdev->dev, in octep_vdpa_set_driver_features()
160 octep_hw_set_drv_features(oct_hw, features); in octep_vdpa_set_driver_features()
167 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_driver_features() local
169 return octep_hw_get_drv_features(oct_hw); in octep_vdpa_get_driver_features()
174 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_status() local
176 return octep_hw_get_status(oct_hw); in octep_vdpa_get_status()
181 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_status() local
184 status_old = octep_hw_get_status(oct_hw); in octep_vdpa_set_status()
191 if (octep_request_irqs(oct_hw)) in octep_vdpa_set_status()
194 octep_hw_set_status(oct_hw, status); in octep_vdpa_set_status()
199 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_reset() local
200 u8 status = octep_hw_get_status(oct_hw); in octep_vdpa_reset()
206 for (qid = 0; qid < oct_hw->nr_vring; qid++) { in octep_vdpa_reset()
207 oct_hw->vqs[qid].cb.callback = NULL; in octep_vdpa_reset()
208 oct_hw->vqs[qid].cb.private = NULL; in octep_vdpa_reset()
209 oct_hw->config_cb.callback = NULL; in octep_vdpa_reset()
210 oct_hw->config_cb.private = NULL; in octep_vdpa_reset()
212 octep_hw_reset(oct_hw); in octep_vdpa_reset()
215 octep_free_irqs(oct_hw); in octep_vdpa_reset()
222 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_vq_num_max() local
224 return octep_get_vq_size(oct_hw); in octep_vdpa_get_vq_num_max()
230 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_vq_state() local
232 return octep_get_vq_state(oct_hw, qid, state); in octep_vdpa_get_vq_state()
238 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_vq_state() local
240 return octep_set_vq_state(oct_hw, qid, state); in octep_vdpa_set_vq_state()
245 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_vq_cb() local
247 oct_hw->vqs[qid].cb = *cb; in octep_vdpa_set_vq_cb()
252 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_vq_ready() local
254 octep_set_vq_ready(oct_hw, qid, ready); in octep_vdpa_set_vq_ready()
259 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_vq_ready() local
261 return octep_get_vq_ready(oct_hw, qid); in octep_vdpa_get_vq_ready()
266 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_vq_num() local
268 octep_set_vq_num(oct_hw, qid, num); in octep_vdpa_set_vq_num()
274 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_vq_address() local
280 return octep_set_vq_address(oct_hw, qid, desc_area, driver_area, device_area); in octep_vdpa_set_vq_address()
290 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_kick_vq_with_data() local
293 vp_iowrite32(data, oct_hw->vqs[idx].notify_addr); in octep_vdpa_kick_vq_with_data()
298 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_generation() local
300 return vp_ioread8(&oct_hw->common_cfg->config_generation); in octep_vdpa_get_generation()
305 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_device_id() local
307 return oct_hw->dev_id; in octep_vdpa_get_device_id()
322 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_config_size() local
324 return oct_hw->config_size; in octep_vdpa_get_config_size()
330 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_get_config() local
332 octep_read_dev_config(oct_hw, offset, buf, len); in octep_vdpa_get_config()
343 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_vdpa_set_config_cb() local
345 oct_hw->config_cb.callback = cb->callback; in octep_vdpa_set_config_cb()
346 oct_hw->config_cb.private = cb->private; in octep_vdpa_set_config_cb()
352 struct octep_hw *oct_hw = vdpa_to_octep_hw(vdpa_dev); in octep_get_vq_notification() local
355 area.addr = oct_hw->vqs[idx].notify_pa; in octep_get_vq_notification()
472 struct octep_hw *oct_hw; in octep_vdpa_remove_vf() local
475 oct_hw = &mgmt_dev->oct_hw; in octep_vdpa_remove_vf()
483 if (oct_hw->base[OCTEP_HW_CAPS_BAR]) in octep_vdpa_remove_vf()
484 octep_iounmap_region(pdev, oct_hw->base, OCTEP_HW_CAPS_BAR); in octep_vdpa_remove_vf()
486 if (oct_hw->base[OCTEP_HW_MBOX_BAR]) in octep_vdpa_remove_vf()
487 octep_iounmap_region(pdev, oct_hw->base, OCTEP_HW_MBOX_BAR); in octep_vdpa_remove_vf()
504 struct octep_hw *oct_hw = &mgmt_dev->oct_hw; in octep_vdpa_dev_add() local
505 struct pci_dev *pdev = oct_hw->pdev; in octep_vdpa_dev_add()
521 oct_vdpa->oct_hw = oct_hw; in octep_vdpa_dev_add()
524 device_features = oct_hw->features; in octep_vdpa_dev_add()
535 oct_hw->features = device_features; in octep_vdpa_dev_add()
551 ret = _vdpa_register_device(&oct_vdpa->vdpa, oct_hw->nr_vring); in octep_vdpa_dev_add()
596 struct octep_hw *oct_hw; in octep_vdpa_setup_task() local
601 oct_hw = &mgmt_dev->oct_hw; in octep_vdpa_setup_task()
608 if (get_device_ready_status(oct_hw->base[OCTEP_HW_MBOX_BAR])) { in octep_vdpa_setup_task()
626 ret = octep_iomap_region(pdev, oct_hw->base, OCTEP_HW_CAPS_BAR); in octep_vdpa_setup_task()
630 val = readq(oct_hw->base[OCTEP_HW_MBOX_BAR] + OCTEP_VF_IN_CTRL(0)); in octep_vdpa_setup_task()
631 oct_hw->nb_irqs = OCTEP_VF_IN_CTRL_RPVF(val); in octep_vdpa_setup_task()
632 if (!oct_hw->nb_irqs || oct_hw->nb_irqs > OCTEP_MAX_CB_INTR) { in octep_vdpa_setup_task()
633 dev_err(dev, "Invalid number of interrupts %d\n", oct_hw->nb_irqs); in octep_vdpa_setup_task()
637 ret = octep_hw_caps_read(oct_hw, pdev); in octep_vdpa_setup_task()
643 mgmt_dev->mdev.max_supported_vqs = oct_hw->nr_vring; in octep_vdpa_setup_task()
644 mgmt_dev->mdev.supported_features = oct_hw->features; in octep_vdpa_setup_task()
659 octep_iounmap_region(pdev, oct_hw->base, OCTEP_HW_CAPS_BAR); in octep_vdpa_setup_task()
660 oct_hw->base[OCTEP_HW_CAPS_BAR] = NULL; in octep_vdpa_setup_task()
686 ret = octep_iomap_region(pdev, mgmt_dev->oct_hw.base, OCTEP_HW_MBOX_BAR); in octep_vdpa_probe_vf()