Commit 0ad902aa authored by Mark Brown's avatar Mark Brown

spi: s3c64xx: Cleanups

Merge series from Andi Shyti <andi.shyti@kernel.org>:

Two small cleanups in the probe function. The first puts in use
the managed spi master allocation while the second implements the
dev_err_probe() function.
parents 5b6d0b91 b4f27377
...@@ -1160,29 +1160,23 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) ...@@ -1160,29 +1160,23 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
return PTR_ERR(sci); return PTR_ERR(sci);
} }
if (!sci) { if (!sci)
dev_err(&pdev->dev, "platform_data missing!\n"); return dev_err_probe(&pdev->dev, -ENODEV,
return -ENODEV; "Platform_data missing!\n");
}
mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (mem_res == NULL) { if (!mem_res)
dev_err(&pdev->dev, "Unable to get SPI MEM resource\n"); return dev_err_probe(&pdev->dev, -ENXIO,
return -ENXIO; "Unable to get SPI MEM resource\n");
}
irq = platform_get_irq(pdev, 0); irq = platform_get_irq(pdev, 0);
if (irq < 0) { if (irq < 0)
dev_warn(&pdev->dev, "Failed to get IRQ: %d\n", irq); return dev_err_probe(&pdev->dev, irq, "Failed to get IRQ\n");
return irq;
}
master = spi_alloc_master(&pdev->dev, master = devm_spi_alloc_master(&pdev->dev, sizeof(*sdd));
sizeof(struct s3c64xx_spi_driver_data)); if (!master)
if (master == NULL) { return dev_err_probe(&pdev->dev, -ENOMEM,
dev_err(&pdev->dev, "Unable to allocate SPI Master\n"); "Unable to allocate SPI Master\n");
return -ENOMEM;
}
platform_set_drvdata(pdev, master); platform_set_drvdata(pdev, master);
...@@ -1194,11 +1188,9 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) ...@@ -1194,11 +1188,9 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
sdd->sfr_start = mem_res->start; sdd->sfr_start = mem_res->start;
if (pdev->dev.of_node) { if (pdev->dev.of_node) {
ret = of_alias_get_id(pdev->dev.of_node, "spi"); ret = of_alias_get_id(pdev->dev.of_node, "spi");
if (ret < 0) { if (ret < 0)
dev_err(&pdev->dev, "failed to get alias id, errno %d\n", return dev_err_probe(&pdev->dev, ret,
ret); "Failed to get alias id\n");
goto err_deref_master;
}
sdd->port_id = ret; sdd->port_id = ret;
} else { } else {
sdd->port_id = pdev->id; sdd->port_id = pdev->id;
...@@ -1232,41 +1224,31 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) ...@@ -1232,41 +1224,31 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
master->can_dma = s3c64xx_spi_can_dma; master->can_dma = s3c64xx_spi_can_dma;
sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res); sdd->regs = devm_ioremap_resource(&pdev->dev, mem_res);
if (IS_ERR(sdd->regs)) { if (IS_ERR(sdd->regs))
ret = PTR_ERR(sdd->regs); return PTR_ERR(sdd->regs);
goto err_deref_master;
}
if (sci->cfg_gpio && sci->cfg_gpio()) { if (sci->cfg_gpio && sci->cfg_gpio())
dev_err(&pdev->dev, "Unable to config gpio\n"); return dev_err_probe(&pdev->dev, -EBUSY,
ret = -EBUSY; "Unable to config gpio\n");
goto err_deref_master;
}
/* Setup clocks */ /* Setup clocks */
sdd->clk = devm_clk_get_enabled(&pdev->dev, "spi"); sdd->clk = devm_clk_get_enabled(&pdev->dev, "spi");
if (IS_ERR(sdd->clk)) { if (IS_ERR(sdd->clk))
dev_err(&pdev->dev, "Unable to acquire clock 'spi'\n"); return dev_err_probe(&pdev->dev, PTR_ERR(sdd->clk),
ret = PTR_ERR(sdd->clk); "Unable to acquire clock 'spi'\n");
goto err_deref_master;
}
sprintf(clk_name, "spi_busclk%d", sci->src_clk_nr); sprintf(clk_name, "spi_busclk%d", sci->src_clk_nr);
sdd->src_clk = devm_clk_get_enabled(&pdev->dev, clk_name); sdd->src_clk = devm_clk_get_enabled(&pdev->dev, clk_name);
if (IS_ERR(sdd->src_clk)) { if (IS_ERR(sdd->src_clk))
dev_err(&pdev->dev, return dev_err_probe(&pdev->dev, PTR_ERR(sdd->src_clk),
"Unable to acquire clock '%s'\n", clk_name); "Unable to acquire clock '%s'\n",
ret = PTR_ERR(sdd->src_clk); clk_name);
goto err_deref_master;
}
if (sdd->port_conf->clk_ioclk) { if (sdd->port_conf->clk_ioclk) {
sdd->ioclk = devm_clk_get_enabled(&pdev->dev, "spi_ioclk"); sdd->ioclk = devm_clk_get_enabled(&pdev->dev, "spi_ioclk");
if (IS_ERR(sdd->ioclk)) { if (IS_ERR(sdd->ioclk))
dev_err(&pdev->dev, "Unable to acquire 'ioclk'\n"); return dev_err_probe(&pdev->dev, PTR_ERR(sdd->ioclk),
ret = PTR_ERR(sdd->ioclk); "Unable to acquire 'ioclk'\n");
goto err_deref_master;
}
} }
pm_runtime_set_autosuspend_delay(&pdev->dev, AUTOSUSPEND_TIMEOUT); pm_runtime_set_autosuspend_delay(&pdev->dev, AUTOSUSPEND_TIMEOUT);
...@@ -1314,9 +1296,6 @@ static int s3c64xx_spi_probe(struct platform_device *pdev) ...@@ -1314,9 +1296,6 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev); pm_runtime_disable(&pdev->dev);
pm_runtime_set_suspended(&pdev->dev); pm_runtime_set_suspended(&pdev->dev);
err_deref_master:
spi_master_put(master);
return ret; return ret;
} }
......
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