diff --git a/drivers/misc/rockchip/pcie-rkep.c b/drivers/misc/rockchip/pcie-rkep.c index 44b7bf0744b4..d3b0c8baa772 100644 --- a/drivers/misc/rockchip/pcie-rkep.c +++ b/drivers/misc/rockchip/pcie-rkep.c @@ -558,6 +558,14 @@ static int pcie_rkep_mmap(struct file *file, struct vm_area_struct *vma) } addr = pci_resource_start(dev, 0); break; + case PCIE_EP_MMAP_RESOURCE_BAR1: + bar_size = pci_resource_len(dev, 1); + if (size > bar_size) { + dev_warn(&pcie_rkep->pdev->dev, "bar1 mmap size is out of limitation\n"); + return -EINVAL; + } + addr = pci_resource_start(dev, 1); + break; case PCIE_EP_MMAP_RESOURCE_BAR2: bar_size = pci_resource_len(dev, 2); if (size > bar_size) { @@ -574,6 +582,14 @@ static int pcie_rkep_mmap(struct file *file, struct vm_area_struct *vma) } addr = pci_resource_start(dev, 4); break; + case PCIE_EP_MMAP_RESOURCE_BAR5: + bar_size = pci_resource_len(dev, 5); + if (size > bar_size) { + dev_warn(&pcie_rkep->pdev->dev, "bar5 mmap size is out of limitation\n"); + return -EINVAL; + } + addr = pci_resource_start(dev, 5); + break; case PCIE_EP_MMAP_RESOURCE_USER_MEM: if (size > RKEP_USER_MEM_SIZE) { dev_warn(&pcie_rkep->pdev->dev, "mmap size is out of limitation\n"); diff --git a/include/uapi/linux/rk-pcie-ep.h b/include/uapi/linux/rk-pcie-ep.h index d89748eed925..64d83c0ab5c9 100644 --- a/include/uapi/linux/rk-pcie-ep.h +++ b/include/uapi/linux/rk-pcie-ep.h @@ -69,6 +69,8 @@ enum pcie_ep_mmap_resource { PCIE_EP_MMAP_RESOURCE_USER_MEM, PCIE_EP_MMAP_RESOURCE_RK3568_RC_DBI, PCIE_EP_MMAP_RESOURCE_RK3588_RC_DBI, + PCIE_EP_MMAP_RESOURCE_BAR1, + PCIE_EP_MMAP_RESOURCE_BAR5, PCIE_EP_MMAP_RESOURCE_MAX, };