summaryrefslogtreecommitdiffstats
path: root/drivers/spi/atmel_spi.c
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2012-12-28 17:46:31 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-01-02 10:56:16 +0100
commit668dffaa0d4ce994c45710ca31066681861daba5 (patch)
tree9850f9bfee7d6de9b2c174019ab3769d6d36b377 /drivers/spi/atmel_spi.c
parentb4f7410ad17e9b5901b93bd9156cc40801fe2a05 (diff)
downloadbarebox-668dffaa0d4ce994c45710ca31066681861daba5.tar.gz
barebox-668dffaa0d4ce994c45710ca31066681861daba5.tar.xz
spi: atmel: request cs pin via gpiolib
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/spi/atmel_spi.c')
-rw-r--r--drivers/spi/atmel_spi.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 793933eefb..08cb4169ea 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -371,6 +371,7 @@ err:
static int atmel_spi_probe(struct device_d *dev)
{
int ret = 0;
+ int i;
struct spi_master *master;
struct atmel_spi *as;
struct at91_spi_platform_data *pdata = dev->platform_data;
@@ -399,6 +400,12 @@ static int atmel_spi_probe(struct device_d *dev)
as->cs_pins = pdata->chipselect;
as->regs = dev_request_mem_region(dev, 0);
+ for (i = 0; i <= master->num_chipselect; i++) {
+ ret = gpio_request(as->cs_pins[i], dev_name(dev));
+ if (ret)
+ goto out_gpio;
+ }
+
/* Initialize the hardware */
clk_enable(as->clk);
spi_writel(as, CR, SPI_BIT(SWRST));
@@ -418,6 +425,7 @@ static int atmel_spi_probe(struct device_d *dev)
out_reset_hw:
spi_writel(as, CR, SPI_BIT(SWRST));
spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
+out_gpio:
clk_disable(as->clk);
clk_put(as->clk);
out_free: