Re: vanilla 2.6.0-test11 and CS4236 card

From: Takashi Iwai
Date: Tue Dec 02 2003 - 12:33:06 EST


At Tue, 2 Dec 2003 11:06:39 -0600,
Joseph Pingenot wrote:
>
> Howdy.
>
> I'm having problems getting the CS4236+ driver to recognize my
> CS4236B card. pnp finds it on boot:
> isapnp: Scanning for PnP cards...
> isapnp: Card 'CS4236B'
> isapnp: 1 Plug & Play card detected total
>
> but the ALSA driver doesn't pick it up.
> isapnp detection failed and probing for CS4236+ is not supported
> CS4236+ soundcard not found or device busy
>
> Furthermore, after fudging with manually setting it up via modprobe
> options, it's still not loading:
> CS4236+ soundcard not found or device busy
>
> This used to work in the 2.4 series kernel without any modprobe.conf
> settings; the OSS driver would pick it up.
>
> Any assistance would be greatly appreciated; this is the only thing holding
> me back from 2.6 goodness. ;)

does the attached patch work? (it's untested at all...)


--
Takashi Iwai <tiwai@xxxxxxx> ALSA Developer - www.alsa-project.org
--- linux-2.6.0-test11/drivers/pnp/card.c-dist 2003-12-02 18:14:21.000000000 +0100
+++ linux-2.6.0-test11/drivers/pnp/card.c 2003-12-02 18:29:20.000000000 +0100
@@ -26,8 +26,25 @@
{
const struct pnp_card_device_id * drv_id = drv->id_table;
while (*drv_id->id){
- if (compare_pnp_id(card->id,drv_id->id))
- return drv_id;
+ if (compare_pnp_id(card->id,drv_id->id)) {
+ int i = 0;
+ for (;;) {
+ int found;
+ struct pnp_dev *dev;
+ if (i == PNP_MAX_DEVICES || ! *drv_id->devs[i].id)
+ return drv_id;
+ found = 0;
+ card_for_each_dev(card, dev) {
+ if (compare_pnp_id(dev->id, drv_id->devs[i].id)) {
+ found = 1;
+ break;
+ }
+ }
+ if (! found)
+ break;
+ i++;
+ }
+ }
drv_id++;
}
return NULL;