Lines Matching refs:hdev

30 int hl_pci_bars_map(struct hl_device *hdev, const char * const name[3],  in hl_pci_bars_map()  argument
33 struct pci_dev *pdev = hdev->pdev; in hl_pci_bars_map()
38 dev_err(hdev->dev, "Cannot obtain PCI resources\n"); in hl_pci_bars_map()
44 hdev->pcie_bar[bar] = is_wc[i] ? in hl_pci_bars_map()
47 if (!hdev->pcie_bar[bar]) { in hl_pci_bars_map()
48 dev_err(hdev->dev, "pci_ioremap%s_bar failed for %s\n", in hl_pci_bars_map()
60 if (hdev->pcie_bar[bar]) in hl_pci_bars_map()
61 iounmap(hdev->pcie_bar[bar]); in hl_pci_bars_map()
75 static void hl_pci_bars_unmap(struct hl_device *hdev) in hl_pci_bars_unmap() argument
77 struct pci_dev *pdev = hdev->pdev; in hl_pci_bars_unmap()
82 iounmap(hdev->pcie_bar[bar]); in hl_pci_bars_unmap()
88 int hl_pci_elbi_read(struct hl_device *hdev, u64 addr, u32 *data) in hl_pci_elbi_read() argument
90 struct pci_dev *pdev = hdev->pdev; in hl_pci_elbi_read()
95 if (hdev->pldm) in hl_pci_elbi_read()
127 dev_err(hdev->dev, "Error reading from ELBI\n"); in hl_pci_elbi_read()
132 dev_err(hdev->dev, "ELBI read didn't finish in time\n"); in hl_pci_elbi_read()
136 dev_err(hdev->dev, "ELBI read has undefined bits in status\n"); in hl_pci_elbi_read()
148 static int hl_pci_elbi_write(struct hl_device *hdev, u64 addr, u32 data) in hl_pci_elbi_write() argument
150 struct pci_dev *pdev = hdev->pdev; in hl_pci_elbi_write()
155 if (hdev->pldm) in hl_pci_elbi_write()
189 dev_err(hdev->dev, "ELBI write didn't finish in time\n"); in hl_pci_elbi_write()
193 dev_err(hdev->dev, "ELBI write has undefined bits in status\n"); in hl_pci_elbi_write()
205 int hl_pci_iatu_write(struct hl_device *hdev, u32 addr, u32 data) in hl_pci_iatu_write() argument
207 struct asic_fixed_properties *prop = &hdev->asic_prop; in hl_pci_iatu_write()
216 hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0x00300000); in hl_pci_iatu_write()
218 rc = hl_pci_elbi_write(hdev, prop->pcie_dbi_base_address + dbi_offset, in hl_pci_iatu_write()
237 int hl_pci_set_inbound_region(struct hl_device *hdev, u8 region, in hl_pci_set_inbound_region() argument
240 struct asic_fixed_properties *prop = &hdev->asic_prop; in hl_pci_set_inbound_region()
249 bar_phys_base = hdev->pcie_bar_phys[pci_region->bar]; in hl_pci_set_inbound_region()
253 rc |= hl_pci_iatu_write(hdev, offset + 0x8, in hl_pci_set_inbound_region()
255 rc |= hl_pci_iatu_write(hdev, offset + 0xC, in hl_pci_set_inbound_region()
257 rc |= hl_pci_iatu_write(hdev, offset + 0x10, in hl_pci_set_inbound_region()
262 rc |= hl_pci_iatu_write(hdev, offset + 0x14, lower_32_bits(pci_region->addr)); in hl_pci_set_inbound_region()
263 rc |= hl_pci_iatu_write(hdev, offset + 0x18, upper_32_bits(pci_region->addr)); in hl_pci_set_inbound_region()
266 rc |= hl_pci_iatu_write(hdev, offset + 0x0, 0); in hl_pci_set_inbound_region()
276 rc |= hl_pci_iatu_write(hdev, offset + 0x4, ctrl_reg_val); in hl_pci_set_inbound_region()
282 hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0); in hl_pci_set_inbound_region()
285 dev_err(hdev->dev, "failed to map bar %u to 0x%08llx\n", in hl_pci_set_inbound_region()
300 int hl_pci_set_outbound_region(struct hl_device *hdev, in hl_pci_set_outbound_region() argument
303 struct asic_fixed_properties *prop = &hdev->asic_prop; in hl_pci_set_outbound_region()
310 rc |= hl_pci_iatu_write(hdev, 0x008, in hl_pci_set_outbound_region()
312 rc |= hl_pci_iatu_write(hdev, 0x00C, in hl_pci_set_outbound_region()
314 rc |= hl_pci_iatu_write(hdev, 0x010, in hl_pci_set_outbound_region()
316 rc |= hl_pci_iatu_write(hdev, 0x014, 0); in hl_pci_set_outbound_region()
318 rc |= hl_pci_iatu_write(hdev, 0x018, 0); in hl_pci_set_outbound_region()
320 rc |= hl_pci_iatu_write(hdev, 0x020, in hl_pci_set_outbound_region()
323 rc |= hl_pci_iatu_write(hdev, 0x000, 0x00002000); in hl_pci_set_outbound_region()
325 rc |= hl_pci_iatu_write(hdev, 0x004, 0x80000000); in hl_pci_set_outbound_region()
331 hl_pci_elbi_write(hdev, prop->pcie_aux_dbi_reg_addr, 0); in hl_pci_set_outbound_region()
344 enum pci_region hl_get_pci_memory_region(struct hl_device *hdev, u64 addr) in hl_get_pci_memory_region() argument
349 struct pci_mem_region *region = &hdev->pci_mem_region[i]; in hl_get_pci_memory_region()
370 int hl_pci_init(struct hl_device *hdev) in hl_pci_init() argument
372 struct asic_fixed_properties *prop = &hdev->asic_prop; in hl_pci_init()
373 struct pci_dev *pdev = hdev->pdev; in hl_pci_init()
378 dev_err(hdev->dev, "can't enable PCI device\n"); in hl_pci_init()
384 rc = hdev->asic_funcs->pci_bars_map(hdev); in hl_pci_init()
386 dev_err(hdev->dev, "Failed to map PCI BAR addresses\n"); in hl_pci_init()
390 rc = hdev->asic_funcs->init_iatu(hdev); in hl_pci_init()
392 dev_err(hdev->dev, "PCI controller was not initialized successfully\n"); in hl_pci_init()
397 if (hdev->asic_prop.iatu_done_by_fw) in hl_pci_init()
402 dev_err(hdev->dev, in hl_pci_init()
413 hl_pci_bars_unmap(hdev); in hl_pci_init()
427 void hl_pci_fini(struct hl_device *hdev) in hl_pci_fini() argument
429 hl_pci_bars_unmap(hdev); in hl_pci_fini()
431 pci_clear_master(hdev->pdev); in hl_pci_fini()
432 pci_disable_device(hdev->pdev); in hl_pci_fini()