diff options
Diffstat (limited to 'target/linux/ar71xx/patches-3.3/204-spi-ath79-use-gpio_request_one.patch')
| -rw-r--r-- | target/linux/ar71xx/patches-3.3/204-spi-ath79-use-gpio_request_one.patch | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/target/linux/ar71xx/patches-3.3/204-spi-ath79-use-gpio_request_one.patch b/target/linux/ar71xx/patches-3.3/204-spi-ath79-use-gpio_request_one.patch new file mode 100644 index 000000000..1f607fd5d --- /dev/null +++ b/target/linux/ar71xx/patches-3.3/204-spi-ath79-use-gpio_request_one.patch @@ -0,0 +1,56 @@ +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) | 
