|
@@ -1613,6 +1613,11 @@ static int spi_imx_probe(struct platform_device *pdev)
|
|
|
spi_imx->devtype_data->intctrl(spi_imx, 0);
|
|
spi_imx->devtype_data->intctrl(spi_imx, 0);
|
|
|
|
|
|
|
|
master->dev.of_node = pdev->dev.of_node;
|
|
master->dev.of_node = pdev->dev.of_node;
|
|
|
|
|
+ ret = spi_bitbang_start(&spi_imx->bitbang);
|
|
|
|
|
+ if (ret) {
|
|
|
|
|
+ dev_err(&pdev->dev, "bitbang start failed with %d\n", ret);
|
|
|
|
|
+ goto out_clk_put;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (!spi_imx->slave_mode) {
|
|
if (!spi_imx->slave_mode) {
|
|
|
if (!master->cs_gpios) {
|
|
if (!master->cs_gpios) {
|
|
@@ -1631,23 +1636,19 @@ static int spi_imx_probe(struct platform_device *pdev)
|
|
|
if (ret) {
|
|
if (ret) {
|
|
|
dev_err(&pdev->dev, "Can't get CS GPIO %i\n",
|
|
dev_err(&pdev->dev, "Can't get CS GPIO %i\n",
|
|
|
master->cs_gpios[i]);
|
|
master->cs_gpios[i]);
|
|
|
- goto out_clk_put;
|
|
|
|
|
|
|
+ goto out_spi_bitbang;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- ret = spi_bitbang_start(&spi_imx->bitbang);
|
|
|
|
|
- if (ret) {
|
|
|
|
|
- dev_err(&pdev->dev, "bitbang start failed with %d\n", ret);
|
|
|
|
|
- goto out_clk_put;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
dev_info(&pdev->dev, "probed\n");
|
|
dev_info(&pdev->dev, "probed\n");
|
|
|
|
|
|
|
|
clk_disable(spi_imx->clk_ipg);
|
|
clk_disable(spi_imx->clk_ipg);
|
|
|
clk_disable(spi_imx->clk_per);
|
|
clk_disable(spi_imx->clk_per);
|
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
|
|
|
|
+out_spi_bitbang:
|
|
|
|
|
+ spi_bitbang_stop(&spi_imx->bitbang);
|
|
|
out_clk_put:
|
|
out_clk_put:
|
|
|
clk_disable_unprepare(spi_imx->clk_ipg);
|
|
clk_disable_unprepare(spi_imx->clk_ipg);
|
|
|
out_put_per:
|
|
out_put_per:
|