aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2010-07-30 03:51:52 -0400
committerDominik Brodowski <linux@dominikbrodowski.net>2010-09-29 11:20:23 -0400
commit440eed43e2a95bb842488755683716814da10f2b (patch)
tree45c49181a077f845cd366cfa7dc07f259fd01078 /drivers/bluetooth
parent9485ee14e143c7076e88deea1e87ca3eb0b2f94e (diff)
pcmcia: introduce autoconfiguration feature
Introduce an autoconfiguration feature to set certain values in pcmcia_loop_config(), instead of copying the same code over and over in each PCMCIA driver. At first, introduce the following options: CONF_AUTO_CHECK_VCC check or matching Vcc entry CONF_AUTO_SET_VPP set Vpp CONF_AUTO_AUDIO enable the speaker line 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: Jiri Kosina <jkosina@suse.cz> CC: linux-scsi@vger.kernel.org Acked-by: Gustavo F. Padovan <padovan@profusion.mobi> (for drivers/bluetooth) Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r--drivers/bluetooth/bt3c_cs.c7
-rw-r--r--drivers/bluetooth/btuart_cs.c7
-rw-r--r--drivers/bluetooth/dtl1_cs.c1
3 files changed, 2 insertions, 13 deletions
diff --git a/drivers/bluetooth/bt3c_cs.c b/drivers/bluetooth/bt3c_cs.c
index 3db95887cfd7..97338a3aae1a 100644
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
@@ -659,7 +659,7 @@ static int bt3c_probe(struct pcmcia_device *link)
659 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; 659 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
660 link->resource[0]->end = 8; 660 link->resource[0]->end = 8;
661 661
662 link->config_flags |= CONF_ENABLE_IRQ; 662 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP;
663 663
664 return bt3c_config(link); 664 return bt3c_config(link);
665} 665}
@@ -676,15 +676,11 @@ static void bt3c_detach(struct pcmcia_device *link)
676static int bt3c_check_config(struct pcmcia_device *p_dev, 676static int bt3c_check_config(struct pcmcia_device *p_dev,
677 cistpl_cftable_entry_t *cf, 677 cistpl_cftable_entry_t *cf,
678 cistpl_cftable_entry_t *dflt, 678 cistpl_cftable_entry_t *dflt,
679 unsigned int vcc,
680 void *priv_data) 679 void *priv_data)
681{ 680{
682 unsigned long try = (unsigned long) priv_data; 681 unsigned long try = (unsigned long) priv_data;
683
684 p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; 682 p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
685 683
686 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
687 p_dev->vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
688 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && 684 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
689 (cf->io.win[0].base != 0)) { 685 (cf->io.win[0].base != 0)) {
690 p_dev->resource[0]->start = cf->io.win[0].base; 686 p_dev->resource[0]->start = cf->io.win[0].base;
@@ -697,7 +693,6 @@ static int bt3c_check_config(struct pcmcia_device *p_dev,
697static int bt3c_check_config_notpicky(struct pcmcia_device *p_dev, 693static int bt3c_check_config_notpicky(struct pcmcia_device *p_dev,
698 cistpl_cftable_entry_t *cf, 694 cistpl_cftable_entry_t *cf,
699 cistpl_cftable_entry_t *dflt, 695 cistpl_cftable_entry_t *dflt,
700 unsigned int vcc,
701 void *priv_data) 696 void *priv_data)
702{ 697{
703 static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; 698 static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
diff --git a/drivers/bluetooth/btuart_cs.c b/drivers/bluetooth/btuart_cs.c
index c5c43594ae0e..8a6864fc8c38 100644
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
@@ -588,7 +588,7 @@ static int btuart_probe(struct pcmcia_device *link)
588 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8; 588 link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
589 link->resource[0]->end = 8; 589 link->resource[0]->end = 8;
590 590
591 link->config_flags |= CONF_ENABLE_IRQ; 591 link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_VPP;
592 592
593 return btuart_config(link); 593 return btuart_config(link);
594} 594}
@@ -605,15 +605,11 @@ static void btuart_detach(struct pcmcia_device *link)
605static int btuart_check_config(struct pcmcia_device *p_dev, 605static int btuart_check_config(struct pcmcia_device *p_dev,
606 cistpl_cftable_entry_t *cf, 606 cistpl_cftable_entry_t *cf,
607 cistpl_cftable_entry_t *dflt, 607 cistpl_cftable_entry_t *dflt,
608 unsigned int vcc,
609 void *priv_data) 608 void *priv_data)
610{ 609{
611 int *try = priv_data; 610 int *try = priv_data;
612
613 p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; 611 p_dev->io_lines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK;
614 612
615 if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM))
616 p_dev->vpp = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000;
617 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && 613 if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) &&
618 (cf->io.win[0].base != 0)) { 614 (cf->io.win[0].base != 0)) {
619 p_dev->resource[0]->start = cf->io.win[0].base; 615 p_dev->resource[0]->start = cf->io.win[0].base;
@@ -626,7 +622,6 @@ static int btuart_check_config(struct pcmcia_device *p_dev,
626static int btuart_check_config_notpicky(struct pcmcia_device *p_dev, 622static int btuart_check_config_notpicky(struct pcmcia_device *p_dev,
627 cistpl_cftable_entry_t *cf, 623 cistpl_cftable_entry_t *cf,
628 cistpl_cftable_entry_t *dflt, 624 cistpl_cftable_entry_t *dflt,
629 unsigned int vcc,
630 void *priv_data) 625 void *priv_data)
631{ 626{
632 static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; 627 static unsigned int base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 };
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c
index 38206df7206b..4620cc398676 100644
--- a/drivers/bluetooth/dtl1_cs.c
+++ b/drivers/bluetooth/dtl1_cs.c
@@ -592,7 +592,6 @@ static void dtl1_detach(struct pcmcia_device *link)
592static int dtl1_confcheck(struct pcmcia_device *p_dev, 592static int dtl1_confcheck(struct pcmcia_device *p_dev,
593 cistpl_cftable_entry_t *cf, 593 cistpl_cftable_entry_t *cf,
594 cistpl_cftable_entry_t *dflt, 594 cistpl_cftable_entry_t *dflt,
595 unsigned int vcc,
596 void *priv_data) 595 void *priv_data)
597{ 596{
598 if ((cf->io.nwin != 1) || (cf->io.win[0].len <= 8)) 597 if ((cf->io.nwin != 1) || (cf->io.win[0].len <= 8))