Re: vanilla 2.6.0-test11 and CS4236 card

From: Takashi Iwai
Date: Wed Dec 03 2003 - 06:27:45 EST


Hi Adam,

At Tue, 2 Dec 2003 23:44:32 +0000,
Adam Belay wrote:
>
> Here's a slight cleanup of the above patch -- tested with the cs4232 driver.
> Any additional testing would be appreciated.
>
> --- a/drivers/pnp/card.c 2003-11-26 20:45:38.000000000 +0000
> +++ b/drivers/pnp/card.c 2003-12-02 23:06:55.000000000 +0000
> @@ -26,8 +26,18 @@
> {
> 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 (;;i++) {
> + struct pnp_dev *dev;
> + if (i == PNP_MAX_DEVICES || ! *drv_id->devs[i].id)
> + return drv_id;
> + card_for_each_dev(card, dev) {
> + if (!compare_pnp_id(dev->id, drv_id->devs[i].id))
> + break;
> + }
> + }
> + }
> drv_id++;
> }
> return NULL;
>

i think the patch above doesn't work properly since it will continue
even if no devices match. so, the loop after comparison of card id
makes no sense.


> In this case we could also just continue if the MPU device isn't present. It
> would probably be a good convention to do so because if, for whatever reason
> (3rd party driver, resource conflicts, etc), the MPU device is busy in any
> matched card id set, the entire probe would fail.
>
> How about something like this? (untested)
>
> --- a/sound/isa/cs423x/cs4236.c 2003-11-26 20:43:05.000000000 +0000
> +++ b/sound/isa/cs423x/cs4236.c 2003-12-02 23:36:59.000000000 +0000
> @@ -294,13 +294,8 @@
> kfree(cfg);
> return -EBUSY;
> }
> - if (id->devs[2].id[0]) {
> + if (id->devs[2].id[0])
> acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
> - if (acard->mpu == NULL) {
> - kfree(cfg);
> - return -EBUSY;
> - }
> - }
>
> /* WSS initialization */
> pdev = acard->wss;

this looks fine to me.


ciao,

Takashi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/