PCI: rockchip: dw: ignore udma initialization if not support

Change-Id: I5f5586fd42f491972271af9ee735c27e99e642a3
Signed-off-by: Simon Xue <xxm@rock-chips.com>
This commit is contained in:
Simon Xue
2022-02-28 10:09:36 +08:00
committed by Tao Huang
parent ea88f4007c
commit c9e3d0dbfb

View File

@@ -55,6 +55,7 @@ enum rk_pcie_device_mode {
#define PCIE_DMA_OFFSET 0x380000
#define PCIE_DMA_CTRL_OFF 0x8
#define PCIE_DMA_WR_ENB 0xc
#define PCIE_DMA_WR_CTRL_LO 0x200
#define PCIE_DMA_WR_CTRL_HI 0x204
@@ -791,8 +792,17 @@ static int rk_pcie_establish_link(struct dw_pcie *pci)
return rk_pcie->is_signal_test == true ? 0 : -EINVAL;
}
static bool rk_pcie_udma_enabled(struct rk_pcie *rk_pcie)
{
return dw_pcie_readl_dbi(rk_pcie->pci, PCIE_DMA_OFFSET +
PCIE_DMA_CTRL_OFF);
}
static int rk_pcie_host_init_dma_trx(struct rk_pcie *rk_pcie)
{
if (!rk_pcie_udma_enabled(rk_pcie))
return 0;
rk_pcie->dma_obj = rk_pcie_dma_obj_probe(rk_pcie->pci->dev);
if (IS_ERR(rk_pcie->dma_obj)) {
dev_err(rk_pcie->pci->dev, "failed to prepare dma object\n");
@@ -1122,6 +1132,9 @@ static int rk_pcie_add_ep(struct rk_pcie *rk_pcie)
return ret;
}
if (!rk_pcie_udma_enabled(rk_pcie))
return 0;
rk_pcie->dma_obj = rk_pcie_dma_obj_probe(dev);
if (IS_ERR(rk_pcie->dma_obj)) {
dev_err(dev, "failed to prepare dma object\n");