dm: pci: change bus number register setting compliant with Linux
Subsystems (2)
PATCH v2 1/1 dm: pci: change bus number register setting compliant with Linux
From: Minghuan Lian <[email protected]>
This patch is to change U-Boot PCI bus assignement compliant with Linux. It means each PCIe controller's bus number is 0, not the current maximum PCI bus number, when start to scan this controller.
---
V2:
- Change uboot to U-Boot in commit message.
drivers/pci/pci_auto.c | 6 +++--- drivers/pci/pcie_dw_mvebu.c | 1 + drivers/pci/pcie_layerscape.c | 2 +- drivers/pci/pcie_xilinx.c | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-)
drivers/pci/pci_auto.c +3 -3
@@ -181,8 +181,8 @@ void dm_pciauto_prescan_setup_bridge(struct udevice *dev, int sub_bus)/* Configure bus number registers */ dm_pci_write_config8 (dev,PCI_PRIMARY_BUS , -PCI_BUS (dm_pci_get_bdf (dev))); -dm_pci_write_config8 (dev,PCI_SECONDARY_BUS , sub_bus); +PCI_BUS (dm_pci_get_bdf (dev)) - ctlr->seq); +dm_pci_write_config8 (dev,PCI_SECONDARY_BUS , sub_bus - ctlr->seq);dm_pci_write_config8 (dev,PCI_SUBORDINATE_BUS ,0xff );if (pci_mem) {
@@ -257,7 +257,7 @@ void dm_pciauto_postscan_setup_bridge(struct udevice *dev, int sub_bus) pci_io = ctlr_hose->pci_io;/* Configure bus number registers */ -dm_pci_write_config8 (dev,PCI_SUBORDINATE_BUS , sub_bus); +dm_pci_write_config8 (dev,PCI_SUBORDINATE_BUS , sub_bus - ctlr->seq);if (pci_mem) {/* Round memory allocator to 1MB boundary */
drivers/pci/pcie_dw_mvebu.c +1 -0
@@ -162,6 +162,7 @@ static uintptr_t set_cfg_address(struct pcie_dw_mvebu *pcie,/* Accessing root port configuration space. */ va_address = (uintptr_t )pcie->ctrl_base; }else { + d =PCI_MASK_BUS (d) | (PCI_BUS (d) - pcie->first_busno);writel (d <<8 , pcie->ctrl_base +PCIE_ATU_LOWER_TARGET ); va_address = (uintptr_t )pcie->cfg_base; }
drivers/pci/pcie_layerscape.c +1 -1
@@ -250,7 +250,7 @@ void *ls_pcie_conf_address(struct ls_pcie *pcie, pci_dev_t bdf,if (PCI_BUS (bdf) == bus->seq)return pcie->dbi + offset; - busdev =PCIE_ATU_BUS (PCI_BUS (bdf)) | + busdev =PCIE_ATU_BUS (PCI_BUS (bdf) - bus->seq) |PCIE_ATU_DEV (PCI_DEV (bdf)) |PCIE_ATU_FUNC (PCI_FUNC (bdf));
drivers/pci/pcie_xilinx.c +2 -0
@@ -105,6 +105,7 @@ static int pcie_xilinx_read_config(struct udevice *bus, pci_dev_t bdf,void *address;int err; + bdf =PCI_MASK_BUS (bdf) | (PCI_BUS (bdf) - bus->seq); err =pcie_xilinx_config_address (pcie, bdf, offset, &address);if (err <0 ) { *valuep =pci_get_ff (size);
@@ -148,6 +149,7 @@ static int pcie_xilinx_write_config(struct udevice *bus, pci_dev_t bdf,void *address;int err; + bdf =PCI_MASK_BUS (bdf) | (PCI_BUS (bdf) - bus->seq); err =pcie_xilinx_config_address (pcie, bdf, offset, &address);if (err <0 )return 0 ;
Signature · 1 line
2.14.1
PATCH v2 1/1 dm: pci: change bus number register setting compliant with Linux
Quoted 12 lines · Zhiqiang Hou
From: Minghuan Lian <[email protected]>
This patch is to change U-Boot PCI bus assignement compliant with Linux. It means each PCIe controller's bus number is 0, not the current maximum PCI bus number, when start to scan this controller.
Signed-off-by Minghuan Lian <[email protected]>Signed-off-by Hou Zhiqiang <[email protected]>---
V2:
- Change uboot to U-Boot in commit message.
Quoted 6 lines
drivers/pci/pci_auto.c | 6 +++--- drivers/pci/pcie_dw_mvebu.c | 1 + drivers/pci/pcie_layerscape.c | 2 +- drivers/pci/pcie_xilinx.c | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-)
PATCH v2 1/1 dm: pci: change bus number register setting compliant with Linux
In reply to Zhiqiang HouQuoted 9 lines · Zhiqiang Hou
From: Minghuan Lian <[email protected]>
This patch is to change U-Boot PCI bus assignement compliant with Linux. It means each PCIe controller's bus number is 0, not the current maximum PCI bus number, when start to scan this controller.
Signed-off-by Minghuan Lian <[email protected]>Signed-off-by Hou Zhiqiang <[email protected]>Reviewed-by Bin Meng <[email protected]>
With the Xilinx hunk dropped (no longer applicable), applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171117/3ea359ce/attachment.sig>