aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/spi/spi-imx.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
index 5ddd32ba2521..70dcc8ee1f6b 100644
--- a/drivers/spi/spi-imx.c
+++ b/drivers/spi/spi-imx.c
@@ -1523,6 +1523,7 @@ static int spi_imx_probe(struct platform_device *pdev)
1523 1523
1524 spi_imx->devtype_data = devtype_data; 1524 spi_imx->devtype_data = devtype_data;
1525 1525
1526 /* Get number of chip selects, either platform data or OF */
1526 if (mxc_platform_info) { 1527 if (mxc_platform_info) {
1527 master->num_chipselect = mxc_platform_info->num_chipselect; 1528 master->num_chipselect = mxc_platform_info->num_chipselect;
1528 master->cs_gpios = devm_kzalloc(&master->dev, 1529 master->cs_gpios = devm_kzalloc(&master->dev,
@@ -1532,7 +1533,13 @@ static int spi_imx_probe(struct platform_device *pdev)
1532 1533
1533 for (i = 0; i < master->num_chipselect; i++) 1534 for (i = 0; i < master->num_chipselect; i++)
1534 master->cs_gpios[i] = mxc_platform_info->chipselect[i]; 1535 master->cs_gpios[i] = mxc_platform_info->chipselect[i];
1535 } 1536 } else {
1537 u32 num_cs;
1538
1539 if (!of_property_read_u32(np, "num-cs", &num_cs))
1540 master->num_chipselect = num_cs;
1541 /* If not preset, default value of 1 is used */
1542 }
1536 1543
1537 spi_imx->bitbang.chipselect = spi_imx_chipselect; 1544 spi_imx->bitbang.chipselect = spi_imx_chipselect;
1538 spi_imx->bitbang.setup_transfer = spi_imx_setupxfer; 1545 spi_imx->bitbang.setup_transfer = spi_imx_setupxfer;
@@ -1614,13 +1621,8 @@ static int spi_imx_probe(struct platform_device *pdev)
1614 1621
1615 master->dev.of_node = pdev->dev.of_node; 1622 master->dev.of_node = pdev->dev.of_node;
1616 1623
1617 if (!spi_imx->slave_mode) { 1624 /* Request GPIO CS lines, if any */
1618 if (!master->cs_gpios) { 1625 if (!spi_imx->slave_mode && master->cs_gpios) {
1619 dev_err(&pdev->dev, "No CS GPIOs available\n");
1620 ret = -EINVAL;
1621 goto out_clk_put;
1622 }
1623
1624 for (i = 0; i < master->num_chipselect; i++) { 1626 for (i = 0; i < master->num_chipselect; i++) {
1625 if (!gpio_is_valid(master->cs_gpios[i])) 1627 if (!gpio_is_valid(master->cs_gpios[i]))
1626 continue; 1628 continue;