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