Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ab65ecd authored by Kumar Gala's avatar Kumar Gala
Browse files

[POWERPC] Added self_busno to indicate which bus number the PHB is



Added self_busno to pci_controller and indirect PCI ops to be set by
board code to indicate which bus number to use when talking to the PHB.
By default we use zero since the majority of controllers that have
implicit mechanisms to talk to the PHBs use a bus number of zero.

Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 2a5ccbc5
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
	struct pci_controller *hose = bus->sysdata;
	volatile void __iomem *cfg_data;
	u8 cfg_type = 0;
	u32 bus_no;

	if (ppc_md.pci_exclude_device)
		if (ppc_md.pci_exclude_device(hose, bus->number, devfn))
@@ -42,8 +43,11 @@ indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
		if (bus->number != hose->first_busno)
			cfg_type = 1;

	bus_no = (bus->number == hose->first_busno) ?
			hose->self_busno : bus->number - hose->bus_offset;

	PCI_CFG_OUT(hose->cfg_addr,
		 (0x80000000 | ((bus->number - hose->bus_offset) << 16)
		 (0x80000000 | (bus_no << 16)
		  | (devfn << 8) | ((offset & 0xfc) | cfg_type)));

	/*
@@ -72,6 +76,7 @@ indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
	struct pci_controller *hose = bus->sysdata;
	volatile void __iomem *cfg_data;
	u8 cfg_type = 0;
	u32 bus_no;

	if (ppc_md.pci_exclude_device)
		if (ppc_md.pci_exclude_device(hose, bus->number, devfn))
@@ -81,8 +86,11 @@ indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
		if (bus->number != hose->first_busno)
			cfg_type = 1;

	bus_no = (bus->number == hose->first_busno) ?
			hose->self_busno : bus->number - hose->bus_offset;

	PCI_CFG_OUT(hose->cfg_addr,
		 (0x80000000 | ((bus->number - hose->bus_offset) << 16)
		 (0x80000000 | (bus_no << 16)
		  | (devfn << 8) | ((offset & 0xfc) | cfg_type)));

	/*
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ struct pci_controller {

	int first_busno;
	int last_busno;
	int self_busno;
	int bus_offset;

	void __iomem *io_base_virt;