linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/4] S3C24XX updates for 2.6.28 (v3)
@ 2008-10-12 15:36 Ben Dooks
  2008-10-12 15:36 ` [patch 1/4] SPI: Add pin configuration callback Ben Dooks
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-12 15:36 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ,
	linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW

SPI driver updates for 2.6.28.

Sorry, this is the third set, the previous one
missed a minor change to drivers/spi/spi_s3c24xx.c
that causes the patch to mis-compile.

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 1/4] SPI: Add pin configuration callback
  2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
@ 2008-10-12 15:36 ` Ben Dooks
  2008-10-12 15:36 ` [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup Ben Dooks
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-12 15:36 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ,
	linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW, Ben Dooks

[-- Attachment #1: simtec/simtec-drivers-spi-s3c24xx-gpiosetup.patch --]
[-- Type: text/plain, Size: 2449 bytes --]

Add a gpio configuration callback for the s3c24xx SPI driver, as
there are several options depending on the channel and the chip
in use.

This is needed as the controller may not have been setup by the
initial bootloader and the fact that the SPI controller gets
reset over suspend/resume into slave mode but the GPIO function
registers do not.

Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Index: linux-2.6.27-rc1-quilt1/drivers/spi/spi_s3c24xx.c
===================================================================
--- linux-2.6.27-rc1-quilt1.orig/drivers/spi/spi_s3c24xx.c	2008-08-04 11:46:12.000000000 +0100
+++ linux-2.6.27-rc1-quilt1/drivers/spi/spi_s3c24xx.c	2008-08-04 11:46:54.000000000 +0100
@@ -247,6 +247,9 @@ static void s3c24xx_spi_initialsetup(str
 	writeb(0xff, hw->regs + S3C2410_SPPRE);
 	writeb(SPPIN_DEFAULT, hw->regs + S3C2410_SPPIN);
 	writeb(SPCON_DEFAULT, hw->regs + S3C2410_SPCON);
+
+	if (hw->pdata && hw->pdata->gpio_setup)
+		hw->pdata->gpio_setup(hw->pdata, 1);
 }
 
 static int __init s3c24xx_spi_probe(struct platform_device *pdev)
@@ -412,6 +415,9 @@ static int s3c24xx_spi_suspend(struct pl
 {
 	struct s3c24xx_spi *hw = platform_get_drvdata(pdev);
 
+	if (hw->pdata && hw->pdata->gpio_setup)
+		hw->pdata->gpio_setup(hw->pdata, 0);
+
 	clk_disable(hw->clk);
 	return 0;
 }
Index: linux-2.6.27-rc1-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h
===================================================================
--- linux-2.6.27-rc1-quilt1.orig/arch/arm/mach-s3c2410/include/mach/spi.h	2008-08-04 11:45:55.000000000 +0100
+++ linux-2.6.27-rc1-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h	2008-08-04 11:46:13.000000000 +0100
@@ -18,6 +18,7 @@ struct s3c2410_spi_info {
 	unsigned int		 num_cs;	/* total chipselects */
 	int			 bus_num;       /* bus number to use. */
 
+	void (*gpio_setup)(struct s3c2410_spi_info *spi, int enable);
 	void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol);
 };
 

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup
  2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
  2008-10-12 15:36 ` [patch 1/4] SPI: Add pin configuration callback Ben Dooks
@ 2008-10-12 15:36 ` Ben Dooks
  2008-10-12 15:36 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
  2008-10-12 15:36 ` [patch 4/4] spi_s3c2410: use generic gpio calls instead of arch specific ones Ben Dooks
  3 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-12 15:36 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ,
	linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW, Ben Dooks

