Date: Fri, 22 Jul 2005 15:59:04 +0800 From: Yuka Muromachi <yuka.muromachi@gmail.com> To: freebsd-hackers@freebsd.org Subject: Re: Bus Driver probe and attach device Message-ID: <c5c2798005072200596b85444b@mail.gmail.com> In-Reply-To: <200507220748.QAA02213@axe-inc.co.jp> References: <c5c2798005072123385249195e@mail.gmail.com> <200507220748.QAA02213@axe-inc.co.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
It mean I have 2 way to do it? (please view the code below) CodecPresent = az_rw(sc, AZX_REG_STATESTS); for (idx=0; idx<AZX_MAX_CODECS; idx++) { if ((CodecPresent >> idx) & 0x0001) { // alloc codec info // fill codec info device_t codec_dev = device_add_child(azbus_dev, NULL, -1); device_set_ivars(codec_dev, codec); // I can probe and attach new device self here. device_probe_and_attach(codec_dev); } } // Or, I can probe and attach all new child here bus_generic_attach(azbus_dev); 05/07/22 $B$K(B takawata@jp.freebsd.org<takawata@jp.freebsd.org> $B$5$s$O=q$-$^$7$?(B: > In message <c5c2798005072123385249195e@mail.gmail.com>, $B<<D.M%9a(B wrote: > >Hi: > > > >I'm trying to written Azalia (HD Audio) driver for freebsd now. > > > >The HDA controller is a standard controller, which can take max= > >15 codecs. I'm planning made it be a bus driver (azalia bus). > > > >I tried to read the PCI, USB and Firewire driver code be sample. > >It looks: > > > >1. Detect codec which already connected to azalia controller. > >2. call device_add_child(azbus_dev, NULL, -1); to create a child > > device, which attach to azalia bus driver. > >3. allocate memory to put codec info (e.g. device id, vendor id,=20 > > revision..etc), and call device_set_ivars(codec_dev, codec_info); > > save the codec_info ptr into device's ivars. > >4. Continue 1 ~ 3, untin all available codecs be added. > > > >After all codecs be added, I call the device_probe_and_attach(azbus_dev);, > >but there is no thing happend.=20 > > Because it trys to attach azbus driver itself, not try to attach its child. > > >Then I try to call bus_generic_attach(azbus_dev);, the codecs driver probe > >function be called. > > >Is this correct (use bus_generic_attach()), and I'm interested the detail. > > Correct. It calls device_probe_and_attach() for all child you already > add. > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c5c2798005072200596b85444b>