Lines Matching refs:rk_pcie
154 struct rk_pcie { struct
242 static u32 __rk_pcie_read_apb(struct rk_pcie *rk_pcie, void __iomem *base, in __rk_pcie_read_apb() argument
250 dev_err(rk_pcie->pci->dev, "Read APB address failed\n"); in __rk_pcie_read_apb()
255 static void __rk_pcie_write_apb(struct rk_pcie *rk_pcie, void __iomem *base, in __rk_pcie_write_apb() argument
262 dev_err(rk_pcie->pci->dev, "Write APB address failed\n"); in __rk_pcie_write_apb()
265 static inline u32 rk_pcie_readl_apb(struct rk_pcie *rk_pcie, u32 reg) in rk_pcie_readl_apb() argument
267 return __rk_pcie_read_apb(rk_pcie, rk_pcie->apb_base, reg, 0x4); in rk_pcie_readl_apb()
270 static inline void rk_pcie_writel_apb(struct rk_pcie *rk_pcie, u32 reg, in rk_pcie_writel_apb() argument
273 __rk_pcie_write_apb(rk_pcie, rk_pcie->apb_base, reg, 0x4, val); in rk_pcie_writel_apb()
428 static int rk_pcie_ep_inbound_atu(struct rk_pcie *rk_pcie, in rk_pcie_ep_inbound_atu() argument
436 if (rk_pcie->in_suspend) { in rk_pcie_ep_inbound_atu()
437 free_win = rk_pcie->bar_to_atu[bar]; in rk_pcie_ep_inbound_atu()
439 free_win = find_first_zero_bit(rk_pcie->ib_window_map, in rk_pcie_ep_inbound_atu()
440 rk_pcie->num_ib_windows); in rk_pcie_ep_inbound_atu()
441 if (free_win >= rk_pcie->num_ib_windows) { in rk_pcie_ep_inbound_atu()
442 dev_err(rk_pcie->pci->dev, "No free inbound window\n"); in rk_pcie_ep_inbound_atu()
447 ret = rk_pcie_prog_inbound_atu(rk_pcie->pci, func_no, free_win, bar, in rk_pcie_ep_inbound_atu()
450 dev_err(rk_pcie->pci->dev, "Failed to program IB window\n"); in rk_pcie_ep_inbound_atu()
454 if (rk_pcie->in_suspend) in rk_pcie_ep_inbound_atu()
457 rk_pcie->bar_to_atu[bar] = free_win; in rk_pcie_ep_inbound_atu()
458 set_bit(free_win, rk_pcie->ib_window_map); in rk_pcie_ep_inbound_atu()
562 static int rk_pcie_ep_outbound_atu(struct rk_pcie *rk_pcie, in rk_pcie_ep_outbound_atu() argument
568 if (rk_pcie->in_suspend) { in rk_pcie_ep_outbound_atu()
569 free_win = find_first_bit(rk_pcie->ob_window_map, in rk_pcie_ep_outbound_atu()
570 rk_pcie->num_ob_windows); in rk_pcie_ep_outbound_atu()
572 free_win = find_first_zero_bit(rk_pcie->ob_window_map, in rk_pcie_ep_outbound_atu()
573 rk_pcie->num_ob_windows); in rk_pcie_ep_outbound_atu()
574 if (free_win >= rk_pcie->num_ob_windows) { in rk_pcie_ep_outbound_atu()
575 dev_err(rk_pcie->pci->dev, "No free outbound window\n"); in rk_pcie_ep_outbound_atu()
580 rk_pcie_prog_outbound_atu(rk_pcie->pci, free_win, PCIE_ATU_TYPE_MEM, in rk_pcie_ep_outbound_atu()
583 if (rk_pcie->in_suspend) in rk_pcie_ep_outbound_atu()
586 set_bit(free_win, rk_pcie->ob_window_map); in rk_pcie_ep_outbound_atu()
587 rk_pcie->outbound_addr[free_win] = phys_addr; in rk_pcie_ep_outbound_atu()
592 static void __rk_pcie_ep_reset_bar(struct rk_pcie *rk_pcie, in __rk_pcie_ep_reset_bar() argument
598 dw_pcie_writel_dbi(rk_pcie->pci, reg, 0x0); in __rk_pcie_ep_reset_bar()
600 dw_pcie_writel_dbi(rk_pcie->pci, reg + 4, 0x0); in __rk_pcie_ep_reset_bar()
603 static void rk_pcie_ep_reset_bar(struct rk_pcie *rk_pcie, enum pci_barno bar) in rk_pcie_ep_reset_bar() argument
605 __rk_pcie_ep_reset_bar(rk_pcie, bar, 0); in rk_pcie_ep_reset_bar()
608 static int rk_pcie_ep_atu_init(struct rk_pcie *rk_pcie) in rk_pcie_ep_atu_init() argument
619 rk_pcie_ep_reset_bar(rk_pcie, bar); in rk_pcie_ep_atu_init()
621 cpu_addr = rk_pcie->mem_start; in rk_pcie_ep_atu_init()
623 ret = rk_pcie_ep_inbound_atu(rk_pcie, BAR_0, cpu_addr, as_type); in rk_pcie_ep_atu_init()
630 ret = rk_pcie_ep_outbound_atu(rk_pcie, phys_addr, pci_addr, size); in rk_pcie_ep_atu_init()
638 static void disable_aspm_l1ss(struct rk_pcie *rk_pcie) in disable_aspm_l1ss() argument
642 val = dw_pcie_find_ext_capability(rk_pcie->pci, PCI_EXT_CAP_ID_L1SS); in disable_aspm_l1ss()
644 dev_err(rk_pcie->pci->dev, "can't find l1ss cap\n"); in disable_aspm_l1ss()
651 val = dw_pcie_readl_dbi(rk_pcie->pci, cfg_link_cap_l1sub); in disable_aspm_l1ss()
653 dw_pcie_writel_dbi(rk_pcie->pci, cfg_link_cap_l1sub, val); in disable_aspm_l1ss()
656 static inline void disable_aspm_l1ss(struct rk_pcie *rk_pcie) { return; } in disable_aspm_l1ss() argument
659 static inline void rk_pcie_set_mode(struct rk_pcie *rk_pcie) in rk_pcie_set_mode() argument
661 switch (rk_pcie->mode) { in rk_pcie_set_mode()
663 rk_pcie_writel_apb(rk_pcie, 0x0, 0xf00000); in rk_pcie_set_mode()
666 if (rk_pcie->supports_clkreq) { in rk_pcie_set_mode()
668 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_POWER, 0x00010001); in rk_pcie_set_mode()
671 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_POWER, 0x30011000); in rk_pcie_set_mode()
672 disable_aspm_l1ss(rk_pcie); in rk_pcie_set_mode()
674 rk_pcie_writel_apb(rk_pcie, 0x0, 0xf00040); in rk_pcie_set_mode()
680 if (rk_pcie->is_rk1808) in rk_pcie_set_mode()
681 dw_pcie_writel_dbi(rk_pcie->pci, in rk_pcie_set_mode()
688 static inline void rk_pcie_link_status_clear(struct rk_pcie *rk_pcie) in rk_pcie_link_status_clear() argument
690 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_GENERAL_DEBUG, 0x0); in rk_pcie_link_status_clear()
693 static inline void rk_pcie_disable_ltssm(struct rk_pcie *rk_pcie) in rk_pcie_disable_ltssm() argument
695 rk_pcie_writel_apb(rk_pcie, 0x0, 0xc0008); in rk_pcie_disable_ltssm()
698 static inline void rk_pcie_enable_ltssm(struct rk_pcie *rk_pcie) in rk_pcie_enable_ltssm() argument
700 rk_pcie_writel_apb(rk_pcie, 0x0, 0xC000C); in rk_pcie_enable_ltssm()
705 struct rk_pcie *rk_pcie = to_rk_pcie(pci); in rk_pcie_link_up() local
708 if (rk_pcie->is_rk1808) { in rk_pcie_link_up()
709 val = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_GENERAL_DEBUG); in rk_pcie_link_up()
713 val = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS); in rk_pcie_link_up()
721 static void rk_pcie_enable_debug(struct rk_pcie *rk_pcie) in rk_pcie_enable_debug() argument
725 if (rk_pcie->is_rk1808 == true) in rk_pcie_enable_debug()
728 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_PTN_HIT_D0, in rk_pcie_enable_debug()
730 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_PTN_HIT_D1, in rk_pcie_enable_debug()
732 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_TRN_HIT_D0, in rk_pcie_enable_debug()
734 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_TRN_HIT_D1, in rk_pcie_enable_debug()
736 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_MODE_CON, in rk_pcie_enable_debug()
740 static void rk_pcie_debug_dump(struct rk_pcie *rk_pcie) in rk_pcie_debug_dump() argument
744 struct dw_pcie *pci = rk_pcie->pci; in rk_pcie_debug_dump()
747 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS)); in rk_pcie_debug_dump()
750 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_STATUS)); in rk_pcie_debug_dump()
757 struct rk_pcie *rk_pcie = to_rk_pcie(pci); in rk_pcie_establish_link() local
758 bool std_rc = rk_pcie->mode == RK_PCIE_RC_TYPE && !rk_pcie->dma_obj; in rk_pcie_establish_link()
771 gpiod_set_value_cansleep(rk_pcie->rst_gpio, 0); in rk_pcie_establish_link()
773 rk_pcie_disable_ltssm(rk_pcie); in rk_pcie_establish_link()
774 rk_pcie_link_status_clear(rk_pcie); in rk_pcie_establish_link()
775 rk_pcie_enable_debug(rk_pcie); in rk_pcie_establish_link()
778 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK, 0x40000); in rk_pcie_establish_link()
781 rk_pcie_enable_ltssm(rk_pcie); in rk_pcie_establish_link()
790 if (rk_pcie->in_suspend && rk_pcie->skip_scan_in_resume) { in rk_pcie_establish_link()
793 gpiod_set_value_cansleep(rk_pcie->rst_gpio, 1); in rk_pcie_establish_link()
806 msleep(rk_pcie->perst_inactive_ms); in rk_pcie_establish_link()
807 gpiod_set_value_cansleep(rk_pcie->rst_gpio, 1); in rk_pcie_establish_link()
828 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS)); in rk_pcie_establish_link()
829 rk_pcie_debug_dump(rk_pcie); in rk_pcie_establish_link()
835 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS)); in rk_pcie_establish_link()
836 rk_pcie_debug_dump(rk_pcie); in rk_pcie_establish_link()
842 return rk_pcie->is_signal_test == true ? 0 : -EINVAL; in rk_pcie_establish_link()
845 static bool rk_pcie_udma_enabled(struct rk_pcie *rk_pcie) in rk_pcie_udma_enabled() argument
847 return dw_pcie_readl_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_udma_enabled()
851 static int rk_pcie_init_dma_trx(struct rk_pcie *rk_pcie) in rk_pcie_init_dma_trx() argument
853 if (!rk_pcie_udma_enabled(rk_pcie)) in rk_pcie_init_dma_trx()
856 rk_pcie->dma_obj = rk_pcie_dma_obj_probe(rk_pcie->pci->dev); in rk_pcie_init_dma_trx()
857 if (IS_ERR(rk_pcie->dma_obj)) { in rk_pcie_init_dma_trx()
858 dev_err(rk_pcie->pci->dev, "failed to prepare dma object\n"); in rk_pcie_init_dma_trx()
860 } else if (rk_pcie->dma_obj) { in rk_pcie_init_dma_trx()
864 rk_pcie->dma_obj = pcie_dw_dmatest_register(rk_pcie->pci->dev, true); in rk_pcie_init_dma_trx()
865 if (IS_ERR(rk_pcie->dma_obj)) { in rk_pcie_init_dma_trx()
866 dev_err(rk_pcie->pci->dev, "failed to prepare dmatest\n"); in rk_pcie_init_dma_trx()
871 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK, 0xc000000); in rk_pcie_init_dma_trx()
874 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_WR_INT_MASK, in rk_pcie_init_dma_trx()
877 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_RD_INT_MASK, in rk_pcie_init_dma_trx()
882 static int rk_pci_find_resbar_capability(struct rk_pcie *rk_pcie) in rk_pci_find_resbar_capability() argument
893 header = dw_pcie_readl_dbi(rk_pcie->pci, pos); in rk_pci_find_resbar_capability()
910 header = dw_pcie_readl_dbi(rk_pcie->pci, pos); in rk_pci_find_resbar_capability()
934 static int rk_pcie_ep_set_bar_flag(struct rk_pcie *rk_pcie, enum pci_barno barno, int flags) in rk_pcie_ep_set_bar_flag() argument
943 dw_pcie_writel_dbi2(rk_pcie->pci, reg + 4, 0); in rk_pcie_ep_set_bar_flag()
945 dw_pcie_writel_dbi(rk_pcie->pci, reg, flags); in rk_pcie_ep_set_bar_flag()
947 dw_pcie_writel_dbi(rk_pcie->pci, reg + 4, 0); in rk_pcie_ep_set_bar_flag()
952 static void rk_pcie_ep_setup(struct rk_pcie *rk_pcie) in rk_pcie_ep_setup() argument
957 struct device *dev = rk_pcie->pci->dev; in rk_pcie_ep_setup()
963 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK, 0xc000000); in rk_pcie_ep_setup()
966 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_WR_INT_MASK, in rk_pcie_ep_setup()
969 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_RD_INT_MASK, in rk_pcie_ep_setup()
977 val = dw_pcie_readl_dbi(rk_pcie->pci, PCIE_PORT_LINK_CONTROL); in rk_pcie_ep_setup()
997 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_PORT_LINK_CONTROL, val); in rk_pcie_ep_setup()
1000 val = dw_pcie_readl_dbi(rk_pcie->pci, PCIE_LINK_WIDTH_SPEED_CONTROL); in rk_pcie_ep_setup()
1019 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_LINK_WIDTH_SPEED_CONTROL, val); in rk_pcie_ep_setup()
1022 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_TYPE0_STATUS_COMMAND_REG, 0x6); in rk_pcie_ep_setup()
1024 resbar_base = rk_pci_find_resbar_capability(rk_pcie); in rk_pcie_ep_setup()
1029 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0x4, 0xfffff0); in rk_pcie_ep_setup()
1030 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0x8, 0x13c0); in rk_pcie_ep_setup()
1031 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0xc, 0xfffff0); in rk_pcie_ep_setup()
1032 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0x10, 0x3c0); in rk_pcie_ep_setup()
1034 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0x4 + bar * 0x8, 0xfffff0); in rk_pcie_ep_setup()
1035 dw_pcie_writel_dbi(rk_pcie->pci, resbar_base + 0x8 + bar * 0x8, 0x6c0); in rk_pcie_ep_setup()
1039 rk_pcie_ep_set_bar_flag(rk_pcie, BAR_0, PCI_BASE_ADDRESS_MEM_TYPE_32); in rk_pcie_ep_setup()
1040 rk_pcie_ep_set_bar_flag(rk_pcie, BAR_1, PCI_BASE_ADDRESS_MEM_TYPE_32); in rk_pcie_ep_setup()
1041 …rk_pcie_ep_set_bar_flag(rk_pcie, BAR_2, PCI_BASE_ADDRESS_MEM_PREFETCH | PCI_BASE_ADDRESS_MEM_TYPE_… in rk_pcie_ep_setup()
1042 …rk_pcie_ep_set_bar_flag(rk_pcie, BAR_4, PCI_BASE_ADDRESS_MEM_PREFETCH | PCI_BASE_ADDRESS_MEM_TYPE_… in rk_pcie_ep_setup()
1046 dw_pcie_writew_dbi(rk_pcie->pci, PCI_DEVICE_ID, 0x356a); in rk_pcie_ep_setup()
1047 dw_pcie_writew_dbi(rk_pcie->pci, PCI_CLASS_DEVICE, 0x0580); in rk_pcie_ep_setup()
1050 if (rk_pcie->is_rk1808) { in rk_pcie_ep_setup()
1051 val = rk_pcie->mem_size - 1; in rk_pcie_ep_setup()
1052 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_SB_BAR0_MASK_REG, val); in rk_pcie_ep_setup()
1056 static int rk_pcie_ep_win_parse(struct rk_pcie *rk_pcie) in rk_pcie_ep_win_parse() argument
1060 struct device *dev = rk_pcie->pci->dev; in rk_pcie_ep_win_parse()
1064 &rk_pcie->num_ib_windows); in rk_pcie_ep_win_parse()
1070 if (rk_pcie->num_ib_windows > MAX_IATU_IN) { in rk_pcie_ep_win_parse()
1076 &rk_pcie->num_ob_windows); in rk_pcie_ep_win_parse()
1082 if (rk_pcie->num_ob_windows > MAX_IATU_OUT) { in rk_pcie_ep_win_parse()
1087 rk_pcie->ib_window_map = devm_kcalloc(dev, in rk_pcie_ep_win_parse()
1088 BITS_TO_LONGS(rk_pcie->num_ib_windows), in rk_pcie_ep_win_parse()
1090 if (!rk_pcie->ib_window_map) in rk_pcie_ep_win_parse()
1093 rk_pcie->ob_window_map = devm_kcalloc(dev, in rk_pcie_ep_win_parse()
1094 BITS_TO_LONGS(rk_pcie->num_ob_windows), in rk_pcie_ep_win_parse()
1096 if (!rk_pcie->ob_window_map) in rk_pcie_ep_win_parse()
1099 addr = devm_kcalloc(dev, rk_pcie->num_ob_windows, sizeof(phys_addr_t), in rk_pcie_ep_win_parse()
1104 rk_pcie->outbound_addr = addr; in rk_pcie_ep_win_parse()
1117 struct rk_pcie *rk_pcie = to_rk_pcie(pci); in rk_pcie_msi_set_num_vectors() local
1119 pp->num_vectors = rk_pcie->msi_vector_num; in rk_pcie_msi_set_num_vectors()
1145 static int rk_add_pcie_port(struct rk_pcie *rk_pcie, struct platform_device *pdev) in rk_add_pcie_port() argument
1148 struct dw_pcie *pci = rk_pcie->pci; in rk_add_pcie_port()
1159 dev_info(dev, "max MSI vector is %d\n", rk_pcie->msi_vector_num); in rk_add_pcie_port()
1175 static int rk_pcie_add_ep(struct rk_pcie *rk_pcie) in rk_pcie_add_ep() argument
1178 struct device *dev = rk_pcie->pci->dev; in rk_pcie_add_ep()
1195 rk_pcie->mem_start = reg.start; in rk_pcie_add_ep()
1196 rk_pcie->mem_size = resource_size(®); in rk_pcie_add_ep()
1198 ret = rk_pcie_ep_win_parse(rk_pcie); in rk_pcie_add_ep()
1204 rk_pcie->pci->dbi_base2 = rk_pcie->pci->dbi_base + PCIE_TYPE0_HDR_DBI2_OFFSET; in rk_pcie_add_ep()
1205 rk_pcie->pci->atu_base = rk_pcie->pci->dbi_base + DEFAULT_DBI_ATU_OFFSET; in rk_pcie_add_ep()
1206 rk_pcie->pci->iatu_unroll_enabled = rk_pcie_iatu_unroll_enabled(rk_pcie->pci); in rk_pcie_add_ep()
1208 ret = rk_pcie_ep_atu_init(rk_pcie); in rk_pcie_add_ep()
1214 rk_pcie_ep_setup(rk_pcie); in rk_pcie_add_ep()
1216 ret = rk_pcie_establish_link(rk_pcie->pci); in rk_pcie_add_ep()
1222 if (!rk_pcie_udma_enabled(rk_pcie)) in rk_pcie_add_ep()
1228 static int rk_pcie_clk_init(struct rk_pcie *rk_pcie) in rk_pcie_clk_init() argument
1230 struct device *dev = rk_pcie->pci->dev; in rk_pcie_clk_init()
1233 rk_pcie->clk_cnt = devm_clk_bulk_get_all(dev, &rk_pcie->clks); in rk_pcie_clk_init()
1234 if (rk_pcie->clk_cnt < 1) in rk_pcie_clk_init()
1237 ret = clk_bulk_prepare_enable(rk_pcie->clk_cnt, rk_pcie->clks); in rk_pcie_clk_init()
1247 struct rk_pcie *rk_pcie) in rk_pcie_resource_get() argument
1259 rk_pcie->dbi_base = devm_ioremap_resource(&pdev->dev, dbi_base); in rk_pcie_resource_get()
1260 if (IS_ERR(rk_pcie->dbi_base)) in rk_pcie_resource_get()
1261 return PTR_ERR(rk_pcie->dbi_base); in rk_pcie_resource_get()
1263 rk_pcie->pci->dbi_base = rk_pcie->dbi_base; in rk_pcie_resource_get()
1271 rk_pcie->apb_base = devm_ioremap_resource(&pdev->dev, apb_base); in rk_pcie_resource_get()
1272 if (IS_ERR(rk_pcie->apb_base)) in rk_pcie_resource_get()
1273 return PTR_ERR(rk_pcie->apb_base); in rk_pcie_resource_get()
1283 rk_pcie->rst_gpio = devm_gpiod_get_optional(&pdev->dev, "reset", in rk_pcie_resource_get()
1285 if (IS_ERR(rk_pcie->rst_gpio)) { in rk_pcie_resource_get()
1287 return PTR_ERR(rk_pcie->rst_gpio); in rk_pcie_resource_get()
1291 &rk_pcie->perst_inactive_ms)) in rk_pcie_resource_get()
1292 rk_pcie->perst_inactive_ms = 200; in rk_pcie_resource_get()
1294 rk_pcie->prsnt_gpio = devm_gpiod_get_optional(&pdev->dev, "prsnt", GPIOD_IN); in rk_pcie_resource_get()
1295 if (IS_ERR_OR_NULL(rk_pcie->prsnt_gpio)) in rk_pcie_resource_get()
1301 static int rk_pcie_phy_init(struct rk_pcie *rk_pcie) in rk_pcie_phy_init() argument
1304 struct device *dev = rk_pcie->pci->dev; in rk_pcie_phy_init()
1306 rk_pcie->phy = devm_phy_optional_get(dev, "pcie-phy"); in rk_pcie_phy_init()
1307 if (IS_ERR(rk_pcie->phy)) { in rk_pcie_phy_init()
1308 if (PTR_ERR(rk_pcie->phy) != -EPROBE_DEFER) in rk_pcie_phy_init()
1310 return PTR_ERR(rk_pcie->phy); in rk_pcie_phy_init()
1313 switch (rk_pcie->mode) { in rk_pcie_phy_init()
1315 rk_pcie->phy_mode = PHY_MODE_PCIE; /* make no sense */ in rk_pcie_phy_init()
1316 rk_pcie->phy_sub_mode = PHY_MODE_PCIE_RC; in rk_pcie_phy_init()
1319 rk_pcie->phy_mode = PHY_MODE_PCIE; in rk_pcie_phy_init()
1320 rk_pcie->phy_sub_mode = PHY_MODE_PCIE_EP; in rk_pcie_phy_init()
1324 ret = phy_set_mode_ext(rk_pcie->phy, rk_pcie->phy_mode, in rk_pcie_phy_init()
1325 rk_pcie->phy_sub_mode); in rk_pcie_phy_init()
1328 (rk_pcie->phy_sub_mode == PHY_MODE_PCIE_RC) ? "RC" : "EP", in rk_pcie_phy_init()
1333 if (rk_pcie->bifurcation) in rk_pcie_phy_init()
1334 phy_set_mode_ext(rk_pcie->phy, rk_pcie->phy_mode, in rk_pcie_phy_init()
1337 ret = phy_init(rk_pcie->phy); in rk_pcie_phy_init()
1343 phy_power_on(rk_pcie->phy); in rk_pcie_phy_init()
1348 static int rk_pcie_reset_grant_ctrl(struct rk_pcie *rk_pcie, in rk_pcie_reset_grant_ctrl() argument
1357 ret = regmap_write(rk_pcie->usb_pcie_grf, 0x0, val); in rk_pcie_reset_grant_ctrl()
1363 struct rk_pcie *rk_pcie = dev_get_drvdata(obj->dev); in rk_pcie_start_dma_rd() local
1365 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_RD_ENB, in rk_pcie_start_dma_rd()
1367 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_CTRL_LO, in rk_pcie_start_dma_rd()
1369 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_CTRL_HI, in rk_pcie_start_dma_rd()
1371 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_XFERSIZE, in rk_pcie_start_dma_rd()
1373 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_SAR_PTR_LO, in rk_pcie_start_dma_rd()
1375 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_SAR_PTR_HI, in rk_pcie_start_dma_rd()
1377 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_DAR_PTR_LO, in rk_pcie_start_dma_rd()
1379 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_RD_DAR_PTR_HI, in rk_pcie_start_dma_rd()
1381 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_RD_DOORBELL, in rk_pcie_start_dma_rd()
1387 struct rk_pcie *rk_pcie = dev_get_drvdata(obj->dev); in rk_pcie_start_dma_wr() local
1389 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_WR_ENB, in rk_pcie_start_dma_wr()
1391 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_CTRL_LO, in rk_pcie_start_dma_wr()
1393 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_CTRL_HI, in rk_pcie_start_dma_wr()
1395 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_XFERSIZE, in rk_pcie_start_dma_wr()
1397 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_SAR_PTR_LO, in rk_pcie_start_dma_wr()
1399 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_SAR_PTR_HI, in rk_pcie_start_dma_wr()
1401 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_DAR_PTR_LO, in rk_pcie_start_dma_wr()
1403 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_DAR_PTR_HI, in rk_pcie_start_dma_wr()
1405 dw_pcie_writel_dbi(rk_pcie->pci, ctr_off + PCIE_DMA_WR_WEILO, in rk_pcie_start_dma_wr()
1407 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + PCIE_DMA_WR_DOORBELL, in rk_pcie_start_dma_wr()
1450 struct rk_pcie *rk_pcie = container_of(work, struct rk_pcie, hot_rst_work); in rk_pcie_hot_rst_work() local
1455 val = dw_pcie_readl_dbi(rk_pcie->pci, PCI_COMMAND); in rk_pcie_hot_rst_work()
1459 dw_pcie_writel_dbi(rk_pcie->pci, PCI_COMMAND, val); in rk_pcie_hot_rst_work()
1461 if (rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_HOT_RESET_CTRL) & PCIE_LTSSM_APP_DLY2_EN) { in rk_pcie_hot_rst_work()
1462 ret = readl_poll_timeout(rk_pcie->apb_base + PCIE_CLIENT_LTSSM_STATUS, in rk_pcie_hot_rst_work()
1465 dev_err(rk_pcie->pci->dev, "wait for detect quiet failed!\n"); in rk_pcie_hot_rst_work()
1467 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_HOT_RESET_CTRL, in rk_pcie_hot_rst_work()
1474 struct rk_pcie *rk_pcie = arg; in rk_pcie_sys_irq_handler() local
1480 status.asdword = dw_pcie_readl_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1485 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1487 if (rk_pcie->dma_obj && rk_pcie->dma_obj->cb) in rk_pcie_sys_irq_handler()
1488 rk_pcie->dma_obj->cb(rk_pcie->dma_obj, chn, DMA_TO_BUS); in rk_pcie_sys_irq_handler()
1492 dev_err(rk_pcie->pci->dev, "%s, abort\n", __func__); in rk_pcie_sys_irq_handler()
1494 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1499 status.asdword = dw_pcie_readl_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1504 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1506 if (rk_pcie->dma_obj && rk_pcie->dma_obj->cb) in rk_pcie_sys_irq_handler()
1507 rk_pcie->dma_obj->cb(rk_pcie->dma_obj, chn, DMA_FROM_BUS); in rk_pcie_sys_irq_handler()
1511 dev_err(rk_pcie->pci->dev, "%s, abort\n", __func__); in rk_pcie_sys_irq_handler()
1513 dw_pcie_writel_dbi(rk_pcie->pci, PCIE_DMA_OFFSET + in rk_pcie_sys_irq_handler()
1518 reg = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_INTR_STATUS_MISC); in rk_pcie_sys_irq_handler()
1520 queue_work(rk_pcie->hot_rst_wq, &rk_pcie->hot_rst_work); in rk_pcie_sys_irq_handler()
1522 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_STATUS_MISC, reg); in rk_pcie_sys_irq_handler()
1527 static int rk_pcie_request_sys_irq(struct rk_pcie *rk_pcie, in rk_pcie_request_sys_irq() argument
1535 dev_err(rk_pcie->pci->dev, "missing sys IRQ resource\n"); in rk_pcie_request_sys_irq()
1539 ret = devm_request_irq(rk_pcie->pci->dev, irq, rk_pcie_sys_irq_handler, in rk_pcie_request_sys_irq()
1540 IRQF_SHARED, "pcie-sys", rk_pcie); in rk_pcie_request_sys_irq()
1542 dev_err(rk_pcie->pci->dev, "failed to request PCIe subsystem IRQ\n"); in rk_pcie_request_sys_irq()
1605 static int rk1808_pcie_fixup(struct rk_pcie *rk_pcie, struct device_node *np) in rk1808_pcie_fixup() argument
1608 struct device *dev = rk_pcie->pci->dev; in rk1808_pcie_fixup()
1610 rk_pcie->usb_pcie_grf = syscon_regmap_lookup_by_phandle(np, in rk1808_pcie_fixup()
1612 if (IS_ERR(rk_pcie->usb_pcie_grf)) { in rk1808_pcie_fixup()
1614 return PTR_ERR(rk_pcie->usb_pcie_grf); in rk1808_pcie_fixup()
1617 rk_pcie->pmu_grf = syscon_regmap_lookup_by_phandle(np, in rk1808_pcie_fixup()
1619 if (IS_ERR(rk_pcie->pmu_grf)) { in rk1808_pcie_fixup()
1621 return PTR_ERR(rk_pcie->pmu_grf); in rk1808_pcie_fixup()
1625 ret = regmap_write(rk_pcie->pmu_grf, 0x100, 0x01000100); in rk1808_pcie_fixup()
1629 ret = regmap_write(rk_pcie->pmu_grf, 0x0, 0x0c000000); in rk1808_pcie_fixup()
1634 ret = rk_pcie_reset_grant_ctrl(rk_pcie, true); in rk1808_pcie_fixup()
1638 static void rk_pcie_fast_link_setup(struct rk_pcie *rk_pcie) in rk_pcie_fast_link_setup() argument
1643 val = rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_HOT_RESET_CTRL); in rk_pcie_fast_link_setup()
1646 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_HOT_RESET_CTRL, val); in rk_pcie_fast_link_setup()
1651 struct rk_pcie *rk_pcie = irq_data_get_irq_chip_data(d); in rk_pcie_legacy_irq_mask() local
1654 raw_spin_lock_irqsave(&rk_pcie->intx_lock, flags); in rk_pcie_legacy_irq_mask()
1655 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK_LEGACY, in rk_pcie_legacy_irq_mask()
1657 raw_spin_unlock_irqrestore(&rk_pcie->intx_lock, flags); in rk_pcie_legacy_irq_mask()
1662 struct rk_pcie *rk_pcie = irq_data_get_irq_chip_data(d); in rk_pcie_legacy_irq_unmask() local
1665 raw_spin_lock_irqsave(&rk_pcie->intx_lock, flags); in rk_pcie_legacy_irq_unmask()
1666 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK_LEGACY, in rk_pcie_legacy_irq_unmask()
1668 raw_spin_unlock_irqrestore(&rk_pcie->intx_lock, flags); in rk_pcie_legacy_irq_unmask()
1696 struct rk_pcie *rockchip = irq_desc_get_handler_data(desc); in rk_pcie_legacy_int_handler()
1721 static int rk_pcie_init_irq_domain(struct rk_pcie *rockchip) in rk_pcie_init_irq_domain()
1742 static int rk_pcie_enable_power(struct rk_pcie *rk_pcie) in rk_pcie_enable_power() argument
1745 struct device *dev = rk_pcie->pci->dev; in rk_pcie_enable_power()
1747 if (IS_ERR(rk_pcie->vpcie3v3)) in rk_pcie_enable_power()
1750 ret = regulator_enable(rk_pcie->vpcie3v3); in rk_pcie_enable_power()
1757 static int rk_pcie_disable_power(struct rk_pcie *rk_pcie) in rk_pcie_disable_power() argument
1760 struct device *dev = rk_pcie->pci->dev; in rk_pcie_disable_power()
1762 if (IS_ERR(rk_pcie->vpcie3v3)) in rk_pcie_disable_power()
1765 ret = regulator_disable(rk_pcie->vpcie3v3); in rk_pcie_disable_power()
1780 struct rk_pcie *pcie = s->private; in rockchip_pcie_rasdes_show()
1849 struct rk_pcie *pcie = s->private; in rockchip_pcie_rasdes_write()
1888 struct rk_pcie *pcie = (struct rk_pcie *)dev_get_drvdata(s->private); in rockchip_pcie_fifo_show()
1900 static void rockchip_pcie_debugfs_exit(struct rk_pcie *pcie) in rockchip_pcie_debugfs_exit()
1906 static int rockchip_pcie_debugfs_init(struct rk_pcie *pcie) in rockchip_pcie_debugfs_init()
1934 struct rk_pcie *rk_pcie; in rk_pcie_really_probe() local
1953 rk_pcie = devm_kzalloc(dev, sizeof(*rk_pcie), GFP_KERNEL); in rk_pcie_really_probe()
1954 if (!rk_pcie) { in rk_pcie_really_probe()
1968 rk_pcie->mode = mode; in rk_pcie_really_probe()
1969 rk_pcie->msi_vector_num = data->msi_vector_num; in rk_pcie_really_probe()
1970 rk_pcie->pci = pci; in rk_pcie_really_probe()
1974 rk_pcie->is_rk1808 = true; in rk_pcie_really_probe()
1976 rk_pcie->is_rk1808 = false; in rk_pcie_really_probe()
1979 rk_pcie->bifurcation = true; in rk_pcie_really_probe()
1981 ret = rk_pcie_resource_get(pdev, rk_pcie); in rk_pcie_really_probe()
1987 if (!IS_ERR_OR_NULL(rk_pcie->prsnt_gpio)) { in rk_pcie_really_probe()
1988 if (!gpiod_get_value(rk_pcie->prsnt_gpio)) { in rk_pcie_really_probe()
1994 rk_pcie->supports_clkreq = device_property_read_bool(dev, "supports-clkreq"); in rk_pcie_really_probe()
1998 rk_pcie->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3"); in rk_pcie_really_probe()
1999 if (IS_ERR(rk_pcie->vpcie3v3)) { in rk_pcie_really_probe()
2000 if (PTR_ERR(rk_pcie->vpcie3v3) != -ENODEV) { in rk_pcie_really_probe()
2008 ret = PTR_ERR(rk_pcie->vpcie3v3); in rk_pcie_really_probe()
2015 ret = rk_pcie_enable_power(rk_pcie); in rk_pcie_really_probe()
2019 ret = rk_pcie_phy_init(rk_pcie); in rk_pcie_really_probe()
2025 rk_pcie->rsts = devm_reset_control_array_get_exclusive(dev); in rk_pcie_really_probe()
2026 if (IS_ERR(rk_pcie->rsts)) { in rk_pcie_really_probe()
2027 ret = PTR_ERR(rk_pcie->rsts); in rk_pcie_really_probe()
2032 reset_control_deassert(rk_pcie->rsts); in rk_pcie_really_probe()
2034 ret = rk_pcie_request_sys_irq(rk_pcie, pdev); in rk_pcie_really_probe()
2040 platform_set_drvdata(pdev, rk_pcie); in rk_pcie_really_probe()
2042 ret = rk_pcie_clk_init(rk_pcie); in rk_pcie_really_probe()
2050 if (rk_pcie->is_rk1808) { in rk_pcie_really_probe()
2051 ret = rk1808_pcie_fixup(rk_pcie, np); in rk_pcie_really_probe()
2055 rk_pcie_fast_link_setup(rk_pcie); in rk_pcie_really_probe()
2059 ret = rk_pcie_init_irq_domain(rk_pcie); in rk_pcie_really_probe()
2064 rk_pcie); in rk_pcie_really_probe()
2066 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_MASK_LEGACY, in rk_pcie_really_probe()
2074 rk_pcie_set_mode(rk_pcie); in rk_pcie_really_probe()
2081 rk_pcie->is_signal_test = true; in rk_pcie_really_probe()
2089 rk_pcie->is_signal_test = true; in rk_pcie_really_probe()
2094 rk_pcie->skip_scan_in_resume = true; in rk_pcie_really_probe()
2096 rk_pcie->hot_rst_wq = create_singlethread_workqueue("rk_pcie_hot_rst_wq"); in rk_pcie_really_probe()
2097 if (!rk_pcie->hot_rst_wq) { in rk_pcie_really_probe()
2102 INIT_WORK(&rk_pcie->hot_rst_work, rk_pcie_hot_rst_work); in rk_pcie_really_probe()
2104 switch (rk_pcie->mode) { in rk_pcie_really_probe()
2106 ret = rk_add_pcie_port(rk_pcie, pdev); in rk_pcie_really_probe()
2109 ret = rk_pcie_add_ep(rk_pcie); in rk_pcie_really_probe()
2113 if (rk_pcie->is_signal_test == true) in rk_pcie_really_probe()
2119 ret = rk_pcie_init_dma_trx(rk_pcie); in rk_pcie_really_probe()
2125 if (rk_pcie->dma_obj) { in rk_pcie_really_probe()
2126 rk_pcie->dma_obj->start_dma_func = rk_pcie_start_dma_dwc; in rk_pcie_really_probe()
2127 rk_pcie->dma_obj->config_dma_func = rk_pcie_config_dma_dwc; in rk_pcie_really_probe()
2130 if (rk_pcie->is_rk1808) { in rk_pcie_really_probe()
2132 ret = rk_pcie_reset_grant_ctrl(rk_pcie, false); in rk_pcie_really_probe()
2145 ret = rockchip_pcie_debugfs_init(rk_pcie); in rk_pcie_really_probe()
2150 val = dw_pcie_find_ext_capability(rk_pcie->pci, PCI_EXT_CAP_ID_VNDR); in rk_pcie_really_probe()
2156 dw_pcie_writel_dbi(rk_pcie->pci, val + 8, 0x1c); in rk_pcie_really_probe()
2157 dw_pcie_writel_dbi(rk_pcie->pci, val + 8, 0x3); in rk_pcie_really_probe()
2163 destroy_workqueue(rk_pcie->hot_rst_wq); in rk_pcie_really_probe()
2165 if (rk_pcie->irq_domain) in rk_pcie_really_probe()
2166 irq_domain_remove(rk_pcie->irq_domain); in rk_pcie_really_probe()
2168 phy_power_off(rk_pcie->phy); in rk_pcie_really_probe()
2169 phy_exit(rk_pcie->phy); in rk_pcie_really_probe()
2171 clk_bulk_disable_unprepare(rk_pcie->clk_cnt, rk_pcie->clks); in rk_pcie_really_probe()
2173 rk_pcie_disable_power(rk_pcie); in rk_pcie_really_probe()
2199 static void rk_pcie_downstream_dev_to_d0(struct rk_pcie *rk_pcie, bool enable) in rk_pcie_downstream_dev_to_d0() argument
2201 struct pcie_port *pp = &rk_pcie->pci->pp; in rk_pcie_downstream_dev_to_d0()
2216 dev_err(rk_pcie->pci->dev, "Failed to find downstream devices\n"); in rk_pcie_downstream_dev_to_d0()
2222 if (rk_pcie->l1ss_ctl1) in rk_pcie_downstream_dev_to_d0()
2223 dw_pcie_writel_dbi(rk_pcie->pci, bridge->l1ss + PCI_L1SS_CTL1, rk_pcie->l1ss_ctl1); in rk_pcie_downstream_dev_to_d0()
2226 dw_pcie_writel_dbi(rk_pcie->pci, bridge->pcie_cap + PCI_EXP_LNKCTL, rk_pcie->aspm); in rk_pcie_downstream_dev_to_d0()
2228 val = dw_pcie_readl_dbi(rk_pcie->pci, bridge->l1ss + PCI_L1SS_CTL1); in rk_pcie_downstream_dev_to_d0()
2230 rk_pcie->l1ss_ctl1 = val; in rk_pcie_downstream_dev_to_d0()
2232 rk_pcie->l1ss_ctl1 = 0; in rk_pcie_downstream_dev_to_d0()
2234 val = dw_pcie_readl_dbi(rk_pcie->pci, bridge->pcie_cap + PCI_EXP_LNKCTL); in rk_pcie_downstream_dev_to_d0()
2235 rk_pcie->aspm = val & PCI_EXP_LNKCTL_ASPMC; in rk_pcie_downstream_dev_to_d0()
2237 dw_pcie_writel_dbi(rk_pcie->pci, bridge->pcie_cap + PCI_EXP_LNKCTL, val); in rk_pcie_downstream_dev_to_d0()
2243 dev_err(rk_pcie->pci->dev, in rk_pcie_downstream_dev_to_d0()
2247 if (rk_pcie->l1ss_ctl1) { in rk_pcie_downstream_dev_to_d0()
2250 val |= (rk_pcie->l1ss_ctl1 & PCI_L1SS_CTL1_L1SS_MASK); in rk_pcie_downstream_dev_to_d0()
2255 PCI_EXP_LNKCTL_ASPMC, rk_pcie->aspm); in rk_pcie_downstream_dev_to_d0()
2266 struct rk_pcie *rk_pcie = dev_get_drvdata(dev); in rockchip_dw_pcie_suspend() local
2268 struct dw_pcie *pci = rk_pcie->pci; in rockchip_dw_pcie_suspend()
2292 dw_pcie_dbi_ro_wr_dis(rk_pcie->pci); in rockchip_dw_pcie_suspend()
2294 rk_pcie_link_status_clear(rk_pcie); in rockchip_dw_pcie_suspend()
2300 if (rk_pcie->skip_scan_in_resume) { in rockchip_dw_pcie_suspend()
2307 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_MSG_GEN, PME_TURN_OFF); in rockchip_dw_pcie_suspend()
2308 ret = readl_poll_timeout(rk_pcie->apb_base + PCIE_CLIENT_MSG_GEN, in rockchip_dw_pcie_suspend()
2316 ret = readl_poll_timeout(rk_pcie->apb_base + PCIE_CLIENT_INTR_STATUS_MSG_RX, in rockchip_dw_pcie_suspend()
2324 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_INTR_STATUS_MSG_RX, PME_TO_ACK); in rockchip_dw_pcie_suspend()
2325 ret = readl_poll_timeout(rk_pcie->apb_base + PCIE_CLIENT_POWER, in rockchip_dw_pcie_suspend()
2333 ret = readl_poll_timeout(rk_pcie->apb_base + PCIE_CLIENT_LTSSM_STATUS, in rockchip_dw_pcie_suspend()
2339 rk_pcie_disable_ltssm(rk_pcie); in rockchip_dw_pcie_suspend()
2344 phy_power_off(rk_pcie->phy); in rockchip_dw_pcie_suspend()
2345 phy_exit(rk_pcie->phy); in rockchip_dw_pcie_suspend()
2347 clk_bulk_disable_unprepare(rk_pcie->clk_cnt, rk_pcie->clks); in rockchip_dw_pcie_suspend()
2349 rk_pcie->in_suspend = true; in rockchip_dw_pcie_suspend()
2351 gpiod_set_value_cansleep(rk_pcie->rst_gpio, 0); in rockchip_dw_pcie_suspend()
2352 ret = rk_pcie_disable_power(rk_pcie); in rockchip_dw_pcie_suspend()
2359 struct rk_pcie *rk_pcie = dev_get_drvdata(dev); in rockchip_dw_pcie_resume() local
2360 bool std_rc = rk_pcie->mode == RK_PCIE_RC_TYPE && !rk_pcie->dma_obj; in rockchip_dw_pcie_resume()
2363 reset_control_assert(rk_pcie->rsts); in rockchip_dw_pcie_resume()
2365 reset_control_deassert(rk_pcie->rsts); in rockchip_dw_pcie_resume()
2367 ret = rk_pcie_enable_power(rk_pcie); in rockchip_dw_pcie_resume()
2371 ret = clk_bulk_prepare_enable(rk_pcie->clk_cnt, rk_pcie->clks); in rockchip_dw_pcie_resume()
2377 ret = phy_set_mode_ext(rk_pcie->phy, rk_pcie->phy_mode, in rockchip_dw_pcie_resume()
2378 rk_pcie->phy_sub_mode); in rockchip_dw_pcie_resume()
2381 (rk_pcie->phy_sub_mode == PHY_MODE_PCIE_RC) ? "RC" : "EP", in rockchip_dw_pcie_resume()
2386 ret = phy_init(rk_pcie->phy); in rockchip_dw_pcie_resume()
2392 phy_power_on(rk_pcie->phy); in rockchip_dw_pcie_resume()
2394 dw_pcie_dbi_ro_wr_en(rk_pcie->pci); in rockchip_dw_pcie_resume()
2396 if (rk_pcie->is_rk1808) { in rockchip_dw_pcie_resume()
2398 ret = rk_pcie_reset_grant_ctrl(rk_pcie, true); in rockchip_dw_pcie_resume()
2402 rk_pcie_fast_link_setup(rk_pcie); in rockchip_dw_pcie_resume()
2406 rk_pcie_set_mode(rk_pcie); in rockchip_dw_pcie_resume()
2409 dw_pcie_setup_rc(&rk_pcie->pci->pp); in rockchip_dw_pcie_resume()
2411 ret = rk_pcie_establish_link(rk_pcie->pci); in rockchip_dw_pcie_resume()
2420 ret = rk_pcie_ep_atu_init(rk_pcie); in rockchip_dw_pcie_resume()
2426 rk_pcie_ep_setup(rk_pcie); in rockchip_dw_pcie_resume()
2428 rk_pcie->in_suspend = false; in rockchip_dw_pcie_resume()
2431 dw_pcie_dbi_ro_wr_dis(rk_pcie->pci); in rockchip_dw_pcie_resume()
2433 if (rk_pcie->is_rk1808) { in rockchip_dw_pcie_resume()
2434 ret = rk_pcie_reset_grant_ctrl(rk_pcie, false); in rockchip_dw_pcie_resume()
2439 if (rk_pcie->pci->pp.msi_irq > 0) in rockchip_dw_pcie_resume()
2440 dw_pcie_msi_init(&rk_pcie->pci->pp); in rockchip_dw_pcie_resume()
2444 rk_pcie_disable_power(rk_pcie); in rockchip_dw_pcie_resume()
2452 struct rk_pcie *rk_pcie = dev_get_drvdata(dev); in rockchip_dw_pcie_prepare() local
2454 dw_pcie_dbi_ro_wr_en(rk_pcie->pci); in rockchip_dw_pcie_prepare()
2455 rk_pcie_downstream_dev_to_d0(rk_pcie, false); in rockchip_dw_pcie_prepare()
2456 dw_pcie_dbi_ro_wr_dis(rk_pcie->pci); in rockchip_dw_pcie_prepare()
2463 struct rk_pcie *rk_pcie = dev_get_drvdata(dev); in rockchip_dw_pcie_complete() local
2465 dw_pcie_dbi_ro_wr_en(rk_pcie->pci); in rockchip_dw_pcie_complete()
2466 rk_pcie_downstream_dev_to_d0(rk_pcie, true); in rockchip_dw_pcie_complete()
2467 dw_pcie_dbi_ro_wr_dis(rk_pcie->pci); in rockchip_dw_pcie_complete()