* [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro @ 2021-11-24 17:00 Pali Rohár 2021-11-24 17:00 ` [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET Pali Rohár ` (4 more replies) 0 siblings, 5 replies; 12+ messages in thread From: Pali Rohár @ 2021-11-24 17:00 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng, David Feng, Liviu Dudau, Nicolas Saenz Julienne, Matthias Brugger, Bharat Gooty Cc: u-boot This patch series replace usage of custom driver functions and macros by PCIE_ECAM_OFFSET() macro provided by U-Boot pci.h header file. Please properly review these patches as I do not have hardware with these drivers for testing. Support for PCIE_ECAM_OFFSET() macro is in U-Boot next branch. Pali Rohár (4): vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro pci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro board/armltd/vexpress64/pcie.c | 4 --- drivers/pci/pci_octeontx.c | 61 +++++++++++----------------------- drivers/pci/pcie_brcmstb.c | 7 +--- drivers/pci/pcie_iproc.c | 17 ++-------- 4 files changed, 24 insertions(+), 65 deletions(-) -- 2.20.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár @ 2021-11-24 17:00 ` Pali Rohár 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro Pali Rohár ` (3 subsequent siblings) 4 siblings, 1 reply; 12+ messages in thread From: Pali Rohár @ 2021-11-24 17:00 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng, David Feng, Liviu Dudau; +Cc: u-boot Macro XR3PCI_ECAM_OFFSET is unused and in case it would be needed in future it can be replaced by standard PCIE_ECAM_OFFSET macro from pci.h file. Signed-off-by: Pali Rohár <pali@kernel.org> --- board/armltd/vexpress64/pcie.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/board/armltd/vexpress64/pcie.c b/board/armltd/vexpress64/pcie.c index 733b190e594d..1e74158630b5 100644 --- a/board/armltd/vexpress64/pcie.c +++ b/board/armltd/vexpress64/pcie.c @@ -56,10 +56,6 @@ #define XR3PCI_ATR_TRSLID_PCIE_IO (0x020000) #define XR3PCI_ATR_TRSLID_PCIE_MEMORY (0x000000) -#define XR3PCI_ECAM_OFFSET(b, d, o) (((b) << 20) | \ - (PCI_SLOT(d) << 15) | \ - (PCI_FUNC(d) << 12) | o) - #define JUNO_RESET_CTRL 0x1004 #define JUNO_RESET_CTRL_PHY BIT(0) #define JUNO_RESET_CTRL_RC BIT(1) -- 2.20.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET 2021-11-24 17:00 ` [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET Pali Rohár @ 2022-01-13 1:50 ` Tom Rini 0 siblings, 0 replies; 12+ messages in thread From: Tom Rini @ 2022-01-13 1:50 UTC (permalink / raw) To: Pali Rohár Cc: Stefan Roese, Simon Glass, Bin Meng, David Feng, Liviu Dudau, u-boot [-- Attachment #1: Type: text/plain, Size: 316 bytes --] On Wed, Nov 24, 2021 at 06:00:30PM +0100, Pali Rohár wrote: > Macro XR3PCI_ECAM_OFFSET is unused and in case it would be needed in future > it can be replaced by standard PCIE_ECAM_OFFSET macro from pci.h file. > > Signed-off-by: Pali Rohár <pali@kernel.org> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár 2021-11-24 17:00 ` [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET Pali Rohár @ 2021-11-24 17:00 ` Pali Rohár 2021-11-30 12:09 ` nicolas saenz julienne 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 3/4] pci: pcie_iproc: " Pali Rohár ` (2 subsequent siblings) 4 siblings, 2 replies; 12+ messages in thread From: Pali Rohár @ 2021-11-24 17:00 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng, Nicolas Saenz Julienne, Matthias Brugger Cc: u-boot Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h Signed-off-by: Pali Rohár <pali@kernel.org> --- drivers/pci/pcie_brcmstb.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c index 90225f677955..1de28021138a 100644 --- a/drivers/pci/pcie_brcmstb.c +++ b/drivers/pci/pcie_brcmstb.c @@ -97,9 +97,6 @@ #define PCIE_EXT_CFG_DATA 0x8000 #define PCIE_EXT_CFG_INDEX 0x9000 -#define PCIE_EXT_BUSNUM_SHIFT 20 -#define PCIE_EXT_SLOT_SHIFT 15 -#define PCIE_EXT_FUNC_SHIFT 12 #define PCIE_RGR1_SW_INIT_1 0x9210 #define RGR1_SW_INIT_1_PERST_MASK 0x1 @@ -227,9 +224,7 @@ static int brcm_pcie_config_address(const struct udevice *dev, pci_dev_t bdf, } /* For devices, write to the config space index register */ - idx = (pci_bus << PCIE_EXT_BUSNUM_SHIFT) - | (pci_dev << PCIE_EXT_SLOT_SHIFT) - | (pci_func << PCIE_EXT_FUNC_SHIFT); + idx = PCIE_ECAM_OFFSET(pci_bus, pci_dev, pci_func, 0); writel(idx, pcie->base + PCIE_EXT_CFG_INDEX); *paddress = pcie->base + PCIE_EXT_CFG_DATA + offset; -- 2.20.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 ` [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro Pali Rohár @ 2021-11-30 12:09 ` nicolas saenz julienne 2022-01-13 1:50 ` Tom Rini 1 sibling, 0 replies; 12+ messages in thread From: nicolas saenz julienne @ 2021-11-30 12:09 UTC (permalink / raw) To: Pali Rohár, Stefan Roese, Simon Glass, Bin Meng, Matthias Brugger Cc: u-boot On Wed, 2021-11-24 at 18:00 +0100, Pali Rohár wrote: > Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h > > Signed-off-by: Pali Rohár <pali@kernel.org> > --- Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org> Regards, Nicolas ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 ` [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro Pali Rohár 2021-11-30 12:09 ` nicolas saenz julienne @ 2022-01-13 1:50 ` Tom Rini 1 sibling, 0 replies; 12+ messages in thread From: Tom Rini @ 2022-01-13 1:50 UTC (permalink / raw) To: Pali Rohár Cc: Stefan Roese, Simon Glass, Bin Meng, Nicolas Saenz Julienne, Matthias Brugger, u-boot [-- Attachment #1: Type: text/plain, Size: 293 bytes --] On Wed, Nov 24, 2021 at 06:00:31PM +0100, Pali Rohár wrote: > Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH u-boot-next 3/4] pci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár 2021-11-24 17:00 ` [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET Pali Rohár 2021-11-24 17:00 ` [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro Pali Rohár @ 2021-11-24 17:00 ` Pali Rohár 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 4/4] pci: pci_octeontx: " Pali Rohár 2021-12-16 11:28 ` [PATCH u-boot-next 0/4] pci: " Pali Rohár 4 siblings, 1 reply; 12+ messages in thread From: Pali Rohár @ 2021-11-24 17:00 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng, Bharat Gooty; +Cc: u-boot Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h Signed-off-by: Pali Rohár <pali@kernel.org> --- drivers/pci/pcie_iproc.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/drivers/pci/pcie_iproc.c b/drivers/pci/pcie_iproc.c index be03dcbd97c0..a31e74a0f2e3 100644 --- a/drivers/pci/pcie_iproc.c +++ b/drivers/pci/pcie_iproc.c @@ -24,15 +24,7 @@ #define CFG_IND_ADDR_MASK 0x00001ffc -#define CFG_ADDR_BUS_NUM_SHIFT 20 -#define CFG_ADDR_BUS_NUM_MASK 0x0ff00000 -#define CFG_ADDR_DEV_NUM_SHIFT 15 -#define CFG_ADDR_DEV_NUM_MASK 0x000f8000 -#define CFG_ADDR_FUNC_NUM_SHIFT 12 -#define CFG_ADDR_FUNC_NUM_MASK 0x00007000 -#define CFG_ADDR_REG_NUM_SHIFT 2 -#define CFG_ADDR_REG_NUM_MASK 0x00000ffc -#define CFG_ADDR_CFG_TYPE_SHIFT 0 +#define CFG_ADDR_CFG_ECAM_MASK 0xfffffffc #define CFG_ADDR_CFG_TYPE_MASK 0x00000003 #define IPROC_PCI_PM_CAP 0x48 @@ -473,11 +465,8 @@ static int iproc_pcie_map_ep_cfg_reg(const struct udevice *udev, pci_dev_t bdf, return -ENODEV; /* EP device access */ - val = (busno << CFG_ADDR_BUS_NUM_SHIFT) | - (slot << CFG_ADDR_DEV_NUM_SHIFT) | - (fn << CFG_ADDR_FUNC_NUM_SHIFT) | - (where & CFG_ADDR_REG_NUM_MASK) | - (1 & CFG_ADDR_CFG_TYPE_MASK); + val = (PCIE_ECAM_OFFSET(busno, slot, fn, where) & CFG_ADDR_CFG_ECAM_MASK) + | (1 & CFG_ADDR_CFG_TYPE_MASK); iproc_pcie_write_reg(pcie, IPROC_PCIE_CFG_ADDR, val); offset = iproc_pcie_reg_offset(pcie, IPROC_PCIE_CFG_DATA); -- 2.20.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 3/4] pci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 ` [PATCH u-boot-next 3/4] pci: pcie_iproc: " Pali Rohár @ 2022-01-13 1:50 ` Tom Rini 0 siblings, 0 replies; 12+ messages in thread From: Tom Rini @ 2022-01-13 1:50 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, Simon Glass, Bin Meng, Bharat Gooty, u-boot [-- Attachment #1: Type: text/plain, Size: 234 bytes --] On Wed, Nov 24, 2021 at 06:00:32PM +0100, Pali Rohár wrote: > Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h > > Signed-off-by: Pali Rohár <pali@kernel.org> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH u-boot-next 4/4] pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár ` (2 preceding siblings ...) 2021-11-24 17:00 ` [PATCH u-boot-next 3/4] pci: pcie_iproc: " Pali Rohár @ 2021-11-24 17:00 ` Pali Rohár 2021-12-16 14:02 ` Stefan Roese 2022-01-13 1:51 ` Tom Rini 2021-12-16 11:28 ` [PATCH u-boot-next 0/4] pci: " Pali Rohár 4 siblings, 2 replies; 12+ messages in thread From: Pali Rohár @ 2021-11-24 17:00 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng; +Cc: u-boot Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h Signed-off-by: Pali Rohár <pali@kernel.org> --- drivers/pci/pci_octeontx.c | 61 +++++++++++++------------------------- 1 file changed, 20 insertions(+), 41 deletions(-) diff --git a/drivers/pci/pci_octeontx.c b/drivers/pci/pci_octeontx.c index 46855c5cd3a3..875cf7f7115d 100644 --- a/drivers/pci/pci_octeontx.c +++ b/drivers/pci/pci_octeontx.c @@ -49,25 +49,6 @@ struct octeontx_pci { struct resource bus; }; -static uintptr_t octeontx_cfg_addr(struct octeontx_pci *pcie, - int bus_offs, int shift_offs, - pci_dev_t bdf, uint offset) -{ - u32 bus, dev, func; - uintptr_t address; - - bus = PCI_BUS(bdf) + bus_offs; - dev = PCI_DEV(bdf); - func = PCI_FUNC(bdf); - - address = (bus << (20 + shift_offs)) | - (dev << (15 + shift_offs)) | - (func << (12 + shift_offs)) | offset; - address += pcie->cfg.start; - - return address; -} - static ulong readl_size(uintptr_t addr, enum pci_size_t size) { ulong val; @@ -123,9 +104,9 @@ static int octeontx_ecam_read_config(const struct udevice *bus, pci_dev_t bdf, struct pci_controller *hose = dev_get_uclass_priv(bus); uintptr_t address; - address = octeontx_cfg_addr(pcie, pcie->bus.start - hose->first_busno, - 0, bdf, offset); - *valuep = readl_size(address, size); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + pcie->bus.start - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), offset); + *valuep = readl_size(pcie->cfg.start + address, size); debug("%02x.%02x.%02x: u%d %x -> %lx\n", PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, *valuep); @@ -141,9 +122,9 @@ static int octeontx_ecam_write_config(struct udevice *bus, pci_dev_t bdf, struct pci_controller *hose = dev_get_uclass_priv(bus); uintptr_t address; - address = octeontx_cfg_addr(pcie, pcie->bus.start - hose->first_busno, - 0, bdf, offset); - writel_size(address, size, value); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + pcie->bus.start - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), offset); + writel_size(pcie->cfg.start + address, size, value); debug("%02x.%02x.%02x: u%d %x <- %lx\n", PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, value); @@ -162,17 +143,16 @@ static int octeontx_pem_read_config(const struct udevice *bus, pci_dev_t bdf, u8 pri_bus = pcie->bus.start + 1 - hose->first_busno; u32 bus_offs = (pri_bus << 16) | (pri_bus << 8) | (pri_bus << 0); - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 4, - bdf, 0); - *valuep = pci_conv_32_to_size(~0UL, offset, size); if (octeontx_bdf_invalid(bdf)) return -EPERM; - *valuep = readl_size(address + offset, size); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), 0) << 4; + *valuep = readl_size(pcie->cfg.start + address + offset, size); - hdrtype = readb(address + PCI_HEADER_TYPE); + hdrtype = readb(pcie->cfg.start + address + PCI_HEADER_TYPE); if (hdrtype == PCI_HEADER_TYPE_BRIDGE && offset >= PCI_PRIMARY_BUS && offset <= PCI_SUBORDINATE_BUS && @@ -193,9 +173,10 @@ static int octeontx_pem_write_config(struct udevice *bus, pci_dev_t bdf, u8 pri_bus = pcie->bus.start + 1 - hose->first_busno; u32 bus_offs = (pri_bus << 16) | (pri_bus << 8) | (pri_bus << 0); - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 4, bdf, 0); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), 0) << 4; - hdrtype = readb(address + PCI_HEADER_TYPE); + hdrtype = readb(pcie->cfg.start + address + PCI_HEADER_TYPE); if (hdrtype == PCI_HEADER_TYPE_BRIDGE && offset >= PCI_PRIMARY_BUS && offset <= PCI_SUBORDINATE_BUS && @@ -205,7 +186,7 @@ static int octeontx_pem_write_config(struct udevice *bus, pci_dev_t bdf, if (octeontx_bdf_invalid(bdf)) return -EPERM; - writel_size(address + offset, size, value); + writel_size(pcie->cfg.start + address + offset, size, value); debug("%02x.%02x.%02x: u%d %x (%lx) <- %lx\n", PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, @@ -222,15 +203,14 @@ static int octeontx2_pem_read_config(const struct udevice *bus, pci_dev_t bdf, struct pci_controller *hose = dev_get_uclass_priv(bus); uintptr_t address; - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 0, - bdf, 0); - *valuep = pci_conv_32_to_size(~0UL, offset, size); if (octeontx_bdf_invalid(bdf)) return -EPERM; - *valuep = readl_size(address + offset, size); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), offset); + *valuep = readl_size(pcie->cfg.start + address, size); debug("%02x.%02x.%02x: u%d %x (%lx) -> %lx\n", PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, @@ -247,13 +227,12 @@ static int octeontx2_pem_write_config(struct udevice *bus, pci_dev_t bdf, struct pci_controller *hose = dev_get_uclass_priv(bus); uintptr_t address; - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 0, - bdf, 0); - if (octeontx_bdf_invalid(bdf)) return -EPERM; - writel_size(address + offset, size, value); + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, + PCI_DEV(bdf), PCI_FUNC(bdf), offset); + writel_size(pcie->cfg.start + address, size, value); debug("%02x.%02x.%02x: u%d %x (%lx) <- %lx\n", PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, -- 2.20.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 4/4] pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 ` [PATCH u-boot-next 4/4] pci: pci_octeontx: " Pali Rohár @ 2021-12-16 14:02 ` Stefan Roese 2022-01-13 1:51 ` Tom Rini 1 sibling, 0 replies; 12+ messages in thread From: Stefan Roese @ 2021-12-16 14:02 UTC (permalink / raw) To: Pali Rohár, Simon Glass, Bin Meng; +Cc: u-boot On 11/24/21 18:00, Pali Rohár wrote: > Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h > > Signed-off-by: Pali Rohár <pali@kernel.org> > --- > drivers/pci/pci_octeontx.c | 61 +++++++++++++------------------------- > 1 file changed, 20 insertions(+), 41 deletions(-) Nice diffstat. Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > diff --git a/drivers/pci/pci_octeontx.c b/drivers/pci/pci_octeontx.c > index 46855c5cd3a3..875cf7f7115d 100644 > --- a/drivers/pci/pci_octeontx.c > +++ b/drivers/pci/pci_octeontx.c > @@ -49,25 +49,6 @@ struct octeontx_pci { > struct resource bus; > }; > > -static uintptr_t octeontx_cfg_addr(struct octeontx_pci *pcie, > - int bus_offs, int shift_offs, > - pci_dev_t bdf, uint offset) > -{ > - u32 bus, dev, func; > - uintptr_t address; > - > - bus = PCI_BUS(bdf) + bus_offs; > - dev = PCI_DEV(bdf); > - func = PCI_FUNC(bdf); > - > - address = (bus << (20 + shift_offs)) | > - (dev << (15 + shift_offs)) | > - (func << (12 + shift_offs)) | offset; > - address += pcie->cfg.start; > - > - return address; > -} > - > static ulong readl_size(uintptr_t addr, enum pci_size_t size) > { > ulong val; > @@ -123,9 +104,9 @@ static int octeontx_ecam_read_config(const struct udevice *bus, pci_dev_t bdf, > struct pci_controller *hose = dev_get_uclass_priv(bus); > uintptr_t address; > > - address = octeontx_cfg_addr(pcie, pcie->bus.start - hose->first_busno, > - 0, bdf, offset); > - *valuep = readl_size(address, size); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + pcie->bus.start - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), offset); > + *valuep = readl_size(pcie->cfg.start + address, size); > > debug("%02x.%02x.%02x: u%d %x -> %lx\n", > PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, *valuep); > @@ -141,9 +122,9 @@ static int octeontx_ecam_write_config(struct udevice *bus, pci_dev_t bdf, > struct pci_controller *hose = dev_get_uclass_priv(bus); > uintptr_t address; > > - address = octeontx_cfg_addr(pcie, pcie->bus.start - hose->first_busno, > - 0, bdf, offset); > - writel_size(address, size, value); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + pcie->bus.start - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), offset); > + writel_size(pcie->cfg.start + address, size, value); > > debug("%02x.%02x.%02x: u%d %x <- %lx\n", > PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, value); > @@ -162,17 +143,16 @@ static int octeontx_pem_read_config(const struct udevice *bus, pci_dev_t bdf, > u8 pri_bus = pcie->bus.start + 1 - hose->first_busno; > u32 bus_offs = (pri_bus << 16) | (pri_bus << 8) | (pri_bus << 0); > > - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 4, > - bdf, 0); > - > *valuep = pci_conv_32_to_size(~0UL, offset, size); > > if (octeontx_bdf_invalid(bdf)) > return -EPERM; > > - *valuep = readl_size(address + offset, size); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), 0) << 4; > + *valuep = readl_size(pcie->cfg.start + address + offset, size); > > - hdrtype = readb(address + PCI_HEADER_TYPE); > + hdrtype = readb(pcie->cfg.start + address + PCI_HEADER_TYPE); > if (hdrtype == PCI_HEADER_TYPE_BRIDGE && > offset >= PCI_PRIMARY_BUS && > offset <= PCI_SUBORDINATE_BUS && > @@ -193,9 +173,10 @@ static int octeontx_pem_write_config(struct udevice *bus, pci_dev_t bdf, > u8 pri_bus = pcie->bus.start + 1 - hose->first_busno; > u32 bus_offs = (pri_bus << 16) | (pri_bus << 8) | (pri_bus << 0); > > - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 4, bdf, 0); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), 0) << 4; > > - hdrtype = readb(address + PCI_HEADER_TYPE); > + hdrtype = readb(pcie->cfg.start + address + PCI_HEADER_TYPE); > if (hdrtype == PCI_HEADER_TYPE_BRIDGE && > offset >= PCI_PRIMARY_BUS && > offset <= PCI_SUBORDINATE_BUS && > @@ -205,7 +186,7 @@ static int octeontx_pem_write_config(struct udevice *bus, pci_dev_t bdf, > if (octeontx_bdf_invalid(bdf)) > return -EPERM; > > - writel_size(address + offset, size, value); > + writel_size(pcie->cfg.start + address + offset, size, value); > > debug("%02x.%02x.%02x: u%d %x (%lx) <- %lx\n", > PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, > @@ -222,15 +203,14 @@ static int octeontx2_pem_read_config(const struct udevice *bus, pci_dev_t bdf, > struct pci_controller *hose = dev_get_uclass_priv(bus); > uintptr_t address; > > - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 0, > - bdf, 0); > - > *valuep = pci_conv_32_to_size(~0UL, offset, size); > > if (octeontx_bdf_invalid(bdf)) > return -EPERM; > > - *valuep = readl_size(address + offset, size); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), offset); > + *valuep = readl_size(pcie->cfg.start + address, size); > > debug("%02x.%02x.%02x: u%d %x (%lx) -> %lx\n", > PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, > @@ -247,13 +227,12 @@ static int octeontx2_pem_write_config(struct udevice *bus, pci_dev_t bdf, > struct pci_controller *hose = dev_get_uclass_priv(bus); > uintptr_t address; > > - address = octeontx_cfg_addr(pcie, 1 - hose->first_busno, 0, > - bdf, 0); > - > if (octeontx_bdf_invalid(bdf)) > return -EPERM; > > - writel_size(address + offset, size, value); > + address = PCIE_ECAM_OFFSET(PCI_BUS(bdf) + 1 - hose->first_busno, > + PCI_DEV(bdf), PCI_FUNC(bdf), offset); > + writel_size(pcie->cfg.start + address, size, value); > > debug("%02x.%02x.%02x: u%d %x (%lx) <- %lx\n", > PCI_BUS(bdf), PCI_DEV(bdf), PCI_FUNC(bdf), size, offset, > Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 4/4] pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 ` [PATCH u-boot-next 4/4] pci: pci_octeontx: " Pali Rohár 2021-12-16 14:02 ` Stefan Roese @ 2022-01-13 1:51 ` Tom Rini 1 sibling, 0 replies; 12+ messages in thread From: Tom Rini @ 2022-01-13 1:51 UTC (permalink / raw) To: Pali Rohár; +Cc: Stefan Roese, Simon Glass, Bin Meng, u-boot [-- Attachment #1: Type: text/plain, Size: 276 bytes --] On Wed, Nov 24, 2021 at 06:00:33PM +0100, Pali Rohár wrote: > Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h > > Signed-off-by: Pali Rohár <pali@kernel.org> > Reviewed-by: Stefan Roese <sr@denx.de> Applied to u-boot/master, thanks! -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár ` (3 preceding siblings ...) 2021-11-24 17:00 ` [PATCH u-boot-next 4/4] pci: pci_octeontx: " Pali Rohár @ 2021-12-16 11:28 ` Pali Rohár 4 siblings, 0 replies; 12+ messages in thread From: Pali Rohár @ 2021-12-16 11:28 UTC (permalink / raw) To: Stefan Roese, Simon Glass, Bin Meng, David Feng, Liviu Dudau, Nicolas Saenz Julienne, Matthias Brugger, Bharat Gooty Cc: u-boot Hello! Could you please look at this patch series? On Wednesday 24 November 2021 18:00:29 Pali Rohár wrote: > This patch series replace usage of custom driver functions and macros by > PCIE_ECAM_OFFSET() macro provided by U-Boot pci.h header file. > > Please properly review these patches as I do not have hardware with these > drivers for testing. > > Support for PCIE_ECAM_OFFSET() macro is in U-Boot next branch. > > Pali Rohár (4): > vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET > pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro > pci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro > pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro > > board/armltd/vexpress64/pcie.c | 4 --- > drivers/pci/pci_octeontx.c | 61 +++++++++++----------------------- > drivers/pci/pcie_brcmstb.c | 7 +--- > drivers/pci/pcie_iproc.c | 17 ++-------- > 4 files changed, 24 insertions(+), 65 deletions(-) > > -- > 2.20.1 > ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2022-01-13 1:51 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-11-24 17:00 [PATCH u-boot-next 0/4] pci: Use PCIE_ECAM_OFFSET() macro Pali Rohár 2021-11-24 17:00 ` [PATCH u-boot-next 1/4] vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET Pali Rohár 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 2/4] pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro Pali Rohár 2021-11-30 12:09 ` nicolas saenz julienne 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 3/4] pci: pcie_iproc: " Pali Rohár 2022-01-13 1:50 ` Tom Rini 2021-11-24 17:00 ` [PATCH u-boot-next 4/4] pci: pci_octeontx: " Pali Rohár 2021-12-16 14:02 ` Stefan Roese 2022-01-13 1:51 ` Tom Rini 2021-12-16 11:28 ` [PATCH u-boot-next 0/4] pci: " Pali Rohár
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).