Hey all, Alex told me to redo my previous sb_card.c cleanup patch after he got his into the kernel. So here is a new version, against 2.3.99pre3. Overview: After Alex's last patch the various sb_init_* functions were quite redundant, so I've written a generic sb_init function. I also reorganized sb_isapnp_list. I raided the ALSA drivers for all the ISAPnP codes for CTL and ESS chips and added them to the table (as I believe Alan suggested). Also returns the 2.3.99pre2 dev->active behavior, which was necessary to detect two of the same type of cards (Alex changed that in his last patch). I cut out some redundant code in probe_sb(), and cleaned up sb_isapnp_init(). Finally, I cleaned up the ISAPnP card detection procedure by dumping the audio device detection procedure and just using card detection (which should be okay since we have all the card ids). The overall result of this patch is a larger sb_isapnp_list with much less duplicated code - which I believe to be a good trade off. Have a look and please let me know what ya think, how it works for you, and/or if there is something I missed. Thanks again for your time, Paul Laufer