]> Pileus Git - ~andy/linux/blobdiff - sound/isa/opti9xx/opti92x-ad1848.c
[ALSA] opti9x - Fix compile without CONFIG_PNP
[~andy/linux] / sound / isa / opti9xx / opti92x-ad1848.c
index 39211e58cd68dbf36990f5257a71a17b4f9d6b5f..65b28cbc0ebd75b5211e5cb3cb292e058e8e9239 100644 (file)
@@ -259,6 +259,7 @@ struct snd_opti9xx {
 };
 
 static int snd_opti9xx_pnp_is_probed;
+static struct platform_device *snd_opti9xx_platform_device;
 
 #ifdef CONFIG_PNP
 
@@ -1348,7 +1349,7 @@ static int snd_opti93x_pcm(struct snd_opti93x *codec, int device, struct snd_pcm
        int error;
        struct snd_pcm *pcm;
 
-       if ((error = snd_pcm_new(codec->card, "OPTi 82C93X", device, 1, 1, &pcm)))
+       if ((error = snd_pcm_new(codec->card, "OPTi 82C93X", device, 1, 1, &pcm)) < 0)
                return error;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_opti93x_playback_ops);
@@ -2087,19 +2088,25 @@ static int __init alsa_card_opti9xx_init(void)
        int error;
        struct platform_device *device;
 
+#ifdef CONFIG_PNP
        pnp_register_card_driver(&opti9xx_pnpc_driver);
        if (snd_opti9xx_pnp_is_probed)
                return 0;
+#endif
        if (! is_isapnp_selected()) {
                error = platform_driver_register(&snd_opti9xx_driver);
                if (error < 0)
                        return error;
                device = platform_device_register_simple(DRIVER_NAME, -1, NULL, 0);
-               if (! IS_ERR(device))
+               if (!IS_ERR(device)) {
+                       snd_opti9xx_platform_device = device;
                        return 0;
+               }
                platform_driver_unregister(&snd_opti9xx_driver);
        }
+#ifdef CONFIG_PNP
        pnp_unregister_card_driver(&opti9xx_pnpc_driver);
+#endif
 #ifdef MODULE
        printk(KERN_ERR "no OPTi " CHIP_NAME " soundcard found\n");
 #endif
@@ -2108,9 +2115,13 @@ static int __init alsa_card_opti9xx_init(void)
 
 static void __exit alsa_card_opti9xx_exit(void)
 {
-       if (! snd_opti9xx_pnp_is_probed)
+       if (!snd_opti9xx_pnp_is_probed) {
+               platform_device_unregister(snd_opti9xx_platform_device);
                platform_driver_unregister(&snd_opti9xx_driver);
+       }
+#ifdef CONFIG_PNP
        pnp_unregister_card_driver(&opti9xx_pnpc_driver);
+#endif
 }
 
 module_init(alsa_card_opti9xx_init)