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()
130 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_write_header() local
137 rockchip_pcie_write(rockchip, vid_regs, in rockchip_pcie_ep_write_header()
141 reg = rockchip_pcie_read(rockchip, PCIE_EP_CONFIG_DID_VID); in rockchip_pcie_ep_write_header()
143 rockchip_pcie_write(rockchip, reg, PCIE_EP_CONFIG_DID_VID); in rockchip_pcie_ep_write_header()
145 rockchip_pcie_write(rockchip, in rockchip_pcie_ep_write_header()
151 rockchip_pcie_write(rockchip, hdr->cache_line_size, in rockchip_pcie_ep_write_header()
154 rockchip_pcie_write(rockchip, hdr->subsys_id << 16, in rockchip_pcie_ep_write_header()
157 rockchip_pcie_write(rockchip, hdr->interrupt_pin << 8, in rockchip_pcie_ep_write_header()
168 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_set_bar() local
217 cfg = rockchip_pcie_read(rockchip, reg); in rockchip_pcie_ep_set_bar()
223 rockchip_pcie_write(rockchip, cfg, reg); in rockchip_pcie_ep_set_bar()
224 rockchip_pcie_write(rockchip, addr0, in rockchip_pcie_ep_set_bar()
226 rockchip_pcie_write(rockchip, addr1, in rockchip_pcie_ep_set_bar()
236 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_clear_bar() local
249 cfg = rockchip_pcie_read(rockchip, reg); in rockchip_pcie_ep_clear_bar()
254 rockchip_pcie_write(rockchip, cfg, reg); in rockchip_pcie_ep_clear_bar()
255 rockchip_pcie_write(rockchip, 0x0, in rockchip_pcie_ep_clear_bar()
257 rockchip_pcie_write(rockchip, 0x0, in rockchip_pcie_ep_clear_bar()
266 struct rockchip_pcie *pcie = &ep->rockchip; in rockchip_pcie_ep_map_addr()
292 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_unmap_addr() local
306 rockchip_pcie_clear_ep_ob_atu(rockchip, r); in rockchip_pcie_ep_unmap_addr()
316 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_set_msi() local
319 flags = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_set_msi()
327 rockchip_pcie_write(rockchip, flags, in rockchip_pcie_ep_set_msi()
336 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_get_msi() local
339 flags = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_get_msi()
352 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_assert_intx() local
358 rockchip_pcie_write(rockchip, in rockchip_pcie_ep_assert_intx()
364 rockchip_pcie_write(rockchip, in rockchip_pcie_ep_assert_intx()
376 cmd = rockchip_pcie_read(&ep->rockchip, in rockchip_pcie_ep_send_legacy_irq()
397 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_send_msi_irq() local
403 flags = rockchip_pcie_read(&ep->rockchip, in rockchip_pcie_ep_send_msi_irq()
418 data = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
425 pci_addr = rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
430 pci_addr |= rockchip_pcie_read(rockchip, in rockchip_pcie_ep_send_msi_irq()
439 rockchip_pcie_prog_ep_ob_atu(rockchip, fn, ep->max_regions - 1, in rockchip_pcie_ep_send_msi_irq()
471 struct rockchip_pcie *rockchip = &ep->rockchip; in rockchip_pcie_ep_start() local
479 rockchip_pcie_write(rockchip, cfg, PCIE_CORE_PHY_FUNC_CFG); in rockchip_pcie_ep_start()
510 static int rockchip_pcie_parse_ep_dt(struct rockchip_pcie *rockchip, in rockchip_pcie_parse_ep_dt() argument
513 struct device *dev = rockchip->dev; in rockchip_pcie_parse_ep_dt()
516 err = rockchip_pcie_parse_dt(rockchip); in rockchip_pcie_parse_ep_dt()
520 err = rockchip_pcie_get_phys(rockchip); in rockchip_pcie_parse_ep_dt()
525 "rockchip,max-outbound-regions", in rockchip_pcie_parse_ep_dt()
539 { .compatible = "rockchip,rk3399-pcie-ep"},
547 struct rockchip_pcie *rockchip; in rockchip_pcie_ep_probe() local
556 rockchip = &ep->rockchip; in rockchip_pcie_ep_probe()
557 rockchip->is_rc = false; in rockchip_pcie_ep_probe()
558 rockchip->dev = dev; in rockchip_pcie_ep_probe()
569 err = rockchip_pcie_parse_ep_dt(rockchip, ep); in rockchip_pcie_ep_probe()
573 err = rockchip_pcie_enable_clocks(rockchip); in rockchip_pcie_ep_probe()
577 err = rockchip_pcie_init_port(rockchip); in rockchip_pcie_ep_probe()
582 rockchip_pcie_write(rockchip, PCIE_CLIENT_LINK_TRAIN_ENABLE, in rockchip_pcie_ep_probe()
595 rockchip_pcie_write(rockchip, BIT(0), PCIE_CORE_PHY_FUNC_CFG); in rockchip_pcie_ep_probe()
597 err = pci_epc_mem_init(epc, rockchip->mem_res->start, in rockchip_pcie_ep_probe()
598 resource_size(rockchip->mem_res), PAGE_SIZE); in rockchip_pcie_ep_probe()
614 rockchip_pcie_write(rockchip, PCIE_CLIENT_CONF_ENABLE, in rockchip_pcie_ep_probe()
621 rockchip_pcie_deinit_phys(rockchip); in rockchip_pcie_ep_probe()
623 rockchip_pcie_disable_clocks(rockchip); in rockchip_pcie_ep_probe()
629 .name = "rockchip-pcie-ep",