mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ARM/PCI: Move to generic PCI domains
Most if not all ARM PCI host controller device drivers either ignore the domain field in the pci_sys_data structure or just increment it every time a host controller is probed, using it as a domain counter. Therefore, instead of relying on pci_sys_data to stash the domain number in a standard location, ARM pcibios code can be moved to the newly introduced generic PCI domains code, implemented in commits:41e5c0f81d("of/pci: Add pci_get_new_domain_nr() and of_get_pci_domain_nr()")670ba0c888("PCI: Add generic domain handling") ARM code is made to select PCI_DOMAINS_GENERIC by default, which builds core PCI code that assigns the domain number through the generic function: void pci_bus_assign_domain_nr(...) that relies on a DT property to define the domain number or falls back to a counter according to a predefined logic; its usage replaces the current domain assignment code in PCI host controllers present in the kernel. Tested-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Yijing Wang <wangyijing@huawei.com> Reviewed-By: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> # mvebu Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Lucas Stach <l.stach@pengutronix.de> Acked-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Phil Edworthy <phil.edworthy@renesas.com> Acked-by: Arnd Bergmann <arnd@arndb.de> CC: Mohit Kumar <mohit.kumar@st.com>
This commit is contained in:
		
							parent
							
								
									c88d54ba0c
								
							
						
					
					
						commit
						8c7d14746a
					
				
					 7 changed files with 5 additions and 35 deletions
				
			
		| 
						 | 
				
			
			@ -1279,6 +1279,9 @@ config PCI_DOMAINS
 | 
			
		|||
	bool
 | 
			
		||||
	depends on PCI
 | 
			
		||||
 | 
			
		||||
config PCI_DOMAINS_GENERIC
 | 
			
		||||
	def_bool PCI_DOMAINS
 | 
			
		||||
 | 
			
		||||
config PCI_NANOENGINE
 | 
			
		||||
	bool "BSE nanoEngine PCI support"
 | 
			
		||||
	depends on SA1100_NANOENGINE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,9 +19,6 @@ struct pci_bus;
 | 
			
		|||
struct device;
 | 
			
		||||
 | 
			
		||||
struct hw_pci {
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
	int		domain;
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCI_MSI
 | 
			
		||||
	struct msi_controller *msi_ctrl;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -45,9 +42,6 @@ struct hw_pci {
 | 
			
		|||
 * Per-controller structure
 | 
			
		||||
 */
 | 
			
		||||
struct pci_sys_data {
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
	int		domain;
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCI_MSI
 | 
			
		||||
	struct msi_controller *msi_ctrl;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,13 +18,6 @@ static inline int pcibios_assign_all_busses(void)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
static inline int pci_domain_nr(struct pci_bus *bus)
 | 
			
		||||
{
 | 
			
		||||
	struct pci_sys_data *root = bus->sysdata;
 | 
			
		||||
 | 
			
		||||
	return root->domain;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline int pci_proc_domain(struct pci_bus *bus)
 | 
			
		||||
{
 | 
			
		||||
	return pci_domain_nr(bus);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -463,9 +463,6 @@ static void pcibios_init_hw(struct device *parent, struct hw_pci *hw,
 | 
			
		|||
		if (!sys)
 | 
			
		||||
			panic("PCI: unable to allocate sys data!");
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
		sys->domain  = hw->domain;
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_PCI_MSI
 | 
			
		||||
		sys->msi_ctrl = hw->msi_ctrl;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,9 +101,7 @@ struct mvebu_pcie {
 | 
			
		|||
	struct mvebu_pcie_port *ports;
 | 
			
		||||
	struct msi_controller *msi;
 | 
			
		||||
	struct resource io;
 | 
			
		||||
	char io_name[30];
 | 
			
		||||
	struct resource realio;
 | 
			
		||||
	char mem_name[30];
 | 
			
		||||
	struct resource mem;
 | 
			
		||||
	struct resource busn;
 | 
			
		||||
	int nports;
 | 
			
		||||
| 
						 | 
				
			
			@ -723,18 +721,9 @@ static int mvebu_pcie_setup(int nr, struct pci_sys_data *sys)
 | 
			
		|||
{
 | 
			
		||||
	struct mvebu_pcie *pcie = sys_to_pcie(sys);
 | 
			
		||||
	int i;
 | 
			
		||||
	int domain = 0;
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
	domain = sys->domain;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	snprintf(pcie->mem_name, sizeof(pcie->mem_name), "PCI MEM %04x",
 | 
			
		||||
		 domain);
 | 
			
		||||
	pcie->mem.name = pcie->mem_name;
 | 
			
		||||
 | 
			
		||||
	snprintf(pcie->io_name, sizeof(pcie->io_name), "PCI I/O %04x", domain);
 | 
			
		||||
	pcie->realio.name = pcie->io_name;
 | 
			
		||||
	pcie->mem.name = "PCI MEM";
 | 
			
		||||
	pcie->realio.name = "PCI I/O";
 | 
			
		||||
 | 
			
		||||
	if (request_resource(&iomem_resource, &pcie->mem))
 | 
			
		||||
		return 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -508,9 +508,6 @@ int __init dw_pcie_host_init(struct pcie_port *pp)
 | 
			
		|||
	dw_pci.private_data = (void **)&pp;
 | 
			
		||||
 | 
			
		||||
	pci_common_init_dev(pp->dev, &dw_pci);
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
	dw_pci.domain++;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -397,9 +397,6 @@ static void rcar_pcie_enable(struct rcar_pcie *pcie)
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
	pci_common_init_dev(&pdev->dev, &rcar_pci);
 | 
			
		||||
#ifdef CONFIG_PCI_DOMAINS
 | 
			
		||||
	rcar_pci.domain++;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int phy_wait_for_ack(struct rcar_pcie *pcie)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue