Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
a3c6048d
Commit
a3c6048d
authored
Mar 24, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/cs423x-merge' into for-linus
parents
87cd9d7c
cda9043d
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
351 additions
and
282 deletions
+351
-282
Documentation/sound/alsa/ALSA-Configuration.txt
Documentation/sound/alsa/ALSA-Configuration.txt
+9
-25
include/sound/ad1816a.h
include/sound/ad1816a.h
+2
-0
include/sound/wss.h
include/sound/wss.h
+1
-0
sound/isa/Kconfig
sound/isa/Kconfig
+8
-17
sound/isa/ad1816a/ad1816a.c
sound/isa/ad1816a/ad1816a.c
+9
-5
sound/isa/ad1816a/ad1816a_lib.c
sound/isa/ad1816a/ad1816a_lib.c
+3
-8
sound/isa/cmi8330.c
sound/isa/cmi8330.c
+60
-8
sound/isa/cs423x/Makefile
sound/isa/cs423x/Makefile
+3
-5
sound/isa/cs423x/cs4232.c
sound/isa/cs423x/cs4232.c
+0
-2
sound/isa/cs423x/cs4236.c
sound/isa/cs423x/cs4236.c
+69
-84
sound/isa/cs423x/cs4236_lib.c
sound/isa/cs423x/cs4236_lib.c
+14
-31
sound/isa/es1688/es1688.c
sound/isa/es1688/es1688.c
+16
-7
sound/isa/es1688/es1688_lib.c
sound/isa/es1688/es1688_lib.c
+15
-8
sound/isa/gus/gus_dma.c
sound/isa/gus/gus_dma.c
+17
-10
sound/isa/gus/gus_irq.c
sound/isa/gus/gus_irq.c
+4
-2
sound/isa/gus/gus_pcm.c
sound/isa/gus/gus_pcm.c
+20
-6
sound/isa/gus/gus_uart.c
sound/isa/gus/gus_uart.c
+8
-2
sound/isa/gus/interwave.c
sound/isa/gus/interwave.c
+9
-7
sound/isa/opl3sa2.c
sound/isa/opl3sa2.c
+7
-3
sound/isa/opti9xx/opti92x-ad1848.c
sound/isa/opti9xx/opti92x-ad1848.c
+19
-21
sound/isa/sc6000.c
sound/isa/sc6000.c
+0
-4
sound/isa/wavefront/wavefront.c
sound/isa/wavefront/wavefront.c
+2
-2
sound/isa/wavefront/wavefront_synth.c
sound/isa/wavefront/wavefront_synth.c
+1
-1
sound/isa/wss/wss_lib.c
sound/isa/wss/wss_lib.c
+55
-24
No files found.
Documentation/sound/alsa/ALSA-Configuration.txt
View file @
a3c6048d
...
@@ -346,6 +346,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
...
@@ -346,6 +346,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
sbirq - IRQ # for CMI8330 chip (SB16)
sbirq - IRQ # for CMI8330 chip (SB16)
sbdma8 - 8bit DMA # for CMI8330 chip (SB16)
sbdma8 - 8bit DMA # for CMI8330 chip (SB16)
sbdma16 - 16bit DMA # for CMI8330 chip (SB16)
sbdma16 - 16bit DMA # for CMI8330 chip (SB16)
fmport - (optional) OPL3 I/O port
mpuport - (optional) MPU401 I/O port
mpuirq - (optional) MPU401 irq #
This module supports multiple cards and autoprobe.
This module supports multiple cards and autoprobe.
...
@@ -388,34 +391,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
...
@@ -388,34 +391,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
The power-management is supported.
The power-management is supported.
Module snd-cs4232
-----------------
Module for sound cards based on CS4232/CS4232A ISA chips.
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
with isapnp=0, the following options are available:
port - port # for CS4232 chip (PnP setup - 0x534)
cport - control port # for CS4232 chip (PnP setup - 0x120,0x210,0xf00)
mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
dma1 - first DMA # for CS4232 chip (0,1,3)
dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
This module supports multiple cards. This module does not support autoprobe
(if ISA PnP is not used) thus main port must be specified!!! Other ports are
optional.
The power-management is supported.
Module snd-cs4236
Module snd-cs4236
-----------------
-----------------
Module for sound cards based on CS4235/CS4236/CS4236B/CS4237B/
Module for sound cards based on CS4232/CS4232A,
CS4235/CS4236/CS4236B/CS4237B/
CS4238B/CS4239 ISA chips.
CS4238B/CS4239 ISA chips.
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
...
@@ -437,6 +417,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
...
@@ -437,6 +417,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
The power-management is supported.
The power-management is supported.
This module is aliased as snd-cs4232 since it provides the old
snd-cs4232 functionality, too.
Module snd-cs4281
Module snd-cs4281
-----------------
-----------------
...
@@ -606,6 +589,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
...
@@ -606,6 +589,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Module for ESS AudioDrive ES-1688 and ES-688 sound cards.
Module for ESS AudioDrive ES-1688 and ES-688 sound cards.
port - port # for ES-1688 chip (0x220,0x240,0x260)
port - port # for ES-1688 chip (0x220,0x240,0x260)
fm_port - port # for OPL3 (option; share the same port as default)
mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
irq - IRQ # for ES-1688 chip (5,7,9,10)
irq - IRQ # for ES-1688 chip (5,7,9,10)
mpu_irq - IRQ # for MPU-401 port (5,7,9,10)
mpu_irq - IRQ # for MPU-401 port (5,7,9,10)
...
...
include/sound/ad1816a.h
View file @
a3c6048d
...
@@ -169,5 +169,7 @@ extern int snd_ad1816a_create(struct snd_card *card, unsigned long port,
...
@@ -169,5 +169,7 @@ extern int snd_ad1816a_create(struct snd_card *card, unsigned long port,
extern
int
snd_ad1816a_pcm
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_pcm
**
rpcm
);
extern
int
snd_ad1816a_pcm
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_pcm
**
rpcm
);
extern
int
snd_ad1816a_mixer
(
struct
snd_ad1816a
*
chip
);
extern
int
snd_ad1816a_mixer
(
struct
snd_ad1816a
*
chip
);
extern
int
snd_ad1816a_timer
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
);
#endif
/* __SOUND_AD1816A_H */
#endif
/* __SOUND_AD1816A_H */
include/sound/wss.h
View file @
a3c6048d
...
@@ -154,6 +154,7 @@ int snd_wss_create(struct snd_card *card,
...
@@ -154,6 +154,7 @@ int snd_wss_create(struct snd_card *card,
unsigned
short
hardware
,
unsigned
short
hardware
,
unsigned
short
hwshare
,
unsigned
short
hwshare
,
struct
snd_wss
**
rchip
);
struct
snd_wss
**
rchip
);
int
snd_wss_free
(
struct
snd_wss
*
chip
);
int
snd_wss_pcm
(
struct
snd_wss
*
chip
,
int
device
,
struct
snd_pcm
**
rpcm
);
int
snd_wss_pcm
(
struct
snd_wss
*
chip
,
int
device
,
struct
snd_pcm
**
rpcm
);
int
snd_wss_timer
(
struct
snd_wss
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
);
int
snd_wss_timer
(
struct
snd_wss
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
);
int
snd_wss_mixer
(
struct
snd_wss
*
chip
);
int
snd_wss_mixer
(
struct
snd_wss
*
chip
);
...
...
sound/isa/Kconfig
View file @
a3c6048d
...
@@ -56,8 +56,8 @@ config SND_AD1848
...
@@ -56,8 +56,8 @@ config SND_AD1848
Say Y here to include support for AD1848 (Analog Devices) or
Say Y here to include support for AD1848 (Analog Devices) or
CS4248 (Cirrus Logic - Crystal Semiconductors) chips.
CS4248 (Cirrus Logic - Crystal Semiconductors) chips.
For newer chips from Cirrus Logic, use the CS4231
, CS4232 or
For newer chips from Cirrus Logic, use the CS4231
or CS4232+
CS4236+
drivers.
drivers.
To compile this driver as a module, choose M here: the module
To compile this driver as a module, choose M here: the module
will be called snd-ad1848.
will be called snd-ad1848.
...
@@ -94,6 +94,8 @@ config SND_CMI8330
...
@@ -94,6 +94,8 @@ config SND_CMI8330
tristate "C-Media CMI8330"
tristate "C-Media CMI8330"
select SND_WSS_LIB
select SND_WSS_LIB
select SND_SB16_DSP
select SND_SB16_DSP
select SND_OPL3_LIB
select SND_MPU401_UART
help
help
Say Y here to include support for soundcards based on the
Say Y here to include support for soundcards based on the
C-Media CMI8330 chip.
C-Media CMI8330 chip.
...
@@ -112,26 +114,15 @@ config SND_CS4231
...
@@ -112,26 +114,15 @@ config SND_CS4231
To compile this driver as a module, choose M here: the module
To compile this driver as a module, choose M here: the module
will be called snd-cs4231.
will be called snd-cs4231.
config SND_CS4232
tristate "Generic Cirrus Logic CS4232 driver"
select SND_OPL3_LIB
select SND_MPU401_UART
select SND_WSS_LIB
help
Say Y here to include support for CS4232 chips from Cirrus
Logic - Crystal Semiconductors.
To compile this driver as a module, choose M here: the module
will be called snd-cs4232.
config SND_CS4236
config SND_CS4236
tristate "Generic Cirrus Logic CS4236+ driver"
tristate "Generic Cirrus Logic CS423
2/CS423
6+ driver"
select SND_OPL3_LIB
select SND_OPL3_LIB
select SND_MPU401_UART
select SND_MPU401_UART
select SND_WSS_LIB
select SND_WSS_LIB
help
help
Say Y to include support for CS4235,CS4236,CS4237B,CS4238B,
Say Y to include support for CS4232,CS4235,CS4236,CS4237B,
CS4239 chips from Cirrus Logic - Crystal Semiconductors.
CS4238B,CS4239 chips from Cirrus Logic - Crystal
Semiconductors.
To compile this driver as a module, choose M here: the module
To compile this driver as a module, choose M here: the module
will be called snd-cs4236.
will be called snd-cs4236.
...
...
sound/isa/ad1816a/ad1816a.c
View file @
a3c6048d
...
@@ -156,6 +156,7 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
...
@@ -156,6 +156,7 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
struct
snd_card_ad1816a
*
acard
;
struct
snd_card_ad1816a
*
acard
;
struct
snd_ad1816a
*
chip
;
struct
snd_ad1816a
*
chip
;
struct
snd_opl3
*
opl3
;
struct
snd_opl3
*
opl3
;
struct
snd_timer
*
timer
;
error
=
snd_card_create
(
index
[
dev
],
id
[
dev
],
THIS_MODULE
,
error
=
snd_card_create
(
index
[
dev
],
id
[
dev
],
THIS_MODULE
,
sizeof
(
struct
snd_card_ad1816a
),
&
card
);
sizeof
(
struct
snd_card_ad1816a
),
&
card
);
...
@@ -195,6 +196,12 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
...
@@ -195,6 +196,12 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
return
error
;
return
error
;
}
}
error
=
snd_ad1816a_timer
(
chip
,
0
,
&
timer
);
if
(
error
<
0
)
{
snd_card_free
(
card
);
return
error
;
}
if
(
mpu_port
[
dev
]
>
0
)
{
if
(
mpu_port
[
dev
]
>
0
)
{
if
(
snd_mpu401_uart_new
(
card
,
0
,
MPU401_HW_MPU401
,
if
(
snd_mpu401_uart_new
(
card
,
0
,
MPU401_HW_MPU401
,
mpu_port
[
dev
],
0
,
mpu_irq
[
dev
],
IRQF_DISABLED
,
mpu_port
[
dev
],
0
,
mpu_irq
[
dev
],
IRQF_DISABLED
,
...
@@ -208,11 +215,8 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
...
@@ -208,11 +215,8 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
OPL3_HW_AUTO
,
0
,
&
opl3
)
<
0
)
{
OPL3_HW_AUTO
,
0
,
&
opl3
)
<
0
)
{
printk
(
KERN_ERR
PFX
"no OPL device at 0x%lx-0x%lx.
\n
"
,
fm_port
[
dev
],
fm_port
[
dev
]
+
2
);
printk
(
KERN_ERR
PFX
"no OPL device at 0x%lx-0x%lx.
\n
"
,
fm_port
[
dev
],
fm_port
[
dev
]
+
2
);
}
else
{
}
else
{
if
((
error
=
snd_opl3_timer_new
(
opl3
,
1
,
2
))
<
0
)
{
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
snd_card_free
(
card
);
if
(
error
<
0
)
{
return
error
;
}
if
((
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
))
<
0
)
{
snd_card_free
(
card
);
snd_card_free
(
card
);
return
error
;
return
error
;
}
}
...
...
sound/isa/ad1816a/ad1816a_lib.c
View file @
a3c6048d
...
@@ -37,7 +37,7 @@ static inline int snd_ad1816a_busy_wait(struct snd_ad1816a *chip)
...
@@ -37,7 +37,7 @@ static inline int snd_ad1816a_busy_wait(struct snd_ad1816a *chip)
if
(
inb
(
AD1816A_REG
(
AD1816A_CHIP_STATUS
))
&
AD1816A_READY
)
if
(
inb
(
AD1816A_REG
(
AD1816A_CHIP_STATUS
))
&
AD1816A_READY
)
return
0
;
return
0
;
snd_printk
(
"chip busy.
\n
"
);
snd_printk
(
KERN_WARNING
"chip busy.
\n
"
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
...
@@ -196,7 +196,7 @@ static int snd_ad1816a_trigger(struct snd_ad1816a *chip, unsigned char what,
...
@@ -196,7 +196,7 @@ static int snd_ad1816a_trigger(struct snd_ad1816a *chip, unsigned char what,
spin_unlock
(
&
chip
->
lock
);
spin_unlock
(
&
chip
->
lock
);
break
;
break
;
default:
default:
snd_printk
(
"invalid trigger mode 0x%x.
\n
"
,
what
);
snd_printk
(
KERN_WARNING
"invalid trigger mode 0x%x.
\n
"
,
what
);
error
=
-
EINVAL
;
error
=
-
EINVAL
;
}
}
...
@@ -377,7 +377,6 @@ static struct snd_pcm_hardware snd_ad1816a_capture = {
...
@@ -377,7 +377,6 @@ static struct snd_pcm_hardware snd_ad1816a_capture = {
.
fifo_size
=
0
,
.
fifo_size
=
0
,
};
};
#if 0 /* not used now */
static
int
snd_ad1816a_timer_close
(
struct
snd_timer
*
timer
)
static
int
snd_ad1816a_timer_close
(
struct
snd_timer
*
timer
)
{
{
struct
snd_ad1816a
*
chip
=
snd_timer_chip
(
timer
);
struct
snd_ad1816a
*
chip
=
snd_timer_chip
(
timer
);
...
@@ -442,8 +441,6 @@ static struct snd_timer_hardware snd_ad1816a_timer_table = {
...
@@ -442,8 +441,6 @@ static struct snd_timer_hardware snd_ad1816a_timer_table = {
.
start
=
snd_ad1816a_timer_start
,
.
start
=
snd_ad1816a_timer_start
,
.
stop
=
snd_ad1816a_timer_stop
,
.
stop
=
snd_ad1816a_timer_stop
,
};
};
#endif /* not used now */
static
int
snd_ad1816a_playback_open
(
struct
snd_pcm_substream
*
substream
)
static
int
snd_ad1816a_playback_open
(
struct
snd_pcm_substream
*
substream
)
{
{
...
@@ -568,7 +565,7 @@ static const char __devinit *snd_ad1816a_chip_id(struct snd_ad1816a *chip)
...
@@ -568,7 +565,7 @@ static const char __devinit *snd_ad1816a_chip_id(struct snd_ad1816a *chip)
case
AD1816A_HW_AD1815
:
return
"AD1815"
;
case
AD1816A_HW_AD1815
:
return
"AD1815"
;
case
AD1816A_HW_AD18MAX10
:
return
"AD18max10"
;
case
AD1816A_HW_AD18MAX10
:
return
"AD18max10"
;
default:
default:
snd_printk
(
"Unknown chip version %d:%d.
\n
"
,
snd_printk
(
KERN_WARNING
"Unknown chip version %d:%d.
\n
"
,
chip
->
version
,
chip
->
hardware
);
chip
->
version
,
chip
->
hardware
);
return
"AD1816A - unknown"
;
return
"AD1816A - unknown"
;
}
}
...
@@ -687,7 +684,6 @@ int __devinit snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_p
...
@@ -687,7 +684,6 @@ int __devinit snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_p
return
0
;
return
0
;
}
}
#if 0 /* not used now */
int
__devinit
snd_ad1816a_timer
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
)
int
__devinit
snd_ad1816a_timer
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
)
{
{
struct
snd_timer
*
timer
;
struct
snd_timer
*
timer
;
...
@@ -709,7 +705,6 @@ int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd
...
@@ -709,7 +705,6 @@ int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd
*
rtimer
=
timer
;
*
rtimer
=
timer
;
return
0
;
return
0
;
}
}
#endif /* not used now */
/*
/*
*
*
...
...
sound/isa/cmi8330.c
View file @
a3c6048d
...
@@ -31,11 +31,11 @@
...
@@ -31,11 +31,11 @@
* To quickly load the module,
* To quickly load the module,
*
*
* modprobe -a snd-cmi8330 sbport=0x220 sbirq=5 sbdma8=1
* modprobe -a snd-cmi8330 sbport=0x220 sbirq=5 sbdma8=1
* sbdma16=5 wssport=0x530 wssirq=11 wssdma=0
* sbdma16=5 wssport=0x530 wssirq=11 wssdma=0
fmport=0x388
*
*
* This card has two mixers and two PCM devices. I've cheesed it such
* This card has two mixers and two PCM devices. I've cheesed it such
* that recording and playback can be done through the same device.
* that recording and playback can be done through the same device.
* The driver "magically" routes the capturing to the
AD1848
codec,
* The driver "magically" routes the capturing to the
CMI8330
codec,
* and playback to the SB16 codec. This allows for full-duplex mode
* and playback to the SB16 codec. This allows for full-duplex mode
* to some extent.
* to some extent.
* The utilities in alsa-utils are aware of both devices, so passing
* The utilities in alsa-utils are aware of both devices, so passing
...
@@ -51,6 +51,8 @@
...
@@ -51,6 +51,8 @@
#include <linux/moduleparam.h>
#include <linux/moduleparam.h>
#include <sound/core.h>
#include <sound/core.h>
#include <sound/wss.h>
#include <sound/wss.h>
#include <sound/opl3.h>
#include <sound/mpu401.h>
#include <sound/sb.h>
#include <sound/sb.h>
#include <sound/initval.h>
#include <sound/initval.h>
...
@@ -79,6 +81,9 @@ static int sbdma16[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
...
@@ -79,6 +81,9 @@ static int sbdma16[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
static
long
wssport
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
static
long
wssport
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
static
int
wssirq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
static
int
wssirq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
static
int
wssdma
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_DMA
;
static
int
wssdma
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_DMA
;
static
long
fmport
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
static
long
mpuport
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
static
int
mpuirq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
module_param_array
(
index
,
int
,
NULL
,
0444
);
module_param_array
(
index
,
int
,
NULL
,
0444
);
MODULE_PARM_DESC
(
index
,
"Index value for CMI8330 soundcard."
);
MODULE_PARM_DESC
(
index
,
"Index value for CMI8330 soundcard."
);
...
@@ -107,6 +112,12 @@ MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330 WSS driver.");
...
@@ -107,6 +112,12 @@ MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330 WSS driver.");
module_param_array
(
wssdma
,
int
,
NULL
,
0444
);
module_param_array
(
wssdma
,
int
,
NULL
,
0444
);
MODULE_PARM_DESC
(
wssdma
,
"DMA for CMI8330 WSS driver."
);
MODULE_PARM_DESC
(
wssdma
,
"DMA for CMI8330 WSS driver."
);
module_param_array
(
fmport
,
long
,
NULL
,
0444
);
MODULE_PARM_DESC
(
fmport
,
"FM port # for CMI8330 driver."
);
module_param_array
(
mpuport
,
long
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpuport
,
"MPU-401 port # for CMI8330 driver."
);
module_param_array
(
mpuirq
,
int
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpuirq
,
"IRQ # for CMI8330 MPU-401 port."
);
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
static
int
isa_registered
;
static
int
isa_registered
;
static
int
pnp_registered
;
static
int
pnp_registered
;
...
@@ -149,6 +160,7 @@ struct snd_cmi8330 {
...
@@ -149,6 +160,7 @@ struct snd_cmi8330 {
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
struct
pnp_dev
*
cap
;
struct
pnp_dev
*
cap
;
struct
pnp_dev
*
play
;
struct
pnp_dev
*
play
;
struct
pnp_dev
*
mpu
;
#endif
#endif
struct
snd_card
*
card
;
struct
snd_card
*
card
;
struct
snd_wss
*
wss
;
struct
snd_wss
*
wss
;
...
@@ -165,7 +177,7 @@ struct snd_cmi8330 {
...
@@ -165,7 +177,7 @@ struct snd_cmi8330 {
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
static
struct
pnp_card_device_id
snd_cmi8330_pnpids
[]
=
{
static
struct
pnp_card_device_id
snd_cmi8330_pnpids
[]
=
{
{
.
id
=
"CMI0001"
,
.
devs
=
{
{
"@@@0001"
},
{
"@X@0001"
}
}
},
{
.
id
=
"CMI0001"
,
.
devs
=
{
{
"@@@0001"
},
{
"@X@0001"
}
,
{
"@H@0001"
}
}
},
{
.
id
=
""
}
{
.
id
=
""
}
};
};
...
@@ -219,8 +231,10 @@ WSS_SINGLE("3D Control - Switch", 0,
...
@@ -219,8 +231,10 @@ WSS_SINGLE("3D Control - Switch", 0,
CMI8330_RMUX3D
,
5
,
1
,
1
),
CMI8330_RMUX3D
,
5
,
1
,
1
),
WSS_SINGLE
(
"PC Speaker Playback Volume"
,
0
,
WSS_SINGLE
(
"PC Speaker Playback Volume"
,
0
,
CMI8330_OUTPUTVOL
,
3
,
3
,
0
),
CMI8330_OUTPUTVOL
,
3
,
3
,
0
),
WSS_SINGLE
(
"FM Playback Switch"
,
0
,
WSS_DOUBLE
(
"FM Playback Switch"
,
0
,
CMI8330_RECMUX
,
3
,
1
,
1
),
CS4231_AUX2_LEFT_INPUT
,
CS4231_AUX2_RIGHT_INPUT
,
7
,
7
,
1
,
1
),
WSS_DOUBLE
(
"FM Playback Volume"
,
0
,
CS4231_AUX2_LEFT_INPUT
,
CS4231_AUX2_RIGHT_INPUT
,
0
,
0
,
31
,
1
),
WSS_SINGLE
(
SNDRV_CTL_NAME_IEC958
(
"Input "
,
CAPTURE
,
SWITCH
),
0
,
WSS_SINGLE
(
SNDRV_CTL_NAME_IEC958
(
"Input "
,
CAPTURE
,
SWITCH
),
0
,
CMI8330_RMUX3D
,
7
,
1
,
1
),
CMI8330_RMUX3D
,
7
,
1
,
1
),
WSS_SINGLE
(
SNDRV_CTL_NAME_IEC958
(
"Input "
,
PLAYBACK
,
SWITCH
),
0
,
WSS_SINGLE
(
SNDRV_CTL_NAME_IEC958
(
"Input "
,
PLAYBACK
,
SWITCH
),
0
,
...
@@ -323,16 +337,21 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
...
@@ -323,16 +337,21 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
if
(
acard
->
play
==
NULL
)
if
(
acard
->
play
==
NULL
)
return
-
EBUSY
;
return
-
EBUSY
;
acard
->
mpu
=
pnp_request_card_device
(
card
,
id
->
devs
[
2
].
id
,
NULL
);
if
(
acard
->
play
==
NULL
)
return
-
EBUSY
;
pdev
=
acard
->
cap
;
pdev
=
acard
->
cap
;
err
=
pnp_activate_dev
(
pdev
);
err
=
pnp_activate_dev
(
pdev
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
"CMI8330/C3D
(AD1848)
PnP configure failure
\n
"
);
snd_printk
(
KERN_ERR
"CMI8330/C3D PnP configure failure
\n
"
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
wssport
[
dev
]
=
pnp_port_start
(
pdev
,
0
);
wssport
[
dev
]
=
pnp_port_start
(
pdev
,
0
);
wssdma
[
dev
]
=
pnp_dma
(
pdev
,
0
);
wssdma
[
dev
]
=
pnp_dma
(
pdev
,
0
);
wssirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
wssirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
fmport
[
dev
]
=
pnp_port_start
(
pdev
,
1
);
/* allocate SB16 resources */
/* allocate SB16 resources */
pdev
=
acard
->
play
;
pdev
=
acard
->
play
;
...
@@ -347,6 +366,17 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
...
@@ -347,6 +366,17 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
sbdma16
[
dev
]
=
pnp_dma
(
pdev
,
1
);
sbdma16
[
dev
]
=
pnp_dma
(
pdev
,
1
);
sbirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
sbirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
/* allocate MPU-401 resources */
pdev
=
acard
->
mpu
;
err
=
pnp_activate_dev
(
pdev
);
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
"CMI8330/C3D (MPU-401) PnP configure failure
\n
"
);
return
-
EBUSY
;
}
mpuport
[
dev
]
=
pnp_port_start
(
pdev
,
0
);
mpuirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
return
0
;
return
0
;
}
}
#endif
#endif
...
@@ -489,6 +519,7 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
...
@@ -489,6 +519,7 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
{
{
struct
snd_cmi8330
*
acard
;
struct
snd_cmi8330
*
acard
;
int
i
,
err
;
int
i
,
err
;
struct
snd_opl3
*
opl3
;
acard
=
card
->
private_data
;
acard
=
card
->
private_data
;
err
=
snd_wss_create
(
card
,
wssport
[
dev
]
+
4
,
-
1
,
err
=
snd_wss_create
(
card
,
wssport
[
dev
]
+
4
,
-
1
,
...
@@ -496,11 +527,11 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
...
@@ -496,11 +527,11 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
wssdma
[
dev
],
-
1
,
wssdma
[
dev
],
-
1
,
WSS_HW_DETECT
,
0
,
&
acard
->
wss
);
WSS_HW_DETECT
,
0
,
&
acard
->
wss
);
if
(
err
<
0
)
{
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
PFX
"(
AD1848
) device busy??
\n
"
);
snd_printk
(
KERN_ERR
PFX
"(
CMI8330
) device busy??
\n
"
);
return
err
;
return
err
;
}
}
if
(
acard
->
wss
->
hardware
!=
WSS_HW_CMI8330
)
{
if
(
acard
->
wss
->
hardware
!=
WSS_HW_CMI8330
)
{
snd_printk
(
KERN_ERR
PFX
"(
AD1848
) not found during probe
\n
"
);
snd_printk
(
KERN_ERR
PFX
"(
CMI8330
) not found during probe
\n
"
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
@@ -532,6 +563,27 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
...
@@ -532,6 +563,27 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
snd_printk
(
KERN_ERR
PFX
"failed to create pcms
\n
"
);
snd_printk
(
KERN_ERR
PFX
"failed to create pcms
\n
"
);
return
err
;
return
err
;
}
}
if
(
fmport
[
dev
]
!=
SNDRV_AUTO_PORT
)
{
if
(
snd_opl3_create
(
card
,
fmport
[
dev
],
fmport
[
dev
]
+
2
,
OPL3_HW_AUTO
,
0
,
&
opl3
)
<
0
)
{
snd_printk
(
KERN_ERR
PFX
"no OPL device at 0x%lx-0x%lx ?
\n
"
,
fmport
[
dev
],
fmport
[
dev
]
+
2
);
}
else
{
err
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
err
<
0
)
return
err
;
}
}
if
(
mpuport
[
dev
]
!=
SNDRV_AUTO_PORT
)
{
if
(
snd_mpu401_uart_new
(
card
,
0
,
MPU401_HW_MPU401
,
mpuport
[
dev
],
0
,
mpuirq
[
dev
],
IRQF_DISABLED
,
NULL
)
<
0
)
printk
(
KERN_ERR
PFX
"no MPU-401 device at 0x%lx.
\n
"
,
mpuport
[
dev
]);
}
strcpy
(
card
->
driver
,
"CMI8330/C3D"
);
strcpy
(
card
->
driver
,
"CMI8330/C3D"
);
strcpy
(
card
->
shortname
,
"C-Media CMI8330/C3D"
);
strcpy
(
card
->
shortname
,
"C-Media CMI8330/C3D"
);
...
...
sound/isa/cs423x/Makefile
View file @
a3c6048d
...
@@ -3,13 +3,11 @@
...
@@ -3,13 +3,11 @@
# Copyright (c) 2001 by Jaroslav Kysela <perex@perex.cz>
# Copyright (c) 2001 by Jaroslav Kysela <perex@perex.cz>
#
#
snd-cs4236-lib-objs
:=
cs4236_lib.o
snd-cs4231-objs
:=
cs4231.o
snd-cs4231-objs
:=
cs4231.o
snd-cs4232-objs
:=
cs4232.o
snd-cs4236-objs
:=
cs4236.o cs4236_lib.o
snd-cs4236-objs
:=
cs4236.o
# Toplevel Module Dependency
# Toplevel Module Dependency
obj-$(CONFIG_SND_CS4231)
+=
snd-cs4231.o
obj-$(CONFIG_SND_CS4231)
+=
snd-cs4231.o
obj-$(CONFIG_SND_CS423
2)
+=
snd-cs4232
.o
obj-$(CONFIG_SND_CS423
6)
+=
snd-cs4236
.o
obj-$(CONFIG_SND_CS4236)
+=
snd-cs4236.o snd-cs4236-lib.o
sound/isa/cs423x/cs4232.c
deleted
100644 → 0
View file @
87cd9d7c
#define CS4232
#include "cs4236.c"
sound/isa/cs423x/cs4236.c
View file @
a3c6048d
...
@@ -33,17 +33,14 @@
...
@@ -33,17 +33,14 @@
MODULE_AUTHOR
(
"Jaroslav Kysela <perex@perex.cz>"
);
MODULE_AUTHOR
(
"Jaroslav Kysela <perex@perex.cz>"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
#ifdef CS4232
MODULE_DESCRIPTION
(
"Cirrus Logic CS4232-9"
);
MODULE_DESCRIPTION
(
"Cirrus Logic CS4232"
);
MODULE_SUPPORTED_DEVICE
(
"{{Turtle Beach,TBS-2000},"
MODULE_SUPPORTED_DEVICE
(
"{{Turtle Beach,TBS-2000},"
"{Turtle Beach,Tropez Plus},"
"{Turtle Beach,Tropez Plus},"
"{SIC CrystalWave 32},"
"{SIC CrystalWave 32},"
"{Hewlett Packard,Omnibook 5500},"
"{Hewlett Packard,Omnibook 5500},"
"{TerraTec,Maestro 32/96},"
"{TerraTec,Maestro 32/96},"
"{Philips,PCA70PS}}"
);
"{Philips,PCA70PS}},"
#else
"{{Crystal Semiconductors,CS4235},"
MODULE_DESCRIPTION
(
"Cirrus Logic CS4235-9"
);
MODULE_SUPPORTED_DEVICE
(
"{{Crystal Semiconductors,CS4235},"
"{Crystal Semiconductors,CS4236},"
"{Crystal Semiconductors,CS4236},"
"{Crystal Semiconductors,CS4237},"
"{Crystal Semiconductors,CS4237},"
"{Crystal Semiconductors,CS4238},"
"{Crystal Semiconductors,CS4238},"
...
@@ -70,15 +67,11 @@ MODULE_SUPPORTED_DEVICE("{{Crystal Semiconductors,CS4235},"
...
@@ -70,15 +67,11 @@ MODULE_SUPPORTED_DEVICE("{{Crystal Semiconductors,CS4235},"
"{Typhoon Soundsystem,CS4236B},"
"{Typhoon Soundsystem,CS4236B},"
"{Turtle Beach,Malibu},"
"{Turtle Beach,Malibu},"
"{Unknown,Digital PC 5000 Onboard}}"
);
"{Unknown,Digital PC 5000 Onboard}}"
);
#endif
#ifdef CS4232
MODULE_ALIAS
(
"snd_cs4232"
);
#define IDENT "CS4232"
#define DEV_NAME "cs4232"
#define IDENT "CS4232+"
#else
#define DEV_NAME "cs4232+"
#define IDENT "CS4236+"
#define DEV_NAME "cs4236"
#endif
static
int
index
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IDX
;
/* Index 0-MAX */
static
int
index
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IDX
;
/* Index 0-MAX */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
...
@@ -128,9 +121,7 @@ MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
...
@@ -128,9 +121,7 @@ MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
static
int
isa_registered
;
static
int
isa_registered
;
static
int
pnpc_registered
;
static
int
pnpc_registered
;
#ifdef CS4232
static
int
pnp_registered
;
static
int
pnp_registered
;
#endif
#endif
/* CONFIG_PNP */
#endif
/* CONFIG_PNP */
struct
snd_card_cs4236
{
struct
snd_card_cs4236
{
...
@@ -145,11 +136,10 @@ struct snd_card_cs4236 {
...
@@ -145,11 +136,10 @@ struct snd_card_cs4236 {
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
#ifdef CS4232
/*
/*
* PNP BIOS
* PNP BIOS
*/
*/
static
const
struct
pnp_device_id
snd_cs423
2
_pnpbiosids
[]
=
{
static
const
struct
pnp_device_id
snd_cs423
x
_pnpbiosids
[]
=
{
{
.
id
=
"CSC0100"
},
{
.
id
=
"CSC0100"
},
{
.
id
=
"CSC0000"
},
{
.
id
=
"CSC0000"
},
/* Guillemot Turtlebeach something appears to be cs4232 compatible
/* Guillemot Turtlebeach something appears to be cs4232 compatible
...
@@ -157,10 +147,8 @@ static const struct pnp_device_id snd_cs4232_pnpbiosids[] = {
...
@@ -157,10 +147,8 @@ static const struct pnp_device_id snd_cs4232_pnpbiosids[] = {
{
.
id
=
"GIM0100"
},
{
.
id
=
"GIM0100"
},
{
.
id
=
""
}
{
.
id
=
""
}
};
};
MODULE_DEVICE_TABLE
(
pnp
,
snd_cs4232_pnpbiosids
);
MODULE_DEVICE_TABLE
(
pnp
,
snd_cs423x_pnpbiosids
);
#endif
/* CS4232 */
#ifdef CS4232
#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"
#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"
static
struct
pnp_card_device_id
snd_cs423x_pnpids
[]
=
{
static
struct
pnp_card_device_id
snd_cs423x_pnpids
[]
=
{
/* Philips PCA70PS */
/* Philips PCA70PS */
...
@@ -179,12 +167,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
...
@@ -179,12 +167,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
{
.
id
=
"CSCf032"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
{
.
id
=
"CSCf032"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
/* Netfinity 3000 on-board soundcard */
/* Netfinity 3000 on-board soundcard */
{
.
id
=
"CSCe825"
,
.
devs
=
{
{
"CSC0100"
},
{
"CSC0110"
},
{
"CSC010f"
}
}
},
{
.
id
=
"CSCe825"
,
.
devs
=
{
{
"CSC0100"
},
{
"CSC0110"
},
{
"CSC010f"
}
}
},
/* --- */
{
.
id
=
""
}
/* end */
};
#else
/* CS4236 */
#define CS423X_ISAPNP_DRIVER "cs4236_isapnp"
static
struct
pnp_card_device_id
snd_cs423x_pnpids
[]
=
{
/* Intel Marlin Spike Motherboard - CS4235 */
/* Intel Marlin Spike Motherboard - CS4235 */
{
.
id
=
"CSC0225"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
{
.
id
=
"CSC0225"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
/* Intel Marlin Spike Motherboard (#2) - CS4235 */
/* Intel Marlin Spike Motherboard (#2) - CS4235 */
...
@@ -266,7 +248,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
...
@@ -266,7 +248,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
/* --- */
/* --- */
{
.
id
=
""
}
/* end */
{
.
id
=
""
}
/* end */
};
};
#endif
MODULE_DEVICE_TABLE
(
pnp_card
,
snd_cs423x_pnpids
);
MODULE_DEVICE_TABLE
(
pnp_card
,
snd_cs423x_pnpids
);
...
@@ -323,17 +304,19 @@ static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev)
...
@@ -323,17 +304,19 @@ static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev)
return
0
;
return
0
;
}
}
#ifdef CS4232
static
int
__devinit
snd_card_cs423x_pnp
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
static
int
__devinit
snd_card_cs4232_pnp
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
struct
pnp_dev
*
pdev
,
struct
pnp_dev
*
p
dev
)
struct
pnp_dev
*
c
dev
)
{
{
acard
->
wss
=
pdev
;
acard
->
wss
=
pdev
;
if
(
snd_cs423x_pnp_init_wss
(
dev
,
acard
->
wss
)
<
0
)
if
(
snd_cs423x_pnp_init_wss
(
dev
,
acard
->
wss
)
<
0
)
return
-
EBUSY
;
return
-
EBUSY
;
cport
[
dev
]
=
-
1
;
if
(
cdev
)
cport
[
dev
]
=
pnp_port_start
(
cdev
,
0
);
else
cport
[
dev
]
=
-
1
;
return
0
;
return
0
;
}
}
#endif
static
int
__devinit
snd_card_cs423x_pnpc
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
static
int
__devinit
snd_card_cs423x_pnpc
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
struct
pnp_card_link
*
card
,
struct
pnp_card_link
*
card
,
...
@@ -411,40 +394,39 @@ static int __devinit snd_cs423x_probe(struct snd_card *card, int dev)
...
@@ -411,40 +394,39 @@ static int __devinit snd_cs423x_probe(struct snd_card *card, int dev)
return
-
EBUSY
;
return
-
EBUSY
;
}
}
#ifdef CS4232
err
=
snd_wss_create
(
card
,
port
[
dev
],
cport
[
dev
],
err
=
snd_wss_create
(
card
,
port
[
dev
],
cport
[
dev
],
irq
[
dev
],
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
WSS_HW_DETECT
,
0
,
&
chip
);
WSS_HW_DETECT3
,
0
,
&
chip
);
if
(
err
<
0
)
return
err
;
acard
->
chip
=
chip
;
err
=
snd_wss_pcm
(
chip
,
0
,
&
pcm
);
if
(
err
<
0
)
return
err
;
err
=
snd_wss_mixer
(
chip
);
if
(
err
<
0
)
if
(
err
<
0
)
return
err
;
return
err
;
if
(
chip
->
hardware
&
WSS_HW_CS4236B_MASK
)
{
#else
/* CS4236 */
snd_wss_free
(
chip
);
err
=
snd_cs4236_create
(
card
,
err
=
snd_cs4236_create
(
card
,
port
[
dev
],
cport
[
dev
],
port
[
dev
],
cport
[
dev
],
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
WSS_HW_DETECT
,
0
,
&
chip
);
WSS_HW_DETECT
,
0
,
&
chip
);
if
(
err
<
0
)
if
(
err
<
0
)
return
err
;
return
err
;
acard
->
chip
=
chip
;
acard
->
chip
=
chip
;
err
=
snd_cs4236_pcm
(
chip
,
0
,
&
pcm
);
err
=
snd_cs4236_pcm
(
chip
,
0
,
&
pcm
);
if
(
err
<
0
)
if
(
err
<
0
)
return
err
;
return
err
;
err
=
snd_cs4236_mixer
(
chip
);
err
=
snd_cs4236_mixer
(
chip
);
if
(
err
<
0
)
if
(
err
<
0
)
return
err
;
return
err
;
#endif
}
else
{
acard
->
chip
=
chip
;
err
=
snd_wss_pcm
(
chip
,
0
,
&
pcm
);
if
(
err
<
0
)
return
err
;
err
=
snd_wss_mixer
(
chip
);
if
(
err
<
0
)
return
err
;
}
strcpy
(
card
->
driver
,
pcm
->
name
);
strcpy
(
card
->
driver
,
pcm
->
name
);
strcpy
(
card
->
shortname
,
pcm
->
name
);
strcpy
(
card
->
shortname
,
pcm
->
name
);
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
...
@@ -579,13 +561,14 @@ static struct isa_driver cs423x_isa_driver = {
...
@@ -579,13 +561,14 @@ static struct isa_driver cs423x_isa_driver = {
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
#ifdef CS4232
static
int
__devinit
snd_cs423x_pnpbios_detect
(
struct
pnp_dev
*
pdev
,
static
int
__devinit
snd_cs4232_pnpbios_detect
(
struct
pnp_dev
*
pdev
,
const
struct
pnp_device_id
*
id
)
const
struct
pnp_device_id
*
id
)
{
{
static
int
dev
;
static
int
dev
;
int
err
;
int
err
;
struct
snd_card
*
card
;
struct
snd_card
*
card
;
struct
pnp_dev
*
cdev
;
char
cid
[
PNP_ID_LEN
];
if
(
pnp_device_is_isapnp
(
pdev
))
if
(
pnp_device_is_isapnp
(
pdev
))
return
-
ENOENT
;
/* we have another procedure - card */
return
-
ENOENT
;
/* we have another procedure - card */
...
@@ -596,10 +579,19 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
...
@@ -596,10 +579,19 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
if
(
dev
>=
SNDRV_CARDS
)
if
(
dev
>=
SNDRV_CARDS
)
return
-
ENODEV
;
return
-
ENODEV
;
/* prepare second id */
strcpy
(
cid
,
pdev
->
id
[
0
].
id
);
cid
[
5
]
=
'1'
;
cdev
=
NULL
;
list_for_each_entry
(
cdev
,
&
(
pdev
->
protocol
->
devices
),
protocol_list
)
{
if
(
!
strcmp
(
cdev
->
id
[
0
].
id
,
cid
))
break
;
}
err
=
snd_cs423x_card_new
(
dev
,
&
card
);
err
=
snd_cs423x_card_new
(
dev
,
&
card
);
if
(
err
<
0
)
if
(
err
<
0
)
return
err
;
return
err
;
if
((
err
=
snd_card_cs4232_pnp
(
dev
,
card
->
private_data
,
pdev
))
<
0
)
{
err
=
snd_card_cs423x_pnp
(
dev
,
card
->
private_data
,
pdev
,
cdev
);
if
(
err
<
0
)
{
printk
(
KERN_ERR
"PnP BIOS detection failed for "
IDENT
"
\n
"
);
printk
(
KERN_ERR
"PnP BIOS detection failed for "
IDENT
"
\n
"
);
snd_card_free
(
card
);
snd_card_free
(
card
);
return
err
;
return
err
;
...
@@ -614,35 +606,34 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
...
@@ -614,35 +606,34 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
return
0
;
return
0
;
}
}
static
void
__devexit
snd_cs423
2_pnp_remove
(
struct
pnp_dev
*
pdev
)
static
void
__devexit
snd_cs423
x_pnp_remove
(
struct
pnp_dev
*
pdev
)
{
{
snd_card_free
(
pnp_get_drvdata
(
pdev
));
snd_card_free
(
pnp_get_drvdata
(
pdev
));
pnp_set_drvdata
(
pdev
,
NULL
);
pnp_set_drvdata
(
pdev
,
NULL
);
}
}
#ifdef CONFIG_PM
#ifdef CONFIG_PM
static
int
snd_cs423
2
_pnp_suspend
(
struct
pnp_dev
*
pdev
,
pm_message_t
state
)
static
int
snd_cs423
x
_pnp_suspend
(
struct
pnp_dev
*
pdev
,
pm_message_t
state
)
{
{
return
snd_cs423x_suspend
(
pnp_get_drvdata
(
pdev
));
return
snd_cs423x_suspend
(
pnp_get_drvdata
(
pdev
));
}
}
static
int
snd_cs423
2
_pnp_resume
(
struct
pnp_dev
*
pdev
)
static
int
snd_cs423
x
_pnp_resume
(
struct
pnp_dev
*
pdev
)
{
{
return
snd_cs423x_resume
(
pnp_get_drvdata
(
pdev
));
return
snd_cs423x_resume
(
pnp_get_drvdata
(
pdev
));
}
}
#endif
#endif
static
struct
pnp_driver
cs423
2
_pnp_driver
=
{
static
struct
pnp_driver
cs423
x
_pnp_driver
=
{
.
name
=
"cs423
2
-pnpbios"
,
.
name
=
"cs423
x
-pnpbios"
,
.
id_table
=
snd_cs423
2
_pnpbiosids
,
.
id_table
=
snd_cs423
x
_pnpbiosids
,
.
probe
=
snd_cs423
2
_pnpbios_detect
,
.
probe
=
snd_cs423
x
_pnpbios_detect
,
.
remove
=
__devexit_p
(
snd_cs423
2
_pnp_remove
),
.
remove
=
__devexit_p
(
snd_cs423
x
_pnp_remove
),
#ifdef CONFIG_PM
#ifdef CONFIG_PM
.
suspend
=
snd_cs423
2
_pnp_suspend
,
.
suspend
=
snd_cs423
x
_pnp_suspend
,
.
resume
=
snd_cs423
2
_pnp_resume
,
.
resume
=
snd_cs423
x
_pnp_resume
,
#endif
#endif
};
};
#endif
/* CS4232 */
static
int
__devinit
snd_cs423x_pnpc_detect
(
struct
pnp_card_link
*
pcard
,
static
int
__devinit
snd_cs423x_pnpc_detect
(
struct
pnp_card_link
*
pcard
,
const
struct
pnp_card_device_id
*
pid
)
const
struct
pnp_card_device_id
*
pid
)
...
@@ -716,18 +707,14 @@ static int __init alsa_card_cs423x_init(void)
...
@@ -716,18 +707,14 @@ static int __init alsa_card_cs423x_init(void)
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
if
(
!
err
)
if
(
!
err
)
isa_registered
=
1
;
isa_registered
=
1
;
#ifdef CS4232
err
=
pnp_register_driver
(
&
cs423x_pnp_driver
);
err
=
pnp_register_driver
(
&
cs4232_pnp_driver
);
if
(
!
err
)
if
(
!
err
)
pnp_registered
=
1
;
pnp_registered
=
1
;
#endif
err
=
pnp_register_card_driver
(
&
cs423x_pnpc_driver
);
err
=
pnp_register_card_driver
(
&
cs423x_pnpc_driver
);
if
(
!
err
)
if
(
!
err
)
pnpc_registered
=
1
;
pnpc_registered
=
1
;
#ifdef CS4232
if
(
pnp_registered
)
if
(
pnp_registered
)
err
=
0
;
err
=
0
;
#endif
if
(
isa_registered
)
if
(
isa_registered
)
err
=
0
;
err
=
0
;
#endif
#endif
...
@@ -739,10 +726,8 @@ static void __exit alsa_card_cs423x_exit(void)
...
@@ -739,10 +726,8 @@ static void __exit alsa_card_cs423x_exit(void)
#ifdef CONFIG_PNP
#ifdef CONFIG_PNP
if
(
pnpc_registered
)
if
(
pnpc_registered
)
pnp_unregister_card_driver
(
&
cs423x_pnpc_driver
);
pnp_unregister_card_driver
(
&
cs423x_pnpc_driver
);
#ifdef CS4232
if
(
pnp_registered
)
if
(
pnp_registered
)
pnp_unregister_driver
(
&
cs4232_pnp_driver
);
pnp_unregister_driver
(
&
cs423x_pnp_driver
);
#endif
if
(
isa_registered
)
if
(
isa_registered
)
#endif
#endif
isa_unregister_driver
(
&
cs423x_isa_driver
);
isa_unregister_driver
(
&
cs423x_isa_driver
);
...
...
sound/isa/cs423x/cs4236_lib.c
View file @
a3c6048d
...
@@ -88,10 +88,6 @@
...
@@ -88,10 +88,6 @@
#include <sound/wss.h>
#include <sound/wss.h>
#include <sound/asoundef.h>
#include <sound/asoundef.h>
MODULE_AUTHOR
(
"Jaroslav Kysela <perex@perex.cz>"
);
MODULE_DESCRIPTION
(
"Routines for control of CS4235/4236B/4237B/4238B/4239 chips"
);
MODULE_LICENSE
(
"GPL"
);
/*
/*
*
*
*/
*/
...
@@ -286,7 +282,8 @@ int snd_cs4236_create(struct snd_card *card,
...
@@ -286,7 +282,8 @@ int snd_cs4236_create(struct snd_card *card,
if
(
hardware
==
WSS_HW_DETECT
)
if
(
hardware
==
WSS_HW_DETECT
)
hardware
=
WSS_HW_DETECT3
;
hardware
=
WSS_HW_DETECT3
;
if
(
cport
<
0x100
)
{
if
(
cport
<
0x100
)
{
snd_printk
(
"please, specify control port for CS4236+ chips
\n
"
);
snd_printk
(
KERN_ERR
"please, specify control port "
"for CS4236+ chips
\n
"
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
err
=
snd_wss_create
(
card
,
port
,
cport
,
err
=
snd_wss_create
(
card
,
port
,
cport
,
...
@@ -295,7 +292,8 @@ int snd_cs4236_create(struct snd_card *card,
...
@@ -295,7 +292,8 @@ int snd_cs4236_create(struct snd_card *card,
return
err
;
return
err
;
if
(
!
(
chip
->
hardware
&
WSS_HW_CS4236B_MASK
))
{
if
(
!
(
chip
->
hardware
&
WSS_HW_CS4236B_MASK
))
{
snd_printk
(
"CS4236+: MODE3 and extended registers not available, hardware=0x%x
\n
"
,
chip
->
hardware
);
snd_printk
(
KERN_ERR
"CS4236+: MODE3 and extended registers "
"not available, hardware=0x%x
\n
"
,
chip
->
hardware
);
snd_device_free
(
card
,
chip
);
snd_device_free
(
card
,
chip
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
@@ -303,16 +301,19 @@ int snd_cs4236_create(struct snd_card *card,
...
@@ -303,16 +301,19 @@ int snd_cs4236_create(struct snd_card *card,
{
{
int idx;
int idx;
for (idx = 0; idx < 8; idx++)
for (idx = 0; idx < 8; idx++)
snd_printk("CD%i = 0x%x\n", idx, inb(chip->cport + idx));
snd_printk(KERN_DEBUG "CD%i = 0x%x\n",
idx, inb(chip->cport + idx));
for (idx = 0; idx < 9; idx++)
for (idx = 0; idx < 9; idx++)
snd_printk("C%i = 0x%x\n", idx, snd_cs4236_ctrl_in(chip, idx));
snd_printk(KERN_DEBUG "C%i = 0x%x\n",
idx, snd_cs4236_ctrl_in(chip, idx));
}
}
#endif
#endif
ver1
=
snd_cs4236_ctrl_in
(
chip
,
1
);
ver1
=
snd_cs4236_ctrl_in
(
chip
,
1
);
ver2
=
snd_cs4236_ext_in
(
chip
,
CS4236_VERSION
);
ver2
=
snd_cs4236_ext_in
(
chip
,
CS4236_VERSION
);
snd_printdd
(
"CS4236: [0x%lx] C1 (version) = 0x%x, ext = 0x%x
\n
"
,
cport
,
ver1
,
ver2
);
snd_printdd
(
"CS4236: [0x%lx] C1 (version) = 0x%x, ext = 0x%x
\n
"
,
cport
,
ver1
,
ver2
);
if
(
ver1
!=
ver2
)
{
if
(
ver1
!=
ver2
)
{
snd_printk
(
"CS4236+ chip detected, but control port 0x%lx is not valid
\n
"
,
cport
);
snd_printk
(
KERN_ERR
"CS4236+ chip detected, but "
"control port 0x%lx is not valid
\n
"
,
cport
);
snd_device_free
(
card
,
chip
);
snd_device_free
(
card
,
chip
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
@@ -883,7 +884,8 @@ static int snd_cs4236_get_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
...
@@ -883,7 +884,8 @@ static int snd_cs4236_get_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
chip
->
image
[
CS4231_ALT_FEATURE_1
]
&
0x02
?
1
:
0
;
ucontrol
->
value
.
integer
.
value
[
0
]
=
chip
->
image
[
CS4231_ALT_FEATURE_1
]
&
0x02
?
1
:
0
;
#if 0
#if 0
printk("get valid: ALT = 0x%x, C3 = 0x%x, C4 = 0x%x, C5 = 0x%x, C6 = 0x%x, C8 = 0x%x\n",
printk(KERN_DEBUG "get valid: ALT = 0x%x, C3 = 0x%x, C4 = 0x%x, "
"C5 = 0x%x, C6 = 0x%x, C8 = 0x%x\n",
snd_wss_in(chip, CS4231_ALT_FEATURE_1),
snd_wss_in(chip, CS4231_ALT_FEATURE_1),
snd_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 4),
snd_cs4236_ctrl_in(chip, 4),
...
@@ -920,7 +922,8 @@ static int snd_cs4236_put_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
...
@@ -920,7 +922,8 @@ static int snd_cs4236_put_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
mutex_unlock
(
&
chip
->
mce_mutex
);
mutex_unlock
(
&
chip
->
mce_mutex
);
#if 0
#if 0
printk("set valid: ALT = 0x%x, C3 = 0x%x, C4 = 0x%x, C5 = 0x%x, C6 = 0x%x, C8 = 0x%x\n",
printk(KERN_DEBUG "set valid: ALT = 0x%x, C3 = 0x%x, C4 = 0x%x, "
"C5 = 0x%x, C6 = 0x%x, C8 = 0x%x\n",
snd_wss_in(chip, CS4231_ALT_FEATURE_1),
snd_wss_in(chip, CS4231_ALT_FEATURE_1),
snd_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 4),
snd_cs4236_ctrl_in(chip, 4),
...
@@ -1015,23 +1018,3 @@ int snd_cs4236_mixer(struct snd_wss *chip)
...
@@ -1015,23 +1018,3 @@ int snd_cs4236_mixer(struct snd_wss *chip)
}
}
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
snd_cs4236_create
);
EXPORT_SYMBOL
(
snd_cs4236_pcm
);
EXPORT_SYMBOL
(
snd_cs4236_mixer
);
/*
* INIT part
*/
static
int
__init
alsa_cs4236_init
(
void
)
{
return
0
;
}
static
void
__exit
alsa_cs4236_exit
(
void
)
{
}
module_init
(
alsa_cs4236_init
)
module_exit
(
alsa_cs4236_exit
)
sound/isa/es1688/es1688.c
View file @
a3c6048d
...
@@ -49,6 +49,7 @@ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
...
@@ -49,6 +49,7 @@ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
static
int
enable
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_ENABLE
;
/* Enable this card */
static
int
enable
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_ENABLE
;
/* Enable this card */
static
long
port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* 0x220,0x240,0x260 */
static
long
port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* 0x220,0x240,0x260 */
static
long
fm_port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* Usually 0x388 */
static
long
mpu_port
[
SNDRV_CARDS
]
=
{[
0
...
(
SNDRV_CARDS
-
1
)]
=
-
1
};
static
long
mpu_port
[
SNDRV_CARDS
]
=
{[
0
...
(
SNDRV_CARDS
-
1
)]
=
-
1
};
static
int
irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,10 */
static
int
irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,10 */
static
int
mpu_irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,10 */
static
int
mpu_irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,10 */
...
@@ -65,6 +66,8 @@ MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
...
@@ -65,6 +66,8 @@ MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
module_param_array
(
mpu_port
,
long
,
NULL
,
0444
);
module_param_array
(
mpu_port
,
long
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpu_port
,
"MPU-401 port # for "
CRD_NAME
" driver."
);
MODULE_PARM_DESC
(
mpu_port
,
"MPU-401 port # for "
CRD_NAME
" driver."
);
module_param_array
(
irq
,
int
,
NULL
,
0444
);
module_param_array
(
irq
,
int
,
NULL
,
0444
);
module_param_array
(
fm_port
,
long
,
NULL
,
0444
);
MODULE_PARM_DESC
(
fm_port
,
"FM port # for ES1688 driver."
);
MODULE_PARM_DESC
(
irq
,
"IRQ # for "
CRD_NAME
" driver."
);
MODULE_PARM_DESC
(
irq
,
"IRQ # for "
CRD_NAME
" driver."
);
module_param_array
(
mpu_irq
,
int
,
NULL
,
0444
);
module_param_array
(
mpu_irq
,
int
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpu_irq
,
"MPU-401 IRQ # for "
CRD_NAME
" driver."
);
MODULE_PARM_DESC
(
mpu_irq
,
"MPU-401 IRQ # for "
CRD_NAME
" driver."
);
...
@@ -143,13 +146,19 @@ static int __devinit snd_es1688_probe(struct device *dev, unsigned int n)
...
@@ -143,13 +146,19 @@ static int __devinit snd_es1688_probe(struct device *dev, unsigned int n)
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
pcm
->
name
,
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
pcm
->
name
,
chip
->
port
,
chip
->
irq
,
chip
->
dma8
);
chip
->
port
,
chip
->
irq
,
chip
->
dma8
);
if
(
snd_opl3_create
(
card
,
chip
->
port
,
chip
->
port
+
2
,
if
(
fm_port
[
n
]
==
SNDRV_AUTO_PORT
)
OPL3_HW_OPL3
,
0
,
&
opl3
)
<
0
)
fm_port
[
n
]
=
port
[
n
];
/* share the same port */
dev_warn
(
dev
,
"opl3 not detected at 0x%lx
\n
"
,
chip
->
port
);
else
{
if
(
fm_port
[
n
]
>
0
)
{
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
snd_opl3_create
(
card
,
fm_port
[
n
],
fm_port
[
n
]
+
2
,
if
(
error
<
0
)
OPL3_HW_OPL3
,
0
,
&
opl3
)
<
0
)
goto
out
;
dev_warn
(
dev
,
"opl3 not detected at 0x%lx
\n
"
,
fm_port
[
n
]);
else
{
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
error
<
0
)
goto
out
;
}
}
}
if
(
mpu_irq
[
n
]
>=
0
&&
mpu_irq
[
n
]
!=
SNDRV_AUTO_IRQ
&&
if
(
mpu_irq
[
n
]
>=
0
&&
mpu_irq
[
n
]
!=
SNDRV_AUTO_IRQ
&&
...
...
sound/isa/es1688/es1688_lib.c
View file @
a3c6048d
...
@@ -45,7 +45,7 @@ static int snd_es1688_dsp_command(struct snd_es1688 *chip, unsigned char val)
...
@@ -45,7 +45,7 @@ static int snd_es1688_dsp_command(struct snd_es1688 *chip, unsigned char val)
return
1
;
return
1
;
}
}
#ifdef CONFIG_SND_DEBUG
#ifdef CONFIG_SND_DEBUG
printk
(
"snd_es1688_dsp_command: timeout (0x%x)
\n
"
,
val
);
printk
(
KERN_DEBUG
"snd_es1688_dsp_command: timeout (0x%x)
\n
"
,
val
);
#endif
#endif
return
0
;
return
0
;
}
}
...
@@ -167,13 +167,16 @@ static int snd_es1688_probe(struct snd_es1688 *chip)
...
@@ -167,13 +167,16 @@ static int snd_es1688_probe(struct snd_es1688 *chip)
hw
=
ES1688_HW_AUTO
;
hw
=
ES1688_HW_AUTO
;
switch
(
chip
->
version
&
0xfff0
)
{
switch
(
chip
->
version
&
0xfff0
)
{
case
0x4880
:
case
0x4880
:
snd_printk
(
"[0x%lx] ESS: AudioDrive ES488 detected, but driver is in another place
\n
"
,
chip
->
port
);
snd_printk
(
KERN_ERR
"[0x%lx] ESS: AudioDrive ES488 detected, "
"but driver is in another place
\n
"
,
chip
->
port
);
return
-
ENODEV
;
return
-
ENODEV
;
case
0x6880
:
case
0x6880
:
hw
=
(
chip
->
version
&
0x0f
)
>=
8
?
ES1688_HW_1688
:
ES1688_HW_688
;
hw
=
(
chip
->
version
&
0x0f
)
>=
8
?
ES1688_HW_1688
:
ES1688_HW_688
;
break
;
break
;
default:
default:
snd_printk
(
"[0x%lx] ESS: unknown AudioDrive chip with version 0x%x (Jazz16 soundcard?)
\n
"
,
chip
->
port
,
chip
->
version
);
snd_printk
(
KERN_ERR
"[0x%lx] ESS: unknown AudioDrive chip "
"with version 0x%x (Jazz16 soundcard?)
\n
"
,
chip
->
port
,
chip
->
version
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
@@ -223,7 +226,7 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
...
@@ -223,7 +226,7 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
}
}
}
}
#if 0
#if 0
snd_printk("mpu cfg = 0x%x\n", cfg);
snd_printk(
KERN_DEBUG
"mpu cfg = 0x%x\n", cfg);
#endif
#endif
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
snd_es1688_mixer_write
(
chip
,
0x40
,
cfg
);
snd_es1688_mixer_write
(
chip
,
0x40
,
cfg
);
...
@@ -237,7 +240,9 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
...
@@ -237,7 +240,9 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
cfg
=
0xf0
;
/* enable only DMA counter interrupt */
cfg
=
0xf0
;
/* enable only DMA counter interrupt */
irq_bits
=
irqs
[
chip
->
irq
&
0x0f
];
irq_bits
=
irqs
[
chip
->
irq
&
0x0f
];
if
(
irq_bits
<
0
)
{
if
(
irq_bits
<
0
)
{
snd_printk
(
"[0x%lx] ESS: bad IRQ %d for ES1688 chip!!
\n
"
,
chip
->
port
,
chip
->
irq
);
snd_printk
(
KERN_ERR
"[0x%lx] ESS: bad IRQ %d "
"for ES1688 chip!!
\n
"
,
chip
->
port
,
chip
->
irq
);
#if 0
#if 0
irq_bits = 0;
irq_bits = 0;
cfg = 0x10;
cfg = 0x10;
...
@@ -250,7 +255,8 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
...
@@ -250,7 +255,8 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
cfg
=
0xf0
;
/* extended mode DMA enable */
cfg
=
0xf0
;
/* extended mode DMA enable */
dma
=
chip
->
dma8
;
dma
=
chip
->
dma8
;
if
(
dma
>
3
||
dma
==
2
)
{
if
(
dma
>
3
||
dma
==
2
)
{
snd_printk
(
"[0x%lx] ESS: bad DMA channel %d for ES1688 chip!!
\n
"
,
chip
->
port
,
dma
);
snd_printk
(
KERN_ERR
"[0x%lx] ESS: bad DMA channel %d "
"for ES1688 chip!!
\n
"
,
chip
->
port
,
dma
);
#if 0
#if 0
dma_bits = 0;
dma_bits = 0;
cfg = 0x00; /* disable all DMA */
cfg = 0x00; /* disable all DMA */
...
@@ -341,8 +347,9 @@ static int snd_es1688_trigger(struct snd_es1688 *chip, int cmd, unsigned char va
...
@@ -341,8 +347,9 @@ static int snd_es1688_trigger(struct snd_es1688 *chip, int cmd, unsigned char va
return
-
EINVAL
;
/* something is wrong */
return
-
EINVAL
;
/* something is wrong */
}
}
#if 0
#if 0
printk("trigger: val = 0x%x, value = 0x%x\n", val, value);
printk(KERN_DEBUG "trigger: val = 0x%x, value = 0x%x\n", val, value);
printk("trigger: pointer = 0x%x\n", snd_dma_pointer(chip->dma8, chip->dma_size));
printk(KERN_DEBUG "trigger: pointer = 0x%x\n",
snd_dma_pointer(chip->dma8, chip->dma_size));
#endif
#endif
snd_es1688_write
(
chip
,
0xb8
,
(
val
&
0xf0
)
|
value
);
snd_es1688_write
(
chip
,
0xb8
,
(
val
&
0xf0
)
|
value
);
spin_unlock
(
&
chip
->
reg_lock
);
spin_unlock
(
&
chip
->
reg_lock
);
...
...
sound/isa/gus/gus_dma.c
View file @
a3c6048d
...
@@ -45,7 +45,8 @@ static void snd_gf1_dma_program(struct snd_gus_card * gus,
...
@@ -45,7 +45,8 @@ static void snd_gf1_dma_program(struct snd_gus_card * gus,
unsigned
char
dma_cmd
;
unsigned
char
dma_cmd
;
unsigned
int
address_high
;
unsigned
int
address_high
;
// snd_printk("dma_transfer: addr=0x%x, buf=0x%lx, count=0x%x\n", addr, (long) buf, count);
snd_printdd
(
"dma_transfer: addr=0x%x, buf=0x%lx, count=0x%x
\n
"
,
addr
,
buf_addr
,
count
);
if
(
gus
->
gf1
.
dma1
>
3
)
{
if
(
gus
->
gf1
.
dma1
>
3
)
{
if
(
gus
->
gf1
.
enh_mode
)
{
if
(
gus
->
gf1
.
enh_mode
)
{
...
@@ -77,7 +78,8 @@ static void snd_gf1_dma_program(struct snd_gus_card * gus,
...
@@ -77,7 +78,8 @@ static void snd_gf1_dma_program(struct snd_gus_card * gus,
snd_gf1_dma_ack
(
gus
);
snd_gf1_dma_ack
(
gus
);
snd_dma_program
(
gus
->
gf1
.
dma1
,
buf_addr
,
count
,
dma_cmd
&
SNDRV_GF1_DMA_READ
?
DMA_MODE_READ
:
DMA_MODE_WRITE
);
snd_dma_program
(
gus
->
gf1
.
dma1
,
buf_addr
,
count
,
dma_cmd
&
SNDRV_GF1_DMA_READ
?
DMA_MODE_READ
:
DMA_MODE_WRITE
);
#if 0
#if 0
snd_printk("address = 0x%x, count = 0x%x, dma_cmd = 0x%x\n", address << 1, count, dma_cmd);
snd_printk(KERN_DEBUG "address = 0x%x, count = 0x%x, dma_cmd = 0x%x\n",
address << 1, count, dma_cmd);
#endif
#endif
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
if
(
gus
->
gf1
.
enh_mode
)
{
if
(
gus
->
gf1
.
enh_mode
)
{
...
@@ -142,7 +144,9 @@ static void snd_gf1_dma_interrupt(struct snd_gus_card * gus)
...
@@ -142,7 +144,9 @@ static void snd_gf1_dma_interrupt(struct snd_gus_card * gus)
snd_gf1_dma_program
(
gus
,
block
->
addr
,
block
->
buf_addr
,
block
->
count
,
(
unsigned
short
)
block
->
cmd
);
snd_gf1_dma_program
(
gus
,
block
->
addr
,
block
->
buf_addr
,
block
->
count
,
(
unsigned
short
)
block
->
cmd
);
kfree
(
block
);
kfree
(
block
);
#if 0
#if 0
printk("program dma (IRQ) - addr = 0x%x, buffer = 0x%lx, count = 0x%x, cmd = 0x%x\n", addr, (long) buffer, count, cmd);
snd_printd(KERN_DEBUG "program dma (IRQ) - "
"addr = 0x%x, buffer = 0x%lx, count = 0x%x, cmd = 0x%x\n",
block->addr, block->buf_addr, block->count, block->cmd);
#endif
#endif
}
}
...
@@ -203,13 +207,16 @@ int snd_gf1_dma_transfer_block(struct snd_gus_card * gus,
...
@@ -203,13 +207,16 @@ int snd_gf1_dma_transfer_block(struct snd_gus_card * gus,
}
}
*
block
=
*
__block
;
*
block
=
*
__block
;
block
->
next
=
NULL
;
block
->
next
=
NULL
;
#if 0
printk("addr = 0x%x, buffer = 0x%lx, count = 0x%x, cmd = 0x%x\n", block->addr, (long) block->buffer, block->count, block->cmd);
snd_printdd
(
"addr = 0x%x, buffer = 0x%lx, count = 0x%x, cmd = 0x%x
\n
"
,
#endif
block
->
addr
,
(
long
)
block
->
buffer
,
block
->
count
,
#if 0
block
->
cmd
);
printk("gus->gf1.dma_data_pcm_last = 0x%lx\n", (long)gus->gf1.dma_data_pcm_last);
printk("gus->gf1.dma_data_pcm = 0x%lx\n", (long)gus->gf1.dma_data_pcm);
snd_printdd
(
"gus->gf1.dma_data_pcm_last = 0x%lx
\n
"
,
#endif
(
long
)
gus
->
gf1
.
dma_data_pcm_last
);
snd_printdd
(
"gus->gf1.dma_data_pcm = 0x%lx
\n
"
,
(
long
)
gus
->
gf1
.
dma_data_pcm
);
spin_lock_irqsave
(
&
gus
->
dma_lock
,
flags
);
spin_lock_irqsave
(
&
gus
->
dma_lock
,
flags
);
if
(
synth
)
{
if
(
synth
)
{
if
(
gus
->
gf1
.
dma_data_synth_last
)
{
if
(
gus
->
gf1
.
dma_data_synth_last
)
{
...
...
sound/isa/gus/gus_irq.c
View file @
a3c6048d
...
@@ -41,7 +41,7 @@ irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
...
@@ -41,7 +41,7 @@ irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
if
(
status
==
0
)
if
(
status
==
0
)
return
IRQ_RETVAL
(
handled
);
return
IRQ_RETVAL
(
handled
);
handled
=
1
;
handled
=
1
;
/
/ snd_printk("IRQ: status = 0x%x\n", status);
/
* snd_printk(KERN_DEBUG "IRQ: status = 0x%x\n", status); */
if
(
status
&
0x02
)
{
if
(
status
&
0x02
)
{
STAT_ADD
(
gus
->
gf1
.
interrupt_stat_midi_in
);
STAT_ADD
(
gus
->
gf1
.
interrupt_stat_midi_in
);
if
(
gus
->
gf1
.
interrupt_handler_midi_in
)
if
(
gus
->
gf1
.
interrupt_handler_midi_in
)
...
@@ -65,7 +65,9 @@ irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
...
@@ -65,7 +65,9 @@ irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
continue
;
/* multi request */
continue
;
/* multi request */
already
|=
_current_
;
/* mark request */
already
|=
_current_
;
/* mark request */
#if 0
#if 0
printk("voice = %i, voice_status = 0x%x, voice_verify = %i\n", voice, voice_status, inb(GUSP(gus, GF1PAGE)));
printk(KERN_DEBUG "voice = %i, voice_status = 0x%x, "
"voice_verify = %i\n",
voice, voice_status, inb(GUSP(gus, GF1PAGE)));
#endif
#endif
pvoice
=
&
gus
->
gf1
.
voices
[
voice
];
pvoice
=
&
gus
->
gf1
.
voices
[
voice
];
if
(
pvoice
->
use
)
{
if
(
pvoice
->
use
)
{
...
...
sound/isa/gus/gus_pcm.c
View file @
a3c6048d
...
@@ -82,7 +82,10 @@ static int snd_gf1_pcm_block_change(struct snd_pcm_substream *substream,
...
@@ -82,7 +82,10 @@ static int snd_gf1_pcm_block_change(struct snd_pcm_substream *substream,
count
+=
offset
&
31
;
count
+=
offset
&
31
;
offset
&=
~
31
;
offset
&=
~
31
;
// snd_printk("block change - offset = 0x%x, count = 0x%x\n", offset, count);
/*
snd_printk(KERN_DEBUG "block change - offset = 0x%x, count = 0x%x\n",
offset, count);
*/
memset
(
&
block
,
0
,
sizeof
(
block
));
memset
(
&
block
,
0
,
sizeof
(
block
));
block
.
cmd
=
SNDRV_GF1_DMA_IRQ
;
block
.
cmd
=
SNDRV_GF1_DMA_IRQ
;
if
(
snd_pcm_format_unsigned
(
runtime
->
format
))
if
(
snd_pcm_format_unsigned
(
runtime
->
format
))
...
@@ -135,7 +138,11 @@ static void snd_gf1_pcm_trigger_up(struct snd_pcm_substream *substream)
...
@@ -135,7 +138,11 @@ static void snd_gf1_pcm_trigger_up(struct snd_pcm_substream *substream)
curr
=
begin
+
(
pcmp
->
bpos
*
pcmp
->
block_size
)
/
runtime
->
channels
;
curr
=
begin
+
(
pcmp
->
bpos
*
pcmp
->
block_size
)
/
runtime
->
channels
;
end
=
curr
+
(
pcmp
->
block_size
/
runtime
->
channels
);
end
=
curr
+
(
pcmp
->
block_size
/
runtime
->
channels
);
end
-=
snd_pcm_format_width
(
runtime
->
format
)
==
16
?
2
:
1
;
end
-=
snd_pcm_format_width
(
runtime
->
format
)
==
16
?
2
:
1
;
// snd_printk("init: curr=0x%x, begin=0x%x, end=0x%x, ctrl=0x%x, ramp=0x%x, rate=0x%x\n", curr, begin, end, voice_ctrl, ramp_ctrl, rate);
/*
snd_printk(KERN_DEBUG "init: curr=0x%x, begin=0x%x, end=0x%x, "
"ctrl=0x%x, ramp=0x%x, rate=0x%x\n",
curr, begin, end, voice_ctrl, ramp_ctrl, rate);
*/
pan
=
runtime
->
channels
==
2
?
(
!
voice
?
1
:
14
)
:
8
;
pan
=
runtime
->
channels
==
2
?
(
!
voice
?
1
:
14
)
:
8
;
vol
=
!
voice
?
gus
->
gf1
.
pcm_volume_level_left
:
gus
->
gf1
.
pcm_volume_level_right
;
vol
=
!
voice
?
gus
->
gf1
.
pcm_volume_level_left
:
gus
->
gf1
.
pcm_volume_level_right
;
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
...
@@ -205,9 +212,11 @@ static void snd_gf1_pcm_interrupt_wave(struct snd_gus_card * gus,
...
@@ -205,9 +212,11 @@ static void snd_gf1_pcm_interrupt_wave(struct snd_gus_card * gus,
ramp_ctrl
=
(
snd_gf1_read8
(
gus
,
SNDRV_GF1_VB_VOLUME_CONTROL
)
&
~
0xa4
)
|
0x03
;
ramp_ctrl
=
(
snd_gf1_read8
(
gus
,
SNDRV_GF1_VB_VOLUME_CONTROL
)
&
~
0xa4
)
|
0x03
;
#if 0
#if 0
snd_gf1_select_voice(gus, pvoice->number);
snd_gf1_select_voice(gus, pvoice->number);
printk("position = 0x%x\n", (snd_gf1_read_addr(gus, SNDRV_GF1_VA_CURRENT, voice_ctrl & 4) >> 4));
printk(KERN_DEBUG "position = 0x%x\n",
(snd_gf1_read_addr(gus, SNDRV_GF1_VA_CURRENT, voice_ctrl & 4) >> 4));
snd_gf1_select_voice(gus, pcmp->pvoices[1]->number);
snd_gf1_select_voice(gus, pcmp->pvoices[1]->number);
printk("position = 0x%x\n", (snd_gf1_read_addr(gus, SNDRV_GF1_VA_CURRENT, voice_ctrl & 4) >> 4));
printk(KERN_DEBUG "position = 0x%x\n",
(snd_gf1_read_addr(gus, SNDRV_GF1_VA_CURRENT, voice_ctrl & 4) >> 4));
snd_gf1_select_voice(gus, pvoice->number);
snd_gf1_select_voice(gus, pvoice->number);
#endif
#endif
pcmp
->
bpos
++
;
pcmp
->
bpos
++
;
...
@@ -299,7 +308,11 @@ static int snd_gf1_pcm_poke_block(struct snd_gus_card *gus, unsigned char *buf,
...
@@ -299,7 +308,11 @@ static int snd_gf1_pcm_poke_block(struct snd_gus_card *gus, unsigned char *buf,
unsigned
int
len
;
unsigned
int
len
;
unsigned
long
flags
;
unsigned
long
flags
;
// printk("poke block; buf = 0x%x, pos = %i, count = %i, port = 0x%x\n", (int)buf, pos, count, gus->gf1.port);
/*
printk(KERN_DEBUG
"poke block; buf = 0x%x, pos = %i, count = %i, port = 0x%x\n",
(int)buf, pos, count, gus->gf1.port);
*/
while
(
count
>
0
)
{
while
(
count
>
0
)
{
len
=
count
;
len
=
count
;
if
(
len
>
512
)
/* limit, to allow IRQ */
if
(
len
>
512
)
/* limit, to allow IRQ */
...
@@ -680,7 +693,8 @@ static int snd_gf1_pcm_playback_open(struct snd_pcm_substream *substream)
...
@@ -680,7 +693,8 @@ static int snd_gf1_pcm_playback_open(struct snd_pcm_substream *substream)
runtime
->
private_free
=
snd_gf1_pcm_playback_free
;
runtime
->
private_free
=
snd_gf1_pcm_playback_free
;
#if 0
#if 0
printk("playback.buffer = 0x%lx, gf1.pcm_buffer = 0x%lx\n", (long) pcm->playback.buffer, (long) gus->gf1.pcm_buffer);
printk(KERN_DEBUG "playback.buffer = 0x%lx, gf1.pcm_buffer = 0x%lx\n",
(long) pcm->playback.buffer, (long) gus->gf1.pcm_buffer);
#endif
#endif
if
((
err
=
snd_gf1_dma_init
(
gus
))
<
0
)
if
((
err
=
snd_gf1_dma_init
(
gus
))
<
0
)
return
err
;
return
err
;
...
...
sound/isa/gus/gus_uart.c
View file @
a3c6048d
...
@@ -129,8 +129,14 @@ static int snd_gf1_uart_input_open(struct snd_rawmidi_substream *substream)
...
@@ -129,8 +129,14 @@ static int snd_gf1_uart_input_open(struct snd_rawmidi_substream *substream)
}
}
spin_unlock_irqrestore
(
&
gus
->
uart_cmd_lock
,
flags
);
spin_unlock_irqrestore
(
&
gus
->
uart_cmd_lock
,
flags
);
#if 0
#if 0
snd_printk("read init - enable = %i, cmd = 0x%x, stat = 0x%x\n", gus->uart_enable, gus->gf1.uart_cmd, snd_gf1_uart_stat(gus));
snd_printk(KERN_DEBUG
snd_printk("[0x%x] reg (ctrl/status) = 0x%x, reg (data) = 0x%x (page = 0x%x)\n", gus->gf1.port + 0x100, inb(gus->gf1.port + 0x100), inb(gus->gf1.port + 0x101), inb(gus->gf1.port + 0x102));
"read init - enable = %i, cmd = 0x%x, stat = 0x%x\n",
gus->uart_enable, gus->gf1.uart_cmd, snd_gf1_uart_stat(gus));
snd_printk(KERN_DEBUG
"[0x%x] reg (ctrl/status) = 0x%x, reg (data) = 0x%x "
"(page = 0x%x)\n",
gus->gf1.port + 0x100, inb(gus->gf1.port + 0x100),
inb(gus->gf1.port + 0x101), inb(gus->gf1.port + 0x102));
#endif
#endif
return
0
;
return
0
;
}
}
...
...
sound/isa/gus/interwave.c
View file @
a3c6048d
...
@@ -170,7 +170,7 @@ static void snd_interwave_i2c_setlines(struct snd_i2c_bus *bus, int ctrl, int da
...
@@ -170,7 +170,7 @@ static void snd_interwave_i2c_setlines(struct snd_i2c_bus *bus, int ctrl, int da
unsigned
long
port
=
bus
->
private_value
;
unsigned
long
port
=
bus
->
private_value
;
#if 0
#if 0
printk("i2c_setlines - 0x%lx <- %i,%i\n", port, ctrl, data);
printk(
KERN_DEBUG
"i2c_setlines - 0x%lx <- %i,%i\n", port, ctrl, data);
#endif
#endif
outb
((
data
<<
1
)
|
ctrl
,
port
);
outb
((
data
<<
1
)
|
ctrl
,
port
);
udelay
(
10
);
udelay
(
10
);
...
@@ -183,7 +183,7 @@ static int snd_interwave_i2c_getclockline(struct snd_i2c_bus *bus)
...
@@ -183,7 +183,7 @@ static int snd_interwave_i2c_getclockline(struct snd_i2c_bus *bus)
res
=
inb
(
port
)
&
1
;
res
=
inb
(
port
)
&
1
;
#if 0
#if 0
printk("i2c_getclockline - 0x%lx -> %i\n", port, res);
printk(
KERN_DEBUG
"i2c_getclockline - 0x%lx -> %i\n", port, res);
#endif
#endif
return
res
;
return
res
;
}
}
...
@@ -197,7 +197,7 @@ static int snd_interwave_i2c_getdataline(struct snd_i2c_bus *bus, int ack)
...
@@ -197,7 +197,7 @@ static int snd_interwave_i2c_getdataline(struct snd_i2c_bus *bus, int ack)
udelay
(
10
);
udelay
(
10
);
res
=
(
inb
(
port
)
&
2
)
>>
1
;
res
=
(
inb
(
port
)
&
2
)
>>
1
;
#if 0
#if 0
printk("i2c_getdataline - 0x%lx -> %i\n", port, res);
printk(
KERN_DEBUG
"i2c_getdataline - 0x%lx -> %i\n", port, res);
#endif
#endif
return
res
;
return
res
;
}
}
...
@@ -342,7 +342,8 @@ static void __devinit snd_interwave_bank_sizes(struct snd_gus_card * gus, int *s
...
@@ -342,7 +342,8 @@ static void __devinit snd_interwave_bank_sizes(struct snd_gus_card * gus, int *s
snd_gf1_poke
(
gus
,
local
,
d
);
snd_gf1_poke
(
gus
,
local
,
d
);
snd_gf1_poke
(
gus
,
local
+
1
,
d
+
1
);
snd_gf1_poke
(
gus
,
local
+
1
,
d
+
1
);
#if 0
#if 0
printk("d = 0x%x, local = 0x%x, local + 1 = 0x%x, idx << 22 = 0x%x\n",
printk(KERN_DEBUG "d = 0x%x, local = 0x%x, "
"local + 1 = 0x%x, idx << 22 = 0x%x\n",
d,
d,
snd_gf1_peek(gus, local),
snd_gf1_peek(gus, local),
snd_gf1_peek(gus, local + 1),
snd_gf1_peek(gus, local + 1),
...
@@ -356,7 +357,8 @@ static void __devinit snd_interwave_bank_sizes(struct snd_gus_card * gus, int *s
...
@@ -356,7 +357,8 @@ static void __devinit snd_interwave_bank_sizes(struct snd_gus_card * gus, int *s
}
}
}
}
#if 0
#if 0
printk("sizes: %i %i %i %i\n", sizes[0], sizes[1], sizes[2], sizes[3]);
printk(KERN_DEBUG "sizes: %i %i %i %i\n",
sizes[0], sizes[1], sizes[2], sizes[3]);
#endif
#endif
}
}
...
@@ -410,12 +412,12 @@ static void __devinit snd_interwave_detect_memory(struct snd_gus_card * gus)
...
@@ -410,12 +412,12 @@ static void __devinit snd_interwave_detect_memory(struct snd_gus_card * gus)
lmct
=
(
psizes
[
3
]
<<
24
)
|
(
psizes
[
2
]
<<
16
)
|
lmct
=
(
psizes
[
3
]
<<
24
)
|
(
psizes
[
2
]
<<
16
)
|
(
psizes
[
1
]
<<
8
)
|
psizes
[
0
];
(
psizes
[
1
]
<<
8
)
|
psizes
[
0
];
#if 0
#if 0
printk("lmct = 0x%08x\n", lmct);
printk(
KERN_DEBUG
"lmct = 0x%08x\n", lmct);
#endif
#endif
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
lmc
);
i
++
)
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
lmc
);
i
++
)
if
(
lmct
==
lmc
[
i
])
{
if
(
lmct
==
lmc
[
i
])
{
#if 0
#if 0
printk("found !!! %i\n", i);
printk(
KERN_DEBUG
"found !!! %i\n", i);
#endif
#endif
snd_gf1_write16
(
gus
,
SNDRV_GF1_GW_MEMORY_CONFIG
,
(
snd_gf1_look16
(
gus
,
SNDRV_GF1_GW_MEMORY_CONFIG
)
&
0xfff0
)
|
i
);
snd_gf1_write16
(
gus
,
SNDRV_GF1_GW_MEMORY_CONFIG
,
(
snd_gf1_look16
(
gus
,
SNDRV_GF1_GW_MEMORY_CONFIG
)
&
0xfff0
)
|
i
);
snd_interwave_bank_sizes
(
gus
,
psizes
);
snd_interwave_bank_sizes
(
gus
,
psizes
);
...
...
sound/isa/opl3sa2.c
View file @
a3c6048d
...
@@ -179,12 +179,13 @@ static unsigned char __snd_opl3sa2_read(struct snd_opl3sa2 *chip, unsigned char
...
@@ -179,12 +179,13 @@ static unsigned char __snd_opl3sa2_read(struct snd_opl3sa2 *chip, unsigned char
unsigned
char
result
;
unsigned
char
result
;
#if 0
#if 0
outb(0x1d, port); /* password */
outb(0x1d, port); /* password */
printk("read [0x%lx] = 0x%x\n", port, inb(port));
printk(
KERN_DEBUG
"read [0x%lx] = 0x%x\n", port, inb(port));
#endif
#endif
outb
(
reg
,
chip
->
port
);
/* register */
outb
(
reg
,
chip
->
port
);
/* register */
result
=
inb
(
chip
->
port
+
1
);
result
=
inb
(
chip
->
port
+
1
);
#if 0
#if 0
printk("read [0x%lx] = 0x%x [0x%x]\n", port, result, inb(port));
printk(KERN_DEBUG "read [0x%lx] = 0x%x [0x%x]\n",
port, result, inb(port));
#endif
#endif
return
result
;
return
result
;
}
}
...
@@ -233,7 +234,10 @@ static int __devinit snd_opl3sa2_detect(struct snd_card *card)
...
@@ -233,7 +234,10 @@ static int __devinit snd_opl3sa2_detect(struct snd_card *card)
snd_printk
(
KERN_ERR
PFX
"can't grab port 0x%lx
\n
"
,
port
);
snd_printk
(
KERN_ERR
PFX
"can't grab port 0x%lx
\n
"
,
port
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
// snd_printk("REG 0A = 0x%x\n", snd_opl3sa2_read(chip, 0x0a));
/*
snd_printk(KERN_DEBUG "REG 0A = 0x%x\n",
snd_opl3sa2_read(chip, 0x0a));
*/
chip
->
version
=
0
;
chip
->
version
=
0
;
tmp
=
snd_opl3sa2_read
(
chip
,
OPL3SA2_MISC
);
tmp
=
snd_opl3sa2_read
(
chip
,
OPL3SA2_MISC
);
if
(
tmp
==
0xff
)
{
if
(
tmp
==
0xff
)
{
...
...
sound/isa/opti9xx/opti92x-ad1848.c
View file @
a3c6048d
...
@@ -252,7 +252,7 @@ static int __devinit snd_opti9xx_init(struct snd_opti9xx *chip,
...
@@ -252,7 +252,7 @@ static int __devinit snd_opti9xx_init(struct snd_opti9xx *chip,
#endif
/* OPTi93X */
#endif
/* OPTi93X */
default:
default:
snd_printk
(
"chip %d not supported
\n
"
,
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
hardware
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
return
0
;
return
0
;
...
@@ -294,7 +294,7 @@ static unsigned char snd_opti9xx_read(struct snd_opti9xx *chip,
...
@@ -294,7 +294,7 @@ static unsigned char snd_opti9xx_read(struct snd_opti9xx *chip,
#endif
/* OPTi93X */
#endif
/* OPTi93X */
default:
default:
snd_printk
(
"chip %d not supported
\n
"
,
chip
->
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
chip
->
hardware
);
}
}
spin_unlock_irqrestore
(
&
chip
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
chip
->
lock
,
flags
);
...
@@ -336,7 +336,7 @@ static void snd_opti9xx_write(struct snd_opti9xx *chip, unsigned char reg,
...
@@ -336,7 +336,7 @@ static void snd_opti9xx_write(struct snd_opti9xx *chip, unsigned char reg,
#endif
/* OPTi93X */
#endif
/* OPTi93X */
default:
default:
snd_printk
(
"chip %d not supported
\n
"
,
chip
->
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
chip
->
hardware
);
}
}
spin_unlock_irqrestore
(
&
chip
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
chip
->
lock
,
flags
);
...
@@ -412,7 +412,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -412,7 +412,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
#endif
/* OPTi93X */
#endif
/* OPTi93X */
default:
default:
snd_printk
(
"chip %d not supported
\n
"
,
chip
->
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
chip
->
hardware
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
@@ -430,7 +430,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -430,7 +430,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
wss_base_bits
=
0x02
;
wss_base_bits
=
0x02
;
break
;
break
;
default:
default:
snd_printk
(
"WSS port 0x%lx not valid
\n
"
,
chip
->
wss_base
);
snd_printk
(
KERN_WARNING
"WSS port 0x%lx not valid
\n
"
,
chip
->
wss_base
);
goto
__skip_base
;
goto
__skip_base
;
}
}
snd_opti9xx_write_mask
(
chip
,
OPTi9XX_MC_REG
(
1
),
wss_base_bits
<<
4
,
0x30
);
snd_opti9xx_write_mask
(
chip
,
OPTi9XX_MC_REG
(
1
),
wss_base_bits
<<
4
,
0x30
);
...
@@ -455,7 +456,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -455,7 +456,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
irq_bits
=
0x04
;
irq_bits
=
0x04
;
break
;
break
;
default:
default:
snd_printk
(
"WSS irq # %d not valid
\n
"
,
chip
->
irq
);
snd_printk
(
KERN_WARNING
"WSS irq # %d not valid
\n
"
,
chip
->
irq
);
goto
__skip_resources
;
goto
__skip_resources
;
}
}
...
@@ -470,13 +471,14 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -470,13 +471,14 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
dma_bits
=
0x03
;
dma_bits
=
0x03
;
break
;
break
;
default:
default:
snd_printk
(
"WSS dma1 # %d not valid
\n
"
,
chip
->
dma1
);
snd_printk
(
KERN_WARNING
"WSS dma1 # %d not valid
\n
"
,
chip
->
dma1
);
goto
__skip_resources
;
goto
__skip_resources
;
}
}
#if defined(CS4231) || defined(OPTi93X)
#if defined(CS4231) || defined(OPTi93X)
if
(
chip
->
dma1
==
chip
->
dma2
)
{
if
(
chip
->
dma1
==
chip
->
dma2
)
{
snd_printk
(
"don't want to share dmas
\n
"
);
snd_printk
(
KERN_ERR
"don't want to share dmas
\n
"
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
...
@@ -485,7 +487,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -485,7 +487,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
case
1
:
case
1
:
break
;
break
;
default:
default:
snd_printk
(
"WSS dma2 # %d not valid
\n
"
,
chip
->
dma2
);
snd_printk
(
KERN_WARNING
"WSS dma2 # %d not valid
\n
"
,
chip
->
dma2
);
goto
__skip_resources
;
goto
__skip_resources
;
}
}
dma_bits
|=
0x04
;
dma_bits
|=
0x04
;
...
@@ -516,7 +519,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -516,7 +519,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
mpu_port_bits
=
0x00
;
mpu_port_bits
=
0x00
;
break
;
break
;
default:
default:
snd_printk
(
"MPU-401 port 0x%lx not valid
\n
"
,
snd_printk
(
KERN_WARNING
"MPU-401 port 0x%lx not valid
\n
"
,
chip
->
mpu_port
);
chip
->
mpu_port
);
goto
__skip_mpu
;
goto
__skip_mpu
;
}
}
...
@@ -535,7 +539,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
...
@@ -535,7 +539,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
mpu_irq_bits
=
0x01
;
mpu_irq_bits
=
0x01
;
break
;
break
;
default:
default:
snd_printk
(
"MPU-401 irq # %d not valid
\n
"
,
snd_printk
(
KERN_WARNING
"MPU-401 irq # %d not valid
\n
"
,
chip
->
mpu_irq
);
chip
->
mpu_irq
);
goto
__skip_mpu
;
goto
__skip_mpu
;
}
}
...
@@ -726,7 +730,7 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
...
@@ -726,7 +730,7 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
if
(
chip
->
wss_base
==
SNDRV_AUTO_PORT
)
{
if
(
chip
->
wss_base
==
SNDRV_AUTO_PORT
)
{
chip
->
wss_base
=
snd_legacy_find_free_ioport
(
possible_ports
,
4
);
chip
->
wss_base
=
snd_legacy_find_free_ioport
(
possible_ports
,
4
);
if
(
chip
->
wss_base
<
0
)
{
if
(
chip
->
wss_base
<
0
)
{
snd_printk
(
"unable to find a free WSS port
\n
"
);
snd_printk
(
KERN_ERR
"unable to find a free WSS port
\n
"
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
}
}
...
@@ -815,14 +819,8 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
...
@@ -815,14 +819,8 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
chip
->
fm_port
,
chip
->
fm_port
+
4
-
1
);
chip
->
fm_port
,
chip
->
fm_port
+
4
-
1
);
}
}
if
(
opl3
)
{
if
(
opl3
)
{
#ifdef CS4231
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
&
synth
);
const
int
t1dev
=
1
;
if
(
error
<
0
)
#else
const
int
t1dev
=
0
;
#endif
if
((
error
=
snd_opl3_timer_new
(
opl3
,
t1dev
,
t1dev
+
1
))
<
0
)
return
error
;
if
((
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
&
synth
))
<
0
)
return
error
;
return
error
;
}
}
}
}
...
@@ -900,7 +898,7 @@ static int __devinit snd_opti9xx_isa_probe(struct device *devptr,
...
@@ -900,7 +898,7 @@ static int __devinit snd_opti9xx_isa_probe(struct device *devptr,
#if defined(CS4231) || defined(OPTi93X)
#if defined(CS4231) || defined(OPTi93X)
if
(
dma2
==
SNDRV_AUTO_DMA
)
{
if
(
dma2
==
SNDRV_AUTO_DMA
)
{
if
((
dma2
=
snd_legacy_find_free_dma
(
possible_dma2s
[
dma1
%
4
]))
<
0
)
{
if
((
dma2
=
snd_legacy_find_free_dma
(
possible_dma2s
[
dma1
%
4
]))
<
0
)
{
snd_printk
(
"unable to find a free DMA2
\n
"
);
snd_printk
(
KERN_ERR
"unable to find a free DMA2
\n
"
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
}
}
...
...
sound/isa/sc6000.c
View file @
a3c6048d
...
@@ -576,10 +576,6 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev)
...
@@ -576,10 +576,6 @@ static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev)
snd_printk
(
KERN_ERR
PFX
"no OPL device at 0x%x-0x%x ?
\n
"
,
snd_printk
(
KERN_ERR
PFX
"no OPL device at 0x%x-0x%x ?
\n
"
,
0x388
,
0x388
+
2
);
0x388
,
0x388
+
2
);
}
else
{
}
else
{
err
=
snd_opl3_timer_new
(
opl3
,
0
,
1
);
if
(
err
<
0
)
goto
err_unmap2
;
err
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
err
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
err
<
0
)
if
(
err
<
0
)
goto
err_unmap2
;
goto
err_unmap2
;
...
...
sound/isa/wavefront/wavefront.c
View file @
a3c6048d
...
@@ -553,11 +553,11 @@ static int __devinit snd_wavefront_isa_match(struct device *pdev,
...
@@ -553,11 +553,11 @@ static int __devinit snd_wavefront_isa_match(struct device *pdev,
return
0
;
return
0
;
#endif
#endif
if
(
cs4232_pcm_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
if
(
cs4232_pcm_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
snd_printk
(
"specify CS4232 port
\n
"
);
snd_printk
(
KERN_ERR
"specify CS4232 port
\n
"
);
return
0
;
return
0
;
}
}
if
(
ics2115_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
if
(
ics2115_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
snd_printk
(
"specify ICS2115 port
\n
"
);
snd_printk
(
KERN_ERR
"specify ICS2115 port
\n
"
);
return
0
;
return
0
;
}
}
return
1
;
return
1
;
...
...
sound/isa/wavefront/wavefront_synth.c
View file @
a3c6048d
...
@@ -633,7 +633,7 @@ wavefront_get_sample_status (snd_wavefront_t *dev, int assume_rom)
...
@@ -633,7 +633,7 @@ wavefront_get_sample_status (snd_wavefront_t *dev, int assume_rom)
wbuf
[
1
]
=
i
>>
7
;
wbuf
[
1
]
=
i
>>
7
;
if
(
snd_wavefront_cmd
(
dev
,
WFC_IDENTIFY_SAMPLE_TYPE
,
rbuf
,
wbuf
))
{
if
(
snd_wavefront_cmd
(
dev
,
WFC_IDENTIFY_SAMPLE_TYPE
,
rbuf
,
wbuf
))
{
snd_printk
(
"cannot identify sample "
snd_printk
(
KERN_WARNING
"cannot identify sample "
"type of slot %d
\n
"
,
i
);
"type of slot %d
\n
"
,
i
);
dev
->
sample_status
[
i
]
=
WF_ST_EMPTY
;
dev
->
sample_status
[
i
]
=
WF_ST_EMPTY
;
continue
;
continue
;
...
...
sound/isa/wss/wss_lib.c
View file @
a3c6048d
...
@@ -219,7 +219,8 @@ void snd_wss_out(struct snd_wss *chip, unsigned char reg, unsigned char value)
...
@@ -219,7 +219,8 @@ void snd_wss_out(struct snd_wss *chip, unsigned char reg, unsigned char value)
snd_wss_wait
(
chip
);
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
#ifdef CONFIG_SND_DEBUG
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
snd_printk
(
"out: auto calibration time out - reg = 0x%x, value = 0x%x
\n
"
,
reg
,
value
);
snd_printk
(
KERN_DEBUG
"out: auto calibration time out "
"- reg = 0x%x, value = 0x%x
\n
"
,
reg
,
value
);
#endif
#endif
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
wss_outb
(
chip
,
CS4231P
(
REG
),
value
);
wss_outb
(
chip
,
CS4231P
(
REG
),
value
);
...
@@ -235,7 +236,8 @@ unsigned char snd_wss_in(struct snd_wss *chip, unsigned char reg)
...
@@ -235,7 +236,8 @@ unsigned char snd_wss_in(struct snd_wss *chip, unsigned char reg)
snd_wss_wait
(
chip
);
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
#ifdef CONFIG_SND_DEBUG
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
snd_printk
(
"in: auto calibration time out - reg = 0x%x
\n
"
,
reg
);
snd_printk
(
KERN_DEBUG
"in: auto calibration time out "
"- reg = 0x%x
\n
"
,
reg
);
#endif
#endif
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
mb
();
mb
();
...
@@ -252,7 +254,7 @@ void snd_cs4236_ext_out(struct snd_wss *chip, unsigned char reg,
...
@@ -252,7 +254,7 @@ void snd_cs4236_ext_out(struct snd_wss *chip, unsigned char reg,
wss_outb
(
chip
,
CS4231P
(
REG
),
val
);
wss_outb
(
chip
,
CS4231P
(
REG
),
val
);
chip
->
eimage
[
CS4236_REG
(
reg
)]
=
val
;
chip
->
eimage
[
CS4236_REG
(
reg
)]
=
val
;
#if 0
#if 0
printk("ext out : reg = 0x%x, val = 0x%x\n", reg, val);
printk(
KERN_DEBUG
"ext out : reg = 0x%x, val = 0x%x\n", reg, val);
#endif
#endif
}
}
EXPORT_SYMBOL
(
snd_cs4236_ext_out
);
EXPORT_SYMBOL
(
snd_cs4236_ext_out
);
...
@@ -268,7 +270,8 @@ unsigned char snd_cs4236_ext_in(struct snd_wss *chip, unsigned char reg)
...
@@ -268,7 +270,8 @@ unsigned char snd_cs4236_ext_in(struct snd_wss *chip, unsigned char reg)
{
{
unsigned
char
res
;
unsigned
char
res
;
res
=
wss_inb
(
chip
,
CS4231P
(
REG
));
res
=
wss_inb
(
chip
,
CS4231P
(
REG
));
printk
(
"ext in : reg = 0x%x, val = 0x%x
\n
"
,
reg
,
res
);
printk
(
KERN_DEBUG
"ext in : reg = 0x%x, val = 0x%x
\n
"
,
reg
,
res
);
return
res
;
return
res
;
}
}
#endif
#endif
...
@@ -394,13 +397,16 @@ void snd_wss_mce_up(struct snd_wss *chip)
...
@@ -394,13 +397,16 @@ void snd_wss_mce_up(struct snd_wss *chip)
snd_wss_wait
(
chip
);
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
#ifdef CONFIG_SND_DEBUG
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
snd_printk
(
"mce_up - auto calibration time out (0)
\n
"
);
snd_printk
(
KERN_DEBUG
"mce_up - auto calibration time out (0)
\n
"
);
#endif
#endif
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
chip
->
mce_bit
|=
CS4231_MCE
;
chip
->
mce_bit
|=
CS4231_MCE
;
timeout
=
wss_inb
(
chip
,
CS4231P
(
REGSEL
));
timeout
=
wss_inb
(
chip
,
CS4231P
(
REGSEL
));
if
(
timeout
==
0x80
)
if
(
timeout
==
0x80
)
snd_printk
(
"mce_up [0x%lx]: serious init problem - codec still busy
\n
"
,
chip
->
port
);
snd_printk
(
KERN_DEBUG
"mce_up [0x%lx]: "
"serious init problem - codec still busy
\n
"
,
chip
->
port
);
if
(
!
(
timeout
&
CS4231_MCE
))
if
(
!
(
timeout
&
CS4231_MCE
))
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
chip
->
mce_bit
|
(
timeout
&
0x1f
));
...
@@ -419,7 +425,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
...
@@ -419,7 +425,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
#ifdef CONFIG_SND_DEBUG
#ifdef CONFIG_SND_DEBUG
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
if
(
wss_inb
(
chip
,
CS4231P
(
REGSEL
))
&
CS4231_INIT
)
snd_printk
(
"mce_down [0x%lx] - auto calibration time out (0)
\n
"
,
(
long
)
CS4231P
(
REGSEL
));
snd_printk
(
KERN_DEBUG
"mce_down [0x%lx] - "
"auto calibration time out (0)
\n
"
,
(
long
)
CS4231P
(
REGSEL
));
#endif
#endif
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
chip
->
mce_bit
&=
~
CS4231_MCE
;
chip
->
mce_bit
&=
~
CS4231_MCE
;
...
@@ -427,7 +435,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
...
@@ -427,7 +435,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
if
(
timeout
==
0x80
)
if
(
timeout
==
0x80
)
snd_printk
(
"mce_down [0x%lx]: serious init problem - codec still busy
\n
"
,
chip
->
port
);
snd_printk
(
KERN_DEBUG
"mce_down [0x%lx]: "
"serious init problem - codec still busy
\n
"
,
chip
->
port
);
if
((
timeout
&
CS4231_MCE
)
==
0
||
!
(
chip
->
hardware
&
hw_mask
))
if
((
timeout
&
CS4231_MCE
)
==
0
||
!
(
chip
->
hardware
&
hw_mask
))
return
;
return
;
...
@@ -565,7 +575,7 @@ static unsigned char snd_wss_get_format(struct snd_wss *chip,
...
@@ -565,7 +575,7 @@ static unsigned char snd_wss_get_format(struct snd_wss *chip,
if
(
channels
>
1
)
if
(
channels
>
1
)
rformat
|=
CS4231_STEREO
;
rformat
|=
CS4231_STEREO
;
#if 0
#if 0
snd_printk("get_format: 0x%x (mode=0x%x)\n", format, mode);
snd_printk(
KERN_DEBUG
"get_format: 0x%x (mode=0x%x)\n", format, mode);
#endif
#endif
return
rformat
;
return
rformat
;
}
}
...
@@ -774,7 +784,7 @@ static void snd_wss_init(struct snd_wss *chip)
...
@@ -774,7 +784,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (1)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (1)
\n
"
);
#endif
#endif
snd_wss_mce_up
(
chip
);
snd_wss_mce_up
(
chip
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
...
@@ -789,7 +799,7 @@ static void snd_wss_init(struct snd_wss *chip)
...
@@ -789,7 +799,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (2)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (2)
\n
"
);
#endif
#endif
snd_wss_mce_up
(
chip
);
snd_wss_mce_up
(
chip
);
...
@@ -800,7 +810,7 @@ static void snd_wss_init(struct snd_wss *chip)
...
@@ -800,7 +810,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (3) - afei = 0x%x
\n
"
,
snd_printk
(
KERN_DEBUG
"init: (3) - afei = 0x%x
\n
"
,
chip
->
image
[
CS4231_ALT_FEATURE_1
]);
chip
->
image
[
CS4231_ALT_FEATURE_1
]);
#endif
#endif
...
@@ -817,7 +827,7 @@ static void snd_wss_init(struct snd_wss *chip)
...
@@ -817,7 +827,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (4)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (4)
\n
"
);
#endif
#endif
snd_wss_mce_up
(
chip
);
snd_wss_mce_up
(
chip
);
...
@@ -829,7 +839,7 @@ static void snd_wss_init(struct snd_wss *chip)
...
@@ -829,7 +839,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (5)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (5)
\n
"
);
#endif
#endif
}
}
...
@@ -1278,7 +1288,8 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1278,7 +1288,8 @@ static int snd_wss_probe(struct snd_wss *chip)
}
else
if
(
rev
==
0x03
)
{
}
else
if
(
rev
==
0x03
)
{
chip
->
hardware
=
WSS_HW_CS4236B
;
chip
->
hardware
=
WSS_HW_CS4236B
;
}
else
{
}
else
{
snd_printk
(
"unknown CS chip with version 0x%x
\n
"
,
rev
);
snd_printk
(
KERN_ERR
"unknown CS chip with version 0x%x
\n
"
,
rev
);
return
-
ENODEV
;
/* unknown CS4231 chip? */
return
-
ENODEV
;
/* unknown CS4231 chip? */
}
}
}
}
...
@@ -1342,7 +1353,10 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1342,7 +1353,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
6
:
case
6
:
break
;
break
;
default:
default:
snd_printk
(
"unknown CS4235 chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4235 chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
else
if
((
id
&
0x1f
)
==
0x0b
)
{
/* CS4236/B */
}
else
if
((
id
&
0x1f
)
==
0x0b
)
{
/* CS4236/B */
switch
(
id
>>
5
)
{
switch
(
id
>>
5
)
{
...
@@ -1353,7 +1367,10 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1353,7 +1367,10 @@ static int snd_wss_probe(struct snd_wss *chip)
chip
->
hardware
=
WSS_HW_CS4236B
;
chip
->
hardware
=
WSS_HW_CS4236B
;
break
;
break
;
default:
default:
snd_printk
(
"unknown CS4236 chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4236 chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
else
if
((
id
&
0x1f
)
==
0x08
)
{
/* CS4237B */
}
else
if
((
id
&
0x1f
)
==
0x08
)
{
/* CS4237B */
chip
->
hardware
=
WSS_HW_CS4237B
;
chip
->
hardware
=
WSS_HW_CS4237B
;
...
@@ -1364,7 +1381,10 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1364,7 +1381,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
7
:
case
7
:
break
;
break
;
default:
default:
snd_printk
(
"unknown CS4237B chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4237B chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
else
if
((
id
&
0x1f
)
==
0x09
)
{
/* CS4238B */
}
else
if
((
id
&
0x1f
)
==
0x09
)
{
/* CS4238B */
chip
->
hardware
=
WSS_HW_CS4238B
;
chip
->
hardware
=
WSS_HW_CS4238B
;
...
@@ -1374,7 +1394,10 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1374,7 +1394,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
7
:
case
7
:
break
;
break
;
default:
default:
snd_printk
(
"unknown CS4238B chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4238B chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
else
if
((
id
&
0x1f
)
==
0x1e
)
{
/* CS4239 */
}
else
if
((
id
&
0x1f
)
==
0x1e
)
{
/* CS4239 */
chip
->
hardware
=
WSS_HW_CS4239
;
chip
->
hardware
=
WSS_HW_CS4239
;
...
@@ -1384,10 +1407,15 @@ static int snd_wss_probe(struct snd_wss *chip)
...
@@ -1384,10 +1407,15 @@ static int snd_wss_probe(struct snd_wss *chip)
case
6
:
case
6
:
break
;
break
;
default:
default:
snd_printk
(
"unknown CS4239 chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4239 chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
else
{
}
else
{
snd_printk
(
"unknown CS4236/CS423xB chip (enhanced version = 0x%x)
\n
"
,
id
);
snd_printk
(
KERN_WARNING
"unknown CS4236/CS423xB chip "
"(enhanced version = 0x%x)
\n
"
,
id
);
}
}
}
}
}
}
...
@@ -1618,7 +1646,8 @@ static void snd_wss_resume(struct snd_wss *chip)
...
@@ -1618,7 +1646,8 @@ static void snd_wss_resume(struct snd_wss *chip)
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
if
(
timeout
==
0x80
)
if
(
timeout
==
0x80
)
snd_printk
(
"down [0x%lx]: serious init problem - codec still busy
\n
"
,
chip
->
port
);
snd_printk
(
KERN_ERR
"down [0x%lx]: serious init problem "
"- codec still busy
\n
"
,
chip
->
port
);
if
((
timeout
&
CS4231_MCE
)
==
0
||
if
((
timeout
&
CS4231_MCE
)
==
0
||
!
(
chip
->
hardware
&
(
WSS_HW_CS4231_MASK
|
WSS_HW_CS4232_MASK
)))
{
!
(
chip
->
hardware
&
(
WSS_HW_CS4231_MASK
|
WSS_HW_CS4232_MASK
)))
{
return
;
return
;
...
@@ -1628,7 +1657,7 @@ static void snd_wss_resume(struct snd_wss *chip)
...
@@ -1628,7 +1657,7 @@ static void snd_wss_resume(struct snd_wss *chip)
}
}
#endif
/* CONFIG_PM */
#endif
/* CONFIG_PM */
static
int
snd_wss_free
(
struct
snd_wss
*
chip
)
int
snd_wss_free
(
struct
snd_wss
*
chip
)
{
{
release_and_free_resource
(
chip
->
res_port
);
release_and_free_resource
(
chip
->
res_port
);
release_and_free_resource
(
chip
->
res_cport
);
release_and_free_resource
(
chip
->
res_cport
);
...
@@ -1651,6 +1680,7 @@ static int snd_wss_free(struct snd_wss *chip)
...
@@ -1651,6 +1680,7 @@ static int snd_wss_free(struct snd_wss *chip)
kfree
(
chip
);
kfree
(
chip
);
return
0
;
return
0
;
}
}
EXPORT_SYMBOL
(
snd_wss_free
);
static
int
snd_wss_dev_free
(
struct
snd_device
*
device
)
static
int
snd_wss_dev_free
(
struct
snd_device
*
device
)
{
{
...
@@ -1820,7 +1850,8 @@ int snd_wss_create(struct snd_card *card,
...
@@ -1820,7 +1850,8 @@ int snd_wss_create(struct snd_card *card,
#if 0
#if 0
if (chip->hardware & WSS_HW_CS4232_MASK) {
if (chip->hardware & WSS_HW_CS4232_MASK) {
if (chip->res_cport == NULL)
if (chip->res_cport == NULL)
snd_printk("CS4232 control port features are not accessible\n");
snd_printk(KERN_ERR "CS4232 control port features are "
"not accessible\n");
}
}
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment