[ALSA] pcsp: improve "enable" option handling

Simplify init code.

Signed-off-by: Stas Sergeev <stsp@aknet.ru>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/sound/drivers/pcsp/pcsp.c b/sound/drivers/pcsp/pcsp.c
index 264d2a5..547005c 100644
--- a/sound/drivers/pcsp/pcsp.c
+++ b/sound/drivers/pcsp/pcsp.c
@@ -31,7 +31,7 @@
 module_param(id, charp, 0444);
 MODULE_PARM_DESC(id, "ID string for pcsp soundcard.");
 module_param(enable, bool, 0444);
-MODULE_PARM_DESC(enable, "dummy");
+MODULE_PARM_DESC(enable, "Enable PC-Speaker sound.");
 
 struct snd_pcsp pcsp_chip;
 
@@ -136,7 +136,13 @@
 
 static int __devinit alsa_card_pcsp_init(struct device *dev)
 {
-	int devnum = 0, cards = 0;
+	int err;
+
+	err = snd_card_pcsp_probe(0, dev);
+	if (err) {
+		printk(KERN_ERR "PC-Speaker initialization failed.\n");
+		return err;
+	}
 
 #ifdef CONFIG_DEBUG_PAGEALLOC
 	/* Well, CONFIG_DEBUG_PAGEALLOC makes the sound horrible. Lets alert */
@@ -148,15 +154,6 @@
 	       "and crackling noise.\n");
 #endif
 
-	if (enable) {
-		if (snd_card_pcsp_probe(devnum, dev) >= 0)
-			cards++;
-		if (!cards) {
-			printk(KERN_ERR "PC-Speaker initialization failed.\n");
-			return -ENODEV;
-		}
-	}
-
 	return 0;
 }
 
@@ -168,6 +165,7 @@
 static int __devinit pcsp_probe(struct platform_device *dev)
 {
 	int err;
+
 	err = pcspkr_input_init(&pcsp_chip.input_dev, &dev->dev);
 	if (err < 0)
 		return err;
@@ -227,6 +225,8 @@
 
 static int __init pcsp_init(void)
 {
+	if (!enable)
+		return -ENODEV;
 	return platform_driver_register(&pcsp_platform_driver);
 }