diff options
Diffstat (limited to 'drivers/pci/controller/pci-tegra.c')
| -rw-r--r-- | drivers/pci/controller/pci-tegra.c | 79 | 
1 files changed, 8 insertions, 71 deletions
| diff --git a/drivers/pci/controller/pci-tegra.c b/drivers/pci/controller/pci-tegra.c index 235b456698fc..c1d34353c29b 100644 --- a/drivers/pci/controller/pci-tegra.c +++ b/drivers/pci/controller/pci-tegra.c @@ -181,13 +181,6 @@  #define AFI_PEXBIAS_CTRL_0		0x168 -#define RP_PRIV_XP_DL		0x00000494 -#define  RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD	(0x1ff << 1) - -#define RP_RX_HDR_LIMIT		0x00000e00 -#define  RP_RX_HDR_LIMIT_PW_MASK	(0xff << 8) -#define  RP_RX_HDR_LIMIT_PW		(0x0e << 8) -  #define RP_ECTL_2_R1	0x00000e84  #define  RP_ECTL_2_R1_RX_CTLE_1C_MASK		0xffff @@ -323,7 +316,6 @@ struct tegra_pcie_soc {  	bool program_uphy;  	bool update_clamp_threshold;  	bool program_deskew_time; -	bool raw_violation_fixup;  	bool update_fc_timer;  	bool has_cache_bars;  	struct { @@ -659,23 +651,6 @@ static void tegra_pcie_apply_sw_fixup(struct tegra_pcie_port *port)  		writel(value, port->base + RP_VEND_CTL0);  	} -	/* Fixup for read after write violation. */ -	if (soc->raw_violation_fixup) { -		value = readl(port->base + RP_RX_HDR_LIMIT); -		value &= ~RP_RX_HDR_LIMIT_PW_MASK; -		value |= RP_RX_HDR_LIMIT_PW; -		writel(value, port->base + RP_RX_HDR_LIMIT); - -		value = readl(port->base + RP_PRIV_XP_DL); -		value |= RP_PRIV_XP_DL_GEN2_UPD_FC_TSHOLD; -		writel(value, port->base + RP_PRIV_XP_DL); - -		value = readl(port->base + RP_VEND_XP); -		value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK; -		value |= soc->update_fc_threshold; -		writel(value, port->base + RP_VEND_XP); -	} -  	if (soc->update_fc_timer) {  		value = readl(port->base + RP_VEND_XP);  		value &= ~RP_VEND_XP_UPDATE_FC_THRESHOLD_MASK; @@ -1462,7 +1437,7 @@ static int tegra_pcie_get_resources(struct tegra_pcie *pcie)  {  	struct device *dev = pcie->dev;  	struct platform_device *pdev = to_platform_device(dev); -	struct resource *pads, *afi, *res; +	struct resource *res;  	const struct tegra_pcie_soc *soc = pcie->soc;  	int err; @@ -1486,15 +1461,13 @@ static int tegra_pcie_get_resources(struct tegra_pcie *pcie)  		}  	} -	pads = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pads"); -	pcie->pads = devm_ioremap_resource(dev, pads); +	pcie->pads = devm_platform_ioremap_resource_byname(pdev, "pads");  	if (IS_ERR(pcie->pads)) {  		err = PTR_ERR(pcie->pads);  		goto phys_put;  	} -	afi = platform_get_resource_byname(pdev, IORESOURCE_MEM, "afi"); -	pcie->afi = devm_ioremap_resource(dev, afi); +	pcie->afi = devm_platform_ioremap_resource_byname(pdev, "afi");  	if (IS_ERR(pcie->afi)) {  		err = PTR_ERR(pcie->afi);  		goto phys_put; @@ -1520,10 +1493,8 @@ static int tegra_pcie_get_resources(struct tegra_pcie *pcie)  	/* request interrupt */  	err = platform_get_irq_byname(pdev, "intr"); -	if (err < 0) { -		dev_err(dev, "failed to get IRQ: %d\n", err); +	if (err < 0)  		goto phys_put; -	}  	pcie->irq = err; @@ -1738,10 +1709,8 @@ static int tegra_pcie_msi_setup(struct tegra_pcie *pcie)  	}  	err = platform_get_irq_byname(pdev, "msi"); -	if (err < 0) { -		dev_err(dev, "failed to get IRQ: %d\n", err); +	if (err < 0)  		goto free_irq_domain; -	}  	msi->irq = err; @@ -2025,7 +1994,7 @@ static int tegra_pcie_get_regulators(struct tegra_pcie *pcie, u32 lane_mask)  		pcie->supplies[i++].supply = "hvdd-pex";  		pcie->supplies[i++].supply = "vddio-pexctl-aud";  	} else if (of_device_is_compatible(np, "nvidia,tegra210-pcie")) { -		pcie->num_supplies = 6; +		pcie->num_supplies = 3;  		pcie->supplies = devm_kcalloc(pcie->dev, pcie->num_supplies,  					      sizeof(*pcie->supplies), @@ -2033,14 +2002,11 @@ static int tegra_pcie_get_regulators(struct tegra_pcie *pcie, u32 lane_mask)  		if (!pcie->supplies)  			return -ENOMEM; -		pcie->supplies[i++].supply = "avdd-pll-uerefe";  		pcie->supplies[i++].supply = "hvddio-pex";  		pcie->supplies[i++].supply = "dvddio-pex"; -		pcie->supplies[i++].supply = "dvdd-pex-pll"; -		pcie->supplies[i++].supply = "hvdd-pex-pll-e";  		pcie->supplies[i++].supply = "vddio-pex-ctl";  	} else if (of_device_is_compatible(np, "nvidia,tegra124-pcie")) { -		pcie->num_supplies = 7; +		pcie->num_supplies = 4;  		pcie->supplies = devm_kcalloc(dev, pcie->num_supplies,  					      sizeof(*pcie->supplies), @@ -2050,11 +2016,8 @@ static int tegra_pcie_get_regulators(struct tegra_pcie *pcie, u32 lane_mask)  		pcie->supplies[i++].supply = "avddio-pex";  		pcie->supplies[i++].supply = "dvddio-pex"; -		pcie->supplies[i++].supply = "avdd-pex-pll";  		pcie->supplies[i++].supply = "hvdd-pex"; -		pcie->supplies[i++].supply = "hvdd-pex-pll-e";  		pcie->supplies[i++].supply = "vddio-pex-ctl"; -		pcie->supplies[i++].supply = "avdd-pll-erefe";  	} else if (of_device_is_compatible(np, "nvidia,tegra30-pcie")) {  		bool need_pexa = false, need_pexb = false; @@ -2416,7 +2379,6 @@ static const struct tegra_pcie_soc tegra20_pcie = {  	.program_uphy = true,  	.update_clamp_threshold = false,  	.program_deskew_time = false, -	.raw_violation_fixup = false,  	.update_fc_timer = false,  	.has_cache_bars = true,  	.ectl.enable = false, @@ -2446,7 +2408,6 @@ static const struct tegra_pcie_soc tegra30_pcie = {  	.program_uphy = true,  	.update_clamp_threshold = false,  	.program_deskew_time = false, -	.raw_violation_fixup = false,  	.update_fc_timer = false,  	.has_cache_bars = false,  	.ectl.enable = false, @@ -2459,8 +2420,6 @@ static const struct tegra_pcie_soc tegra124_pcie = {  	.pads_pll_ctl = PADS_PLL_CTL_TEGRA30,  	.tx_ref_sel = PADS_PLL_CTL_TXCLKREF_BUF_EN,  	.pads_refclk_cfg0 = 0x44ac44ac, -	/* FC threshold is bit[25:18] */ -	.update_fc_threshold = 0x03fc0000,  	.has_pex_clkreq_en = true,  	.has_pex_bias_ctrl = true,  	.has_intr_prsnt_sense = true, @@ -2470,7 +2429,6 @@ static const struct tegra_pcie_soc tegra124_pcie = {  	.program_uphy = true,  	.update_clamp_threshold = true,  	.program_deskew_time = false, -	.raw_violation_fixup = true,  	.update_fc_timer = false,  	.has_cache_bars = false,  	.ectl.enable = false, @@ -2494,7 +2452,6 @@ static const struct tegra_pcie_soc tegra210_pcie = {  	.program_uphy = true,  	.update_clamp_threshold = true,  	.program_deskew_time = true, -	.raw_violation_fixup = false,  	.update_fc_timer = true,  	.has_cache_bars = false,  	.ectl = { @@ -2536,7 +2493,6 @@ static const struct tegra_pcie_soc tegra186_pcie = {  	.program_uphy = false,  	.update_clamp_threshold = false,  	.program_deskew_time = false, -	.raw_violation_fixup = false,  	.update_fc_timer = false,  	.has_cache_bars = false,  	.ectl.enable = false, @@ -2670,8 +2626,6 @@ static int tegra_pcie_probe(struct platform_device *pdev)  	struct device *dev = &pdev->dev;  	struct pci_host_bridge *host;  	struct tegra_pcie *pcie; -	struct pci_bus *child; -	struct resource *bus;  	int err;  	host = devm_pci_alloc_host_bridge(dev, sizeof(*pcie)); @@ -2686,12 +2640,6 @@ static int tegra_pcie_probe(struct platform_device *pdev)  	INIT_LIST_HEAD(&pcie->ports);  	pcie->dev = dev; -	err = pci_parse_request_of_pci_ranges(dev, &host->windows, NULL, &bus); -	if (err) { -		dev_err(dev, "Getting bridge resources failed\n"); -		return err; -	} -  	err = tegra_pcie_parse_dt(pcie);  	if (err < 0)  		return err; @@ -2715,26 +2663,15 @@ static int tegra_pcie_probe(struct platform_device *pdev)  		goto pm_runtime_put;  	} -	host->busnr = bus->start; -	host->dev.parent = &pdev->dev;  	host->ops = &tegra_pcie_ops;  	host->map_irq = tegra_pcie_map_irq; -	host->swizzle_irq = pci_common_swizzle; -	err = pci_scan_root_bus_bridge(host); +	err = pci_host_probe(host);  	if (err < 0) {  		dev_err(dev, "failed to register host: %d\n", err);  		goto pm_runtime_put;  	} -	pci_bus_size_bridges(host->bus); -	pci_bus_assign_resources(host->bus); - -	list_for_each_entry(child, &host->bus->children, node) -		pcie_bus_configure_settings(child); - -	pci_bus_add_devices(host->bus); -  	if (IS_ENABLED(CONFIG_DEBUG_FS)) {  		err = tegra_pcie_debugfs_init(pcie);  		if (err < 0) |