[-- Attachment #1: simtec/simtec-s3c24xx-spi-gpio-fix-master-usage.patch --]
[-- Type: text/plain, Size: 1324 bytes --]

The spidev_to_sg() call in spi_s3c24xx_gpio.c was using the
wrong method to convert the spi device into the private data
for the driver. Fix this by using spi_master_get_devdata.

Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Index: linux-2.6.27-rc7-quilt1/drivers/spi/spi_s3c24xx_gpio.c
===================================================================
--- linux-2.6.27-rc7-quilt1.orig/drivers/spi/spi_s3c24xx_gpio.c	2008-09-23 12:34:31.000000000 +0100
+++ linux-2.6.27-rc7-quilt1/drivers/spi/spi_s3c24xx_gpio.c	2008-09-23 12:34:43.000000000 +0100
@@ -34,7 +34,7 @@ struct s3c2410_spigpio {
 
 static inline struct s3c2410_spigpio *spidev_to_sg(struct spi_device *spi)
 {
-	return spi->controller_data;
+	return spi_master_get_devdata(spi->master);
 }
 
 static inline void setsck(struct spi_device *dev, int on)

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect.
  2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
  2008-10-12 15:36 ` [patch 1/4] SPI: Add pin configuration callback Ben Dooks
  2008-10-12 15:36 ` [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup Ben Dooks
@ 2008-10-12 15:36 ` Ben Dooks
  2008-10-12 15:36 ` [patch 4/4] spi_s3c2410: use generic gpio calls instead of arch specific ones Ben Dooks
  3 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-12 15:36 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ,
	linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW, Ben Dooks

[-- Attachment #1: simtec/simtec-s3c24xx-spi-gpio-fix-numcs.patch --]
[-- Type: text/plain, Size: 1959 bytes --]

The spi master driver must have num_chipselect set to
allow the bus to initialise. Pass this through the
platform data.

Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Index: linux-2.6.27-rc7-quilt2/arch/arm/mach-s3c2410/include/mach/spi-gpio.h
===================================================================
--- linux-2.6.27-rc7-quilt2.orig/arch/arm/mach-s3c2410/include/mach/spi-gpio.h	2008-09-23 14:59:56.000000000 +0100
+++ linux-2.6.27-rc7-quilt2/arch/arm/mach-s3c2410/include/mach/spi-gpio.h	2008-09-23 15:58:03.000000000 +0100
@@ -18,6 +18,7 @@ struct s3c2410_spigpio_info {
 	unsigned long		 pin_mosi;
 	unsigned long		 pin_miso;
 
+	int			 num_chipselect;
 	int			 bus_num;
 
 	void (*chip_select)(struct s3c2410_spigpio_info *spi, int cs);
Index: linux-2.6.27-rc7-quilt2/drivers/spi/spi_s3c24xx_gpio.c
===================================================================
--- linux-2.6.27-rc7-quilt2.orig/drivers/spi/spi_s3c24xx_gpio.c	2008-09-23 15:01:47.000000000 +0100
+++ linux-2.6.27-rc7-quilt2/drivers/spi/spi_s3c24xx_gpio.c	2008-09-23 15:01:47.000000000 +0100
@@ -118,6 +118,7 @@ static int s3c2410_spigpio_probe(struct 
 	/* setup spi bitbang adaptor */
 	sp->bitbang.master = spi_master_get(master);
 	sp->bitbang.master->bus_num = info->bus_num;
+	sp->bitbang.master->num_chipselect = info->num_chipselect;
 	sp->bitbang.chipselect = s3c2410_spigpio_chipselect;
 
 	sp->bitbang.txrx_word[SPI_MODE_0] = s3c2410_spigpio_txrx_mode0;

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 4/4] spi_s3c2410: use generic gpio calls instead of arch specific ones
  2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
                   ` (2 preceding siblings ...)
  2008-10-12 15:36 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
@ 2008-10-12 15:36 ` Ben Dooks
  3 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-12 15:36 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ,
	linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW, Ben Dooks

[-- Attachment #1: simtec/simtec-s3c24xx-spi-convert-to-generic-gpio.patch --]
[-- Type: text/plain, Size: 3968 bytes --]

Change the spi_s3c2410 driver to use the generic gpio calls that
are now available.

Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Index: linux-2.6.27-quilt1/drivers/spi/spi_s3c24xx.c
===================================================================
--- linux-2.6.27-quilt1.orig/drivers/spi/spi_s3c24xx.c	2008-10-10 14:45:04.000000000 +0100
+++ linux-2.6.27-quilt1/drivers/spi/spi_s3c24xx.c	2008-10-10 15:47:51.000000000 +0100
@@ -19,6 +19,7 @@
 #include <linux/err.h>
 #include <linux/clk.h>
 #include <linux/platform_device.h>
+#include <linux/gpio.h>
 
 #include <linux/spi/spi.h>
 #include <linux/spi/spi_bitbang.h>
@@ -27,7 +28,6 @@
 #include <asm/dma.h>
 #include <mach/hardware.h>
 
-#include <mach/regs-gpio.h>
 #include <asm/plat-s3c24xx/regs-spi.h>
 #include <mach/spi.h>
 
@@ -66,7 +66,7 @@ static inline struct s3c24xx_spi *to_hw(
 
 static void s3c24xx_spi_gpiocs(struct s3c2410_spi_info *spi, int cs, int pol)
 {
-	s3c2410_gpio_setpin(spi->pin_cs, pol);
+	gpio_set_value(spi->pin_cs, pol);
 }
 
 static void s3c24xx_spi_chipsel(struct spi_device *spi, int value)
@@ -248,8 +248,13 @@ static void s3c24xx_spi_initialsetup(str
 	writeb(SPPIN_DEFAULT, hw->regs + S3C2410_SPPIN);
 	writeb(SPCON_DEFAULT, hw->regs + S3C2410_SPCON);
 
-	if (hw->pdata && hw->pdata->gpio_setup)
-		hw->pdata->gpio_setup(hw->pdata, 1);
+	if (hw->pdata) {
+		if (hw->set_cs == s3c24xx_spi_gpiocs)
+			gpio_direction_output(hw->pdata->pin_cs, 1);
+
+		if (hw->pdata->gpio_setup)
+			hw->pdata->gpio_setup(hw->pdata, 1);
+	}
 }
 
 static int __init s3c24xx_spi_probe(struct platform_device *pdev)
@@ -343,18 +348,27 @@ static int __init s3c24xx_spi_probe(stru
 		goto err_no_clk;
 	}
 
-	s3c24xx_spi_initialsetup(hw);
-
 	/* setup any gpio we can */
 
 	if (!pdata->set_cs) {
-		hw->set_cs = s3c24xx_spi_gpiocs;
+		if (pdata->pin_cs < 0) {
+			dev_err(&pdev->dev, "No chipselect pin\n");
+			goto err_register;
+		}
+
+		err = gpio_request(pdata->pin_cs, dev_name(&pdev->dev));
+		if (err) {
+			dev_err(&pdev->dev, "Failed to get gpio for cs\n");
+			goto err_register;
+		}
 
-		s3c2410_gpio_setpin(pdata->pin_cs, 1);
-		s3c2410_gpio_cfgpin(pdata->pin_cs, S3C2410_GPIO_OUTPUT);
+		hw->set_cs = s3c24xx_spi_gpiocs;
+		gpio_direction_output(pdata->pin_cs, 1);
 	} else
 		hw->set_cs = pdata->set_cs;
 
+	s3c24xx_spi_initialsetup(hw);
+
 	/* register our spi controller */
 
 	err = spi_bitbang_start(&hw->bitbang);
@@ -366,6 +380,9 @@ static int __init s3c24xx_spi_probe(stru
 	return 0;
 
  err_register:
+	if (hw->set_cs == s3c24xx_spi_gpiocs)
+		gpio_free(pdata->pin_cs);
+
 	clk_disable(hw->clk);
 	clk_put(hw->clk);
 
@@ -401,6 +418,9 @@ static int __exit s3c24xx_spi_remove(str
 	free_irq(hw->irq, hw);
 	iounmap(hw->regs);
 
+	if (hw->set_cs == s3c24xx_spi_gpiocs)
+		gpio_free(hw->pdata->pin_cs);
+
 	release_resource(hw->ioarea);
 	kfree(hw->ioarea);
 
Index: linux-2.6.27-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h
===================================================================
--- linux-2.6.27-quilt1.orig/arch/arm/mach-s3c2410/include/mach/spi.h	2008-10-10 14:45:05.000000000 +0100
+++ linux-2.6.27-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h	2008-10-10 14:45:09.000000000 +0100
@@ -14,7 +14,7 @@
 #define __ASM_ARCH_SPI_H __FILE__
 
 struct s3c2410_spi_info {
-	unsigned long		 pin_cs;	/* simple gpio cs */
+	int			 pin_cs;	/* simple gpio cs */
 	unsigned int		 num_cs;	/* total chipselects */
 	int			 bus_num;       /* bus number to use. */
 

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 1/4] SPI: Add pin configuration callback
  2008-10-10 10:04 [patch 0/4] S3C24XX SPI updates for 2.6.27 (correct set) Ben Dooks
@ 2008-10-10 10:04 ` Ben Dooks
  0 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2008-10-10 10:04 UTC (permalink / raw)
  To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: david-b-yBeKhBN/0LDR7s880joybQ, Ben Dooks

[-- Attachment #1: simtec/simtec-drivers-spi-s3c24xx-gpiosetup.patch --]
[-- Type: text/plain, Size: 2449 bytes --]

Add a gpio configuration callback for the s3c24xx SPI driver, as
there are several options depending on the channel and the chip
in use.

This is needed as the controller may not have been setup by the
initial bootloader and the fact that the SPI controller gets
reset over suspend/resume into slave mode but the GPIO function
registers do not.

Signed-off-by: Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>

Index: linux-2.6.27-rc1-quilt1/drivers/spi/spi_s3c24xx.c
===================================================================
--- linux-2.6.27-rc1-quilt1.orig/drivers/spi/spi_s3c24xx.c	2008-08-04 11:46:12.000000000 +0100
+++ linux-2.6.27-rc1-quilt1/drivers/spi/spi_s3c24xx.c	2008-08-04 11:46:54.000000000 +0100
@@ -247,6 +247,9 @@ static void s3c24xx_spi_initialsetup(str
 	writeb(0xff, hw->regs + S3C2410_SPPRE);
 	writeb(SPPIN_DEFAULT, hw->regs + S3C2410_SPPIN);
 	writeb(SPCON_DEFAULT, hw->regs + S3C2410_SPCON);
+
+	if (hw->pdata && hw->pdata->gpio_setup)
+		hw->pdata->gpio_setup(hw->pdata, 1);
 }
 
 static int __init s3c24xx_spi_probe(struct platform_device *pdev)
@@ -412,6 +415,9 @@ static int s3c24xx_spi_suspend(struct pl
 {
 	struct s3c24xx_spi *hw = platform_get_drvdata(pdev);
 
+	if (hw->pdata && hw->pdata->gpio_setup)
+		hw->pdata->gpio_setup(hw->pdata, 0);
+
 	clk_disable(hw->clk);
 	return 0;
 }
Index: linux-2.6.27-rc1-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h
===================================================================
--- linux-2.6.27-rc1-quilt1.orig/arch/arm/mach-s3c2410/include/mach/spi.h	2008-08-04 11:45:55.000000000 +0100
+++ linux-2.6.27-rc1-quilt1/arch/arm/mach-s3c2410/include/mach/spi.h	2008-08-04 11:46:13.000000000 +0100
@@ -18,6 +18,7 @@ struct s3c2410_spi_info {
 	unsigned int		 num_cs;	/* total chipselects */
 	int			 bus_num;       /* bus number to use. */
 
+	void (*gpio_setup)(struct s3c2410_spi_info *spi, int enable);
 	void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol);
 };
 

-- 
Ben (ben-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-10-12 15:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
2008-10-12 15:36 ` [patch 1/4] SPI: Add pin configuration callback Ben Dooks
2008-10-12 15:36 ` [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup Ben Dooks
2008-10-12 15:36 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
2008-10-12 15:36 ` [patch 4/4] spi_s3c2410: use generic gpio calls instead of arch specific ones Ben Dooks
  -- strict thread matches above, loose matches on Subject: below --
2008-10-10 10:04 [patch 0/4] S3C24XX SPI updates for 2.6.27 (correct set) Ben Dooks
2008-10-10 10:04 ` [patch 1/4] SPI: Add pin configuration callback Ben Dooks

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).