diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-06-03 07:28:06 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1997-06-03 07:28:06 +0000 |
commit | edb5c61526e98426a5f3da889463c2b8d85d04c0 (patch) | |
tree | 27965970d5fe47655e451ef3251cc20df75e04b7 /drivers/sound/sb_common.c | |
parent | 2e6827eb279d02923bf12eb0cfc077b26f545953 (diff) |
Sync with Linux 2.1.41
Diffstat (limited to 'drivers/sound/sb_common.c')
-rw-r--r-- | drivers/sound/sb_common.c | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/drivers/sound/sb_common.c b/drivers/sound/sb_common.c index 3faf6b690..bd9e05704 100644 --- a/drivers/sound/sb_common.c +++ b/drivers/sound/sb_common.c @@ -58,10 +58,7 @@ sb_dsp_command (sb_devc * devc, unsigned char val) 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 @@ sbintr (int irq, void *dev_id, struct pt_regs *dummy) break; default: - printk ("Sound Blaster: Unexpected interrupt\n"); + /* printk ("Sound Blaster: Unexpected interrupt\n"); */ + ; } /* * Acknowledge interrupts @@ -633,6 +631,7 @@ sb_dsp_detect (struct address_info *hw_config) 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_dsp_init (struct address_info *hw_config) 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 @@ sb_dsp_init (struct address_info *hw_config) { 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 @@ sb_dsp_init (struct address_info *hw_config) #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 */ |