patch-2.1.41 linux/drivers/sound/sb_common.c

Next file: linux/drivers/sound/sb_midi.c
Previous file: linux/drivers/sound/sb.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.40/linux/drivers/sound/sb_common.c linux/drivers/sound/sb_common.c
@@ -58,10 +58,7 @@
   int             i;
   unsigned long   limit;
 
-  limit = jiffies + HZ / 10;	/*
-				   * The timeout is 0.1 seconds
-				 */
-
+  limit = jiffies + HZ / 10;	/* Timeout */
   /*
    * Note! the i<500000 is an emergency exit. The sb_dsp_command() is sometimes
    * called while interrupts are disabled. This means that the timer is
@@ -173,7 +170,8 @@
 	break;
 
       default:
-	printk ("Sound Blaster: Unexpected interrupt\n");
+	/* printk ("Sound Blaster: Unexpected interrupt\n"); */
+	;
       }
 /*
  * Acknowledge interrupts 
@@ -633,6 +631,7 @@
 		for (i = 0; i < 10000; i++)
 		  inb (DSP_DATA_AVAIL);
 		devc->caps = SB_NO_AUDIO | SB_NO_MIDI;	/* Mixer only */
+		devc->model = MDL_AZTECH;
 	      }
 	}
     }
@@ -666,6 +665,7 @@
   sb_devc        *devc;
   int             n;
   char            name[100];
+  extern int      sb_be_quiet;
 
 /*
  * Check if we had detected a SB device earlier
@@ -776,7 +776,7 @@
 	{
 	  devc->model = hw_config->card_subtype = MDL_SBPRO;
 	  if (hw_config->name == NULL)
-	    hw_config->name = "Sound Blaster Pro";
+	    hw_config->name = "Sound Blaster Pro (8 BIT ONLY)";
 	}
       break;
 
@@ -809,10 +809,33 @@
 #endif
 
   if (hw_config->name == NULL)
-    hw_config->name = "Sound Blaster";
+    hw_config->name = "Sound Blaster (8 BIT/MONO ONLY)";
 
   sprintf (name, "%s (%d.%d)", hw_config->name, devc->major, devc->minor);
   conf_printf (name, hw_config);
+
+/*
+ * Assuming that a soundcard is Sound Blaster (compatible) is the most common
+ * configuration error and the mother of all problems. Usually soundcards
+ * emulate SB Pro but in addition they have a 16 bit native mode which should be
+ * used in Unix. See Readme.cards for more information about configuring OSS/Free
+ * properly.
+ */
+  if (devc->model <= MDL_SBPRO)
+    if (devc->major == 3 && devc->minor != 1)	/* "True" SB Pro should have v3.1. */
+      {
+	printk ("This soundcard doesn't seem to be fully Sound Blaster Pro compatible.\n");
+	printk ("Almost certainly there is another way to configure OSS so that\n");
+	printk ("it works properly with OSS (for example in 16 bit mode).\n");
+      }
+    else if (!sb_be_quiet && devc->model == MDL_SBPRO)
+      {
+	printk ("SB DSP version is just %d.%d which means that your card is\n",
+		devc->major, devc->minor);
+	printk ("several years old (8 bit only device)\n");
+	printk ("or alternatively the sound driver is incorrectly configured.\n");
+      }
+
   hw_config->card_subtype = devc->model;
   last_devc = devc;		/* For SB MPU detection */
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov