Lines Matching full:rockchip
3 * Rockchip AXI PCIe endpoint controller driver
5 * Copyright (c) 2018 Rockchip, Inc.
20 #include "pcie-rockchip.h"
24 * @rockchip: Rockchip PCIe controller
41 struct rockchip_pcie rockchip; member
53 static void rockchip_pcie_clear_ep_ob_atu(struct rockchip_pcie *rockchip, in rockchip_pcie_clear_ep_ob_atu() argument
56 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
58 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
60 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
62 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
64 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
66 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_clear_ep_ob_atu()
70 static void rockchip_pcie_prog_ep_ob_atu(struct rockchip_pcie *rockchip, u8 fn, in rockchip_pcie_prog_ep_ob_atu() argument
83 cpu_addr -= rockchip->mem_res->start; in rockchip_pcie_prog_ep_ob_atu()
92 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_prog_ep_ob_atu()
94 rockchip_pcie_write(rockchip, 0, in rockchip_pcie_prog_ep_ob_atu()
96 rockchip_pcie_write(rockchip, desc0, in rockchip_pcie_prog_ep_ob_atu()
98 rockchip_pcie_write(rockchip, desc1, in rockchip_pcie_prog_ep_ob_atu()
102 rockchip_pcie_write(rockchip, addr0, in rockchip_pcie_prog_ep_ob_atu()
104 rockchip_pcie_write(rockchip, addr1, in rockchip_pcie_prog_ep_ob_atu()
106 rockchip_pcie_write(rockchip, desc0, in rockchip_pcie_prog_ep_ob_atu()
108 rockchip_pcie_write(rockchip, desc1, in rockchip_pcie_prog_ep_ob_atu()
119 rockchip_pcie_write(rockchip, addr0, in rockchip_pcie_prog_ep_ob_atu()
121 rockchip_pcie_write(rockchip, addr1, in rockchip_pcie_prog_ep_ob_atu()
129 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_write_header() local
136 rockchip_pcie_write(rockchip, vid_regs, in rockchip_pcie_ep_write_header()
140 rockchip_pcie_write(rockchip, hdr->deviceid << 16, in rockchip_pcie_ep_write_header()
143 rockchip_pcie_write(rockchip, in rockchip_pcie_ep_write_header()
149 rockchip_pcie_write(rockchip, hdr->cache_line_size, in rockchip_pcie_ep_write_header()
152 rockchip_pcie_write(rockchip, hdr->subsys_id << 16, in rockchip_pcie_ep_write_header()
155 rockchip_pcie_write(rockchip, hdr->interrupt_pin << 8, in rockchip_pcie_ep_write_header()
166 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_set_bar() local
215 cfg = rockchip_pcie_read(rockchip, reg); in rockchip_pcie_ep_set_bar()
221 rockchip_pcie_write(rockchip, cfg, reg); in rockchip_pcie_ep_set_bar()
222 rockchip_pcie_write(rockchip, addr0, in rockchip_pcie_ep_set_bar()
224 rockchip_pcie_write(rockchip, addr1, in rockchip_pcie_ep_set_bar()
234 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_clear_bar() local
247 cfg = rockchip_pcie_read(rockchip, reg); in rockchip_pcie_ep_clear_bar()
252 rockchip_pcie_write(rockchip, cfg, reg); in rockchip_pcie_ep_clear_bar()
253 rockchip_pcie_write(rockchip, 0x0, in rockchip_pcie_ep_clear_bar()
255 rockchip_pcie_write(rockchip, 0x0, in rockchip_pcie_ep_clear_bar()
264 struct rockchip_pcie *pcie = &ep->rockchip; in rockchip_pcie_ep_map_addr()
290 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_unmap_addr() local
304 rockchip_pcie_clear_ep_ob_atu(rockchip, r); in rockchip_pcie_ep_unmap_addr()
314 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_set_msi() local
317 flags = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_set_msi()
325 rockchip_pcie_write(rockchip, flags, in rockchip_pcie_ep_set_msi()
334 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_get_msi() local
337 flags = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_get_msi()
350 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_assert_intx() local
358 rockchip_pcie_prog_ep_ob_atu(rockchip, fn, r, in rockchip_pcie_ep_assert_intx()
374 status = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_assert_intx()
381 rockchip_pcie_write(rockchip, status, in rockchip_pcie_ep_assert_intx()
397 cmd = rockchip_pcie_read(&ep->rockchip, in rockchip_pcie_ep_send_legacy_irq()
418 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_send_msi_irq() local
424 flags = rockchip_pcie_read(&ep->rockchip, in rockchip_pcie_ep_send_msi_irq()
439 data = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
446 pci_addr = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
451 pci_addr |= rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
460 rockchip_pcie_prog_ep_ob_atu(rockchip, fn, ep->max_regions - 1, in rockchip_pcie_ep_send_msi_irq()
492 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_start() local
500 rockchip_pcie_write(rockchip, cfg, PCIE_CORE_PHY_FUNC_CFG); in rockchip_pcie_ep_start()
530 static int rockchip_pcie_parse_ep_dt(struct rockchip_pcie *rockchip, in rockchip_pcie_parse_ep_dt() argument
533 struct device *dev = rockchip->dev; in rockchip_pcie_parse_ep_dt()
536 err = rockchip_pcie_parse_dt(rockchip); in rockchip_pcie_parse_ep_dt()
540 err = rockchip_pcie_get_phys(rockchip); in rockchip_pcie_parse_ep_dt()
545 "rockchip,max-outbound-regions", in rockchip_pcie_parse_ep_dt()
559 { .compatible = "rockchip,rk3399-pcie-ep"},
567 struct rockchip_pcie *rockchip; in rockchip_pcie_ep_probe() local
576 rockchip = &ep->rockchip; in rockchip_pcie_ep_probe()
577 rockchip->is_rc = false; in rockchip_pcie_ep_probe()
578 rockchip->dev = dev; in rockchip_pcie_ep_probe()
589 err = rockchip_pcie_parse_ep_dt(rockchip, ep); in rockchip_pcie_ep_probe()
593 err = rockchip_pcie_enable_clocks(rockchip); in rockchip_pcie_ep_probe()
597 err = rockchip_pcie_init_port(rockchip); in rockchip_pcie_ep_probe()
602 rockchip_pcie_write(rockchip, PCIE_CLIENT_LINK_TRAIN_ENABLE, in rockchip_pcie_ep_probe()
615 rockchip_pcie_write(rockchip, BIT(0), PCIE_CORE_PHY_FUNC_CFG); in rockchip_pcie_ep_probe()
617 err = pci_epc_mem_init(epc, rockchip->mem_res->start, in rockchip_pcie_ep_probe()
618 resource_size(rockchip->mem_res), PAGE_SIZE); in rockchip_pcie_ep_probe()
638 rockchip_pcie_deinit_phys(rockchip); in rockchip_pcie_ep_probe()
640 rockchip_pcie_disable_clocks(rockchip); in rockchip_pcie_ep_probe()
646 .name = "rockchip-pcie-ep",