From owner-FreeBSD-tech-jp@jp.freebsd.org  Sun Aug 23 23:06:22 1998
Received: (from daemon@localhost)
	by jaz.jp.freebsd.org (8.9.1+3.0W/8.7.3) id XAA05400;
	Sun, 23 Aug 1998 23:06:22 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from mail.kt.rim.or.jp (root@mail.kt.rim.or.jp [202.247.130.53])
	by jaz.jp.freebsd.org (8.9.1+3.0W/8.7.3) with ESMTP id XAA05394
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sun, 23 Aug 1998 23:06:20 +0900 (JST)
	(envelope-from kuriyama@sky.rim.or.jp)
Received: from moon.sky.rim.or.jp (ppp369.kt.rim.or.jp [202.247.140.69])
	by mail.kt.rim.or.jp (8.8.5/3.6W-RIMNET-98-06-09) with ESMTP id XAA17853
	for <FreeBSD-tech-jp@jp.freebsd.org>; Sun, 23 Aug 1998 23:06:18 +0900 (JST)
Received: from sky.rim.or.jp (earth [192.168.1.2]) by moon.sky.rim.or.jp (8.8.7/3.5Wpl4/moon-1.0) with ESMTP id XAA23236 for <FreeBSD-tech-jp@jp.freebsd.org>; Sun, 23 Aug 1998 23:06:17 +0900 (JST)
Message-ID: <35E0215A.655EBF27@sky.rim.or.jp>
Date: Sun, 23 Aug 1998 23:04:10 +0900
From: Jun Kuriyama <kuriyama@sky.rim.or.jp>
X-Mailer: Mozilla 4.04 [ja] (Win95; I)
MIME-Version: 1.0
To: tech-jp <FreeBSD-tech-jp@jp.freebsd.org>
Content-Type: text/plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+980820
X-Sequence: FreeBSD-tech-jp 1719
Subject: [FreeBSD-tech-jp 1719] PCI attach code
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org

