Commit a71c8f6c authored by Dave Jones's avatar Dave Jones

[PATCH] Bose sound support for cs4232 OSS driver.

parent 95bfe597
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
* anyway. * anyway.
* *
* Changes * Changes
* John Rood Added Bose Sound System Support.
* Toshio Spoor
* Alan Cox Modularisation, Basic cleanups. * Alan Cox Modularisation, Basic cleanups.
* Paul Barton-Davis Separated MPU configuration, added * Paul Barton-Davis Separated MPU configuration, added
* Tropez+ (WaveFront) support * Tropez+ (WaveFront) support
...@@ -58,6 +60,10 @@ ...@@ -58,6 +60,10 @@
#define KEY_PORT 0x279 /* Same as LPT1 status port */ #define KEY_PORT 0x279 /* Same as LPT1 status port */
#define CSN_NUM 0x99 /* Just a random number */ #define CSN_NUM 0x99 /* Just a random number */
#define INDEX_ADDRESS 0x00 /* (R0) Index Address Register */
#define INDEX_DATA 0x01 /* (R1) Indexed Data Register */
#define PIN_CONTROL 0x0a /* (I10) Pin Control */
#define ENABLE_PINS 0xc0 /* XCTRL0/XCTRL1 enable */
static void CS_OUT(unsigned char a) static void CS_OUT(unsigned char a)
{ {
...@@ -67,6 +73,7 @@ static void CS_OUT(unsigned char a) ...@@ -67,6 +73,7 @@ static void CS_OUT(unsigned char a)
#define CS_OUT2(a, b) {CS_OUT(a);CS_OUT(b);} #define CS_OUT2(a, b) {CS_OUT(a);CS_OUT(b);}
#define CS_OUT3(a, b, c) {CS_OUT(a);CS_OUT(b);CS_OUT(c);} #define CS_OUT3(a, b, c) {CS_OUT(a);CS_OUT(b);CS_OUT(c);}
static int __initdata bss = 0;
static int mpu_base = 0, mpu_irq = 0; static int mpu_base = 0, mpu_irq = 0;
static int synth_base = 0, synth_irq = 0; static int synth_base = 0, synth_irq = 0;
static int mpu_detected = 0; static int mpu_detected = 0;
...@@ -97,7 +104,31 @@ static void sleep(unsigned howlong) ...@@ -97,7 +104,31 @@ static void sleep(unsigned howlong)
schedule_timeout(howlong); schedule_timeout(howlong);
} }
int probe_cs4232(struct address_info *hw_config, int isapnp_configured) static void enable_xctrl(int baseio)
{
unsigned char regd;
/*
* Some IBM Aptiva's have the Bose Sound System. By default
* the Bose Amplifier is disabled. The amplifier will be
* activated, by setting the XCTRL0 and XCTRL1 bits.
* Volume of the monitor bose speakers/woofer, can then
* be set by changing the PCM volume.
*
*/
printk("cs4232: enabling Bose Sound System Amplifier.\n");
/* Switch to Pin Control Address */
regd = inb(baseio + INDEX_ADDRESS) & 0xe0;
outb(((unsigned char) (PIN_CONTROL | regd)), baseio + INDEX_ADDRESS );
/* Activate the XCTRL0 and XCTRL1 Pins */
regd = inb(baseio + INDEX_DATA);
outb(((unsigned char) (ENABLE_PINS | regd)), baseio + INDEX_DATA );
}
int __init probe_cs4232(struct address_info *hw_config, int isapnp_configured)
{ {
int i, n; int i, n;
int base = hw_config->io_base, irq = hw_config->irq; int base = hw_config->io_base, irq = hw_config->irq;
...@@ -218,7 +249,7 @@ int probe_cs4232(struct address_info *hw_config, int isapnp_configured) ...@@ -218,7 +249,7 @@ int probe_cs4232(struct address_info *hw_config, int isapnp_configured)
return 0; return 0;
} }
void attach_cs4232(struct address_info *hw_config) void __init attach_cs4232(struct address_info *hw_config)
{ {
int base = hw_config->io_base, int base = hw_config->io_base,
irq = hw_config->irq, irq = hw_config->irq,
...@@ -275,9 +306,14 @@ void attach_cs4232(struct address_info *hw_config) ...@@ -275,9 +306,14 @@ void attach_cs4232(struct address_info *hw_config)
} }
hw_config->slots[1] = hw_config2.slots[1]; hw_config->slots[1] = hw_config2.slots[1];
} }
if (bss)
{
enable_xctrl(base);
}
} }
static void unload_cs4232(struct address_info *hw_config) static void __exit unload_cs4232(struct address_info *hw_config)
{ {
int base = hw_config->io_base, irq = hw_config->irq; int base = hw_config->io_base, irq = hw_config->irq;
int dma1 = hw_config->dma, dma2 = hw_config->dma2; int dma1 = hw_config->dma, dma2 = hw_config->dma2;
...@@ -349,6 +385,8 @@ MODULE_PARM(synthirq,"i"); ...@@ -349,6 +385,8 @@ MODULE_PARM(synthirq,"i");
MODULE_PARM_DESC(synthirq,"Maui WaveTable IRQ"); MODULE_PARM_DESC(synthirq,"Maui WaveTable IRQ");
MODULE_PARM(isapnp,"i"); MODULE_PARM(isapnp,"i");
MODULE_PARM_DESC(isapnp,"Enable ISAPnP probing (default 1)"); MODULE_PARM_DESC(isapnp,"Enable ISAPnP probing (default 1)");
MODULE_PARM(bss,"i");
MODULE_PARM_DESC(bss,"Enable Bose Sound System Support (default 0)");
/* /*
* Install a CS4232 based card. Need to have ad1848 and mpu401 * Install a CS4232 based card. Need to have ad1848 and mpu401
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment