diff options
Diffstat (limited to 'drivers')
28 files changed, 175 insertions, 235 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 8e665f2e3138..fca4140a50a9 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
@@ -170,22 +170,19 @@ acpi_ec_enter_burst_mode ( | |||
170 | status = acpi_ec_read_status(ec); | 170 | status = acpi_ec_read_status(ec); |
171 | if (status != -EINVAL && | 171 | if (status != -EINVAL && |
172 | !(status & ACPI_EC_FLAG_BURST)){ | 172 | !(status & ACPI_EC_FLAG_BURST)){ |
173 | ACPI_DEBUG_PRINT((ACPI_DB_INFO,"entering burst mode \n")); | ||
174 | acpi_hw_low_level_write(8, ACPI_EC_BURST_ENABLE, &ec->command_addr); | 173 | acpi_hw_low_level_write(8, ACPI_EC_BURST_ENABLE, &ec->command_addr); |
175 | status = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF); | 174 | status = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF); |
176 | if (status){ | 175 | if (status){ |
177 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); | 176 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); |
178 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR," status = %d\n", status)); | ||
179 | return_VALUE(-EINVAL); | 177 | return_VALUE(-EINVAL); |
180 | } | 178 | } |
181 | acpi_hw_low_level_read(8, &tmp, &ec->data_addr); | 179 | acpi_hw_low_level_read(8, &tmp, &ec->data_addr); |
182 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); | 180 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); |
183 | if(tmp != 0x90 ) {/* Burst ACK byte*/ | 181 | if(tmp != 0x90 ) {/* Burst ACK byte*/ |
184 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR,"Ack failed \n")); | ||
185 | return_VALUE(-EINVAL); | 182 | return_VALUE(-EINVAL); |
186 | } | 183 | } |
187 | } else | 184 | } |
188 | ACPI_DEBUG_PRINT((ACPI_DB_INFO,"already be in burst mode \n")); | 185 | |
189 | atomic_set(&ec->leaving_burst , 0); | 186 | atomic_set(&ec->leaving_burst , 0); |
190 | return_VALUE(0); | 187 | return_VALUE(0); |
191 | } | 188 | } |
@@ -202,7 +199,6 @@ acpi_ec_leave_burst_mode ( | |||
202 | status = acpi_ec_read_status(ec); | 199 | status = acpi_ec_read_status(ec); |
203 | if (status != -EINVAL && | 200 | if (status != -EINVAL && |
204 | (status & ACPI_EC_FLAG_BURST)){ | 201 | (status & ACPI_EC_FLAG_BURST)){ |
205 | ACPI_DEBUG_PRINT((ACPI_DB_INFO,"leaving burst mode\n")); | ||
206 | acpi_hw_low_level_write(8, ACPI_EC_BURST_DISABLE, &ec->command_addr); | 202 | acpi_hw_low_level_write(8, ACPI_EC_BURST_DISABLE, &ec->command_addr); |
207 | status = acpi_ec_wait(ec, ACPI_EC_FLAG_IBF); | 203 | status = acpi_ec_wait(ec, ACPI_EC_FLAG_IBF); |
208 | if (status){ | 204 | if (status){ |
@@ -212,14 +208,7 @@ acpi_ec_leave_burst_mode ( | |||
212 | } | 208 | } |
213 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); | 209 | acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR); |
214 | status = acpi_ec_read_status(ec); | 210 | status = acpi_ec_read_status(ec); |
215 | if (status != -EINVAL && | 211 | } |
216 | (status & ACPI_EC_FLAG_BURST)) { | ||
217 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR,"------->status fail\n")); | ||
218 | return_VALUE(-EINVAL); | ||
219 | } | ||
220 | }else | ||
221 | ACPI_DEBUG_PRINT((ACPI_DB_INFO,"already be in Non-burst mode \n")); | ||
222 | ACPI_DEBUG_PRINT((ACPI_DB_INFO,"leaving burst mode\n")); | ||
223 | 212 | ||
224 | return_VALUE(0); | 213 | return_VALUE(0); |
225 | } | 214 | } |
diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c index c46d9520c5a7..73c6b85299c1 100644 --- a/drivers/atm/ambassador.c +++ b/drivers/atm/ambassador.c | |||
@@ -794,7 +794,9 @@ static void drain_rx_pools (amb_dev * dev) { | |||
794 | drain_rx_pool (dev, pool); | 794 | drain_rx_pool (dev, pool); |
795 | } | 795 | } |
796 | 796 | ||
797 | static inline void fill_rx_pool (amb_dev * dev, unsigned char pool, int priority) { | 797 | static inline void fill_rx_pool (amb_dev * dev, unsigned char pool, |
798 | unsigned int __nocast priority) | ||
799 | { | ||
798 | rx_in rx; | 800 | rx_in rx; |
799 | amb_rxq * rxq; | 801 | amb_rxq * rxq; |
800 | 802 | ||
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index 101f0cc33d10..b078fa548ebf 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c | |||
@@ -1374,7 +1374,8 @@ static void reset_chip (struct fs_dev *dev) | |||
1374 | } | 1374 | } |
1375 | } | 1375 | } |
1376 | 1376 | ||
1377 | static void __devinit *aligned_kmalloc (int size, int flags, int alignment) | 1377 | static void __devinit *aligned_kmalloc (int size, unsigned int __nocast flags, |
1378 | int alignment) | ||
1378 | { | 1379 | { |
1379 | void *t; | 1380 | void *t; |
1380 | 1381 | ||
@@ -1464,7 +1465,8 @@ static inline int nr_buffers_in_freepool (struct fs_dev *dev, struct freepool *f | |||
1464 | does. I've seen "receive abort: no buffers" and things started | 1465 | does. I've seen "receive abort: no buffers" and things started |
1465 | working again after that... -- REW */ | 1466 | working again after that... -- REW */ |
1466 | 1467 | ||
1467 | static void top_off_fp (struct fs_dev *dev, struct freepool *fp, int gfp_flags) | 1468 | static void top_off_fp (struct fs_dev *dev, struct freepool *fp, |
1469 | unsigned int __nocast gfp_flags) | ||
1468 | { | 1470 | { |
1469 | struct FS_BPENTRY *qe, *ne; | 1471 | struct FS_BPENTRY *qe, *ne; |
1470 | struct sk_buff *skb; | 1472 | struct sk_buff *skb; |
diff --git a/drivers/atm/he.c b/drivers/atm/he.c index df2c83fd5496..28250c9b32d6 100644 --- a/drivers/atm/he.c +++ b/drivers/atm/he.c | |||
@@ -57,7 +57,6 @@ | |||
57 | 57 | ||
58 | #include <linux/config.h> | 58 | #include <linux/config.h> |
59 | #include <linux/module.h> | 59 | #include <linux/module.h> |
60 | #include <linux/version.h> | ||
61 | #include <linux/kernel.h> | 60 | #include <linux/kernel.h> |
62 | #include <linux/skbuff.h> | 61 | #include <linux/skbuff.h> |
63 | #include <linux/pci.h> | 62 | #include <linux/pci.h> |
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c index baaf1a3d2242..30b7e990ed0b 100644 --- a/drivers/atm/idt77252.c +++ b/drivers/atm/idt77252.c | |||
@@ -46,6 +46,7 @@ static char const rcsid[] = | |||
46 | #include <linux/init.h> | 46 | #include <linux/init.h> |
47 | #include <linux/bitops.h> | 47 | #include <linux/bitops.h> |
48 | #include <linux/wait.h> | 48 | #include <linux/wait.h> |
49 | #include <linux/jiffies.h> | ||
49 | #include <asm/semaphore.h> | 50 | #include <asm/semaphore.h> |
50 | #include <asm/io.h> | 51 | #include <asm/io.h> |
51 | #include <asm/uaccess.h> | 52 | #include <asm/uaccess.h> |
@@ -780,7 +781,7 @@ push_on_scq(struct idt77252_dev *card, struct vc_map *vc, struct sk_buff *skb) | |||
780 | return 0; | 781 | return 0; |
781 | 782 | ||
782 | out: | 783 | out: |
783 | if (jiffies - scq->trans_start > HZ) { | 784 | if (time_after(jiffies, scq->trans_start + HZ)) { |
784 | printk("%s: Error pushing TBD for %d.%d\n", | 785 | printk("%s: Error pushing TBD for %d.%d\n", |
785 | card->name, vc->tx_vcc->vpi, vc->tx_vcc->vci); | 786 | card->name, vc->tx_vcc->vpi, vc->tx_vcc->vci); |
786 | #ifdef CONFIG_ATM_IDT77252_DEBUG | 787 | #ifdef CONFIG_ATM_IDT77252_DEBUG |
diff --git a/drivers/atm/zatm.c b/drivers/atm/zatm.c index 8d5e65cb9755..a2b236a966e0 100644 --- a/drivers/atm/zatm.c +++ b/drivers/atm/zatm.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/skbuff.h> | 16 | #include <linux/skbuff.h> |
17 | #include <linux/netdevice.h> | 17 | #include <linux/netdevice.h> |
18 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
19 | #include <linux/ioport.h> /* for request_region */ | ||
20 | #include <linux/uio.h> | 19 | #include <linux/uio.h> |
21 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/dma-mapping.h> | ||
22 | #include <linux/atm_zatm.h> | 22 | #include <linux/atm_zatm.h> |
23 | #include <linux/capability.h> | 23 | #include <linux/capability.h> |
24 | #include <linux/bitops.h> | 24 | #include <linux/bitops.h> |
@@ -1257,22 +1257,22 @@ static int __init zatm_init(struct atm_dev *dev) | |||
1257 | 1257 | ||
1258 | static int __init zatm_start(struct atm_dev *dev) | 1258 | static int __init zatm_start(struct atm_dev *dev) |
1259 | { | 1259 | { |
1260 | struct zatm_dev *zatm_dev; | 1260 | struct zatm_dev *zatm_dev = ZATM_DEV(dev); |
1261 | struct pci_dev *pdev = zatm_dev->pci_dev; | ||
1261 | unsigned long curr; | 1262 | unsigned long curr; |
1262 | int pools,vccs,rx; | 1263 | int pools,vccs,rx; |
1263 | int error,i,ld; | 1264 | int error, i, ld; |
1264 | 1265 | ||
1265 | DPRINTK("zatm_start\n"); | 1266 | DPRINTK("zatm_start\n"); |
1266 | zatm_dev = ZATM_DEV(dev); | ||
1267 | zatm_dev->rx_map = zatm_dev->tx_map = NULL; | 1267 | zatm_dev->rx_map = zatm_dev->tx_map = NULL; |
1268 | for (i = 0; i < NR_MBX; i++) | 1268 | for (i = 0; i < NR_MBX; i++) |
1269 | zatm_dev->mbx_start[i] = 0; | 1269 | zatm_dev->mbx_start[i] = 0; |
1270 | if (request_irq(zatm_dev->irq,&zatm_int,SA_SHIRQ,DEV_LABEL,dev)) { | 1270 | error = request_irq(zatm_dev->irq, zatm_int, SA_SHIRQ, DEV_LABEL, dev); |
1271 | printk(KERN_ERR DEV_LABEL "(itf %d): IRQ%d is already in use\n", | 1271 | if (error < 0) { |
1272 | dev->number,zatm_dev->irq); | 1272 | printk(KERN_ERR DEV_LABEL "(itf %d): IRQ%d is already in use\n", |
1273 | return -EAGAIN; | 1273 | dev->number,zatm_dev->irq); |
1274 | goto done; | ||
1274 | } | 1275 | } |
1275 | request_region(zatm_dev->base,uPD98401_PORTS,DEV_LABEL); | ||
1276 | /* define memory regions */ | 1276 | /* define memory regions */ |
1277 | pools = NR_POOLS; | 1277 | pools = NR_POOLS; |
1278 | if (NR_SHAPERS*SHAPER_SIZE > pools*POOL_SIZE) | 1278 | if (NR_SHAPERS*SHAPER_SIZE > pools*POOL_SIZE) |
@@ -1299,51 +1299,66 @@ static int __init zatm_start(struct atm_dev *dev) | |||
1299 | "%ld VCs\n",dev->number,NR_SHAPERS,pools,rx, | 1299 | "%ld VCs\n",dev->number,NR_SHAPERS,pools,rx, |
1300 | (zatm_dev->mem-curr*4)/VC_SIZE); | 1300 | (zatm_dev->mem-curr*4)/VC_SIZE); |
1301 | /* create mailboxes */ | 1301 | /* create mailboxes */ |
1302 | for (i = 0; i < NR_MBX; i++) | 1302 | for (i = 0; i < NR_MBX; i++) { |
1303 | if (mbx_entries[i]) { | 1303 | void *mbx; |
1304 | unsigned long here; | 1304 | dma_addr_t mbx_dma; |
1305 | 1305 | ||
1306 | here = (unsigned long) kmalloc(2*MBX_SIZE(i), | 1306 | if (!mbx_entries[i]) |
1307 | GFP_KERNEL); | 1307 | continue; |
1308 | if (!here) { | 1308 | mbx = pci_alloc_consistent(pdev, 2*MBX_SIZE(i), &mbx_dma); |
1309 | error = -ENOMEM; | 1309 | if (!mbx) { |
1310 | goto out; | 1310 | error = -ENOMEM; |
1311 | } | 1311 | goto out; |
1312 | if ((here^(here+MBX_SIZE(i))) & ~0xffffUL)/* paranoia */ | ||
1313 | here = (here & ~0xffffUL)+0x10000; | ||
1314 | zatm_dev->mbx_start[i] = here; | ||
1315 | if ((here^virt_to_bus((void *) here)) & 0xffff) { | ||
1316 | printk(KERN_ERR DEV_LABEL "(itf %d): system " | ||
1317 | "bus incompatible with driver\n", | ||
1318 | dev->number); | ||
1319 | error = -ENODEV; | ||
1320 | goto out; | ||
1321 | } | ||
1322 | DPRINTK("mbx@0x%08lx-0x%08lx\n",here,here+MBX_SIZE(i)); | ||
1323 | zatm_dev->mbx_end[i] = (here+MBX_SIZE(i)) & 0xffff; | ||
1324 | zout(virt_to_bus((void *) here) >> 16,MSH(i)); | ||
1325 | zout(virt_to_bus((void *) here),MSL(i)); | ||
1326 | zout((here+MBX_SIZE(i)) & 0xffff,MBA(i)); | ||
1327 | zout(here & 0xffff,MTA(i)); | ||
1328 | zout(here & 0xffff,MWA(i)); | ||
1329 | } | 1312 | } |
1313 | /* | ||
1314 | * Alignment provided by pci_alloc_consistent() isn't enough | ||
1315 | * for this device. | ||
1316 | */ | ||
1317 | if (((unsigned long)mbx ^ mbx_dma) & 0xffff) { | ||
1318 | printk(KERN_ERR DEV_LABEL "(itf %d): system " | ||
1319 | "bus incompatible with driver\n", dev->number); | ||
1320 | pci_free_consistent(pdev, 2*MBX_SIZE(i), mbx, mbx_dma); | ||
1321 | error = -ENODEV; | ||
1322 | goto out; | ||
1323 | } | ||
1324 | DPRINTK("mbx@0x%08lx-0x%08lx\n", mbx, mbx + MBX_SIZE(i)); | ||
1325 | zatm_dev->mbx_start[i] = (unsigned long)mbx; | ||
1326 | zatm_dev->mbx_dma[i] = mbx_dma; | ||
1327 | zatm_dev->mbx_end[i] = (zatm_dev->mbx_start[i] + MBX_SIZE(i)) & | ||
1328 | 0xffff; | ||
1329 | zout(mbx_dma >> 16, MSH(i)); | ||
1330 | zout(mbx_dma, MSL(i)); | ||
1331 | zout(zatm_dev->mbx_end[i], MBA(i)); | ||
1332 | zout((unsigned long)mbx & 0xffff, MTA(i)); | ||
1333 | zout((unsigned long)mbx & 0xffff, MWA(i)); | ||
1334 | } | ||
1330 | error = start_tx(dev); | 1335 | error = start_tx(dev); |
1331 | if (error) goto out; | 1336 | if (error) |
1337 | goto out; | ||
1332 | error = start_rx(dev); | 1338 | error = start_rx(dev); |
1333 | if (error) goto out; | 1339 | if (error) |
1340 | goto out_tx; | ||
1334 | error = dev->phy->start(dev); | 1341 | error = dev->phy->start(dev); |
1335 | if (error) goto out; | 1342 | if (error) |
1343 | goto out_rx; | ||
1336 | zout(0xffffffff,IMR); /* enable interrupts */ | 1344 | zout(0xffffffff,IMR); /* enable interrupts */ |
1337 | /* enable TX & RX */ | 1345 | /* enable TX & RX */ |
1338 | zout(zin(GMR) | uPD98401_GMR_SE | uPD98401_GMR_RE,GMR); | 1346 | zout(zin(GMR) | uPD98401_GMR_SE | uPD98401_GMR_RE,GMR); |
1339 | return 0; | 1347 | done: |
1340 | out: | 1348 | return error; |
1341 | for (i = 0; i < NR_MBX; i++) | 1349 | |
1342 | kfree(zatm_dev->mbx_start[i]); | 1350 | out_rx: |
1343 | kfree(zatm_dev->rx_map); | 1351 | kfree(zatm_dev->rx_map); |
1352 | out_tx: | ||
1344 | kfree(zatm_dev->tx_map); | 1353 | kfree(zatm_dev->tx_map); |
1354 | out: | ||
1355 | while (i-- > 0) { | ||
1356 | pci_free_consistent(pdev, 2*MBX_SIZE(i), | ||
1357 | (void *)zatm_dev->mbx_start[i], | ||
1358 | zatm_dev->mbx_dma[i]); | ||
1359 | } | ||
1345 | free_irq(zatm_dev->irq, dev); | 1360 | free_irq(zatm_dev->irq, dev); |
1346 | return error; | 1361 | goto done; |
1347 | } | 1362 | } |
1348 | 1363 | ||
1349 | 1364 | ||
diff --git a/drivers/atm/zatm.h b/drivers/atm/zatm.h index 34a0480f63d6..416fe0fda60c 100644 --- a/drivers/atm/zatm.h +++ b/drivers/atm/zatm.h | |||
@@ -73,6 +73,7 @@ struct zatm_dev { | |||
73 | int chans; /* map size, must be 2^n */ | 73 | int chans; /* map size, must be 2^n */ |
74 | /*-------------------------------- mailboxes */ | 74 | /*-------------------------------- mailboxes */ |
75 | unsigned long mbx_start[NR_MBX];/* start addresses */ | 75 | unsigned long mbx_start[NR_MBX];/* start addresses */ |
76 | dma_addr_t mbx_dma[NR_MBX]; | ||
76 | u16 mbx_end[NR_MBX]; /* end offset (in bytes) */ | 77 | u16 mbx_end[NR_MBX]; /* end offset (in bytes) */ |
77 | /*-------------------------------- other pointers */ | 78 | /*-------------------------------- other pointers */ |
78 | u32 pool_base; /* Free buffer pool dsc (word addr) */ | 79 | u32 pool_base; /* Free buffer pool dsc (word addr) */ |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 9a07ff7a7777..534b598866b3 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2544,9 +2544,25 @@ config SHAPER | |||
2544 | 2544 | ||
2545 | config NETCONSOLE | 2545 | config NETCONSOLE |
2546 | tristate "Network console logging support (EXPERIMENTAL)" | 2546 | tristate "Network console logging support (EXPERIMENTAL)" |
2547 | depends on NETDEVICES && EXPERIMENTAL | 2547 | depends on NETDEVICES && INET && EXPERIMENTAL |
2548 | ---help--- | 2548 | ---help--- |
2549 | If you want to log kernel messages over the network, enable this. | 2549 | If you want to log kernel messages over the network, enable this. |
2550 | See <file:Documentation/networking/netconsole.txt> for details. | 2550 | See <file:Documentation/networking/netconsole.txt> for details. |
2551 | 2551 | ||
2552 | config NETPOLL | ||
2553 | def_bool NETCONSOLE | ||
2554 | |||
2555 | config NETPOLL_RX | ||
2556 | bool "Netpoll support for trapping incoming packets" | ||
2557 | default n | ||
2558 | depends on NETPOLL | ||
2559 | |||
2560 | config NETPOLL_TRAP | ||
2561 | bool "Netpoll traffic trapping" | ||
2562 | default n | ||
2563 | depends on NETPOLL | ||
2564 | |||
2565 | config NET_POLL_CONTROLLER | ||
2566 | def_bool NETPOLL | ||
2567 | |||
2552 | endmenu | 2568 | endmenu |
diff --git a/drivers/net/eql.c b/drivers/net/eql.c index dd6865820372..aa1569182fd6 100644 --- a/drivers/net/eql.c +++ b/drivers/net/eql.c | |||
@@ -132,7 +132,7 @@ static struct net_device_stats *eql_get_stats(struct net_device *dev); | |||
132 | #define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE) | 132 | #define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE) |
133 | #define eql_is_master(dev) ((dev->flags & IFF_MASTER) == IFF_MASTER) | 133 | #define eql_is_master(dev) ((dev->flags & IFF_MASTER) == IFF_MASTER) |
134 | 134 | ||
135 | static void eql_kill_one_slave(slave_t *slave); | 135 | static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave); |
136 | 136 | ||
137 | static void eql_timer(unsigned long param) | 137 | static void eql_timer(unsigned long param) |
138 | { | 138 | { |
@@ -149,7 +149,7 @@ static void eql_timer(unsigned long param) | |||
149 | if (slave->bytes_queued < 0) | 149 | if (slave->bytes_queued < 0) |
150 | slave->bytes_queued = 0; | 150 | slave->bytes_queued = 0; |
151 | } else { | 151 | } else { |
152 | eql_kill_one_slave(slave); | 152 | eql_kill_one_slave(&eql->queue, slave); |
153 | } | 153 | } |
154 | 154 | ||
155 | } | 155 | } |
@@ -214,9 +214,10 @@ static int eql_open(struct net_device *dev) | |||
214 | return 0; | 214 | return 0; |
215 | } | 215 | } |
216 | 216 | ||
217 | static void eql_kill_one_slave(slave_t *slave) | 217 | static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave) |
218 | { | 218 | { |
219 | list_del(&slave->list); | 219 | list_del(&slave->list); |
220 | queue->num_slaves--; | ||
220 | slave->dev->flags &= ~IFF_SLAVE; | 221 | slave->dev->flags &= ~IFF_SLAVE; |
221 | dev_put(slave->dev); | 222 | dev_put(slave->dev); |
222 | kfree(slave); | 223 | kfree(slave); |
@@ -232,8 +233,7 @@ static void eql_kill_slave_queue(slave_queue_t *queue) | |||
232 | list_for_each_safe(this, tmp, head) { | 233 | list_for_each_safe(this, tmp, head) { |
233 | slave_t *s = list_entry(this, slave_t, list); | 234 | slave_t *s = list_entry(this, slave_t, list); |
234 | 235 | ||
235 | eql_kill_one_slave(s); | 236 | eql_kill_one_slave(queue, s); |
236 | queue->num_slaves--; | ||
237 | } | 237 | } |
238 | 238 | ||
239 | spin_unlock_bh(&queue->lock); | 239 | spin_unlock_bh(&queue->lock); |
@@ -318,7 +318,7 @@ static slave_t *__eql_schedule_slaves(slave_queue_t *queue) | |||
318 | } | 318 | } |
319 | } else { | 319 | } else { |
320 | /* We found a dead slave, kill it. */ | 320 | /* We found a dead slave, kill it. */ |
321 | eql_kill_one_slave(slave); | 321 | eql_kill_one_slave(queue, slave); |
322 | } | 322 | } |
323 | } | 323 | } |
324 | return best_slave; | 324 | return best_slave; |
@@ -393,7 +393,7 @@ static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave) | |||
393 | 393 | ||
394 | duplicate_slave = __eql_find_slave_dev(queue, slave->dev); | 394 | duplicate_slave = __eql_find_slave_dev(queue, slave->dev); |
395 | if (duplicate_slave != 0) | 395 | if (duplicate_slave != 0) |
396 | eql_kill_one_slave(duplicate_slave); | 396 | eql_kill_one_slave(queue, duplicate_slave); |
397 | 397 | ||
398 | list_add(&slave->list, &queue->all_slaves); | 398 | list_add(&slave->list, &queue->all_slaves); |
399 | queue->num_slaves++; | 399 | queue->num_slaves++; |
@@ -471,7 +471,7 @@ static int eql_emancipate(struct net_device *master_dev, slaving_request_t __use | |||
471 | slave_dev); | 471 | slave_dev); |
472 | 472 | ||
473 | if (slave) { | 473 | if (slave) { |
474 | eql_kill_one_slave(slave); | 474 | eql_kill_one_slave(&eql->queue, slave); |
475 | ret = 0; | 475 | ret = 0; |
476 | } | 476 | } |
477 | } | 477 | } |
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c index fbc2f58ff688..0d8bb4cccbb7 100644 --- a/drivers/net/pcmcia/smc91c92_cs.c +++ b/drivers/net/pcmcia/smc91c92_cs.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/ioport.h> | 41 | #include <linux/ioport.h> |
42 | #include <linux/ethtool.h> | 42 | #include <linux/ethtool.h> |
43 | #include <linux/mii.h> | 43 | #include <linux/mii.h> |
44 | #include <linux/jiffies.h> | ||
44 | 45 | ||
45 | #include <pcmcia/cs_types.h> | 46 | #include <pcmcia/cs_types.h> |
46 | #include <pcmcia/cs.h> | 47 | #include <pcmcia/cs.h> |
@@ -2092,7 +2093,7 @@ static void media_check(u_long arg) | |||
2092 | } | 2093 | } |
2093 | 2094 | ||
2094 | /* Ignore collisions unless we've had no rx's recently */ | 2095 | /* Ignore collisions unless we've had no rx's recently */ |
2095 | if (jiffies - dev->last_rx > HZ) { | 2096 | if (time_after(jiffies, dev->last_rx + HZ)) { |
2096 | if (smc->tx_err || (smc->media_status & EPH_16COL)) | 2097 | if (smc->tx_err || (smc->media_status & EPH_16COL)) |
2097 | media |= EPH_16COL; | 2098 | media |= EPH_16COL; |
2098 | } | 2099 | } |
diff --git a/drivers/net/wan/sdla_fr.c b/drivers/net/wan/sdla_fr.c index 2efccb0554c0..c5f5e62aab8b 100644 --- a/drivers/net/wan/sdla_fr.c +++ b/drivers/net/wan/sdla_fr.c | |||
@@ -152,6 +152,7 @@ | |||
152 | #include <asm/io.h> /* for inb(), outb(), etc. */ | 152 | #include <asm/io.h> /* for inb(), outb(), etc. */ |
153 | #include <linux/time.h> /* for do_gettimeofday */ | 153 | #include <linux/time.h> /* for do_gettimeofday */ |
154 | #include <linux/in.h> /* sockaddr_in */ | 154 | #include <linux/in.h> /* sockaddr_in */ |
155 | #include <linux/jiffies.h> /* time_after() macro */ | ||
155 | #include <asm/errno.h> | 156 | #include <asm/errno.h> |
156 | 157 | ||
157 | #include <linux/ip.h> | 158 | #include <linux/ip.h> |
@@ -773,7 +774,7 @@ static int update(struct wan_device* wandev) | |||
773 | for(;;) { | 774 | for(;;) { |
774 | if(card->u.f.update_comms_stats == 0) | 775 | if(card->u.f.update_comms_stats == 0) |
775 | break; | 776 | break; |
776 | if ((jiffies - timeout) > (1 * HZ)){ | 777 | if (time_after(jiffies, timeout + 1 * HZ)){ |
777 | card->u.f.update_comms_stats = 0; | 778 | card->u.f.update_comms_stats = 0; |
778 | return -EAGAIN; | 779 | return -EAGAIN; |
779 | } | 780 | } |
@@ -4799,7 +4800,7 @@ static void trigger_unconfig_fr(struct net_device *dev) | |||
4799 | { | 4800 | { |
4800 | fr_channel_t *chan = dev->priv; | 4801 | fr_channel_t *chan = dev->priv; |
4801 | volatile sdla_t *card = chan->card; | 4802 | volatile sdla_t *card = chan->card; |
4802 | u32 timeout; | 4803 | unsigned long timeout; |
4803 | fr508_flags_t* flags = card->flags; | 4804 | fr508_flags_t* flags = card->flags; |
4804 | int reset_critical=0; | 4805 | int reset_critical=0; |
4805 | 4806 | ||
@@ -4821,7 +4822,7 @@ static void trigger_unconfig_fr(struct net_device *dev) | |||
4821 | if(!(card->u.f.timer_int_enabled & TMR_INT_ENABLED_UNCONFIG)) | 4822 | if(!(card->u.f.timer_int_enabled & TMR_INT_ENABLED_UNCONFIG)) |
4822 | break; | 4823 | break; |
4823 | 4824 | ||
4824 | if ((jiffies - timeout) > (1 * HZ)){ | 4825 | if (time_after(jiffies, timeout + 1 * HZ)){ |
4825 | card->u.f.timer_int_enabled &= ~TMR_INT_ENABLED_UNCONFIG; | 4826 | card->u.f.timer_int_enabled &= ~TMR_INT_ENABLED_UNCONFIG; |
4826 | printk(KERN_INFO "%s: Failed to delete DLCI %i\n", | 4827 | printk(KERN_INFO "%s: Failed to delete DLCI %i\n", |
4827 | card->devname,chan->dlci); | 4828 | card->devname,chan->dlci); |
diff --git a/drivers/net/wan/sdla_ft1.c b/drivers/net/wan/sdla_ft1.c index 5e3124856eb0..9d6528a50f7b 100644 --- a/drivers/net/wan/sdla_ft1.c +++ b/drivers/net/wan/sdla_ft1.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/wanrouter.h> /* WAN router definitions */ | 29 | #include <linux/wanrouter.h> /* WAN router definitions */ |
30 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ | 30 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ |
31 | #include <linux/if_arp.h> /* ARPHRD_* defines */ | 31 | #include <linux/if_arp.h> /* ARPHRD_* defines */ |
32 | #include <linux/jiffies.h> /* time_after() macro */ | ||
32 | 33 | ||
33 | #include <linux/inetdevice.h> | 34 | #include <linux/inetdevice.h> |
34 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
@@ -164,7 +165,7 @@ int wpft1_init (sdla_t* card, wandev_conf_t* conf) | |||
164 | 165 | ||
165 | timeout = jiffies; | 166 | timeout = jiffies; |
166 | while (mb->return_code != 'I') /* Wait 1s for board to initialize */ | 167 | while (mb->return_code != 'I') /* Wait 1s for board to initialize */ |
167 | if ((jiffies - timeout) > 1*HZ) break; | 168 | if (time_after(jiffies, timeout + 1*HZ)) break; |
168 | 169 | ||
169 | if (mb->return_code != 'I') { | 170 | if (mb->return_code != 'I') { |
170 | printk(KERN_INFO | 171 | printk(KERN_INFO |
diff --git a/drivers/net/wan/sdla_ppp.c b/drivers/net/wan/sdla_ppp.c index 1761cb68ab48..a4b489cccbbf 100644 --- a/drivers/net/wan/sdla_ppp.c +++ b/drivers/net/wan/sdla_ppp.c | |||
@@ -101,6 +101,7 @@ | |||
101 | #include <linux/if_arp.h> /* ARPHRD_* defines */ | 101 | #include <linux/if_arp.h> /* ARPHRD_* defines */ |
102 | #include <asm/byteorder.h> /* htons(), etc. */ | 102 | #include <asm/byteorder.h> /* htons(), etc. */ |
103 | #include <linux/in.h> /* sockaddr_in */ | 103 | #include <linux/in.h> /* sockaddr_in */ |
104 | #include <linux/jiffies.h> /* time_after() macro */ | ||
104 | 105 | ||
105 | 106 | ||
106 | #include <asm/uaccess.h> | 107 | #include <asm/uaccess.h> |
@@ -482,7 +483,7 @@ static int update(struct wan_device *wandev) | |||
482 | if(ppp_priv_area->update_comms_stats == 0){ | 483 | if(ppp_priv_area->update_comms_stats == 0){ |
483 | break; | 484 | break; |
484 | } | 485 | } |
485 | if ((jiffies - timeout) > (1 * HZ)){ | 486 | if (time_after(jiffies, timeout + 1 * HZ)){ |
486 | ppp_priv_area->update_comms_stats = 0; | 487 | ppp_priv_area->update_comms_stats = 0; |
487 | ppp_priv_area->timer_int_enabled &= | 488 | ppp_priv_area->timer_int_enabled &= |
488 | ~TMR_INT_ENABLED_UPDATE; | 489 | ~TMR_INT_ENABLED_UPDATE; |
diff --git a/drivers/net/wan/sdla_x25.c b/drivers/net/wan/sdla_x25.c index 3a93d2fd4fbf..8a95d61a2f8f 100644 --- a/drivers/net/wan/sdla_x25.c +++ b/drivers/net/wan/sdla_x25.c | |||
@@ -91,6 +91,7 @@ | |||
91 | #include <linux/wanrouter.h> /* WAN router definitions */ | 91 | #include <linux/wanrouter.h> /* WAN router definitions */ |
92 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ | 92 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ |
93 | #include <linux/workqueue.h> | 93 | #include <linux/workqueue.h> |
94 | #include <linux/jiffies.h> /* time_after() macro */ | ||
94 | #include <asm/byteorder.h> /* htons(), etc. */ | 95 | #include <asm/byteorder.h> /* htons(), etc. */ |
95 | #include <asm/atomic.h> | 96 | #include <asm/atomic.h> |
96 | #include <linux/delay.h> /* Experimental delay */ | 97 | #include <linux/delay.h> /* Experimental delay */ |
@@ -867,7 +868,7 @@ static int update(struct wan_device* wandev) | |||
867 | if (!(card->u.x.timer_int_enabled & TMR_INT_ENABLED_UPDATE)){ | 868 | if (!(card->u.x.timer_int_enabled & TMR_INT_ENABLED_UPDATE)){ |
868 | break; | 869 | break; |
869 | } | 870 | } |
870 | if ((jiffies-timeout) > 1*HZ){ | 871 | if (time_after(jiffies, timeout + 1*HZ)){ |
871 | card->u.x.timer_int_enabled &= ~TMR_INT_ENABLED_UPDATE; | 872 | card->u.x.timer_int_enabled &= ~TMR_INT_ENABLED_UPDATE; |
872 | return -EAGAIN; | 873 | return -EAGAIN; |
873 | } | 874 | } |
diff --git a/drivers/net/wan/wanpipe_multppp.c b/drivers/net/wan/wanpipe_multppp.c index 6aa6987d96cb..812a1183c502 100644 --- a/drivers/net/wan/wanpipe_multppp.c +++ b/drivers/net/wan/wanpipe_multppp.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/wanrouter.h> /* WAN router definitions */ | 26 | #include <linux/wanrouter.h> /* WAN router definitions */ |
27 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ | 27 | #include <linux/wanpipe.h> /* WANPIPE common user API definitions */ |
28 | #include <linux/if_arp.h> /* ARPHRD_* defines */ | 28 | #include <linux/if_arp.h> /* ARPHRD_* defines */ |
29 | #include <linux/jiffies.h> /* time_after() macro */ | ||
29 | 30 | ||
30 | #include <linux/in.h> /* sockaddr_in */ | 31 | #include <linux/in.h> /* sockaddr_in */ |
31 | #include <linux/inet.h> | 32 | #include <linux/inet.h> |
@@ -270,9 +271,9 @@ int wsppp_init (sdla_t* card, wandev_conf_t* conf) | |||
270 | ready to accept commands. We expect this to be completed in less | 271 | ready to accept commands. We expect this to be completed in less |
271 | than 1 second. */ | 272 | than 1 second. */ |
272 | 273 | ||
273 | timeout = jiffies; | 274 | timeout = jiffies + 1 * HZ; |
274 | while (mb->return_code != 'I') /* Wait 1s for board to initialize */ | 275 | while (mb->return_code != 'I') /* Wait 1s for board to initialize */ |
275 | if ((jiffies - timeout) > 1*HZ) break; | 276 | if (time_after(jiffies, timeout)) break; |
276 | 277 | ||
277 | if (mb->return_code != 'I') { | 278 | if (mb->return_code != 'I') { |
278 | printk(KERN_INFO | 279 | printk(KERN_INFO |
@@ -493,11 +494,11 @@ static int update(struct wan_device* wandev) | |||
493 | chdlc_priv_area->timer_int_enabled = TMR_INT_ENABLED_UPDATE; | 494 | chdlc_priv_area->timer_int_enabled = TMR_INT_ENABLED_UPDATE; |
494 | 495 | ||
495 | /* wait a maximum of 1 second for the statistics to be updated */ | 496 | /* wait a maximum of 1 second for the statistics to be updated */ |
496 | timeout = jiffies; | 497 | timeout = jiffies + 1 * HZ; |
497 | for(;;) { | 498 | for(;;) { |
498 | if(chdlc_priv_area->update_comms_stats == 0) | 499 | if(chdlc_priv_area->update_comms_stats == 0) |
499 | break; | 500 | break; |
500 | if ((jiffies - timeout) > (1 * HZ)){ | 501 | if (time_after(jiffies, timeout)){ |
501 | chdlc_priv_area->update_comms_stats = 0; | 502 | chdlc_priv_area->update_comms_stats = 0; |
502 | chdlc_priv_area->timer_int_enabled &= | 503 | chdlc_priv_area->timer_int_enabled &= |
503 | ~TMR_INT_ENABLED_UPDATE; | 504 | ~TMR_INT_ENABLED_UPDATE; |
diff --git a/drivers/sbus/char/Kconfig b/drivers/sbus/char/Kconfig index 90d8ef1f0bcc..a41778a490d6 100644 --- a/drivers/sbus/char/Kconfig +++ b/drivers/sbus/char/Kconfig | |||
@@ -71,20 +71,6 @@ config SUN_JSFLASH | |||
71 | 71 | ||
72 | # XXX Why don't we do "source drivers/char/Config.in" somewhere? | 72 | # XXX Why don't we do "source drivers/char/Config.in" somewhere? |
73 | # no shit | 73 | # no shit |
74 | config APM_RTC_IS_GMT | ||
75 | bool | ||
76 | depends on EXPERIMENTAL && SPARC32 && PCI | ||
77 | default y | ||
78 | help | ||
79 | Say Y here if your RTC (Real Time Clock a.k.a. hardware clock) | ||
80 | stores the time in GMT (Greenwich Mean Time). Say N if your RTC | ||
81 | stores localtime. | ||
82 | |||
83 | It is in fact recommended to store GMT in your RTC, because then you | ||
84 | don't have to worry about daylight savings time changes. The only | ||
85 | reason not to use GMT in your RTC is if you also run a broken OS | ||
86 | that doesn't understand GMT. | ||
87 | |||
88 | config RTC | 74 | config RTC |
89 | tristate "PC-style Real Time Clock Support" | 75 | tristate "PC-style Real Time Clock Support" |
90 | depends on PCI && EXPERIMENTAL && SPARC32 | 76 | depends on PCI && EXPERIMENTAL && SPARC32 |
diff --git a/drivers/sbus/char/aurora.c b/drivers/sbus/char/aurora.c index 650d5e924f47..d96cc47de566 100644 --- a/drivers/sbus/char/aurora.c +++ b/drivers/sbus/char/aurora.c | |||
@@ -1515,8 +1515,7 @@ static void aurora_close(struct tty_struct * tty, struct file * filp) | |||
1515 | */ | 1515 | */ |
1516 | timeout = jiffies+HZ; | 1516 | timeout = jiffies+HZ; |
1517 | while(port->SRER & SRER_TXEMPTY) { | 1517 | while(port->SRER & SRER_TXEMPTY) { |
1518 | current->state = TASK_INTERRUPTIBLE; | 1518 | msleep_interruptible(jiffies_to_msecs(port->timeout)); |
1519 | schedule_timeout(port->timeout); | ||
1520 | if (time_after(jiffies, timeout)) | 1519 | if (time_after(jiffies, timeout)) |
1521 | break; | 1520 | break; |
1522 | } | 1521 | } |
@@ -1533,8 +1532,7 @@ static void aurora_close(struct tty_struct * tty, struct file * filp) | |||
1533 | port->tty = 0; | 1532 | port->tty = 0; |
1534 | if (port->blocked_open) { | 1533 | if (port->blocked_open) { |
1535 | if (port->close_delay) { | 1534 | if (port->close_delay) { |
1536 | current->state = TASK_INTERRUPTIBLE; | 1535 | msleep_interruptible(jiffies_to_msecs(port->close_delay)); |
1537 | schedule_timeout(port->close_delay); | ||
1538 | } | 1536 | } |
1539 | wake_up_interruptible(&port->open_wait); | 1537 | wake_up_interruptible(&port->open_wait); |
1540 | } | 1538 | } |
diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c index d5259f7fee6d..b8a2c7353b0a 100644 --- a/drivers/sbus/char/bbc_envctrl.c +++ b/drivers/sbus/char/bbc_envctrl.c | |||
@@ -4,13 +4,14 @@ | |||
4 | * Copyright (C) 2001 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 2001 David S. Miller (davem@redhat.com) |
5 | */ | 5 | */ |
6 | 6 | ||
7 | #define __KERNEL_SYSCALLS__ | ||
8 | |||
7 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
8 | #include <linux/sched.h> | 10 | #include <linux/sched.h> |
9 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
10 | #include <linux/delay.h> | 12 | #include <linux/delay.h> |
11 | #include <asm/oplib.h> | 13 | #include <asm/oplib.h> |
12 | #include <asm/ebus.h> | 14 | #include <asm/ebus.h> |
13 | #define __KERNEL_SYSCALLS__ | ||
14 | static int errno; | 15 | static int errno; |
15 | #include <asm/unistd.h> | 16 | #include <asm/unistd.h> |
16 | 17 | ||
diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index f6ed35b24f43..9a8c572554f5 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c | |||
@@ -19,6 +19,8 @@ | |||
19 | * Daniele Bellucci <bellucda@tiscali.it> | 19 | * Daniele Bellucci <bellucda@tiscali.it> |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #define __KERNEL_SYSCALLS__ | ||
23 | |||
22 | #include <linux/config.h> | 24 | #include <linux/config.h> |
23 | #include <linux/module.h> | 25 | #include <linux/module.h> |
24 | #include <linux/sched.h> | 26 | #include <linux/sched.h> |
@@ -35,7 +37,6 @@ | |||
35 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
36 | #include <asm/envctrl.h> | 38 | #include <asm/envctrl.h> |
37 | 39 | ||
38 | #define __KERNEL_SYSCALLS__ | ||
39 | static int errno; | 40 | static int errno; |
40 | #include <asm/unistd.h> | 41 | #include <asm/unistd.h> |
41 | 42 | ||
@@ -1007,7 +1008,7 @@ static int kenvctrld(void *__unused) | |||
1007 | return -ENODEV; | 1008 | return -ENODEV; |
1008 | } | 1009 | } |
1009 | 1010 | ||
1010 | poll_interval = 5 * HZ; /* TODO env_mon_interval */ | 1011 | poll_interval = 5000; /* TODO env_mon_interval */ |
1011 | 1012 | ||
1012 | daemonize("kenvctrld"); | 1013 | daemonize("kenvctrld"); |
1013 | allow_signal(SIGKILL); | 1014 | allow_signal(SIGKILL); |
@@ -1016,10 +1017,7 @@ static int kenvctrld(void *__unused) | |||
1016 | 1017 | ||
1017 | printk(KERN_INFO "envctrl: %s starting...\n", current->comm); | 1018 | printk(KERN_INFO "envctrl: %s starting...\n", current->comm); |
1018 | for (;;) { | 1019 | for (;;) { |
1019 | current->state = TASK_INTERRUPTIBLE; | 1020 | if(msleep_interruptible(poll_interval)) |
1020 | schedule_timeout(poll_interval); | ||
1021 | |||
1022 | if(signal_pending(current)) | ||
1023 | break; | 1021 | break; |
1024 | 1022 | ||
1025 | for (whichcpu = 0; whichcpu < ENVCTRL_MAX_CPU; ++whichcpu) { | 1023 | for (whichcpu = 0; whichcpu < ENVCTRL_MAX_CPU; ++whichcpu) { |
diff --git a/drivers/sbus/char/vfc_i2c.c b/drivers/sbus/char/vfc_i2c.c index 95e3cebf792c..1faf1e75f71f 100644 --- a/drivers/sbus/char/vfc_i2c.c +++ b/drivers/sbus/char/vfc_i2c.c | |||
@@ -88,14 +88,16 @@ void vfc_i2c_delay_wakeup(struct vfc_dev *dev) | |||
88 | 88 | ||
89 | void vfc_i2c_delay_no_busy(struct vfc_dev *dev, unsigned long usecs) | 89 | void vfc_i2c_delay_no_busy(struct vfc_dev *dev, unsigned long usecs) |
90 | { | 90 | { |
91 | DEFINE_WAIT(wait); | ||
91 | init_timer(&dev->poll_timer); | 92 | init_timer(&dev->poll_timer); |
92 | dev->poll_timer.expires = jiffies + | 93 | dev->poll_timer.expires = jiffies + usecs_to_jiffies(usecs); |
93 | ((unsigned long)usecs*(HZ))/1000000; | ||
94 | dev->poll_timer.data=(unsigned long)dev; | 94 | dev->poll_timer.data=(unsigned long)dev; |
95 | dev->poll_timer.function=(void *)(unsigned long)vfc_i2c_delay_wakeup; | 95 | dev->poll_timer.function=(void *)(unsigned long)vfc_i2c_delay_wakeup; |
96 | add_timer(&dev->poll_timer); | 96 | add_timer(&dev->poll_timer); |
97 | sleep_on(&dev->poll_wait); | 97 | prepare_to_wait(&dev->poll_wait, &wait, TASK_UNINTERRUPTIBLE); |
98 | schedule(); | ||
98 | del_timer(&dev->poll_timer); | 99 | del_timer(&dev->poll_timer); |
100 | finish_wait(&dev->poll_wait, &wait); | ||
99 | } | 101 | } |
100 | 102 | ||
101 | void inline vfc_i2c_delay(struct vfc_dev *dev) | 103 | void inline vfc_i2c_delay(struct vfc_dev *dev) |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index de54bdc5398b..356f5556759a 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -389,6 +389,9 @@ static void __devexit sbs_exit(struct pci_dev *dev) | |||
389 | * - 10x cards have control registers in IO and/or memory space; | 389 | * - 10x cards have control registers in IO and/or memory space; |
390 | * - 20x cards have control registers in standard PCI configuration space. | 390 | * - 20x cards have control registers in standard PCI configuration space. |
391 | * | 391 | * |
392 | * There are also Quartet Serial cards which use Oxford Semiconductor | ||
393 | * 16954 quad UART PCI chip clocked by 18.432 MHz quartz. | ||
394 | * | ||
392 | * Note: some SIIG cards are probed by the parport_serial object. | 395 | * Note: some SIIG cards are probed by the parport_serial object. |
393 | */ | 396 | */ |
394 | 397 | ||
@@ -1026,6 +1029,8 @@ enum pci_board_num_t { | |||
1026 | pbn_b0_2_921600, | 1029 | pbn_b0_2_921600, |
1027 | pbn_b0_4_921600, | 1030 | pbn_b0_4_921600, |
1028 | 1031 | ||
1032 | pbn_b0_4_1152000, | ||
1033 | |||
1029 | pbn_b0_bt_1_115200, | 1034 | pbn_b0_bt_1_115200, |
1030 | pbn_b0_bt_2_115200, | 1035 | pbn_b0_bt_2_115200, |
1031 | pbn_b0_bt_8_115200, | 1036 | pbn_b0_bt_8_115200, |
@@ -1158,6 +1163,12 @@ static struct pci_board pci_boards[] __devinitdata = { | |||
1158 | .base_baud = 921600, | 1163 | .base_baud = 921600, |
1159 | .uart_offset = 8, | 1164 | .uart_offset = 8, |
1160 | }, | 1165 | }, |
1166 | [pbn_b0_4_1152000] = { | ||
1167 | .flags = FL_BASE0, | ||
1168 | .num_ports = 4, | ||
1169 | .base_baud = 1152000, | ||
1170 | .uart_offset = 8, | ||
1171 | }, | ||
1161 | 1172 | ||
1162 | [pbn_b0_bt_1_115200] = { | 1173 | [pbn_b0_bt_1_115200] = { |
1163 | .flags = FL_BASE0|FL_BASE_BARS, | 1174 | .flags = FL_BASE0|FL_BASE_BARS, |
@@ -1755,33 +1766,30 @@ pciserial_init_one(struct pci_dev *dev, const struct pci_device_id *ent) | |||
1755 | static void __devexit pciserial_remove_one(struct pci_dev *dev) | 1766 | static void __devexit pciserial_remove_one(struct pci_dev *dev) |
1756 | { | 1767 | { |
1757 | struct serial_private *priv = pci_get_drvdata(dev); | 1768 | struct serial_private *priv = pci_get_drvdata(dev); |
1769 | struct pci_serial_quirk *quirk; | ||
1770 | int i; | ||
1758 | 1771 | ||
1759 | pci_set_drvdata(dev, NULL); | 1772 | pci_set_drvdata(dev, NULL); |
1760 | 1773 | ||
1761 | if (priv) { | 1774 | for (i = 0; i < priv->nr; i++) |
1762 | struct pci_serial_quirk *quirk; | 1775 | serial8250_unregister_port(priv->line[i]); |
1763 | int i; | ||
1764 | |||
1765 | for (i = 0; i < priv->nr; i++) | ||
1766 | serial8250_unregister_port(priv->line[i]); | ||
1767 | 1776 | ||
1768 | for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) { | 1777 | for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) { |
1769 | if (priv->remapped_bar[i]) | 1778 | if (priv->remapped_bar[i]) |
1770 | iounmap(priv->remapped_bar[i]); | 1779 | iounmap(priv->remapped_bar[i]); |
1771 | priv->remapped_bar[i] = NULL; | 1780 | priv->remapped_bar[i] = NULL; |
1772 | } | 1781 | } |
1773 | 1782 | ||
1774 | /* | 1783 | /* |
1775 | * Find the exit quirks. | 1784 | * Find the exit quirks. |
1776 | */ | 1785 | */ |
1777 | quirk = find_quirk(dev); | 1786 | quirk = find_quirk(dev); |
1778 | if (quirk->exit) | 1787 | if (quirk->exit) |
1779 | quirk->exit(dev); | 1788 | quirk->exit(dev); |
1780 | 1789 | ||
1781 | pci_disable_device(dev); | 1790 | pci_disable_device(dev); |
1782 | 1791 | ||
1783 | kfree(priv); | 1792 | kfree(priv); |
1784 | } | ||
1785 | } | 1793 | } |
1786 | 1794 | ||
1787 | static int pciserial_suspend_one(struct pci_dev *dev, pm_message_t state) | 1795 | static int pciserial_suspend_one(struct pci_dev *dev, pm_message_t state) |
@@ -1978,6 +1986,9 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
1978 | PCI_VENDOR_ID_SPECIALIX, PCI_SUBDEVICE_ID_SPECIALIX_SPEED4, 0, 0, | 1986 | PCI_VENDOR_ID_SPECIALIX, PCI_SUBDEVICE_ID_SPECIALIX_SPEED4, 0, 0, |
1979 | pbn_b0_4_921600 }, | 1987 | pbn_b0_4_921600 }, |
1980 | { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, | 1988 | { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, |
1989 | PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL, 0, 0, | ||
1990 | pbn_b0_4_1152000 }, | ||
1991 | { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, | ||
1981 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 1992 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
1982 | pbn_b0_4_115200 }, | 1993 | pbn_b0_4_115200 }, |
1983 | { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952, | 1994 | { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952, |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index e0d0a470ddfc..97034d3937fd 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -306,13 +306,6 @@ config SERIAL_S3C2410_CONSOLE | |||
306 | your boot loader about how to pass options to the kernel at | 306 | your boot loader about how to pass options to the kernel at |
307 | boot time.) | 307 | boot time.) |
308 | 308 | ||
309 | config SERIAL_BAST_SIO | ||
310 | bool "Support for BAST SuperIO serial ports" | ||
311 | depends on ARCH_BAST && SERIAL_8250=y | ||
312 | help | ||
313 | Support for registerin the SuperIO chip on BAST board with | ||
314 | the 8250/16550 uart code. | ||
315 | |||
316 | config SERIAL_DZ | 309 | config SERIAL_DZ |
317 | bool "DECstation DZ serial driver" | 310 | bool "DECstation DZ serial driver" |
318 | depends on MACH_DECSTATION && MIPS32 | 311 | depends on MACH_DECSTATION && MIPS32 |
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile index 65bd4381685e..11c7dc483f93 100644 --- a/drivers/serial/Makefile +++ b/drivers/serial/Makefile | |||
@@ -44,7 +44,6 @@ obj-$(CONFIG_SERIAL_LH7A40X) += serial_lh7a40x.o | |||
44 | obj-$(CONFIG_SERIAL_AU1X00) += au1x00_uart.o | 44 | obj-$(CONFIG_SERIAL_AU1X00) += au1x00_uart.o |
45 | obj-$(CONFIG_SERIAL_DZ) += dz.o | 45 | obj-$(CONFIG_SERIAL_DZ) += dz.o |
46 | obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o | 46 | obj-$(CONFIG_SERIAL_SH_SCI) += sh-sci.o |
47 | obj-$(CONFIG_SERIAL_BAST_SIO) += bast_sio.o | ||
48 | obj-$(CONFIG_SERIAL_SGI_L1_CONSOLE) += sn_console.o | 47 | obj-$(CONFIG_SERIAL_SGI_L1_CONSOLE) += sn_console.o |
49 | obj-$(CONFIG_SERIAL_CPM) += cpm_uart/ | 48 | obj-$(CONFIG_SERIAL_CPM) += cpm_uart/ |
50 | obj-$(CONFIG_SERIAL_IMX) += imx.o | 49 | obj-$(CONFIG_SERIAL_IMX) += imx.o |
diff --git a/drivers/serial/bast_sio.c b/drivers/serial/bast_sio.c deleted file mode 100644 index 2b48fab6f0c6..000000000000 --- a/drivers/serial/bast_sio.c +++ /dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | /* linux/drivers/serial/bast_sio.c | ||
2 | * | ||
3 | * Copyright (c) 2004 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * | ||
6 | * http://www.simtec.co.uk/products/EB2410ITX/ | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | * | ||
12 | * Modifications: | ||
13 | * 23-Sep-2004 BJD Added copyright header | ||
14 | * 23-Sep-2004 BJD Added serial port remove code | ||
15 | */ | ||
16 | |||
17 | #include <linux/module.h> | ||
18 | #include <linux/config.h> | ||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/tty.h> | ||
22 | #include <linux/serial.h> | ||
23 | #include <linux/serial_core.h> | ||
24 | #include <linux/types.h> | ||
25 | |||
26 | #include <asm/io.h> | ||
27 | #include <asm/serial.h> | ||
28 | #include <asm/mach-types.h> | ||
29 | |||
30 | #include <asm/arch/map.h> | ||
31 | #include <asm/arch/irqs.h> | ||
32 | #include <asm/arch/bast-map.h> | ||
33 | #include <asm/arch/bast-irq.h> | ||
34 | |||
35 | static int __init serial_bast_register(unsigned long port, unsigned int irq) | ||
36 | { | ||
37 | struct serial_struct serial_req; | ||
38 | |||
39 | serial_req.flags = UPF_AUTOPROBE | UPF_SHARE_IRQ; | ||
40 | serial_req.baud_base = BASE_BAUD; | ||
41 | serial_req.irq = irq; | ||
42 | serial_req.io_type = UPIO_MEM; | ||
43 | serial_req.iomap_base = port; | ||
44 | serial_req.iomem_base = ioremap(port, 0x10); | ||
45 | serial_req.iomem_reg_shift = 0; | ||
46 | |||
47 | return register_serial(&serial_req); | ||
48 | } | ||
49 | |||
50 | #define SERIAL_BASE (S3C2410_CS2 + BAST_PA_SUPERIO) | ||
51 | |||
52 | static int port[2] = { -1, -1 }; | ||
53 | |||
54 | static int __init serial_bast_init(void) | ||
55 | { | ||
56 | if (machine_is_bast()) { | ||
57 | port[0] = serial_bast_register(SERIAL_BASE + 0x2f8, IRQ_PCSERIAL1); | ||
58 | port[1] = serial_bast_register(SERIAL_BASE + 0x3f8, IRQ_PCSERIAL2); | ||
59 | } | ||
60 | |||
61 | return 0; | ||
62 | } | ||
63 | |||
64 | static void __exit serial_bast_exit(void) | ||
65 | { | ||
66 | if (port[0] != -1) | ||
67 | unregister_serial(port[0]); | ||
68 | if (port[1] != -1) | ||
69 | unregister_serial(port[1]); | ||
70 | } | ||
71 | |||
72 | |||
73 | module_init(serial_bast_init); | ||
74 | module_exit(serial_bast_exit); | ||
75 | |||
76 | MODULE_LICENSE("GPL"); | ||
77 | MODULE_AUTHOR("Ben Dooks, ben@simtec.co.uk"); | ||
78 | MODULE_DESCRIPTION("BAST Onboard Serial setup"); | ||
79 | |||
80 | |||
diff --git a/drivers/usb/atm/speedtch.c b/drivers/usb/atm/speedtch.c index d0cbbb7f0385..6bd581e69afd 100644 --- a/drivers/usb/atm/speedtch.c +++ b/drivers/usb/atm/speedtch.c | |||
@@ -448,19 +448,19 @@ static void speedtch_check_status(struct speedtch_instance_data *instance) | |||
448 | case 0: | 448 | case 0: |
449 | atm_dev->signal = ATM_PHY_SIG_LOST; | 449 | atm_dev->signal = ATM_PHY_SIG_LOST; |
450 | if (instance->last_status) | 450 | if (instance->last_status) |
451 | atm_info(usbatm, "ADSL line is down\n"); | 451 | atm_info(usbatm, "%s\n", "ADSL line is down"); |
452 | /* It may never resync again unless we ask it to... */ | 452 | /* It may never resync again unless we ask it to... */ |
453 | ret = speedtch_start_synchro(instance); | 453 | ret = speedtch_start_synchro(instance); |
454 | break; | 454 | break; |
455 | 455 | ||
456 | case 0x08: | 456 | case 0x08: |
457 | atm_dev->signal = ATM_PHY_SIG_UNKNOWN; | 457 | atm_dev->signal = ATM_PHY_SIG_UNKNOWN; |
458 | atm_info(usbatm, "ADSL line is blocked?\n"); | 458 | atm_info(usbatm, "%s\n", "ADSL line is blocked?"); |
459 | break; | 459 | break; |
460 | 460 | ||
461 | case 0x10: | 461 | case 0x10: |
462 | atm_dev->signal = ATM_PHY_SIG_LOST; | 462 | atm_dev->signal = ATM_PHY_SIG_LOST; |
463 | atm_info(usbatm, "ADSL line is synchronising\n"); | 463 | atm_info(usbatm, "%s\n", "ADSL line is synchronising"); |
464 | break; | 464 | break; |
465 | 465 | ||
466 | case 0x20: | 466 | case 0x20: |
@@ -502,7 +502,7 @@ static void speedtch_status_poll(unsigned long data) | |||
502 | if (instance->poll_delay < MAX_POLL_DELAY) | 502 | if (instance->poll_delay < MAX_POLL_DELAY) |
503 | mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(instance->poll_delay)); | 503 | mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(instance->poll_delay)); |
504 | else | 504 | else |
505 | atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n"); | 505 | atm_warn(instance->usbatm, "%s\n", "Too many failures - disabling line status polling"); |
506 | } | 506 | } |
507 | 507 | ||
508 | static void speedtch_resubmit_int(unsigned long data) | 508 | static void speedtch_resubmit_int(unsigned long data) |
@@ -545,9 +545,9 @@ static void speedtch_handle_int(struct urb *int_urb, struct pt_regs *regs) | |||
545 | 545 | ||
546 | if ((count == 6) && !memcmp(up_int, instance->int_data, 6)) { | 546 | if ((count == 6) && !memcmp(up_int, instance->int_data, 6)) { |
547 | del_timer(&instance->status_checker.timer); | 547 | del_timer(&instance->status_checker.timer); |
548 | atm_info(usbatm, "DSL line goes up\n"); | 548 | atm_info(usbatm, "%s\n", "DSL line goes up"); |
549 | } else if ((count == 6) && !memcmp(down_int, instance->int_data, 6)) { | 549 | } else if ((count == 6) && !memcmp(down_int, instance->int_data, 6)) { |
550 | atm_info(usbatm, "DSL line goes down\n"); | 550 | atm_info(usbatm, "%s\n", "DSL line goes down"); |
551 | } else { | 551 | } else { |
552 | int i; | 552 | int i; |
553 | 553 | ||
diff --git a/drivers/video/imxfb.c b/drivers/video/imxfb.c index 8fe1c12a17bd..cabd53cec991 100644 --- a/drivers/video/imxfb.c +++ b/drivers/video/imxfb.c | |||
@@ -249,9 +249,6 @@ static void imxfb_enable_controller(struct imxfb_info *fbi) | |||
249 | /* disable hardware cursor */ | 249 | /* disable hardware cursor */ |
250 | LCDC_CPOS &= ~(CPOS_CC0 | CPOS_CC1); | 250 | LCDC_CPOS &= ~(CPOS_CC0 | CPOS_CC1); |
251 | 251 | ||
252 | /* fixed burst length (see erratum 11) */ | ||
253 | LCDC_DMACR = DMACR_BURST | DMACR_HM(8) | DMACR_TM(2); | ||
254 | |||
255 | LCDC_RMCR = RMCR_LCDC_EN; | 252 | LCDC_RMCR = RMCR_LCDC_EN; |
256 | 253 | ||
257 | if(fbi->backlight_power) | 254 | if(fbi->backlight_power) |
@@ -359,6 +356,7 @@ static int imxfb_activate_var(struct fb_var_screeninfo *var, struct fb_info *inf | |||
359 | LCDC_PCR = fbi->pcr; | 356 | LCDC_PCR = fbi->pcr; |
360 | LCDC_PWMR = fbi->pwmr; | 357 | LCDC_PWMR = fbi->pwmr; |
361 | LCDC_LSCR1 = fbi->lscr1; | 358 | LCDC_LSCR1 = fbi->lscr1; |
359 | LCDC_DMACR = fbi->dmacr; | ||
362 | 360 | ||
363 | return 0; | 361 | return 0; |
364 | } | 362 | } |
@@ -509,6 +507,7 @@ static int __init imxfb_init_fbinfo(struct device *dev) | |||
509 | fbi->cmap_inverse = inf->cmap_inverse; | 507 | fbi->cmap_inverse = inf->cmap_inverse; |
510 | fbi->pcr = inf->pcr; | 508 | fbi->pcr = inf->pcr; |
511 | fbi->lscr1 = inf->lscr1; | 509 | fbi->lscr1 = inf->lscr1; |
510 | fbi->dmacr = inf->dmacr; | ||
512 | fbi->pwmr = inf->pwmr; | 511 | fbi->pwmr = inf->pwmr; |
513 | fbi->lcd_power = inf->lcd_power; | 512 | fbi->lcd_power = inf->lcd_power; |
514 | fbi->backlight_power = inf->backlight_power; | 513 | fbi->backlight_power = inf->backlight_power; |
@@ -642,12 +641,12 @@ static int imxfb_remove(struct device *dev) | |||
642 | { | 641 | { |
643 | struct platform_device *pdev = to_platform_device(dev); | 642 | struct platform_device *pdev = to_platform_device(dev); |
644 | struct fb_info *info = dev_get_drvdata(dev); | 643 | struct fb_info *info = dev_get_drvdata(dev); |
644 | struct imxfb_info *fbi = info->par; | ||
645 | struct resource *res; | 645 | struct resource *res; |
646 | 646 | ||
647 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 647 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
648 | 648 | ||
649 | /* disable LCD controller */ | 649 | imxfb_disable_controller(fbi); |
650 | LCDC_RMCR &= ~RMCR_LCDC_EN; | ||
651 | 650 | ||
652 | unregister_framebuffer(info); | 651 | unregister_framebuffer(info); |
653 | 652 | ||
@@ -663,8 +662,9 @@ static int imxfb_remove(struct device *dev) | |||
663 | 662 | ||
664 | void imxfb_shutdown(struct device * dev) | 663 | void imxfb_shutdown(struct device * dev) |
665 | { | 664 | { |
666 | /* disable LCD Controller */ | 665 | struct fb_info *info = dev_get_drvdata(dev); |
667 | LCDC_RMCR &= ~RMCR_LCDC_EN; | 666 | struct imxfb_info *fbi = info->par; |
667 | imxfb_disable_controller(fbi); | ||
668 | } | 668 | } |
669 | 669 | ||
670 | static struct device_driver imxfb_driver = { | 670 | static struct device_driver imxfb_driver = { |
diff --git a/drivers/video/imxfb.h b/drivers/video/imxfb.h index 128c3ee515c7..e837a8b48eb8 100644 --- a/drivers/video/imxfb.h +++ b/drivers/video/imxfb.h | |||
@@ -54,6 +54,7 @@ struct imxfb_info { | |||
54 | u_int pcr; | 54 | u_int pcr; |
55 | u_int pwmr; | 55 | u_int pwmr; |
56 | u_int lscr1; | 56 | u_int lscr1; |
57 | u_int dmacr; | ||
57 | u_int cmap_inverse:1, | 58 | u_int cmap_inverse:1, |
58 | cmap_static:1, | 59 | cmap_static:1, |
59 | unused:30; | 60 | unused:30; |
diff --git a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c index 35e85d961702..b5a5e04b6d37 100644 --- a/drivers/w1/w1_int.c +++ b/drivers/w1/w1_int.c | |||
@@ -88,7 +88,7 @@ static struct w1_master * w1_alloc_dev(u32 id, int slave_count, int slave_ttl, | |||
88 | 88 | ||
89 | dev->groups = 23; | 89 | dev->groups = 23; |
90 | dev->seq = 1; | 90 | dev->seq = 1; |
91 | dev->nls = netlink_kernel_create(NETLINK_NFLOG, NULL); | 91 | dev->nls = netlink_kernel_create(NETLINK_W1, NULL); |
92 | if (!dev->nls) { | 92 | if (!dev->nls) { |
93 | printk(KERN_ERR "Failed to create new netlink socket(%u) for w1 master %s.\n", | 93 | printk(KERN_ERR "Failed to create new netlink socket(%u) for w1 master %s.\n", |
94 | NETLINK_NFLOG, dev->dev.bus_id); | 94 | NETLINK_NFLOG, dev->dev.bus_id); |