$B!!(BPCI $B$N$3$H$K$D$$$F$<$s$<$s$o$+$C$F$J$$$/$;$K(B USB $B$N%F%9%H$K6(NO$7$F$7(B
$B$^$C$?$N$G:.Mp$7$F$$$k$/$j$d$^$G$9!#(B

$B!!8=:_(B Nick Hibma $B$C$D!<?M$,!"(BNetBSD $B$N(B USB $B%3!<%I$r(B port $B$7$h$&$H$7$F$$(B
$B$^$9(B(*1)$B!#$3$$$D$O$=$N$^$^$G$O%3%s%Q%$%k$5$(DL$i$J$$(B alpha $B$J%3!<%I$J$s(B
$B$G$9$,!"$I$&$K$+$7$F(B uhci (Intel $B$N(B USB Host Controller) $B$N(B attach $B$r;n(B
$B$_$k$H$3$m$^$G$d$C$F$-$^$7$?!#(B

$B!!$G!"$3$3$+$i$,$?$V$s(B PCI $B$N4pK\E*$J$3$H$K$J$k$H;W$&$s$G$9$,!"(B
sys/pci/pci.c $B$N(B pci_attach() $B$N(B announce this device $B$NItJ,$G!"(B

uhci0 <Intel 82371AB/EB USB Host Controller> rev 1 class c0300 int d irq
?? on pci0:1:2

$B$H$$$&Iw$K(B irq $B$NItJ,$,(B ?? $B$HI=<($5$l$F$7$^$$$^$9!#(B
$B!!$3$N8e$N(B (*dvp->pd_attach)(tag, unit) $B$G(B Nick $B$N(B uhci_pci_attach() $B$r(B
$B8F$S=P$9$s$G$9$,!"$=$N4X?t$O$3$s$J46$8$K$J$C$F$^$9!#(B

static void
uhci_pci_attach(config_id, unit)
        pcici_t config_id;
        int unit;
{
        int irq;
        int class;
        char const *intrstr;
        char *typestr, *vendor;
        char devinfo[256];
        usbd_status r;
        uhci_softc_t *sc = NULL;

        sc = malloc(sizeof(uhci_softc_t), M_DEVBUF, M_NOWAIT);
        if ( sc == NULL ) {
                printf("uhci%d: could not allocate memory", unit);
                return;
        }

        irq = pci_conf_read(config_id,PCI_INTERRUPT_REG) & 0xff;
        /* FIXME NWH is bio_imask the proper one? */
        if ( !pci_map_int(config_id, (pci_inthand_t *)uhci_intr,
                          sc, &bio_imask) ) {
                printf("%s: couldn't establish interrupt at irq %d\n",
                    sc->sc_bus.bdev.dv_xname, irq);
                        printf(" at %s", intrstr);
                return;
        }
        printf("%s: interrupting at irq %d\n", sc->sc_bus.bdev.dv_xname,
irq);

        sc->iobase = pci_conf_read(config_id, PCI_UHCI_BASE_REG)&0xffe0;

        switch(pci_conf_read(config_id, PCI_USBREV) & PCI_USBREV_MASK) {
        case PCI_USBREV_PRE_1_0:
                typestr = "pre 1.0";
                break;
        case PCI_USBREV_1_0:
                typestr = "1.0";
                break;
        default:
                typestr = "unknown";
                break;
        }
        printf("%s: USB version %s\n", sc->sc_bus.bdev.dv_xname,
typestr);
        .........

$B!!$3$3$N(B pci_map_int() $B$N8F$S=P$7$G!"(B

  int line register not set by bios
: couldn't establish interrupt at irq 255

$B$H=P$F$7$^$$$^$9!#$3$l$O$^$"!"(Bpci_attach() $B$NJ}$G(B irq $B$,(B 0xff $B$H$+5"$C$F(B
$B$-$F$7$^$C$F$k$N$G$=$3$KLdBj$,$"$k$H;W$&$N$G$9$,!#(B
$B!!B>$N(B PCI device driver $B$N%3!<%I$bFI$s$G$_$?$N$G$9$,!"$J$s$+$$$m$$$m$H(B
NetBSD $B$d(B BSD/OS $B$H6&MQ$K$J$C$F$?$j$7$F$I$l$r4p=`$K$7$F$$$$$N$+$h$/$o$+(B
$B$j$^$;$s$G$7$?!#(B

$B!!$3$3$G<ALd!#$3$N%F%9%H$O(B VAIO 505X $B>e$N(B 2.2.6/PAO $B$G$d$C$F$$$k$N$G$9(B
$B$,!"$b$7$+$7$F(B BIOS $B$G(B PnP $B$r@Z$i$J$-$c$$$1$J$$$N$G$7$g$&$+!)(B
$B!!$3$N(B probe $B$N8e$K(B vga0 $B$K(B irq 11 $B$,3d$jEv$F$i$l$F$$$k$N$G$9$,!"$=$b$=(B
$B$b(B FreeBSD $B$G$O(B shared $B$J(B irq $B$J$s$+$G$-$J$+$C$?$j$9$k$N$G$7$g$&$+!)(B
$B!!F15o$7$F$$$k(B Win95/USB supplement $B$G$O!"%G%U%)%k%H$N@_Dj$G$O(B USB Host
Controller $B$N(B I/O Port Address $B$,(B DMA $B%3%s%H%m!<%i$H(B conflict $B$9$k$N$G!"(B
0000-001F $B$+$i(B 0100 - 011F $B$KJQ99$7$J$$$HF0:n$7$J$+$C$?$s$G$9$,!"$3$l$H(B
$BF1MM$J=hCV$,(B FreeBSD $BB&$N(B uhci attach code $B$G$bI,MW$K$J$k$H$$$&$3$H$G$7(B
$B$g$&$+!#(B
$B!!$=$l$H$b$=$b$=$b$3$N%3!<%I$C$F$<$s$<$s$J$C$A$c$$$J$$$H$+(B($B$*$$$*$$(B)$B!#(B
Nick $B$N$H$3$m$G$O$&$^$/F0$$$F$k$_$?$$$J$s$@$1$I!#(B


*1 http://www.etla.net/~n_hibma/usb/usb-port.pl

-- 
$B$/$j$d$^(B // kuriyama@sky.rim.or.jp
        // kuriyama@FreeBSD.ORG
