aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:09:46 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:09:46 -0400
commit54291263519ac2c9bdda68b23b02fef3808deed4 (patch)
treed71de8172a6ab2bbe3068aece7d8911eeeb276fd /drivers/serial
parent46ee9645094ad1eb5b4888882ecaa1fb87dcd2a3 (diff)
parentacd200bf45487271d54f05938ad9e30f32a530ee (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (29 commits) pcmcia: disable PCMCIA ioctl also for ARM drivers/staging/comedi: dev_node removal (quatech_daqp_cs) drivers/staging/comedi: dev_node removal (ni_mio_cs) drivers/staging/comedi: dev_node removal (ni_labpc_cs) drivers/staging/comedi: dev_node removal (ni_daq_dio24) drivers/staging/comedi: dev_node removal (ni_daq_700) drivers/staging/comedi: dev_node removal (das08_cs) drivers/staging/comedi: dev_node removal (cb_das16_cs) pata_pcmcia: get rid of extra indirection pcmcia: remove suspend-related comment from yenta_socket.c pcmcia: call pcmcia_{read,write}_cis_mem with ops_mutex held pcmcia: remove pcmcia_add_device_lock pcmcia: update gfp/slab.h includes pcmcia: remove unused mem_op.h pcmcia: do not autoadd root PCI bus resources pcmcia: clarify alloc_io_space, move it to resource handlers pcmcia: move all pcmcia_resource_ops providers into one module pcmcia: move high level CIS access code to separate file pcmcia: dev_node removal (core) pcmcia: dev_node removal (remaining drivers) ...
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial_cs.c36
1 files changed, 9 insertions, 27 deletions
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index 8cfa5b12ea7a..dadd686c9801 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -89,7 +89,6 @@ struct serial_info {
89 int manfid; 89 int manfid;
90 int prodid; 90 int prodid;
91 int c950ctrl; 91 int c950ctrl;
92 dev_node_t node[4];
93 int line[4]; 92 int line[4];
94 const struct serial_quirk *quirk; 93 const struct serial_quirk *quirk;
95}; 94};
@@ -289,8 +288,6 @@ static void serial_remove(struct pcmcia_device *link)
289 for (i = 0; i < info->ndev; i++) 288 for (i = 0; i < info->ndev; i++)
290 serial8250_unregister_port(info->line[i]); 289 serial8250_unregister_port(info->line[i]);
291 290
292 info->p_dev->dev_node = NULL;
293
294 if (!info->slave) 291 if (!info->slave)
295 pcmcia_disable_device(link); 292 pcmcia_disable_device(link);
296} 293}
@@ -343,7 +340,6 @@ static int serial_probe(struct pcmcia_device *link)
343 340
344 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; 341 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
345 link->io.NumPorts1 = 8; 342 link->io.NumPorts1 = 8;
346 link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
347 link->conf.Attributes = CONF_ENABLE_IRQ; 343 link->conf.Attributes = CONF_ENABLE_IRQ;
348 if (do_sound) { 344 if (do_sound) {
349 link->conf.Attributes |= CONF_ENABLE_SPKR; 345 link->conf.Attributes |= CONF_ENABLE_SPKR;
@@ -411,11 +407,6 @@ static int setup_serial(struct pcmcia_device *handle, struct serial_info * info,
411 } 407 }
412 408
413 info->line[info->ndev] = line; 409 info->line[info->ndev] = line;
414 sprintf(info->node[info->ndev].dev_name, "ttyS%d", line);
415 info->node[info->ndev].major = TTY_MAJOR;
416 info->node[info->ndev].minor = 0x40 + line;
417 if (info->ndev > 0)
418 info->node[info->ndev - 1].next = &info->node[info->ndev];
419 info->ndev++; 410 info->ndev++;
420 411
421 return 0; 412 return 0;
@@ -486,7 +477,7 @@ static int simple_config(struct pcmcia_device *link)
486 } 477 }
487 if (info->slave) { 478 if (info->slave) {
488 return setup_serial(link, info, port, 479 return setup_serial(link, info, port,
489 link->irq.AssignedIRQ); 480 link->irq);
490 } 481 }
491 } 482 }
492 483
@@ -507,10 +498,6 @@ static int simple_config(struct pcmcia_device *link)
507 return -1; 498 return -1;
508 499
509found_port: 500found_port:
510 i = pcmcia_request_irq(link, &link->irq);
511 if (i != 0)
512 link->irq.AssignedIRQ = 0;
513
514 if (info->multi && (info->manfid == MANFID_3COM)) 501 if (info->multi && (info->manfid == MANFID_3COM))
515 link->conf.ConfigIndex &= ~(0x08); 502 link->conf.ConfigIndex &= ~(0x08);
516 503
@@ -523,7 +510,7 @@ found_port:
523 i = pcmcia_request_configuration(link, &link->conf); 510 i = pcmcia_request_configuration(link, &link->conf);
524 if (i != 0) 511 if (i != 0)
525 return -1; 512 return -1;
526 return setup_serial(link, info, link->io.BasePort1, link->irq.AssignedIRQ); 513 return setup_serial(link, info, link->io.BasePort1, link->irq);
527} 514}
528 515
529static int multi_config_check(struct pcmcia_device *p_dev, 516static int multi_config_check(struct pcmcia_device *p_dev,
@@ -586,13 +573,9 @@ static int multi_config(struct pcmcia_device *link)
586 } 573 }
587 } 574 }
588 575
589 i = pcmcia_request_irq(link, &link->irq); 576 if (!link->irq)
590 if (i != 0) { 577 dev_warn(&link->dev,
591 /* FIXME: comment does not fit, error handling does not fit */ 578 "serial_cs: no usable IRQ found, continuing...\n");
592 printk(KERN_NOTICE
593 "serial_cs: no usable port range found, giving up\n");
594 link->irq.AssignedIRQ = 0;
595 }
596 579
597 /* 580 /*
598 * Apply any configuration quirks. 581 * Apply any configuration quirks.
@@ -615,11 +598,11 @@ static int multi_config(struct pcmcia_device *link)
615 if (link->conf.ConfigIndex == 1 || 598 if (link->conf.ConfigIndex == 1 ||
616 link->conf.ConfigIndex == 3) { 599 link->conf.ConfigIndex == 3) {
617 err = setup_serial(link, info, base2, 600 err = setup_serial(link, info, base2,
618 link->irq.AssignedIRQ); 601 link->irq);
619 base2 = link->io.BasePort1; 602 base2 = link->io.BasePort1;
620 } else { 603 } else {
621 err = setup_serial(link, info, link->io.BasePort1, 604 err = setup_serial(link, info, link->io.BasePort1,
622 link->irq.AssignedIRQ); 605 link->irq);
623 } 606 }
624 info->c950ctrl = base2; 607 info->c950ctrl = base2;
625 608
@@ -633,10 +616,10 @@ static int multi_config(struct pcmcia_device *link)
633 return 0; 616 return 0;
634 } 617 }
635 618
636 setup_serial(link, info, link->io.BasePort1, link->irq.AssignedIRQ); 619 setup_serial(link, info, link->io.BasePort1, link->irq);
637 for (i = 0; i < info->multi - 1; i++) 620 for (i = 0; i < info->multi - 1; i++)
638 setup_serial(link, info, base2 + (8 * i), 621 setup_serial(link, info, base2 + (8 * i),
639 link->irq.AssignedIRQ); 622 link->irq);
640 return 0; 623 return 0;
641} 624}
642 625
@@ -720,7 +703,6 @@ static int serial_config(struct pcmcia_device * link)
720 if (info->quirk->post(link)) 703 if (info->quirk->post(link))
721 goto failed; 704 goto failed;
722 705
723 link->dev_node = &info->node[0];
724 return 0; 706 return 0;
725 707
726failed: 708failed: