* [patch 0/4] S3C24XX SPI updates for 2.6.27 (correct set)
@ 2008-10-10 10:04 Ben Dooks
2008-10-10 10:04 ` [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-10 10:04 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: david-b-yBeKhBN/0LDR7s880joybQ
The correct set of S3C24XX SPI driver updates.
--
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
2008-10-10 10:04 ` [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-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
* [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup
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
@ 2008-10-10 10:04 ` Ben Dooks
2008-10-10 10:04 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
2008-10-10 10:04 ` [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-10 10:04 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: david-b-yBeKhBN/0LDR7s880joybQ, 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-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
2008-10-10 10:04 ` [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup Ben Dooks
@ 2008-10-10 10:04 ` Ben Dooks
2008-10-10 10:04 ` [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-10 10:04 UTC (permalink / raw)
To: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Cc: david-b-yBeKhBN/0LDR7s880joybQ, 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-10 10:04 [patch 0/4] S3C24XX SPI updates for 2.6.27 (correct set) Ben Dooks
` (2 preceding siblings ...)
2008-10-10 10:04 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
@ 2008-10-10 10:04 ` Ben Dooks
3 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-s3c24xx-spi-convert-to-generic-gpio.patch --]
[-- Type: text/plain, Size: 3984 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-rc7-quilt2/drivers/spi/spi_s3c24xx.c
===================================================================
--- linux-2.6.27-rc7-quilt2.orig/drivers/spi/spi_s3c24xx.c 2008-09-23 15:03:10.000000000 +0100
+++ linux-2.6.27-rc7-quilt2/drivers/spi/spi_s3c24xx.c 2008-09-23 15:17:18.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, 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-rc7-quilt2/arch/arm/mach-s3c2410/include/mach/spi.h
===================================================================
--- linux-2.6.27-rc7-quilt2.orig/arch/arm/mach-s3c2410/include/mach/spi.h 2008-09-23 15:15:50.000000000 +0100
+++ linux-2.6.27-rc7-quilt2/arch/arm/mach-s3c2410/include/mach/spi.h 2008-09-23 15:16:01.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 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 ` Ben Dooks
0 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
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-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
2008-10-10 10:04 ` [patch 2/4] spi_s3c24xx_gpio: fix spi-device to our private data lookup Ben Dooks
2008-10-10 10:04 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect Ben Dooks
2008-10-10 10:04 ` [patch 4/4] spi_s3c2410: use generic gpio calls instead of arch specific ones Ben Dooks
2008-10-12 15:36 [patch 0/4] S3C24XX updates for 2.6.28 (v3) Ben Dooks
2008-10-12 15:36 ` [patch 3/4] spi_s3c24xx_gpio: fix setting of num_chipselect 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).