diff options
Diffstat (limited to 'drivers/bluetooth/dtl1_cs.c')
-rw-r--r-- | drivers/bluetooth/dtl1_cs.c | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/drivers/bluetooth/dtl1_cs.c b/drivers/bluetooth/dtl1_cs.c index 389a68256fe4..416433b4a348 100644 --- a/drivers/bluetooth/dtl1_cs.c +++ b/drivers/bluetooth/dtl1_cs.c | |||
@@ -87,8 +87,8 @@ typedef struct dtl1_info_t { | |||
87 | } dtl1_info_t; | 87 | } dtl1_info_t; |
88 | 88 | ||
89 | 89 | ||
90 | static void dtl1_config(dev_link_t *link); | 90 | static void dtl1_config(struct pcmcia_device *link); |
91 | static void dtl1_release(dev_link_t *link); | 91 | static void dtl1_release(struct pcmcia_device *link); |
92 | 92 | ||
93 | static void dtl1_detach(struct pcmcia_device *p_dev); | 93 | static void dtl1_detach(struct pcmcia_device *p_dev); |
94 | 94 | ||
@@ -555,17 +555,16 @@ static int dtl1_close(dtl1_info_t *info) | |||
555 | return 0; | 555 | return 0; |
556 | } | 556 | } |
557 | 557 | ||
558 | static int dtl1_attach(struct pcmcia_device *p_dev) | 558 | static int dtl1_attach(struct pcmcia_device *link) |
559 | { | 559 | { |
560 | dtl1_info_t *info; | 560 | dtl1_info_t *info; |
561 | dev_link_t *link = dev_to_instance(p_dev); | ||
562 | 561 | ||
563 | /* Create new info device */ | 562 | /* Create new info device */ |
564 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 563 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
565 | if (!info) | 564 | if (!info) |
566 | return -ENOMEM; | 565 | return -ENOMEM; |
567 | 566 | ||
568 | info->p_dev = p_dev; | 567 | info->p_dev = link; |
569 | link->priv = info; | 568 | link->priv = info; |
570 | 569 | ||
571 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; | 570 | link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; |
@@ -586,9 +585,8 @@ static int dtl1_attach(struct pcmcia_device *p_dev) | |||
586 | } | 585 | } |
587 | 586 | ||
588 | 587 | ||
589 | static void dtl1_detach(struct pcmcia_device *p_dev) | 588 | static void dtl1_detach(struct pcmcia_device *link) |
590 | { | 589 | { |
591 | dev_link_t *link = dev_to_instance(p_dev); | ||
592 | dtl1_info_t *info = link->priv; | 590 | dtl1_info_t *info = link->priv; |
593 | 591 | ||
594 | if (link->state & DEV_CONFIG) | 592 | if (link->state & DEV_CONFIG) |
@@ -597,7 +595,7 @@ static void dtl1_detach(struct pcmcia_device *p_dev) | |||
597 | kfree(info); | 595 | kfree(info); |
598 | } | 596 | } |
599 | 597 | ||
600 | static int get_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | 598 | static int get_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) |
601 | { | 599 | { |
602 | int i; | 600 | int i; |
603 | 601 | ||
@@ -608,23 +606,22 @@ static int get_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | |||
608 | return pcmcia_parse_tuple(handle, tuple, parse); | 606 | return pcmcia_parse_tuple(handle, tuple, parse); |
609 | } | 607 | } |
610 | 608 | ||
611 | static int first_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | 609 | static int first_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) |
612 | { | 610 | { |
613 | if (pcmcia_get_first_tuple(handle, tuple) != CS_SUCCESS) | 611 | if (pcmcia_get_first_tuple(handle, tuple) != CS_SUCCESS) |
614 | return CS_NO_MORE_ITEMS; | 612 | return CS_NO_MORE_ITEMS; |
615 | return get_tuple(handle, tuple, parse); | 613 | return get_tuple(handle, tuple, parse); |
616 | } | 614 | } |
617 | 615 | ||
618 | static int next_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | 616 | static int next_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) |
619 | { | 617 | { |
620 | if (pcmcia_get_next_tuple(handle, tuple) != CS_SUCCESS) | 618 | if (pcmcia_get_next_tuple(handle, tuple) != CS_SUCCESS) |
621 | return CS_NO_MORE_ITEMS; | 619 | return CS_NO_MORE_ITEMS; |
622 | return get_tuple(handle, tuple, parse); | 620 | return get_tuple(handle, tuple, parse); |
623 | } | 621 | } |
624 | 622 | ||
625 | static void dtl1_config(dev_link_t *link) | 623 | static void dtl1_config(struct pcmcia_device *link) |
626 | { | 624 | { |
627 | client_handle_t handle = link->handle; | ||
628 | dtl1_info_t *info = link->priv; | 625 | dtl1_info_t *info = link->priv; |
629 | tuple_t tuple; | 626 | tuple_t tuple; |
630 | u_short buf[256]; | 627 | u_short buf[256]; |
@@ -639,7 +636,7 @@ static void dtl1_config(dev_link_t *link) | |||
639 | 636 | ||
640 | /* Get configuration register information */ | 637 | /* Get configuration register information */ |
641 | tuple.DesiredTuple = CISTPL_CONFIG; | 638 | tuple.DesiredTuple = CISTPL_CONFIG; |
642 | last_ret = first_tuple(handle, &tuple, &parse); | 639 | last_ret = first_tuple(link, &tuple, &parse); |
643 | if (last_ret != CS_SUCCESS) { | 640 | if (last_ret != CS_SUCCESS) { |
644 | last_fn = ParseTuple; | 641 | last_fn = ParseTuple; |
645 | goto cs_failed; | 642 | goto cs_failed; |
@@ -658,34 +655,34 @@ static void dtl1_config(dev_link_t *link) | |||
658 | 655 | ||
659 | /* Look for a generic full-sized window */ | 656 | /* Look for a generic full-sized window */ |
660 | link->io.NumPorts1 = 8; | 657 | link->io.NumPorts1 = 8; |
661 | i = first_tuple(handle, &tuple, &parse); | 658 | i = first_tuple(link, &tuple, &parse); |
662 | while (i != CS_NO_MORE_ITEMS) { | 659 | while (i != CS_NO_MORE_ITEMS) { |
663 | if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) { | 660 | if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) { |
664 | link->conf.ConfigIndex = cf->index; | 661 | link->conf.ConfigIndex = cf->index; |
665 | link->io.BasePort1 = cf->io.win[0].base; | 662 | link->io.BasePort1 = cf->io.win[0].base; |
666 | link->io.NumPorts1 = cf->io.win[0].len; /*yo */ | 663 | link->io.NumPorts1 = cf->io.win[0].len; /*yo */ |
667 | link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK; | 664 | link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK; |
668 | i = pcmcia_request_io(link->handle, &link->io); | 665 | i = pcmcia_request_io(link, &link->io); |
669 | if (i == CS_SUCCESS) | 666 | if (i == CS_SUCCESS) |
670 | break; | 667 | break; |
671 | } | 668 | } |
672 | i = next_tuple(handle, &tuple, &parse); | 669 | i = next_tuple(link, &tuple, &parse); |
673 | } | 670 | } |
674 | 671 | ||
675 | if (i != CS_SUCCESS) { | 672 | if (i != CS_SUCCESS) { |
676 | cs_error(link->handle, RequestIO, i); | 673 | cs_error(link, RequestIO, i); |
677 | goto failed; | 674 | goto failed; |
678 | } | 675 | } |
679 | 676 | ||
680 | i = pcmcia_request_irq(link->handle, &link->irq); | 677 | i = pcmcia_request_irq(link, &link->irq); |
681 | if (i != CS_SUCCESS) { | 678 | if (i != CS_SUCCESS) { |
682 | cs_error(link->handle, RequestIRQ, i); | 679 | cs_error(link, RequestIRQ, i); |
683 | link->irq.AssignedIRQ = 0; | 680 | link->irq.AssignedIRQ = 0; |
684 | } | 681 | } |
685 | 682 | ||
686 | i = pcmcia_request_configuration(link->handle, &link->conf); | 683 | i = pcmcia_request_configuration(link, &link->conf); |
687 | if (i != CS_SUCCESS) { | 684 | if (i != CS_SUCCESS) { |
688 | cs_error(link->handle, RequestConfiguration, i); | 685 | cs_error(link, RequestConfiguration, i); |
689 | goto failed; | 686 | goto failed; |
690 | } | 687 | } |
691 | 688 | ||
@@ -699,21 +696,21 @@ static void dtl1_config(dev_link_t *link) | |||
699 | return; | 696 | return; |
700 | 697 | ||
701 | cs_failed: | 698 | cs_failed: |
702 | cs_error(link->handle, last_fn, last_ret); | 699 | cs_error(link, last_fn, last_ret); |
703 | 700 | ||
704 | failed: | 701 | failed: |
705 | dtl1_release(link); | 702 | dtl1_release(link); |
706 | } | 703 | } |
707 | 704 | ||
708 | 705 | ||
709 | static void dtl1_release(dev_link_t *link) | 706 | static void dtl1_release(struct pcmcia_device *link) |
710 | { | 707 | { |
711 | dtl1_info_t *info = link->priv; | 708 | dtl1_info_t *info = link->priv; |
712 | 709 | ||
713 | if (link->state & DEV_PRESENT) | 710 | if (link->state & DEV_PRESENT) |
714 | dtl1_close(info); | 711 | dtl1_close(info); |
715 | 712 | ||
716 | pcmcia_disable_device(link->handle); | 713 | pcmcia_disable_device(link); |
717 | } | 714 | } |
718 | 715 | ||
719 | 716 | ||