Commit 3e4240da authored by Andrew Lunn's avatar Andrew Lunn Committed by Tejun Heo

Revert "ata: sata_mv: Convert to devm_ioremap_resource()"

This reverts commit 368e5fbd.

devm_ioremap_resource() enforces that there are no overlapping
resources, where as devm_ioremap() does not. The sata phy driver needs
a subset of the sata IO address space, so maps some of the sata
address space. As a result, sata_mv now fails to probe, reporting it
cannot get its resources, and so we don't have any SATA disks.
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Acked-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
Cc: stable@vger.kernel.org # v4.11+
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent c034640a
...@@ -4067,7 +4067,6 @@ static int mv_platform_probe(struct platform_device *pdev) ...@@ -4067,7 +4067,6 @@ static int mv_platform_probe(struct platform_device *pdev)
struct ata_host *host; struct ata_host *host;
struct mv_host_priv *hpriv; struct mv_host_priv *hpriv;
struct resource *res; struct resource *res;
void __iomem *mmio;
int n_ports = 0, irq = 0; int n_ports = 0, irq = 0;
int rc; int rc;
int port; int port;
...@@ -4086,9 +4085,8 @@ static int mv_platform_probe(struct platform_device *pdev) ...@@ -4086,9 +4085,8 @@ static int mv_platform_probe(struct platform_device *pdev)
* Get the register base first * Get the register base first
*/ */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
mmio = devm_ioremap_resource(&pdev->dev, res); if (res == NULL)
if (IS_ERR(mmio)) return -EINVAL;
return PTR_ERR(mmio);
/* allocate host */ /* allocate host */
if (pdev->dev.of_node) { if (pdev->dev.of_node) {
...@@ -4132,7 +4130,12 @@ static int mv_platform_probe(struct platform_device *pdev) ...@@ -4132,7 +4130,12 @@ static int mv_platform_probe(struct platform_device *pdev)
hpriv->board_idx = chip_soc; hpriv->board_idx = chip_soc;
host->iomap = NULL; host->iomap = NULL;
hpriv->base = mmio - SATAHC0_REG_BASE; hpriv->base = devm_ioremap(&pdev->dev, res->start,
resource_size(res));
if (!hpriv->base)
return -ENOMEM;
hpriv->base -= SATAHC0_REG_BASE;
hpriv->clk = clk_get(&pdev->dev, NULL); hpriv->clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(hpriv->clk)) if (IS_ERR(hpriv->clk))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment