pci: pci_mvebu: set BAR0 after memory space is set
The non-DM version of this driver used to set BAR0 register after the calls to pci_set_region. I found out that for some strange reason the ath10k driver in kernel fails to work if this is done the other way around. I know that Linux's driver should not depend on how U-Boot does things, but for some strange reason it does and this seems to be the simplest solution. Fix it since it caused regressions on Omnia. Signed-off-by: Marek Behún <marek.behun@nic.cz> Cc: Stefan Roese <sr@denx.de> Cc: Dirk Eibach <dirk.eibach@gdsys.cc> Cc: Mario Six <mario.six@gdsys.cc> Cc: Chris Packham <chris.packham@alliedtelesis.co.nz> Cc: Phil Sutter <phil@nwl.cc> Cc: VlaoMao <vlaomao@gmail.com> Tested-by: Chris Packham <judge.packham@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
		
							parent
							
								
									6de5a717c7
								
							
						
					
					
						commit
						193a1e9f19
					
				| 
						 | 
					@ -313,10 +313,6 @@ static int mvebu_pcie_probe(struct udevice *dev)
 | 
				
			||||||
	reg |= BIT(10);		/* disable interrupts */
 | 
						reg |= BIT(10);		/* disable interrupts */
 | 
				
			||||||
	writel(reg, pcie->base + PCIE_CMD_OFF);
 | 
						writel(reg, pcie->base + PCIE_CMD_OFF);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Set BAR0 to internal registers */
 | 
					 | 
				
			||||||
	writel(SOC_REGS_PHY_BASE, pcie->base + PCIE_BAR_LO_OFF(0));
 | 
					 | 
				
			||||||
	writel(0, pcie->base + PCIE_BAR_HI_OFF(0));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* PCI memory space */
 | 
						/* PCI memory space */
 | 
				
			||||||
	pci_set_region(hose->regions + 0, pcie->mem.start,
 | 
						pci_set_region(hose->regions + 0, pcie->mem.start,
 | 
				
			||||||
		       pcie->mem.start, PCIE_MEM_SIZE, PCI_REGION_MEM);
 | 
							       pcie->mem.start, PCIE_MEM_SIZE, PCI_REGION_MEM);
 | 
				
			||||||
| 
						 | 
					@ -326,6 +322,10 @@ static int mvebu_pcie_probe(struct udevice *dev)
 | 
				
			||||||
		       PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
 | 
							       PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
 | 
				
			||||||
	hose->region_count = 2;
 | 
						hose->region_count = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Set BAR0 to internal registers */
 | 
				
			||||||
 | 
						writel(SOC_REGS_PHY_BASE, pcie->base + PCIE_BAR_LO_OFF(0));
 | 
				
			||||||
 | 
						writel(0, pcie->base + PCIE_BAR_HI_OFF(0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bus++;
 | 
						bus++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue