aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@evo.osdl.org>2005-09-06 03:45:34 -0400
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-06 03:45:34 -0400
commit1e231efe50ffe4d291be24d2fe393188de9c4b08 (patch)
tree5a7b92970eedd27c74bdf29c2cbe23e9b6a6a849 /arch
parentef88b7dba2b47c70037a34a599d383462bb74bd3 (diff)
parent0ce7625f3c1e3f921f6b83f7e944e00031a39dfa (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
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
-rw-r--r--arch/arm/mach-s3c2410/mach-n30.c30
4 files changed, 40 insertions, 20 deletions
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
index cfd0d3e550d..688a595598c 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 86b862f56e7..06ea730e867 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 0e4f6fab100..47cfb8bb831 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");
diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c
index 79044d9bce3..66bf5bb2b3d 100644
--- a/arch/arm/mach-s3c2410/mach-n30.c
+++ b/arch/arm/mach-s3c2410/mach-n30.c
@@ -110,34 +110,24 @@ void __init n30_init_irq(void)
110 s3c24xx_init_irq(); 110 s3c24xx_init_irq();
111} 111}
112 112
113 113/* GPB3 is the line that controls the pull-up for the USB D+ line */
114static int n30_usbstart_thread(void *unused)
115{
116 /* Turn off suspend on both USB ports, and switch the
117 * selectable USB port to USB device mode. */
118 writel(readl(S3C2410_MISCCR) & ~0x00003008, S3C2410_MISCCR);
119
120 /* Turn off the D+ pull up for 3 seconds so that the USB host
121 * at the other end will do a rescan of the USB bus. */
122 s3c2410_gpio_setpin(S3C2410_GPB3, 0);
123
124 msleep_interruptible(3*HZ);
125
126 s3c2410_gpio_setpin(S3C2410_GPB3, 1);
127
128 return 0;
129}
130
131 114
132void __init n30_init(void) 115void __init n30_init(void)
133{ 116{
134 s3c_device_i2c.dev.platform_data = &n30_i2ccfg; 117 s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
135 118
136 kthread_run(n30_usbstart_thread, NULL, "n30_usbstart"); 119 /* Turn off suspend on both USB ports, and switch the
120 * selectable USB port to USB device mode. */
121
122 s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST |
123 S3C2410_MISCCR_USBSUSPND0 |
124 S3C2410_MISCCR_USBSUSPND1, 0x0);
137} 125}
138 126
139MACHINE_START(N30, "Acer-N30") 127MACHINE_START(N30, "Acer-N30")
140 /* Maintainer: Christer Weinigel <christer@weinigel.se>, Ben Dooks <ben-linux@fluff.org> */ 128 /* Maintainer: Christer Weinigel <christer@weinigel.se>,
129 Ben Dooks <ben-linux@fluff.org>
130 */
141 .phys_ram = S3C2410_SDRAM_PA, 131 .phys_ram = S3C2410_SDRAM_PA,
142 .phys_io = S3C2410_PA_UART, 132 .phys_io = S3C2410_PA_UART,
143 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, 133 .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,