pci_epc_mem_init() internally used page size equal to *PAGE_SIZE* to manage the address space so instead just pass the page size as a argument to pci_epc_mem_init(). Also make pci_epc_mem_init() as a C function instead of a macro function in preparation for adding support for pci-epc-mem core to handle multiple windows.
Unified · Split
| @@ -450,7 +450,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep) · 449 unmodified lines | |||
| 450 | epc->max_functions = 1; | 450 | epc->max_functions = 1; |
| 451 | 451 | ||
| 452 | ret = pci_epc_mem_init(epc, pcie->mem_res->start, | 452 | ret = pci_epc_mem_init(epc, pcie->mem_res->start, |
| 453 | resource_size(pcie->mem_res)); | 453 | resource_size(pcie->mem_res), PAGE_SIZE); |
| 454 | if (ret < 0) { | 454 | if (ret < 0) { |
| 455 | dev_err(dev, "failed to initialize the memory space\n"); | 455 | dev_err(dev, "failed to initialize the memory space\n"); |
| 456 | goto err_init; | 456 | goto err_init; |
| @@ -615,7 +615,7 @@ static int rockchip_pcie_ep_probe(struct platform_device *pdev) · 614 unmodified lines | |||
| 615 | rockchip_pcie_write(rockchip, BIT(0), PCIE_CORE_PHY_FUNC_CFG); | 615 | rockchip_pcie_write(rockchip, BIT(0), PCIE_CORE_PHY_FUNC_CFG); |
| 616 | 616 | ||
| 617 | err = pci_epc_mem_init(epc, rockchip->mem_res->start, | 617 | err = pci_epc_mem_init(epc, rockchip->mem_res->start, |
| 618 | resource_size(rockchip->mem_res)); | 618 | resource_size(rockchip->mem_res), PAGE_SIZE); |
| 619 | if (err < 0) { | 619 | if (err < 0) { |
| 620 | dev_err(dev, "failed to initialize the memory space\n"); | 620 | dev_err(dev, "failed to initialize the memory space\n"); |
| 621 | goto err_uninit_port; | 621 | goto err_uninit_port; |
| @@ -93,6 +93,13 @@ return ret; · 92 unmodified lines | |||
| 93 | } | 93 | } |
| 94 | EXPORT_SYMBOL_GPL(__pci_epc_mem_init); | 94 | EXPORT_SYMBOL_GPL(__pci_epc_mem_init); |
| 95 | 95 | ||
| 96 | int pci_epc_mem_init(struct pci_epc *epc, phys_addr_t base, | ||
| 97 | size_t size, size_t page_size) | ||
| 98 | { | ||
| 99 | return __pci_epc_mem_init(epc, base, size, page_size); | ||
| 100 | } | ||
| 101 | EXPORT_SYMBOL_GPL(pci_epc_mem_init); | ||
| 102 | |||
| 96 | /** | 103 | /** |
| 97 | * pci_epc_mem_exit() - cleanup the pci_epc_mem structure | 104 | * pci_epc_mem_exit() - cleanup the pci_epc_mem structure |
| 98 | * @epc: the EPC device that invoked pci_epc_mem_exit | 105 | * @epc: the EPC device that invoked pci_epc_mem_exit |
| @@ -137,9 +137,6 @@ struct pci_epc_features { · 136 unmodified lines | |||
| 137 | #define devm_pci_epc_create(dev, ops) \ | 137 | #define devm_pci_epc_create(dev, ops) \ |
| 138 | __devm_pci_epc_create((dev), (ops), THIS_MODULE) | 138 | __devm_pci_epc_create((dev), (ops), THIS_MODULE) |
| 139 | 139 | ||
| 140 | #define pci_epc_mem_init(epc, phys_addr, size) \ | ||
| 141 | __pci_epc_mem_init((epc), (phys_addr), (size), PAGE_SIZE) | ||
| 142 | |||
| 143 | static inline void epc_set_drvdata(struct pci_epc *epc, void *data) | 140 | static inline void epc_set_drvdata(struct pci_epc *epc, void *data) |
| 144 | { | 141 | { |
| 145 | dev_set_drvdata(&epc->dev, data); | 142 | dev_set_drvdata(&epc->dev, data); |
| @@ -195,6 +192,8 @@ unsigned int pci_epc_get_first_free_bar(const struct pci_epc_features · 49 unmodified lines | |||
| 195 | struct pci_epc *pci_epc_get(const char *epc_name); | 192 | struct pci_epc *pci_epc_get(const char *epc_name); |
| 196 | void pci_epc_put(struct pci_epc *epc); | 193 | void pci_epc_put(struct pci_epc *epc); |
| 197 | 194 | ||
| 195 | int pci_epc_mem_init(struct pci_epc *epc, phys_addr_t base, | ||
| 196 | size_t size, size_t page_size); | ||
| 198 | int __pci_epc_mem_init(struct pci_epc *epc, phys_addr_t phys_addr, size_t size, | 197 | int __pci_epc_mem_init(struct pci_epc *epc, phys_addr_t phys_addr, size_t size, |
| 199 | size_t page_size); | 198 | size_t page_size); |
| 200 | void pci_epc_mem_exit(struct pci_epc *epc); | 199 | void pci_epc_mem_exit(struct pci_epc *epc); |