aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Korsgaard <jacmet@sunsite.dk>2011-06-28 08:49:16 -0400
committerGrant Likely <grant.likely@secretlab.ca>2011-07-04 12:52:58 -0400
commit45fae7def636a2b400595d56c67cfed60051b773 (patch)
tree210ef65d0429d04d277ab8ba08d2259861f1dbcd
parent947b35d52dabaf4908ea140e81432c71e457342d (diff)
spi: remove obsolete spi-s3c24xx-gpio driver
It was equivalent to spi-gpio, and there's no longer any in-tree users of it, so get rid of it. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> Acked-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
-rw-r--r--drivers/spi/Kconfig10
-rw-r--r--drivers/spi/Makefile1
-rw-r--r--drivers/spi/spi-s3c24xx-gpio.c200
3 files changed, 0 insertions, 211 deletions
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index c013481fa18..9aafa98f3b4 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -313,16 +313,6 @@ config SPI_S3C24XX_FIQ
313 no free DMA channels, or when doing transfers that required both 313 no free DMA channels, or when doing transfers that required both
314 TX and RX data paths. 314 TX and RX data paths.
315 315
316config SPI_S3C24XX_GPIO
317 tristate "Samsung S3C24XX series SPI by GPIO"
318 depends on ARCH_S3C2410 && EXPERIMENTAL
319 select SPI_BITBANG
320 help
321 SPI driver for Samsung S3C24XX series ARM SoCs using
322 GPIO lines to provide the SPI bus. This can be used where
323 the inbuilt hardware cannot provide the transfer mode, or
324 where the board is using non hardware connected pins.
325
326config SPI_S3C64XX 316config SPI_S3C64XX
327 tristate "Samsung S3C64XX series type SPI" 317 tristate "Samsung S3C64XX series type SPI"
328 depends on (ARCH_S3C64XX || ARCH_S5P64X0) 318 depends on (ARCH_S3C64XX || ARCH_S5P64X0)
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index b60b04befee..61c3261c388 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -44,7 +44,6 @@ obj-$(CONFIG_SPI_PL022) += spi-pl022.o
44obj-$(CONFIG_SPI_PPC4xx) += spi-ppc4xx.o 44obj-$(CONFIG_SPI_PPC4xx) += spi-ppc4xx.o
45obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx.o 45obj-$(CONFIG_SPI_PXA2XX) += spi-pxa2xx.o
46obj-$(CONFIG_SPI_PXA2XX_PCI) += spi-pxa2xx-pci.o 46obj-$(CONFIG_SPI_PXA2XX_PCI) += spi-pxa2xx-pci.o
47obj-$(CONFIG_SPI_S3C24XX_GPIO) += spi-s3c24xx-gpio.o
48obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o 47obj-$(CONFIG_SPI_S3C24XX) += spi-s3c24xx-hw.o
49spi-s3c24xx-hw-y := spi-s3c24xx.o 48spi-s3c24xx-hw-y := spi-s3c24xx.o
50spi-s3c24xx-hw-$(CONFIG_SPI_S3C24XX_FIQ) += spi-s3c24xx-fiq.o 49spi-s3c24xx-hw-$(CONFIG_SPI_S3C24XX_FIQ) += spi-s3c24xx-fiq.o
diff --git a/drivers/spi/spi-s3c24xx-gpio.c b/drivers/spi/spi-s3c24xx-gpio.c
deleted file mode 100644
index 2d3c085930f..00000000000
--- a/drivers/spi/spi-s3c24xx-gpio.c
+++ /dev/null
@@ -1,200 +0,0 @@
1/*
2 * Copyright (c) 2006 Ben Dooks
3 * Copyright (c) 2006 Simtec Electronics
4 *
5 * S3C24XX GPIO based SPI driver
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11*/
12
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/delay.h>
16#include <linux/spinlock.h>
17#include <linux/workqueue.h>
18#include <linux/platform_device.h>
19#include <linux/gpio.h>
20
21#include <linux/spi/spi.h>
22#include <linux/spi/spi_bitbang.h>
23
24#include <mach/regs-gpio.h>
25#include <mach/spi-gpio.h>
26#include <mach/hardware.h>
27
28struct s3c2410_spigpio {
29 struct spi_bitbang bitbang;
30
31 struct s3c2410_spigpio_info *info;
32 struct platform_device *dev;
33};
34
35static inline struct s3c2410_spigpio *spidev_to_sg(struct spi_device *spi)
36{
37 return spi_master_get_devdata(spi->master);
38}
39
40static inline void setsck(struct spi_device *dev, int on)
41{
42 struct s3c2410_spigpio *sg = spidev_to_sg(dev);
43 s3c2410_gpio_setpin(sg->info->pin_clk, on ? 1 : 0);
44}
45
46static inline void setmosi(struct spi_device *dev, int on)
47{
48 struct s3c2410_spigpio *sg = spidev_to_sg(dev);
49 s3c2410_gpio_setpin(sg->info->pin_mosi, on ? 1 : 0);
50}
51
52static inline u32 getmiso(struct spi_device *dev)
53{
54 struct s3c2410_spigpio *sg = spidev_to_sg(dev);
55 return s3c2410_gpio_getpin(sg->info->pin_miso) ? 1 : 0;
56}
57
58#define spidelay(x) ndelay(x)
59
60#include "spi-bitbang-txrx.h"
61
62
63static u32 s3c2410_spigpio_txrx_mode0(struct spi_device *spi,
64 unsigned nsecs, u32 word, u8 bits)
65{
66 return bitbang_txrx_be_cpha0(spi, nsecs, 0, 0, word, bits);
67}
68
69static u32 s3c2410_spigpio_txrx_mode1(struct spi_device *spi,
70 unsigned nsecs, u32 word, u8 bits)
71{
72 return bitbang_txrx_be_cpha1(spi, nsecs, 0, 0, word, bits);
73}
74
75static u32 s3c2410_spigpio_txrx_mode2(struct spi_device *spi,
76 unsigned nsecs, u32 word, u8 bits)
77{
78 return bitbang_txrx_be_cpha0(spi, nsecs, 1, 0, word, bits);
79}
80
81static u32 s3c2410_spigpio_txrx_mode3(struct spi_device *spi,
82 unsigned nsecs, u32 word, u8 bits)
83{
84 return bitbang_txrx_be_cpha1(spi, nsecs, 1, 0, word, bits);
85}
86
87
88static void s3c2410_spigpio_chipselect(struct spi_device *dev, int value)
89{
90 struct s3c2410_spigpio *sg = spidev_to_sg(dev);
91
92 if (sg->info && sg->info->chip_select)
93 (sg->info->chip_select)(sg->info, value);
94}
95
96static int s3c2410_spigpio_probe(struct platform_device *dev)
97{
98 struct s3c2410_spigpio_info *info;
99 struct spi_master *master;
100 struct s3c2410_spigpio *sp;
101 int ret;
102
103 master = spi_alloc_master(&dev->dev, sizeof(struct s3c2410_spigpio));
104 if (master == NULL) {
105 dev_err(&dev->dev, "failed to allocate spi master\n");
106 ret = -ENOMEM;
107 goto err;
108 }
109
110 sp = spi_master_get_devdata(master);
111
112 platform_set_drvdata(dev, sp);
113
114 /* copy in the plkatform data */
115 info = sp->info = dev->dev.platform_data;
116
117 /* setup spi bitbang adaptor */
118 sp->bitbang.master = spi_master_get(master);
119 sp->bitbang.master->bus_num = info->bus_num;
120 sp->bitbang.master->num_chipselect = info->num_chipselect;
121 sp->bitbang.chipselect = s3c2410_spigpio_chipselect;
122
123 sp->bitbang.txrx_word[SPI_MODE_0] = s3c2410_spigpio_txrx_mode0;
124 sp->bitbang.txrx_word[SPI_MODE_1] = s3c2410_spigpio_txrx_mode1;
125 sp->bitbang.txrx_word[SPI_MODE_2] = s3c2410_spigpio_txrx_mode2;
126 sp->bitbang.txrx_word[SPI_MODE_3] = s3c2410_spigpio_txrx_mode3;
127
128 /* set state of spi pins, always assume that the clock is
129 * available, but do check the MOSI and MISO. */
130 s3c2410_gpio_setpin(info->pin_clk, 0);
131 s3c2410_gpio_cfgpin(info->pin_clk, S3C2410_GPIO_OUTPUT);
132
133 if (info->pin_mosi < S3C2410_GPH10) {
134 s3c2410_gpio_setpin(info->pin_mosi, 0);
135 s3c2410_gpio_cfgpin(info->pin_mosi, S3C2410_GPIO_OUTPUT);
136 }
137
138 if (info->pin_miso != S3C2410_GPA0 && info->pin_miso < S3C2410_GPH10)
139 s3c2410_gpio_cfgpin(info->pin_miso, S3C2410_GPIO_INPUT);
140
141 ret = spi_bitbang_start(&sp->bitbang);
142 if (ret)
143 goto err_no_bitbang;
144
145 return 0;
146
147 err_no_bitbang:
148 spi_master_put(sp->bitbang.master);
149 err:
150 return ret;
151
152}
153
154static int s3c2410_spigpio_remove(struct platform_device *dev)
155{
156 struct s3c2410_spigpio *sp = platform_get_drvdata(dev);
157
158 spi_bitbang_stop(&sp->bitbang);
159 spi_master_put(sp->bitbang.master);
160
161 return 0;
162}
163
164/* all gpio should be held over suspend/resume, so we should
165 * not need to deal with this
166*/
167
168#define s3c2410_spigpio_suspend NULL
169#define s3c2410_spigpio_resume NULL
170
171/* work with hotplug and coldplug */
172MODULE_ALIAS("platform:spi_s3c24xx_gpio");
173
174static struct platform_driver s3c2410_spigpio_drv = {
175 .probe = s3c2410_spigpio_probe,
176 .remove = s3c2410_spigpio_remove,
177 .suspend = s3c2410_spigpio_suspend,
178 .resume = s3c2410_spigpio_resume,
179 .driver = {
180 .name = "spi_s3c24xx_gpio",
181 .owner = THIS_MODULE,
182 },
183};
184
185static int __init s3c2410_spigpio_init(void)
186{
187 return platform_driver_register(&s3c2410_spigpio_drv);
188}
189
190static void __exit s3c2410_spigpio_exit(void)
191{
192 platform_driver_unregister(&s3c2410_spigpio_drv);
193}
194
195module_init(s3c2410_spigpio_init);
196module_exit(s3c2410_spigpio_exit);
197
198MODULE_DESCRIPTION("S3C24XX SPI Driver");
199MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
200MODULE_LICENSE("GPL");