diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/pci/host/pci-mvebu.c | 19 | 
1 files changed, 15 insertions, 4 deletions
| diff --git a/drivers/pci/host/pci-mvebu.c b/drivers/pci/host/pci-mvebu.c index 9236ac0bd17b..b8c95a293f64 100644 --- a/drivers/pci/host/pci-mvebu.c +++ b/drivers/pci/host/pci-mvebu.c @@ -51,6 +51,7 @@  #define  PCIE_CTRL_X1_MODE		0x0001  #define PCIE_STAT_OFF		0x1a04  #define  PCIE_STAT_BUS                  0xff00 +#define  PCIE_STAT_DEV                  0x1f0000  #define  PCIE_STAT_LINK_DOWN		BIT(0)  #define PCIE_DEBUG_CTRL         0x1a60  #define  PCIE_DEBUG_SOFT_RESET		BIT(20) @@ -148,6 +149,16 @@ static void mvebu_pcie_set_local_bus_nr(struct mvebu_pcie_port *port, int nr)  	writel(stat, port->base + PCIE_STAT_OFF);  } +static void mvebu_pcie_set_local_dev_nr(struct mvebu_pcie_port *port, int nr) +{ +	u32 stat; + +	stat = readl(port->base + PCIE_STAT_OFF); +	stat &= ~PCIE_STAT_DEV; +	stat |= nr << 16; +	writel(stat, port->base + PCIE_STAT_OFF); +} +  /*   * Setup PCIE BARs and Address Decode Wins:   * BAR[0,2] -> disabled, BAR[1] -> covers all DRAM banks @@ -572,8 +583,7 @@ static int mvebu_pcie_wr_conf(struct pci_bus *bus, u32 devfn,  	/* Access the real PCIe interface */  	spin_lock_irqsave(&port->conf_lock, flags); -	ret = mvebu_pcie_hw_wr_conf(port, bus, -				    PCI_DEVFN(1, PCI_FUNC(devfn)), +	ret = mvebu_pcie_hw_wr_conf(port, bus, devfn,  				    where, size, val);  	spin_unlock_irqrestore(&port->conf_lock, flags); @@ -606,8 +616,7 @@ static int mvebu_pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,  	/* Access the real PCIe interface */  	spin_lock_irqsave(&port->conf_lock, flags); -	ret = mvebu_pcie_hw_rd_conf(port, bus, -				    PCI_DEVFN(1, PCI_FUNC(devfn)), +	ret = mvebu_pcie_hw_rd_conf(port, bus, devfn,  				    where, size, val);  	spin_unlock_irqrestore(&port->conf_lock, flags); @@ -817,6 +826,8 @@ static int __init mvebu_pcie_probe(struct platform_device *pdev)  			continue;  		} +		mvebu_pcie_set_local_dev_nr(port, 1); +  		if (mvebu_pcie_link_up(port)) {  			port->haslink = 1;  			dev_info(&pdev->dev, "PCIe%d.%d: link up\n", | 
