Date: Fri, 22 Jul 2005 16:48:07 +0900 From: takawata@jp.freebsd.org To: freebsd-hackers@freebsd.org Subject: Re: Bus Driver probe and attach device Message-ID: <200507220748.QAA02213@axe-inc.co.jp> In-Reply-To: Your message of "Fri, 22 Jul 2005 14:38:32 %2B0800." <c5c2798005072123385249195e@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507220748.QAA02213>