ng_bt3c_pccard.c (151700) | ng_bt3c_pccard.c (151726) |
---|---|
1/* 2 * ng_bt3c_pccard.c 3 */ 4 5/*- 6 * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com> 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * 30 * $Id: ng_bt3c_pccard.c,v 1.5 2003/04/01 18:15:21 max Exp $ | 1/* 2 * ng_bt3c_pccard.c 3 */ 4 5/*- 6 * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com> 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * 30 * $Id: ng_bt3c_pccard.c,v 1.5 2003/04/01 18:15:21 max Exp $ |
31 * $FreeBSD: head/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c 151700 2005-10-26 15:52:16Z jhb $ | 31 * $FreeBSD: head/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c 151726 2005-10-26 23:13:51Z emax $ |
32 * 33 * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 34 * 35 * Based on information obrained from: Jose Orlando Pereira <jop@di.uminho.pt> 36 * and disassembled w2k driver. 37 * 38 * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 39 * --- 567 unchanged lines hidden (view full) --- 607 608/* 609 * PC Card (PCMCIA) attach routine 610 */ 611 612static int 613bt3c_pccard_attach(device_t dev) 614{ | 32 * 33 * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 34 * 35 * Based on information obrained from: Jose Orlando Pereira <jop@di.uminho.pt> 36 * and disassembled w2k driver. 37 * 38 * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 39 * --- 567 unchanged lines hidden (view full) --- 607 608/* 609 * PC Card (PCMCIA) attach routine 610 */ 611 612static int 613bt3c_pccard_attach(device_t dev) 614{ |
615 bt3c_softc_p sc = NULL; | 615 bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev); |
616 | 616 |
617 sc = (bt3c_softc_p) malloc(sizeof(*sc), M_BT3C, M_NOWAIT|M_ZERO); 618 if (sc == NULL) 619 return (ENOMEM); 620 | |
621 /* Allocate I/O ports */ 622 sc->iobase_rid = 0; 623 sc->iobase = bus_alloc_resource(dev, SYS_RES_IOPORT, &sc->iobase_rid, 624 0, ~0, 8, RF_ACTIVE); 625 if (sc->iobase == NULL) { 626 device_printf(dev, "Could not allocate I/O ports\n"); 627 goto bad; 628 } --- 43 unchanged lines hidden (view full) --- 672 sc->inq.ifq_maxlen = sc->outq.ifq_maxlen = BT3C_DEFAULTQLEN; 673 mtx_init(&sc->inq.ifq_mtx, "BT3C inq", NULL, MTX_DEF); 674 mtx_init(&sc->outq.ifq_mtx, "BT3C outq", NULL, MTX_DEF); 675 676 sc->state = NG_BT3C_W4_PKT_IND; 677 sc->want = 1; 678 679 NG_NODE_SET_PRIVATE(sc->node, sc); | 617 /* Allocate I/O ports */ 618 sc->iobase_rid = 0; 619 sc->iobase = bus_alloc_resource(dev, SYS_RES_IOPORT, &sc->iobase_rid, 620 0, ~0, 8, RF_ACTIVE); 621 if (sc->iobase == NULL) { 622 device_printf(dev, "Could not allocate I/O ports\n"); 623 goto bad; 624 } --- 43 unchanged lines hidden (view full) --- 668 sc->inq.ifq_maxlen = sc->outq.ifq_maxlen = BT3C_DEFAULTQLEN; 669 mtx_init(&sc->inq.ifq_mtx, "BT3C inq", NULL, MTX_DEF); 670 mtx_init(&sc->outq.ifq_mtx, "BT3C outq", NULL, MTX_DEF); 671 672 sc->state = NG_BT3C_W4_PKT_IND; 673 sc->want = 1; 674 675 NG_NODE_SET_PRIVATE(sc->node, sc); |
680 device_set_softc(dev, sc); | |
681 682 return (0); 683bad: 684 if (sc->ith != NULL) { 685 swi_remove(sc->ith); 686 sc->ith = NULL; 687 } 688 --- 11 unchanged lines hidden (view full) --- 700 if (sc->iobase != NULL) { 701 bus_release_resource(dev, SYS_RES_IOPORT, 702 sc->iobase_rid, sc->iobase); 703 704 sc->iobase = NULL; 705 sc->iobase_rid = 0; 706 } 707 | 676 677 return (0); 678bad: 679 if (sc->ith != NULL) { 680 swi_remove(sc->ith); 681 sc->ith = NULL; 682 } 683 --- 11 unchanged lines hidden (view full) --- 695 if (sc->iobase != NULL) { 696 bus_release_resource(dev, SYS_RES_IOPORT, 697 sc->iobase_rid, sc->iobase); 698 699 sc->iobase = NULL; 700 sc->iobase_rid = 0; 701 } 702 |
708 free(sc, M_BT3C); 709 | |
710 return (ENXIO); 711} /* bt3c_pccacd_attach */ 712 713/* 714 * PC Card (PCMCIA) detach routine 715 */ 716 717static int 718bt3c_pccard_detach(device_t dev) 719{ 720 bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev); 721 722 if (sc == NULL) 723 return (0); 724 | 703 return (ENXIO); 704} /* bt3c_pccacd_attach */ 705 706/* 707 * PC Card (PCMCIA) detach routine 708 */ 709 710static int 711bt3c_pccard_detach(device_t dev) 712{ 713 bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev); 714 715 if (sc == NULL) 716 return (0); 717 |
725 device_set_softc(dev, NULL); 726 | |
727 swi_remove(sc->ith); 728 sc->ith = NULL; 729 730 bus_teardown_intr(dev, sc->irq, sc->irq_cookie); 731 bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, sc->irq); 732 sc->irq_cookie = NULL; 733 sc->irq = NULL; 734 sc->irq_rid = 0; --- 10 unchanged lines hidden (view full) --- 745 746 NG_FREE_M(sc->m); 747 IF_DRAIN(&sc->inq); 748 IF_DRAIN(&sc->outq); 749 750 mtx_destroy(&sc->inq.ifq_mtx); 751 mtx_destroy(&sc->outq.ifq_mtx); 752 | 718 swi_remove(sc->ith); 719 sc->ith = NULL; 720 721 bus_teardown_intr(dev, sc->irq, sc->irq_cookie); 722 bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, sc->irq); 723 sc->irq_cookie = NULL; 724 sc->irq = NULL; 725 sc->irq_rid = 0; --- 10 unchanged lines hidden (view full) --- 736 737 NG_FREE_M(sc->m); 738 IF_DRAIN(&sc->inq); 739 IF_DRAIN(&sc->outq); 740 741 mtx_destroy(&sc->inq.ifq_mtx); 742 mtx_destroy(&sc->outq.ifq_mtx); 743 |
753 bzero(sc, sizeof(*sc)); 754 free(sc, M_BT3C); 755 | |
756 return (0); 757} /* bt3c_pccacd_detach */ 758 759/* 760 * Interrupt service routine's 761 */ 762 763static void --- 428 unchanged lines hidden (view full) --- 1192 DEVMETHOD(device_detach, bt3c_pccard_detach), 1193 1194 { 0, 0 } 1195}; 1196 1197static driver_t bt3c_pccard_driver = { 1198 NG_BT3C_NODE_TYPE, 1199 bt3c_pccard_methods, | 744 return (0); 745} /* bt3c_pccacd_detach */ 746 747/* 748 * Interrupt service routine's 749 */ 750 751static void --- 428 unchanged lines hidden (view full) --- 1180 DEVMETHOD(device_detach, bt3c_pccard_detach), 1181 1182 { 0, 0 } 1183}; 1184 1185static driver_t bt3c_pccard_driver = { 1186 NG_BT3C_NODE_TYPE, 1187 bt3c_pccard_methods, |
1200 0 | 1188 sizeof(bt3c_softc_t) |
1201}; 1202 1203static devclass_t bt3c_devclass; 1204 1205 1206/* 1207 * Load/Unload the driver module 1208 */ --- 30 unchanged lines hidden --- | 1189}; 1190 1191static devclass_t bt3c_devclass; 1192 1193 1194/* 1195 * Load/Unload the driver module 1196 */ --- 30 unchanged lines hidden --- |