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.
Showing the changes to include/linux (1 of 4 files). Show all
Unified · Split
| @@ -137,9 +137,6 @@ struct pci_epc_features { · 136 unmodified lines | ||
| 137 | 137 | #define devm_pci_epc_create(dev, ops) \ |
| 138 | 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 | 140 | static inline void epc_set_drvdata(struct pci_epc *epc, void *data) |
| 144 | 141 | { |
| 145 | 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 | 192 | struct pci_epc *pci_epc_get(const char *epc_name); |
| 196 | 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 | 197 | int __pci_epc_mem_init(struct pci_epc *epc, phys_addr_t phys_addr, size_t size, |
| 199 | 198 | size_t page_size); |
| 200 | 199 | void pci_epc_mem_exit(struct pci_epc *epc); |