aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2005-09-05 15:49:54 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-09-05 15:49:54 -0400
commit0ce7625f3c1e3f921f6b83f7e944e00031a39dfa (patch)
treebf04a478adbad082fe4689cecd02c2cd8c1f6031 /arch
parent027da01d734db0ca9dd1a084339dab07ab576935 (diff)
[ARM] 2882/1: pxa2xx_sharpsl: Update PCMCIA driver to support variety of new hardware
Patch from Richard Purdie This patch updates the PCMCIA pxa2xx_sharpsl driver to support multiple scoop devices by adding a scoop to pcmcia slot mapping structure. It adds platform support for poodle, is known to work on spitz (which is dual slot) and should also support collie with a minor amount of further work. Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/common/scoop.c6
-rw-r--r--arch/arm/mach-pxa/corgi.c12
-rw-r--r--arch/arm/mach-pxa/poodle.c12
3 files changed, 30 insertions, 0 deletions
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
index cfd0d3e550d9..688a595598c8 100644
--- a/arch/arm/common/scoop.c
+++ b/arch/arm/common/scoop.c
@@ -17,6 +17,12 @@
17 17
18#define SCOOP_REG(d,adr) (*(volatile unsigned short*)(d +(adr))) 18#define SCOOP_REG(d,adr) (*(volatile unsigned short*)(d +(adr)))
19 19
20/* PCMCIA to Scoop linkage structures for pxa2xx_sharpsl.c
21 There is no easy way to link multiple scoop devices into one
22 single entity for the pxa2xx_pcmcia device */
23int scoop_num;
24struct scoop_pcmcia_dev *scoop_devs;
25
20struct scoop_dev { 26struct scoop_dev {
21 void *base; 27 void *base;
22 spinlock_t scoop_lock; 28 spinlock_t scoop_lock;
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 86b862f56e7e..06ea730e8675 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -60,6 +60,15 @@ static struct scoop_config corgi_scoop_setup = {
60 .io_out = CORGI_SCOOP_IO_OUT, 60 .io_out = CORGI_SCOOP_IO_OUT,
61}; 61};
62 62
63static struct scoop_pcmcia_dev corgi_pcmcia_scoop[] = {
64{
65 .dev = &corgiscoop_device.dev,
66 .irq = CORGI_IRQ_GPIO_CF_IRQ,
67 .cd_irq = CORGI_IRQ_GPIO_CF_CD,
68 .cd_irq_str = "PCMCIA0 CD",
69},
70};
71
63struct platform_device corgiscoop_device = { 72struct platform_device corgiscoop_device = {
64 .name = "sharp-scoop", 73 .name = "sharp-scoop",
65 .id = -1, 74 .id = -1,
@@ -241,6 +250,9 @@ static void __init corgi_init(void)
241 pxa_set_udc_info(&udc_info); 250 pxa_set_udc_info(&udc_info);
242 pxa_set_mci_info(&corgi_mci_platform_data); 251 pxa_set_mci_info(&corgi_mci_platform_data);
243 252
253 scoop_num = 1;
254 scoop_devs = &corgi_pcmcia_scoop[0];
255
244 platform_add_devices(devices, ARRAY_SIZE(devices)); 256 platform_add_devices(devices, ARRAY_SIZE(devices));
245} 257}
246 258
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 0e4f6fab100a..47cfb8bb8318 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -62,6 +62,15 @@ struct platform_device poodle_scoop_device = {
62 .resource = poodle_scoop_resources, 62 .resource = poodle_scoop_resources,
63}; 63};
64 64
65static struct scoop_pcmcia_dev poodle_pcmcia_scoop[] = {
66{
67 .dev = &poodle_scoop_device.dev,
68 .irq = POODLE_IRQ_GPIO_CF_IRQ,
69 .cd_irq = POODLE_IRQ_GPIO_CF_CD,
70 .cd_irq_str = "PCMCIA0 CD",
71},
72};
73
65 74
66/* LoCoMo device */ 75/* LoCoMo device */
67static struct resource locomo_resources[] = { 76static struct resource locomo_resources[] = {
@@ -147,6 +156,9 @@ static void __init poodle_init(void)
147 156
148 set_pxa_fb_info(&poodle_fb_info); 157 set_pxa_fb_info(&poodle_fb_info);
149 158
159 scoop_num = 1;
160 scoop_devs = &poodle_pcmcia_scoop[0];
161
150 ret = platform_add_devices(devices, ARRAY_SIZE(devices)); 162 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
151 if (ret) { 163 if (ret) {
152 printk(KERN_WARNING "poodle: Unable to register LoCoMo device\n"); 164 printk(KERN_WARNING "poodle: Unable to register LoCoMo device\n");