Date: Mon, 21 Jul 1997 12:04:22 +0200 (MET DST) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: msmith@atrad.adelaide.edu.au (Michael Smith) Cc: msmith@atrad.adelaide.edu.au, multimedia@FreeBSD.ORG, hackers@FreeBSD.ORG Subject: Re: sound driver structure and configuration Message-ID: <199707211004.MAA20937@labinfo.iet.unipi.it> In-Reply-To: <199707210751.RAA22242@genesis.atrad.adelaide.edu.au> from "Michael Smith" at Jul 21, 97 05:21:11 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> Luigi Rizzo stands accused of saying: > > > Aha. May I offer a suggestion? > > > > > > Have the 'snd' controller pull in all the modules for the various > > > on-card subsystems. Have each of these subsystems register themselves > > > in a linker set using a 'name' field to identify themselves. > > > > > > Then have 'device at ...?' statements which pull in probe code for > > > > right, but this brings me back to the initial question. What does the > > config progrm do when it finds a "device at foo?" statement ? I have > > tried running config with different config files where foo is replaced > > by bar o rother strings and see no difference in the output . I guess > > the "isa" keyword is somehow magic (or it becomes specially treated > > because of something in the "files.i386" file ? > > Oops, my previous wasn't good enough, sorry. > > The 'device at foo?' doesn't appear to do anything special, and my > suggesting it was really wrong. > > Here, in full glory : > > controller snd? # sound support, also all chipset modules > > device zw0 at isa? port... # ZongleWonker ISA board probe > ... > device bf0 # Bafwangg PCI soundcard probe > > > Then a chipset module might say : > > struct snddriver_module foo_codec = { > foocodec_attach, > SNDD_TYPE_CODEC, > (void *)foocodec_function_switch, > "foo_codec" > } > DATA_SET(snddriver, foo_codec); ... > Does that make more sense? 8) well, this is exactly what I have done! One minor difference, I have used a "struct pnp_device" as follows: static struct pnp_device cs4236 = { "cs4236", cs4236_probe, cs4236_attach, &cs4236_count, NULL, /* shutdown */ &tty_imask /* imask */ }; so that I can easily use a different imask when needed. Maybe I will need more fields in the struct pnp_device to make the mechanism more flexible for other device types. In fact the structure should be the same for ISA/PnP and PCI device, but I understand that support for autoconfiguring devices has been added according to the needs of specific buses and the mechanism is not as clean as it might be. When I am done with the PnP stuff I will talk back to those who implemented the pci things to discuss this item. Cheers Luigi -----------------------------+-------------------------------------- Luigi Rizzo | Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it | Universita' di Pisa tel: +39-50-568533 | via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 | http://www.iet.unipi.it/~luigi/ _____________________________|______________________________________
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199707211004.MAA20937>