diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-07-24 11:23:51 -0400 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-08-03 03:04:11 -0400 |
commit | 90abdc3b973229bae98dd96649d9f7106cc177a4 (patch) | |
tree | 5c1a7a131b65560dd73b5103118d8c7631bd76a4 /drivers/bluetooth | |
parent | 9a017a910346afd88ec2e065989903bf211a7d37 (diff) |
pcmcia: do not use io_req_t when calling pcmcia_request_io()
Instead of io_req_t, drivers are now requested to fill out
struct pcmcia_device *p_dev->resource[0,1] for up to two ioport
ranges. After a call to pcmcia_request_io(), the ports found there
are reserved, after calling pcmcia_request_configuration(), they may
be used.
CC: netdev@vger.kernel.org
CC: linux-wireless@vger.kernel.org
CC: linux-ide@vger.kernel.org
CC: linux-usb@vger.kernel.org
CC: laforge@gnumonks.org
CC: linux-mtd@lists.infradead.org
CC: alsa-devel@alsa-project.org
CC: linux-serial@vger.kernel.org
CC: Michael Buesch <mb@bu3sch.de>
Acked-by: Marcel Holtmann <marcel@holtmann.org> (for drivers/bluetooth/)
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r-- | drivers/bluetooth/bluecard_cs.c | 13 | ||||
-rw-r--r-- | drivers/bluetooth/bt3c_cs.c | 18 | ||||
-rw-r--r-- | drivers/bluetooth/btuart_cs.c | 18 | ||||
-rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 21 |
4 files changed, 34 insertions, 36 deletions
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c index 24d2007139e8..d52e90a5a617 100644 --- a/drivers/bluetooth/bluecard_cs.c +++ b/drivers/bluetooth/bluecard_cs.c | |||
@@ -865,9 +865,6 @@ static int bluecard_probe(struct pcmcia_device *link) | |||
865 | info->p_dev = link; | 865 | info->p_dev = link; |
866 | link->priv = info; | 866 | link->priv = info; |
867 | 867 | ||
868 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | ||
869 | link->io.NumPorts1 = 8; | ||
870 | |||
871 | link->conf.Attributes = CONF_ENABLE_IRQ; | 868 | link->conf.Attributes = CONF_ENABLE_IRQ; |
872 | link->conf.IntType = INT_MEMORY_AND_IO; | 869 | link->conf.IntType = INT_MEMORY_AND_IO; |
873 | 870 | ||
@@ -890,12 +887,14 @@ static int bluecard_config(struct pcmcia_device *link) | |||
890 | int i, n; | 887 | int i, n; |
891 | 888 | ||
892 | link->conf.ConfigIndex = 0x20; | 889 | link->conf.ConfigIndex = 0x20; |
893 | link->io.NumPorts1 = 64; | 890 | |
894 | link->io.IOAddrLines = 6; | 891 | link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; |
892 | link->resource[0]->end = 64; | ||
893 | link->io_lines = 6; | ||
895 | 894 | ||
896 | for (n = 0; n < 0x400; n += 0x40) { | 895 | for (n = 0; n < 0x400; n += 0x40) { |
897 | link->io.BasePort1 = n ^ 0x300; | 896 | link->resource[0]->start = n ^ 0x300; |
898 | i = pcmcia_request_io(link, &link->io); | 897 | i = pcmcia_request_io(link); |
899 | if (i == 0) | 898 | if (i == 0) |
900 | break; | 899 | break; |
901 | } | 900 | } |
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c index 8ab494c0c17f..7ab8f29d5e0d 100644 --- a/drivers/bluetooth/bt3c_cs.c +++ b/drivers/bluetooth/bt3c_cs.c | |||
@@ -657,8 +657,8 @@ static int bt3c_probe(struct pcmcia_device *link) | |||
657 | info->p_dev = link; | 657 | info->p_dev = link; |
658 | link->priv = info; | 658 | link->priv = info; |
659 | 659 | ||
660 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 660 | link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; |
661 | link->io.NumPorts1 = 8; | 661 | link->resource[0]->end = 8; |
662 | 662 | ||
663 | link->conf.Attributes = CONF_ENABLE_IRQ; | 663 | link->conf.Attributes = CONF_ENABLE_IRQ; |
664 | link->conf.IntType = INT_MEMORY_AND_IO; | 664 | link->conf.IntType = INT_MEMORY_AND_IO; |
@@ -683,14 +683,14 @@ static int bt3c_check_config(struct pcmcia_device *p_dev, | |||
683 | { | 683 | { |
684 | unsigned long try = (unsigned long) priv_data; | 684 | unsigned long try = (unsigned long) priv_data; |
685 | 685 | ||
686 | p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; | ||
687 | |||
686 | if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) | 688 | if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) |
687 | p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; | 689 | p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; |
688 | if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && | 690 | if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && |
689 | (cf->io.win[0].base != 0)) { | 691 | (cf->io.win[0].base != 0)) { |
690 | p_dev->io.BasePort1 = cf->io.win[0].base; | 692 | p_dev->resource[0]->start = cf->io.win[0].base; |
691 | p_dev->io.IOAddrLines = (try == 0) ? 16 : | 693 | if (!pcmcia_request_io(p_dev)) |
692 | cf->io.flags & CISTPL_IO_LINES_MASK; | ||
693 | if (!pcmcia_request_io(p_dev, &p_dev->io)) | ||
694 | return 0; | 694 | return 0; |
695 | } | 695 | } |
696 | return -ENODEV; | 696 | return -ENODEV; |
@@ -707,9 +707,9 @@ static int bt3c_check_config_notpicky(struct pcmcia_device *p_dev, | |||
707 | 707 | ||
708 | if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { | 708 | if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { |
709 | for (j = 0; j < 5; j++) { | 709 | for (j = 0; j < 5; j++) { |
710 | p_dev->io.BasePort1 = base[j]; | 710 | p_dev->resource[0]->start = base[j]; |
711 | p_dev->io.IOAddrLines = base[j] ? 16 : 3; | 711 | p_dev->io_lines = base[j] ? 16 : 3; |
712 | if (!pcmcia_request_io(p_dev, &p_dev->io)) | 712 | if (!pcmcia_request_io(p_dev)) |
713 | return 0; | 713 | return 0; |
714 | } | 714 | } |
715 | } | 715 | } |
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c index 7e770d40368d..1c4f5e863b03 100644 --- a/drivers/bluetooth/btuart_cs.c +++ b/drivers/bluetooth/btuart_cs.c | |||
@@ -586,8 +586,8 @@ static int btuart_probe(struct pcmcia_device *link) | |||
586 | info->p_dev = link; | 586 | info->p_dev = link; |
587 | link->priv = info; | 587 | link->priv = info; |
588 | 588 | ||
589 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 589 | link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; |
590 | link->io.NumPorts1 = 8; | 590 | link->resource[0]->end = 8; |
591 | 591 | ||
592 | link->conf.Attributes = CONF_ENABLE_IRQ; | 592 | link->conf.Attributes = CONF_ENABLE_IRQ; |
593 | link->conf.IntType = INT_MEMORY_AND_IO; | 593 | link->conf.IntType = INT_MEMORY_AND_IO; |
@@ -612,14 +612,14 @@ static int btuart_check_config(struct pcmcia_device *p_dev, | |||
612 | { | 612 | { |
613 | int *try = priv_data; | 613 | int *try = priv_data; |
614 | 614 | ||
615 | p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; | ||
616 | |||
615 | if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) | 617 | if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) |
616 | p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; | 618 | p_dev->conf.Vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; |
617 | if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && | 619 | if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && |
618 | (cf->io.win[0].base != 0)) { | 620 | (cf->io.win[0].base != 0)) { |
619 | p_dev->io.BasePort1 = cf->io.win[0].base; | 621 | p_dev->resource[0]->start = cf->io.win[0].base; |
620 | p_dev->io.IOAddrLines = (*try == 0) ? 16 : | 622 | if (!pcmcia_request_io(p_dev)) |
621 | cf->io.flags & CISTPL_IO_LINES_MASK; | ||
622 | if (!pcmcia_request_io(p_dev, &p_dev->io)) | ||
623 | return 0; | 623 | return 0; |
624 | } | 624 | } |
625 | return -ENODEV; | 625 | return -ENODEV; |
@@ -636,9 +636,9 @@ static int btuart_check_config_notpicky(struct pcmcia_device *p_dev, | |||
636 | 636 | ||
637 | if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { | 637 | if ((cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { |
638 | for (j = 0; j < 5; j++) { | 638 | for (j = 0; j < 5; j++) { |
639 | p_dev->io.BasePort1 = base[j]; | 639 | p_dev->resource[0]->start = base[j]; |
640 | p_dev->io.IOAddrLines = base[j] ? 16 : 3; | 640 | p_dev->io_lines = base[j] ? 16 : 3; |
641 | if (!pcmcia_request_io(p_dev, &p_dev->io)) | 641 | if (!pcmcia_request_io(p_dev)) |
642 | return 0; | 642 | return 0; |
643 | } | 643 | } |
644 | } | 644 | } |
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index bfe9313516fb..18ecc5734e9f 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c | |||
@@ -572,8 +572,8 @@ static int dtl1_probe(struct pcmcia_device *link) | |||
572 | info->p_dev = link; | 572 | info->p_dev = link; |
573 | link->priv = info; | 573 | link->priv = info; |
574 | 574 | ||
575 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 575 | link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; |
576 | link->io.NumPorts1 = 8; | 576 | link->resource[0]->end = 8; |
577 | 577 | ||
578 | link->conf.Attributes = CONF_ENABLE_IRQ; | 578 | link->conf.Attributes = CONF_ENABLE_IRQ; |
579 | link->conf.IntType = INT_MEMORY_AND_IO; | 579 | link->conf.IntType = INT_MEMORY_AND_IO; |
@@ -597,14 +597,13 @@ static int dtl1_confcheck(struct pcmcia_device *p_dev, | |||
597 | unsigned int vcc, | 597 | unsigned int vcc, |
598 | void *priv_data) | 598 | void *priv_data) |
599 | { | 599 | { |
600 | if ((cf->io.nwin == 1) && (cf->io.win[0].len > 8)) { | 600 | if ((cf->io.nwin != 1) || (cf->io.win[0].len <= 8)) |
601 | p_dev->io.BasePort1 = cf->io.win[0].base; | 601 | return -ENODEV; |
602 | p_dev->io.NumPorts1 = cf->io.win[0].len; /*yo */ | 602 | |
603 | p_dev->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK; | 603 | p_dev->resource[0]->start = cf->io.win[0].base; |
604 | if (!pcmcia_request_io(p_dev, &p_dev->io)) | 604 | p_dev->resource[0]->end = cf->io.win[0].len; /*yo */ |
605 | return 0; | 605 | p_dev->io_lines = cf->io.flags & CISTPL_IO_LINES_MASK; |
606 | } | 606 | return pcmcia_request_io(p_dev); |
607 | return -ENODEV; | ||
608 | } | 607 | } |
609 | 608 | ||
610 | static int dtl1_config(struct pcmcia_device *link) | 609 | static int dtl1_config(struct pcmcia_device *link) |
@@ -613,7 +612,7 @@ static int dtl1_config(struct pcmcia_device *link) | |||
613 | int i; | 612 | int i; |
614 | 613 | ||
615 | /* Look for a generic full-sized window */ | 614 | /* Look for a generic full-sized window */ |
616 | link->io.NumPorts1 = 8; | 615 | link->resource[0]->end = 8; |
617 | if (pcmcia_loop_config(link, dtl1_confcheck, NULL) < 0) | 616 | if (pcmcia_loop_config(link, dtl1_confcheck, NULL) < 0) |
618 | goto failed; | 617 | goto failed; |
619 | 618 | ||