lkml.org 
[lkml]   [2007]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 2.6.22-rc1 lost snd_4236 device
    On 05/13/2007 06:23 PM, Pete Clements wrote:

    > Fyi:
    > With 2.6.22-rc1 get following when loading sound device module. Introduced
    > with 2.6.21-git16.
    >
    > FATAL: Error inserting snd_cs4236 (/lib/modules/2.6.22-rc1/kernel/sound/isa/cs423x/snd-cs4236.ko): No such device
    > FATAL: Error running install command for snd_cs4236

    Yup; the conversion of the mixed legacy/pnp ALSA drivers to the isa_bus
    framework is not quite right. Wants the attached.

    Takashi, this needs to go to Linus. Can you make sure it gets there? This is
    against -linus HEAD.

    Signed-off-by: Rene Herman <rene.herman@gmail.com>

    Rene.
    diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
    index 214d65d..f471f8a 100644
    --- a/sound/isa/cmi8330.c
    +++ b/sound/isa/cmi8330.c
    @@ -109,6 +109,7 @@ module_param_array(wssdma, int, NULL, 0444);
    MODULE_PARM_DESC(wssdma, "DMA for CMI8330 WSS driver.");

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;
    #endif

    @@ -686,14 +687,18 @@ static int __init alsa_card_cmi8330_init(void)
    int err;

    err = isa_register_driver(&snd_cmi8330_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_card_driver(&cmi8330_pnpc_driver);
    if (!err)
    pnp_registered = 1;
    +
    + if (isa_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_cmi8330_exit(void)
    @@ -701,8 +706,10 @@ static void __exit alsa_card_cmi8330_exit(void)
    #ifdef CONFIG_PNP
    if (pnp_registered)
    pnp_unregister_card_driver(&cmi8330_pnpc_driver);
    +
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_cmi8330_driver);
    + isa_unregister_driver(&snd_cmi8330_driver);
    }

    module_init(alsa_card_cmi8330_init)
    diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
    index 87f1392..1a14f33 100644
    --- a/sound/isa/cs423x/cs4236.c
    +++ b/sound/isa/cs423x/cs4236.c
    @@ -127,6 +127,7 @@ module_param_array(dma2, int, NULL, 0444);
    MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnpc_registered;
    #ifdef CS4232
    static int pnp_registered;
    @@ -770,9 +771,9 @@ static int __init alsa_card_cs423x_init(void)
    int err;

    err = isa_register_driver(&cs423x_isa_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    + if (!err)
    + isa_registered = 1;
    #ifdef CS4232
    err = pnp_register_driver(&cs4232_pnp_driver);
    if (!err)
    @@ -781,8 +782,14 @@ static int __init alsa_card_cs423x_init(void)
    err = pnp_register_card_driver(&cs423x_pnpc_driver);
    if (!err)
    pnpc_registered = 1;
    -#endif /* CONFIG_PNP */
    - return 0;
    +#ifdef CS4232
    + if (pnp_registered)
    + err = 0;
    +#endif
    + if (isa_registered)
    + err = 0;
    +#endif
    + return err;
    }

    static void __exit alsa_card_cs423x_exit(void)
    @@ -794,8 +801,9 @@ static void __exit alsa_card_cs423x_exit(void)
    if (pnp_registered)
    pnp_unregister_driver(&cs4232_pnp_driver);
    #endif
    -#endif /* CONFIG_PNP */
    - isa_unregister_driver(&cs423x_isa_driver);
    + if (isa_registered)
    +#endif
    + isa_unregister_driver(&cs423x_isa_driver);
    }

    module_init(alsa_card_cs423x_init)
    diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
    index d2a9c7d..f7732bf 100644
    --- a/sound/isa/es18xx.c
    +++ b/sound/isa/es18xx.c
    @@ -2036,7 +2036,9 @@ module_param_array(dma2, int, NULL, 0444);
    MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");

    #ifdef CONFIG_PNP
    -static int pnp_registered, pnpc_registered;
    +static int isa_registered;
    +static int pnp_registered;
    +static int pnpc_registered;

    static struct pnp_device_id snd_audiodrive_pnpbiosids[] = {
    { .id = "ESS1869" },
    @@ -2466,18 +2468,22 @@ static int __init alsa_card_es18xx_init(void)
    int err;

    err = isa_register_driver(&snd_es18xx_isa_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    -
    #ifdef CONFIG_PNP
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_driver(&es18xx_pnp_driver);
    if (!err)
    pnp_registered = 1;
    +
    err = pnp_register_card_driver(&es18xx_pnpc_driver);
    if (!err)
    pnpc_registered = 1;
    +
    + if (isa_registered || pnp_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_es18xx_exit(void)
    @@ -2487,8 +2493,9 @@ static void __exit alsa_card_es18xx_exit(void)
    pnp_unregister_card_driver(&es18xx_pnpc_driver);
    if (pnp_registered)
    pnp_unregister_driver(&es18xx_pnp_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_es18xx_isa_driver);
    + isa_unregister_driver(&snd_es18xx_isa_driver);
    }

    module_init(alsa_card_es18xx_init)
    diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
    index 3e46572..0220cdb 100644
    --- a/sound/isa/gus/interwave.c
    +++ b/sound/isa/gus/interwave.c
    @@ -135,6 +135,7 @@ struct snd_interwave {


    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;

    static struct pnp_card_device_id snd_interwave_pnpids[] = {
    @@ -934,15 +935,18 @@ static int __init alsa_card_interwave_init(void)
    int err;

    err = isa_register_driver(&snd_interwave_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    - /* ISA PnP cards */
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_card_driver(&interwave_pnpc_driver);
    if (!err)
    pnp_registered = 1;
    +
    + if (isa_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_interwave_exit(void)
    @@ -950,8 +954,9 @@ static void __exit alsa_card_interwave_exit(void)
    #ifdef CONFIG_PNP
    if (pnp_registered)
    pnp_unregister_card_driver(&interwave_pnpc_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_interwave_driver);
    + isa_unregister_driver(&snd_interwave_driver);
    }

    module_init(alsa_card_interwave_init)
    diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
    index 48743eb..61a323c 100644
    --- a/sound/isa/opl3sa2.c
    +++ b/sound/isa/opl3sa2.c
    @@ -92,6 +92,7 @@ module_param_array(opl3sa3_ymode, int, NULL, 0444);
    MODULE_PARM_DESC(opl3sa3_ymode, "Speaker size selection for 3D Enhancement mode: Desktop/Large Notebook/Small Notebook/HiFi.");

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;
    static int pnpc_registered;
    #endif
    @@ -967,17 +968,22 @@ static int __init alsa_card_opl3sa2_init(void)
    int err;

    err = isa_register_driver(&snd_opl3sa2_isa_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_driver(&opl3sa2_pnp_driver);
    if (!err)
    pnp_registered = 1;
    +
    err = pnp_register_card_driver(&opl3sa2_pnpc_driver);
    if (!err)
    pnpc_registered = 1;
    +
    + if (isa_registered || pnp_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_opl3sa2_exit(void)
    @@ -987,8 +993,9 @@ static void __exit alsa_card_opl3sa2_exit(void)
    pnp_unregister_card_driver(&opl3sa2_pnpc_driver);
    if (pnp_registered)
    pnp_unregister_driver(&opl3sa2_pnp_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_opl3sa2_isa_driver);
    + isa_unregister_driver(&snd_opl3sa2_isa_driver);
    }

    module_init(alsa_card_opl3sa2_init)
    diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
    index 2a19b0a..c4ba24b 100644
    --- a/sound/isa/sb/sb16.c
    +++ b/sound/isa/sb/sb16.c
    @@ -129,6 +129,7 @@ MODULE_PARM_DESC(seq_ports, "Number of sequencer ports for WaveTable synth.");
    #endif

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;
    #endif

    @@ -702,15 +703,18 @@ static int __init alsa_card_sb16_init(void)
    int err;

    err = isa_register_driver(&snd_sb16_isa_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    - /* PnP cards at last */
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_card_driver(&sb16_pnpc_driver);
    if (!err)
    pnp_registered = 1;
    +
    + if (isa_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_sb16_exit(void)
    @@ -718,8 +722,9 @@ static void __exit alsa_card_sb16_exit(void)
    #ifdef CONFIG_PNP
    if (pnp_registered)
    pnp_unregister_card_driver(&sb16_pnpc_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_sb16_isa_driver);
    + isa_unregister_driver(&snd_sb16_isa_driver);
    }

    module_init(alsa_card_sb16_init)
    diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
    index 08c1497..9ea417b 100644
    --- a/sound/isa/sscape.c
    +++ b/sound/isa/sscape.c
    @@ -69,7 +69,9 @@ module_param_array(dma, int, NULL, 0444);
    MODULE_PARM_DESC(dma, "DMA # for SoundScape driver.");

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;
    +
    static struct pnp_card_device_id sscape_pnpids[] = {
    { .id = "ENS3081", .devs = { { "ENS0000" } } },
    { .id = "" } /* end */
    @@ -1405,22 +1407,21 @@ static struct pnp_card_driver sscape_pnpc_driver = {

    static int __init sscape_init(void)
    {
    - int ret;
    + int err;

    - /*
    - * First check whether we were passed any parameters.
    - * These MUST take precedence over ANY automatic way
    - * of allocating cards, because the operator is
    - * S-P-E-L-L-I-N-G it out for us...
    - */
    - ret = isa_register_driver(&snd_sscape_driver, SNDRV_CARDS);
    - if (ret < 0)
    - return ret;
    + err = isa_register_driver(&snd_sscape_driver, SNDRV_CARDS);
    #ifdef CONFIG_PNP
    - if (pnp_register_card_driver(&sscape_pnpc_driver) == 0)
    + if (!err)
    + isa_registered = 1;
    +
    + err = pnp_register_card_driver(&sscape_pnpc_driver);
    + if (!err)
    pnp_registered = 1;
    +
    + if (isa_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit sscape_exit(void)
    @@ -1428,8 +1429,9 @@ static void __exit sscape_exit(void)
    #ifdef CONFIG_PNP
    if (pnp_registered)
    pnp_unregister_card_driver(&sscape_pnpc_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_sscape_driver);
    + isa_unregister_driver(&snd_sscape_driver);
    }

    module_init(sscape_init);
    diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
    index 75673f7..83c2fc4 100644
    --- a/sound/isa/wavefront/wavefront.c
    +++ b/sound/isa/wavefront/wavefront.c
    @@ -86,6 +86,7 @@ module_param_array(use_cs4232_midi, bool, NULL, 0444);
    MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)");

    #ifdef CONFIG_PNP
    +static int isa_registered;
    static int pnp_registered;

    static struct pnp_card_device_id snd_wavefront_pnpids[] = {
    @@ -706,14 +707,18 @@ static int __init alsa_card_wavefront_init(void)
    int err;

    err = isa_register_driver(&snd_wavefront_driver, SNDRV_CARDS);
    - if (err < 0)
    - return err;
    #ifdef CONFIG_PNP
    + if (!err)
    + isa_registered = 1;
    +
    err = pnp_register_card_driver(&wavefront_pnpc_driver);
    if (!err)
    pnp_registered = 1;
    +
    + if (isa_registered)
    + err = 0;
    #endif
    - return 0;
    + return err;
    }

    static void __exit alsa_card_wavefront_exit(void)
    @@ -721,8 +726,9 @@ static void __exit alsa_card_wavefront_exit(void)
    #ifdef CONFIG_PNP
    if (pnp_registered)
    pnp_unregister_card_driver(&wavefront_pnpc_driver);
    + if (isa_registered)
    #endif
    - isa_unregister_driver(&snd_wavefront_driver);
    + isa_unregister_driver(&snd_wavefront_driver);
    }

    module_init(alsa_card_wavefront_init)
    \
     
     \ /
      Last update: 2007-05-15 07:47    [W:0.044 / U:34.612 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site