Lines Matching refs:rk_pcie
57 struct rk_pcie { struct
194 static u32 __rk_pcie_read_apb(struct rk_pcie *rk_pcie, void __iomem *base, in __rk_pcie_read_apb() argument
202 dev_err(rk_pcie->dev, "Read APB address failed\n"); in __rk_pcie_read_apb()
207 static void __rk_pcie_write_apb(struct rk_pcie *rk_pcie, void __iomem *base, in __rk_pcie_write_apb() argument
214 dev_err(rk_pcie->dev, "Write APB address failed\n"); in __rk_pcie_write_apb()
217 static inline u32 rk_pcie_readl_apb(struct rk_pcie *rk_pcie, u32 reg) in rk_pcie_readl_apb() argument
219 return __rk_pcie_read_apb(rk_pcie, rk_pcie->apb_base, reg, 0x4); in rk_pcie_readl_apb()
222 static inline void rk_pcie_writel_apb(struct rk_pcie *rk_pcie, u32 reg, in rk_pcie_writel_apb() argument
225 __rk_pcie_write_apb(rk_pcie, rk_pcie->apb_base, reg, 0x4, val); in rk_pcie_writel_apb()
228 static int rk_pcie_get_link_speed(struct rk_pcie *rk_pcie) in rk_pcie_get_link_speed() argument
230 return (readl(rk_pcie->dbi_base + PCIE_LINK_STATUS_REG) & in rk_pcie_get_link_speed()
234 static int rk_pcie_get_link_width(struct rk_pcie *rk_pcie) in rk_pcie_get_link_width() argument
236 return (readl(rk_pcie->dbi_base + PCIE_LINK_STATUS_REG) & in rk_pcie_get_link_width()
240 static void rk_pcie_writel_ob_unroll(struct rk_pcie *rk_pcie, u32 index, in rk_pcie_writel_ob_unroll() argument
244 void __iomem *base = rk_pcie->dbi_base; in rk_pcie_writel_ob_unroll()
249 static u32 rk_pcie_readl_ob_unroll(struct rk_pcie *rk_pcie, u32 index, u32 reg) in rk_pcie_readl_ob_unroll() argument
252 void __iomem *base = rk_pcie->dbi_base; in rk_pcie_readl_ob_unroll()
257 static inline void rk_pcie_dbi_write_enable(struct rk_pcie *rk_pcie, bool en) in rk_pcie_dbi_write_enable() argument
261 val = readl(rk_pcie->dbi_base + PCIE_MISC_CONTROL_1_OFF); in rk_pcie_dbi_write_enable()
267 writel(val, rk_pcie->dbi_base + PCIE_MISC_CONTROL_1_OFF); in rk_pcie_dbi_write_enable()
270 static void rk_pcie_setup_host(struct rk_pcie *rk_pcie) in rk_pcie_setup_host() argument
274 rk_pcie_dbi_write_enable(rk_pcie, true); in rk_pcie_setup_host()
278 rk_pcie->dbi_base + PCI_BASE_ADDRESS_0); in rk_pcie_setup_host()
279 writel(0x0, rk_pcie->dbi_base + PCI_BASE_ADDRESS_1); in rk_pcie_setup_host()
282 val = readl(rk_pcie->dbi_base + PCI_INTERRUPT_LINE); in rk_pcie_setup_host()
285 writel(val, rk_pcie->dbi_base + PCI_INTERRUPT_LINE); in rk_pcie_setup_host()
288 val = readl(rk_pcie->dbi_base + PCI_PRIMARY_BUS); in rk_pcie_setup_host()
291 writel(val, rk_pcie->dbi_base + PCI_PRIMARY_BUS); in rk_pcie_setup_host()
293 val = readl(rk_pcie->dbi_base + PCI_PRIMARY_BUS); in rk_pcie_setup_host()
296 val = readl(rk_pcie->dbi_base + PCI_COMMAND); in rk_pcie_setup_host()
300 writel(val, rk_pcie->dbi_base + PCI_COMMAND); in rk_pcie_setup_host()
303 writew(PCI_CLASS_BRIDGE_PCI, rk_pcie->dbi_base + PCI_CLASS_DEVICE); in rk_pcie_setup_host()
306 val = readl(rk_pcie->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL); in rk_pcie_setup_host()
308 writel(val, rk_pcie->dbi_base + PCIE_LINK_WIDTH_SPEED_CONTROL); in rk_pcie_setup_host()
311 writel(0, rk_pcie->dbi_base + PCIE_TYPE0_HDR_DBI2_OFFSET + 0x10 + 0 * 4); in rk_pcie_setup_host()
312 writel(0, rk_pcie->dbi_base + PCIE_TYPE0_HDR_DBI2_OFFSET + 0x10 + 1 * 4); in rk_pcie_setup_host()
314 rk_pcie_dbi_write_enable(rk_pcie, false); in rk_pcie_setup_host()
317 static void rk_pcie_configure(struct rk_pcie *pci, u32 cap_speed) in rk_pcie_configure()
336 static void rk_pcie_prog_outbound_atu_unroll(struct rk_pcie *pci, int index, in rk_pcie_prog_outbound_atu_unroll()
385 static uintptr_t set_cfg_address(struct rk_pcie *pcie, in set_cfg_address()
432 struct rk_pcie *pcie = dev_get_priv(bus); in rockchip_pcie_rd_conf()
463 struct rk_pcie *pcie = dev_get_priv(bus); in rockchip_pcie_wr_conf()
489 static void rk_pcie_enable_debug(struct rk_pcie *rk_pcie) in rk_pcie_enable_debug() argument
492 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_PTN_HIT_D0, in rk_pcie_enable_debug()
494 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_PTN_HIT_D1, in rk_pcie_enable_debug()
496 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_TRN_HIT_D0, in rk_pcie_enable_debug()
498 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_TRN_HIT_D1, in rk_pcie_enable_debug()
500 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_MODE_CON, in rk_pcie_enable_debug()
505 static void rk_pcie_debug_dump(struct rk_pcie *rk_pcie) in rk_pcie_debug_dump() argument
510 dev_err(rk_pcie->dev, "ltssm = 0x%x\n", in rk_pcie_debug_dump()
511 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_LTSSM_STATUS)); in rk_pcie_debug_dump()
513 dev_err(rk_pcie->dev, "fifo_status = 0x%x\n", in rk_pcie_debug_dump()
514 rk_pcie_readl_apb(rk_pcie, PCIE_CLIENT_DBG_FIFO_STATUS)); in rk_pcie_debug_dump()
518 static inline void rk_pcie_link_status_clear(struct rk_pcie *rk_pcie) in rk_pcie_link_status_clear() argument
520 rk_pcie_writel_apb(rk_pcie, PCIE_CLIENT_GENERAL_DEBUG, 0x0); in rk_pcie_link_status_clear()
523 static inline void rk_pcie_disable_ltssm(struct rk_pcie *rk_pcie) in rk_pcie_disable_ltssm() argument
525 rk_pcie_writel_apb(rk_pcie, 0x0, 0xc0008); in rk_pcie_disable_ltssm()
528 static inline void rk_pcie_enable_ltssm(struct rk_pcie *rk_pcie) in rk_pcie_enable_ltssm() argument
530 rk_pcie_writel_apb(rk_pcie, 0x0, 0xc000c); in rk_pcie_enable_ltssm()
533 static int is_link_up(struct rk_pcie *priv) in is_link_up()
545 static int rk_pcie_link_up(struct rk_pcie *priv, u32 cap_speed) in rk_pcie_link_up()
604 struct rk_pcie *priv = dev_get_priv(dev); in rockchip_pcie_init_port()
679 struct rk_pcie *priv = dev_get_priv(dev); in rockchip_pcie_parse_dt()
742 struct rk_pcie *priv = dev_get_priv(dev); in rockchip_pcie_probe()
826 .priv_auto_alloc_size = sizeof(struct rk_pcie),