X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/e0b80e41eb0b24e76285b9355725d2f4f66ada50..8b4aee843bbd9d4e87e2c63b9c6d9d34c142a272:/target/linux/ar71xx/patches-3.2/207-spi-ath79-make-chipselect-logic-more-flexible.patch?ds=sidebyside diff --git a/target/linux/ar71xx/patches-3.2/207-spi-ath79-make-chipselect-logic-more-flexible.patch b/target/linux/ar71xx/patches-3.2/207-spi-ath79-make-chipselect-logic-more-flexible.patch index 7c45b73f1..af96f5573 100644 --- a/target/linux/ar71xx/patches-3.2/207-spi-ath79-make-chipselect-logic-more-flexible.patch +++ b/target/linux/ar71xx/patches-3.2/207-spi-ath79-make-chipselect-logic-more-flexible.patch @@ -38,7 +38,7 @@ Signed-off-by: Gabor Juhos struct ath79_spi { struct spi_bitbang bitbang; u32 ioc_base; -@@ -62,6 +64,7 @@ static void ath79_spi_chipselect(struct +@@ -62,6 +64,7 @@ static void ath79_spi_chipselect(struct { struct ath79_spi *sp = ath79_spidev_to_sp(spi); int cs_high = (spi->mode & SPI_CS_HIGH) ? is_active : !is_active; @@ -46,7 +46,7 @@ Signed-off-by: Gabor Juhos if (is_active) { /* set initial clock polarity */ -@@ -73,20 +76,21 @@ static void ath79_spi_chipselect(struct +@@ -73,20 +76,21 @@ static void ath79_spi_chipselect(struct ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, sp->ioc_base); } @@ -77,9 +77,9 @@ Signed-off-by: Gabor Juhos } static void ath79_spi_enable(struct ath79_spi *sp) -@@ -114,24 +118,30 @@ static int ath79_spi_setup_cs(struct spi +@@ -113,24 +117,30 @@ static void ath79_spi_disable(struct ath + static int ath79_spi_setup_cs(struct spi_device *spi) { - struct ath79_spi *sp = ath79_spidev_to_sp(spi); struct ath79_spi_controller_data *cdata; + unsigned long flags; int status; @@ -112,16 +112,15 @@ Signed-off-by: Gabor Juhos } return status; -@@ -139,11 +149,15 @@ static int ath79_spi_setup_cs(struct spi +@@ -138,9 +148,15 @@ static int ath79_spi_setup_cs(struct spi static void ath79_spi_cleanup_cs(struct spi_device *spi) { -- struct ath79_spi *sp = ath79_spidev_to_sp(spi); -+ struct ath79_spi_controller_data *cdata = spi->controller_data; - - if (spi->chip_select) { - struct ath79_spi_controller_data *cdata = spi->controller_data; - gpio_free(cdata->gpio); ++ struct ath79_spi_controller_data *cdata = spi->controller_data; ++ + switch (cdata->cs_type) { + case ATH79_SPI_CS_TYPE_INTERNAL: + /* nothing to do */ @@ -132,7 +131,7 @@ Signed-off-by: Gabor Juhos } } -@@ -209,6 +223,10 @@ static __devinit int ath79_spi_probe(str +@@ -206,6 +222,10 @@ static __devinit int ath79_spi_probe(str struct resource *r; int ret; @@ -143,7 +142,7 @@ Signed-off-by: Gabor Juhos master = spi_alloc_master(&pdev->dev, sizeof(*sp)); if (master == NULL) { dev_err(&pdev->dev, "failed to allocate spi master\n"); -@@ -218,17 +236,10 @@ static __devinit int ath79_spi_probe(str +@@ -215,17 +235,10 @@ static __devinit int ath79_spi_probe(str sp = spi_master_get_devdata(master); platform_set_drvdata(pdev, sp);