From c5bfb0c760a5d8de7ffc3a6acfb8c782be6af1a5 Mon Sep 17 00:00:00 2001 From: Gabor Juhos <juhosg@openwrt.org> Date: Mon, 9 Jan 2012 15:04:21 +0100 Subject: [PATCH 4/7] spi/ath79: use gpio_request_one Use gpio_request_one() instead of multiple gpiolib calls. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- drivers/spi/spi-ath79.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-) --- a/drivers/spi/spi-ath79.c +++ b/drivers/spi/spi-ath79.c @@ -93,6 +93,7 @@ static int ath79_spi_setup_cs(struct spi { struct ath79_spi *sp = ath79_spidev_to_sp(spi); struct ath79_spi_controller_data *cdata; + int status; cdata = spi->controller_data; if (spi->chip_select && !cdata) @@ -108,22 +109,21 @@ static int ath79_spi_setup_cs(struct spi /* TODO: setup speed? */ ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, 0x43); + status = 0; if (spi->chip_select) { - int status = 0; + unsigned long flags; - status = gpio_request(cdata->gpio, dev_name(&spi->dev)); - if (status) - return status; - - status = gpio_direction_output(cdata->gpio, - spi->mode & SPI_CS_HIGH); - if (status) { - gpio_free(cdata->gpio); - return status; - } + flags = GPIOF_DIR_OUT; + if (spi->mode & SPI_CS_HIGH) + flags |= GPIOF_INIT_HIGH; + else + flags |= GPIOF_INIT_LOW; + + status = gpio_request_one(cdata->gpio, flags, + dev_name(&spi->dev)); } - return 0; + return status; } static void ath79_spi_cleanup_cs(struct spi_device *spi)