Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
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
Show 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.
sbirq - IRQ # for CMI8330 chip (SB16)
sbdma8 - 8bit 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.
...
...
@@ -388,34 +391,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
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 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.
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.
The power-management is supported.
This module is aliased as snd-cs4232 since it provides the old
snd-cs4232 functionality, too.
Module snd-cs4281
-----------------
...
...
@@ -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.
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)
irq - IRQ # for ES-1688 chip (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,
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_timer
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
);
#endif
/* __SOUND_AD1816A_H */
include/sound/wss.h
View file @
a3c6048d
...
...
@@ -154,6 +154,7 @@ int snd_wss_create(struct snd_card *card,
unsigned
short
hardware
,
unsigned
short
hwshare
,
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_timer
(
struct
snd_wss
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
);
int
snd_wss_mixer
(
struct
snd_wss
*
chip
);
...
...
sound/isa/Kconfig
View file @
a3c6048d
...
...
@@ -56,8 +56,8 @@ config SND_AD1848
Say Y here to include support for AD1848 (Analog Devices) or
CS4248 (Cirrus Logic - Crystal Semiconductors) chips.
For newer chips from Cirrus Logic, use the CS4231
, CS4232 or
CS4236+
drivers.
For newer chips from Cirrus Logic, use the CS4231
or CS4232+
drivers.
To compile this driver as a module, choose M here: the module
will be called snd-ad1848.
...
...
@@ -94,6 +94,8 @@ config SND_CMI8330
tristate "C-Media CMI8330"
select SND_WSS_LIB
select SND_SB16_DSP
select SND_OPL3_LIB
select SND_MPU401_UART
help
Say Y here to include support for soundcards based on the
C-Media CMI8330 chip.
...
...
@@ -112,26 +114,15 @@ config SND_CS4231
To compile this driver as a module, choose M here: the module
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
tristate "Generic Cirrus Logic CS4236+ driver"
tristate "Generic Cirrus Logic CS423
2/CS423
6+ driver"
select SND_OPL3_LIB
select SND_MPU401_UART
select SND_WSS_LIB
help
Say Y to include support for CS4235,CS4236,CS4237B,CS4238B,
CS4239 chips from Cirrus Logic - Crystal Semiconductors.
Say Y to include support for CS4232,CS4235,CS4236,CS4237B,
CS4238B,CS4239 chips from Cirrus Logic - Crystal
Semiconductors.
To compile this driver as a module, choose M here: the module
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
struct
snd_card_ad1816a
*
acard
;
struct
snd_ad1816a
*
chip
;
struct
snd_opl3
*
opl3
;
struct
snd_timer
*
timer
;
error
=
snd_card_create
(
index
[
dev
],
id
[
dev
],
THIS_MODULE
,
sizeof
(
struct
snd_card_ad1816a
),
&
card
);
...
...
@@ -195,6 +196,12 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
return
error
;
}
error
=
snd_ad1816a_timer
(
chip
,
0
,
&
timer
);
if
(
error
<
0
)
{
snd_card_free
(
card
);
return
error
;
}
if
(
mpu_port
[
dev
]
>
0
)
{
if
(
snd_mpu401_uart_new
(
card
,
0
,
MPU401_HW_MPU401
,
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
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
);
}
else
{
if
((
error
=
snd_opl3_timer_new
(
opl3
,
1
,
2
))
<
0
)
{
snd_card_free
(
card
);
return
error
;
}
if
((
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
))
<
0
)
{
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
error
<
0
)
{
snd_card_free
(
card
);
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)
if
(
inb
(
AD1816A_REG
(
AD1816A_CHIP_STATUS
))
&
AD1816A_READY
)
return
0
;
snd_printk
(
"chip busy.
\n
"
);
snd_printk
(
KERN_WARNING
"chip busy.
\n
"
);
return
-
EBUSY
;
}
...
...
@@ -196,7 +196,7 @@ static int snd_ad1816a_trigger(struct snd_ad1816a *chip, unsigned char what,
spin_unlock
(
&
chip
->
lock
);
break
;
default:
snd_printk
(
"invalid trigger mode 0x%x.
\n
"
,
what
);
snd_printk
(
KERN_WARNING
"invalid trigger mode 0x%x.
\n
"
,
what
);
error
=
-
EINVAL
;
}
...
...
@@ -377,7 +377,6 @@ static struct snd_pcm_hardware snd_ad1816a_capture = {
.
fifo_size
=
0
,
};
#if 0 /* not used now */
static
int
snd_ad1816a_timer_close
(
struct
snd_timer
*
timer
)
{
struct
snd_ad1816a
*
chip
=
snd_timer_chip
(
timer
);
...
...
@@ -442,8 +441,6 @@ static struct snd_timer_hardware snd_ad1816a_timer_table = {
.
start
=
snd_ad1816a_timer_start
,
.
stop
=
snd_ad1816a_timer_stop
,
};
#endif /* not used now */
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)
case
AD1816A_HW_AD1815
:
return
"AD1815"
;
case
AD1816A_HW_AD18MAX10
:
return
"AD18max10"
;
default:
snd_printk
(
"Unknown chip version %d:%d.
\n
"
,
snd_printk
(
KERN_WARNING
"Unknown chip version %d:%d.
\n
"
,
chip
->
version
,
chip
->
hardware
);
return
"AD1816A - unknown"
;
}
...
...
@@ -687,7 +684,6 @@ int __devinit snd_ad1816a_pcm(struct snd_ad1816a *chip, int device, struct snd_p
return
0
;
}
#if 0 /* not used now */
int
__devinit
snd_ad1816a_timer
(
struct
snd_ad1816a
*
chip
,
int
device
,
struct
snd_timer
**
rtimer
)
{
struct
snd_timer
*
timer
;
...
...
@@ -709,7 +705,6 @@ int __devinit snd_ad1816a_timer(struct snd_ad1816a *chip, int device, struct snd
*
rtimer
=
timer
;
return
0
;
}
#endif /* not used now */
/*
*
...
...
sound/isa/cmi8330.c
View file @
a3c6048d
...
...
@@ -31,11 +31,11 @@
* To quickly load the module,
*
* 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
* 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
* to some extent.
* The utilities in alsa-utils are aware of both devices, so passing
...
...
@@ -51,6 +51,8 @@
#include <linux/moduleparam.h>
#include <sound/core.h>
#include <sound/wss.h>
#include <sound/opl3.h>
#include <sound/mpu401.h>
#include <sound/sb.h>
#include <sound/initval.h>
...
...
@@ -79,6 +81,9 @@ static int sbdma16[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
static
long
wssport
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
static
int
wssirq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
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_PARM_DESC
(
index
,
"Index value for CMI8330 soundcard."
);
...
...
@@ -107,6 +112,12 @@ MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330 WSS driver.");
module_param_array
(
wssdma
,
int
,
NULL
,
0444
);
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
static
int
isa_registered
;
static
int
pnp_registered
;
...
...
@@ -149,6 +160,7 @@ struct snd_cmi8330 {
#ifdef CONFIG_PNP
struct
pnp_dev
*
cap
;
struct
pnp_dev
*
play
;
struct
pnp_dev
*
mpu
;
#endif
struct
snd_card
*
card
;
struct
snd_wss
*
wss
;
...
...
@@ -165,7 +177,7 @@ struct snd_cmi8330 {
#ifdef CONFIG_PNP
static
struct
pnp_card_device_id
snd_cmi8330_pnpids
[]
=
{
{
.
id
=
"CMI0001"
,
.
devs
=
{
{
"@@@0001"
},
{
"@X@0001"
}
}
},
{
.
id
=
"CMI0001"
,
.
devs
=
{
{
"@@@0001"
},
{
"@X@0001"
}
,
{
"@H@0001"
}
}
},
{
.
id
=
""
}
};
...
...
@@ -219,8 +231,10 @@ WSS_SINGLE("3D Control - Switch", 0,
CMI8330_RMUX3D
,
5
,
1
,
1
),
WSS_SINGLE
(
"PC Speaker Playback Volume"
,
0
,
CMI8330_OUTPUTVOL
,
3
,
3
,
0
),
WSS_SINGLE
(
"FM Playback Switch"
,
0
,
CMI8330_RECMUX
,
3
,
1
,
1
),
WSS_DOUBLE
(
"FM Playback Switch"
,
0
,
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
,
CMI8330_RMUX3D
,
7
,
1
,
1
),
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,
if
(
acard
->
play
==
NULL
)
return
-
EBUSY
;
acard
->
mpu
=
pnp_request_card_device
(
card
,
id
->
devs
[
2
].
id
,
NULL
);
if
(
acard
->
play
==
NULL
)
return
-
EBUSY
;
pdev
=
acard
->
cap
;
err
=
pnp_activate_dev
(
pdev
);
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
;
}
wssport
[
dev
]
=
pnp_port_start
(
pdev
,
0
);
wssdma
[
dev
]
=
pnp_dma
(
pdev
,
0
);
wssirq
[
dev
]
=
pnp_irq
(
pdev
,
0
);
fmport
[
dev
]
=
pnp_port_start
(
pdev
,
1
);
/* allocate SB16 resources */
pdev
=
acard
->
play
;
...
...
@@ -347,6 +366,17 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
sbdma16
[
dev
]
=
pnp_dma
(
pdev
,
1
);
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
;
}
#endif
...
...
@@ -489,6 +519,7 @@ static int __devinit snd_cmi8330_probe(struct snd_card *card, int dev)
{
struct
snd_cmi8330
*
acard
;
int
i
,
err
;
struct
snd_opl3
*
opl3
;
acard
=
card
->
private_data
;
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)
wssdma
[
dev
],
-
1
,
WSS_HW_DETECT
,
0
,
&
acard
->
wss
);
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
PFX
"(
AD1848
) device busy??
\n
"
);
snd_printk
(
KERN_ERR
PFX
"(
CMI8330
) device busy??
\n
"
);
return
err
;
}
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
;
}
...
...
@@ -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
"
);
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
->
shortname
,
"C-Media CMI8330/C3D"
);
...
...
sound/isa/cs423x/Makefile
View file @
a3c6048d
...
...
@@ -3,13 +3,11 @@
# Copyright (c) 2001 by Jaroslav Kysela <perex@perex.cz>
#
snd-cs4236-lib-objs
:=
cs4236_lib.o
snd-cs4231-objs
:=
cs4231.o
snd-cs4232-objs
:=
cs4232.o
snd-cs4236-objs
:=
cs4236.o
snd-cs4236-objs
:=
cs4236.o cs4236_lib.o
# Toplevel Module Dependency
obj-$(CONFIG_SND_CS4231)
+=
snd-cs4231.o
obj-$(CONFIG_SND_CS423
2)
+=
snd-cs4232
.o
obj-$(CONFIG_SND_CS4236)
+=
snd-cs4236.o snd-cs4236-lib.o
obj-$(CONFIG_SND_CS423
6)
+=
snd-cs4236
.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 @@
MODULE_AUTHOR
(
"Jaroslav Kysela <perex@perex.cz>"
);
MODULE_LICENSE
(
"GPL"
);
#ifdef CS4232
MODULE_DESCRIPTION
(
"Cirrus Logic CS4232"
);
MODULE_DESCRIPTION
(
"Cirrus Logic CS4232-9"
);
MODULE_SUPPORTED_DEVICE
(
"{{Turtle Beach,TBS-2000},"
"{Turtle Beach,Tropez Plus},"
"{SIC CrystalWave 32},"
"{Hewlett Packard,Omnibook 5500},"
"{TerraTec,Maestro 32/96},"
"{Philips,PCA70PS}}"
);
#else
MODULE_DESCRIPTION
(
"Cirrus Logic CS4235-9"
);
MODULE_SUPPORTED_DEVICE
(
"{{Crystal Semiconductors,CS4235},"
"{Philips,PCA70PS}},"
"{{Crystal Semiconductors,CS4235},"
"{Crystal Semiconductors,CS4236},"
"{Crystal Semiconductors,CS4237},"
"{Crystal Semiconductors,CS4238},"
...
...
@@ -70,15 +67,11 @@ MODULE_SUPPORTED_DEVICE("{{Crystal Semiconductors,CS4235},"
"{Typhoon Soundsystem,CS4236B},"
"{Turtle Beach,Malibu},"
"{Unknown,Digital PC 5000 Onboard}}"
);
#endif
#ifdef CS4232
#define IDENT "CS4232"
#define DEV_NAME "cs4232"
#else
#define IDENT "CS4236+"
#define DEV_NAME "cs4236"
#endif
MODULE_ALIAS
(
"snd_cs4232"
);
#define IDENT "CS4232+"
#define DEV_NAME "cs4232+"
static
int
index
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IDX
;
/* Index 0-MAX */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for this card */
...
...
@@ -128,9 +121,7 @@ MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
#ifdef CONFIG_PNP
static
int
isa_registered
;
static
int
pnpc_registered
;
#ifdef CS4232
static
int
pnp_registered
;
#endif
#endif
/* CONFIG_PNP */
struct
snd_card_cs4236
{
...
...
@@ -145,11 +136,10 @@ struct snd_card_cs4236 {
#ifdef CONFIG_PNP
#ifdef CS4232
/*
* 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
=
"CSC0000"
},
/* Guillemot Turtlebeach something appears to be cs4232 compatible
...
...
@@ -157,10 +147,8 @@ static const struct pnp_device_id snd_cs4232_pnpbiosids[] = {
{
.
id
=
"GIM0100"
},
{
.
id
=
""
}
};
MODULE_DEVICE_TABLE
(
pnp
,
snd_cs4232_pnpbiosids
);
#endif
/* CS4232 */
MODULE_DEVICE_TABLE
(
pnp
,
snd_cs423x_pnpbiosids
);
#ifdef CS4232
#define CS423X_ISAPNP_DRIVER "cs4232_isapnp"
static
struct
pnp_card_device_id
snd_cs423x_pnpids
[]
=
{
/* Philips PCA70PS */
...
...
@@ -179,12 +167,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
{
.
id
=
"CSCf032"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
/* Netfinity 3000 on-board soundcard */
{
.
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 */
{
.
id
=
"CSC0225"
,
.
devs
=
{
{
"CSC0000"
},
{
"CSC0010"
},
{
"CSC0003"
}
}
},
/* Intel Marlin Spike Motherboard (#2) - CS4235 */
...
...
@@ -266,7 +248,6 @@ static struct pnp_card_device_id snd_cs423x_pnpids[] = {
/* --- */
{
.
id
=
""
}
/* end */
};
#endif
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)
return
0
;
}
#ifdef CS4232
static
int
__devinit
snd_card_cs4232_pnp
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
struct
pnp_dev
*
p
dev
)
static
int
__devinit
snd_card_cs423x_pnp
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
struct
pnp_dev
*
pdev
,
struct
pnp_dev
*
c
dev
)
{
acard
->
wss
=
pdev
;
if
(
snd_cs423x_pnp_init_wss
(
dev
,
acard
->
wss
)
<
0
)
return
-
EBUSY
;
if
(
cdev
)
cport
[
dev
]
=
pnp_port_start
(
cdev
,
0
);
else
cport
[
dev
]
=
-
1
;
return
0
;
}
#endif
static
int
__devinit
snd_card_cs423x_pnpc
(
int
dev
,
struct
snd_card_cs4236
*
acard
,
struct
pnp_card_link
*
card
,
...
...
@@ -411,24 +394,14 @@ static int __devinit snd_cs423x_probe(struct snd_card *card, int dev)
return
-
EBUSY
;
}
#ifdef CS4232
err
=
snd_wss_create
(
card
,
port
[
dev
],
cport
[
dev
],
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
WSS_HW_DETECT
,
0
,
&
chip
);
if
(
err
<
0
)
return
err
;
acard
->
chip
=
chip
;
err
=
snd_wss_pcm
(
chip
,
0
,
&
pcm
);
WSS_HW_DETECT3
,
0
,
&
chip
);
if
(
err
<
0
)
return
err
;
err
=
snd_wss_mixer
(
chip
);
if
(
err
<
0
)
return
err
;
#else
/* CS4236 */
if
(
chip
->
hardware
&
WSS_HW_CS4236B_MASK
)
{
snd_wss_free
(
chip
);
err
=
snd_cs4236_create
(
card
,
port
[
dev
],
cport
[
dev
],
irq
[
dev
],
dma1
[
dev
],
dma2
[
dev
],
...
...
@@ -444,7 +417,16 @@ static int __devinit snd_cs423x_probe(struct snd_card *card, int dev)
err
=
snd_cs4236_mixer
(
chip
);
if
(
err
<
0
)
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
->
shortname
,
pcm
->
name
);
sprintf
(
card
->
longname
,
"%s at 0x%lx, irq %i, dma %i"
,
...
...
@@ -579,13 +561,14 @@ static struct isa_driver cs423x_isa_driver = {
#ifdef CONFIG_PNP
#ifdef CS4232
static
int
__devinit
snd_cs4232_pnpbios_detect
(
struct
pnp_dev
*
pdev
,
static
int
__devinit
snd_cs423x_pnpbios_detect
(
struct
pnp_dev
*
pdev
,
const
struct
pnp_device_id
*
id
)
{
static
int
dev
;
int
err
;
struct
snd_card
*
card
;
struct
pnp_dev
*
cdev
;
char
cid
[
PNP_ID_LEN
];
if
(
pnp_device_is_isapnp
(
pdev
))
return
-
ENOENT
;
/* we have another procedure - card */
...
...
@@ -596,10 +579,19 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
if
(
dev
>=
SNDRV_CARDS
)
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
);
if
(
err
<
0
)
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
"
);
snd_card_free
(
card
);
return
err
;
...
...
@@ -614,35 +606,34 @@ static int __devinit snd_cs4232_pnpbios_detect(struct pnp_dev *pdev,
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
));
pnp_set_drvdata
(
pdev
,
NULL
);
}
#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
));
}
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
));
}
#endif
static
struct
pnp_driver
cs423
2
_pnp_driver
=
{
.
name
=
"cs423
2
-pnpbios"
,
.
id_table
=
snd_cs423
2
_pnpbiosids
,
.
probe
=
snd_cs423
2
_pnpbios_detect
,
.
remove
=
__devexit_p
(
snd_cs423
2
_pnp_remove
),
static
struct
pnp_driver
cs423
x
_pnp_driver
=
{
.
name
=
"cs423
x
-pnpbios"
,
.
id_table
=
snd_cs423
x
_pnpbiosids
,
.
probe
=
snd_cs423
x
_pnpbios_detect
,
.
remove
=
__devexit_p
(
snd_cs423
x
_pnp_remove
),
#ifdef CONFIG_PM
.
suspend
=
snd_cs423
2
_pnp_suspend
,
.
resume
=
snd_cs423
2
_pnp_resume
,
.
suspend
=
snd_cs423
x
_pnp_suspend
,
.
resume
=
snd_cs423
x
_pnp_resume
,
#endif
};
#endif
/* CS4232 */
static
int
__devinit
snd_cs423x_pnpc_detect
(
struct
pnp_card_link
*
pcard
,
const
struct
pnp_card_device_id
*
pid
)
...
...
@@ -716,18 +707,14 @@ static int __init alsa_card_cs423x_init(void)
#ifdef CONFIG_PNP
if
(
!
err
)
isa_registered
=
1
;
#ifdef CS4232
err
=
pnp_register_driver
(
&
cs4232_pnp_driver
);
err
=
pnp_register_driver
(
&
cs423x_pnp_driver
);
if
(
!
err
)
pnp_registered
=
1
;
#endif
err
=
pnp_register_card_driver
(
&
cs423x_pnpc_driver
);
if
(
!
err
)
pnpc_registered
=
1
;
#ifdef CS4232
if
(
pnp_registered
)
err
=
0
;
#endif
if
(
isa_registered
)
err
=
0
;
#endif
...
...
@@ -739,10 +726,8 @@ static void __exit alsa_card_cs423x_exit(void)
#ifdef CONFIG_PNP
if
(
pnpc_registered
)
pnp_unregister_card_driver
(
&
cs423x_pnpc_driver
);
#ifdef CS4232
if
(
pnp_registered
)
pnp_unregister_driver
(
&
cs4232_pnp_driver
);
#endif
pnp_unregister_driver
(
&
cs423x_pnp_driver
);
if
(
isa_registered
)
#endif
isa_unregister_driver
(
&
cs423x_isa_driver
);
...
...
sound/isa/cs423x/cs4236_lib.c
View file @
a3c6048d
...
...
@@ -88,10 +88,6 @@
#include <sound/wss.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,
if
(
hardware
==
WSS_HW_DETECT
)
hardware
=
WSS_HW_DETECT3
;
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
;
}
err
=
snd_wss_create
(
card
,
port
,
cport
,
...
...
@@ -295,7 +292,8 @@ int snd_cs4236_create(struct snd_card *card,
return
err
;
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
);
return
-
ENODEV
;
}
...
...
@@ -303,16 +301,19 @@ int snd_cs4236_create(struct snd_card *card,
{
int 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++)
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
ver1
=
snd_cs4236_ctrl_in
(
chip
,
1
);
ver2
=
snd_cs4236_ext_in
(
chip
,
CS4236_VERSION
);
snd_printdd
(
"CS4236: [0x%lx] C1 (version) = 0x%x, ext = 0x%x
\n
"
,
cport
,
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
);
return
-
ENODEV
;
}
...
...
@@ -883,7 +884,8 @@ static int snd_cs4236_get_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
chip
->
image
[
CS4231_ALT_FEATURE_1
]
&
0x02
?
1
:
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_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 4),
...
...
@@ -920,7 +922,8 @@ static int snd_cs4236_put_iec958_switch(struct snd_kcontrol *kcontrol, struct sn
mutex_unlock
(
&
chip
->
mce_mutex
);
#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_cs4236_ctrl_in(chip, 3),
snd_cs4236_ctrl_in(chip, 4),
...
...
@@ -1015,23 +1018,3 @@ int snd_cs4236_mixer(struct snd_wss *chip)
}
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 */
static
char
*
id
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_STR
;
/* ID for 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
fm_port
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_PORT
;
/* Usually 0x388 */
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
mpu_irq
[
SNDRV_CARDS
]
=
SNDRV_DEFAULT_IRQ
;
/* 5,7,9,10 */
...
...
@@ -65,6 +66,8 @@ MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
module_param_array
(
mpu_port
,
long
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpu_port
,
"MPU-401 port # for "
CRD_NAME
" driver."
);
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_param_array
(
mpu_irq
,
int
,
NULL
,
0444
);
MODULE_PARM_DESC
(
mpu_irq
,
"MPU-401 IRQ # for "
CRD_NAME
" driver."
);
...
...
@@ -143,14 +146,20 @@ 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
,
chip
->
port
,
chip
->
irq
,
chip
->
dma8
);
if
(
snd_opl3_create
(
card
,
chip
->
port
,
chip
->
port
+
2
,
if
(
fm_port
[
n
]
==
SNDRV_AUTO_PORT
)
fm_port
[
n
]
=
port
[
n
];
/* share the same port */
if
(
fm_port
[
n
]
>
0
)
{
if
(
snd_opl3_create
(
card
,
fm_port
[
n
],
fm_port
[
n
]
+
2
,
OPL3_HW_OPL3
,
0
,
&
opl3
)
<
0
)
dev_warn
(
dev
,
"opl3 not detected at 0x%lx
\n
"
,
chip
->
port
);
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
&&
chip
->
mpu_port
>
0
)
{
...
...
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)
return
1
;
}
#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
return
0
;
}
...
...
@@ -167,13 +167,16 @@ static int snd_es1688_probe(struct snd_es1688 *chip)
hw
=
ES1688_HW_AUTO
;
switch
(
chip
->
version
&
0xfff0
)
{
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
;
case
0x6880
:
hw
=
(
chip
->
version
&
0x0f
)
>=
8
?
ES1688_HW_1688
:
ES1688_HW_688
;
break
;
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
;
}
...
...
@@ -223,7 +226,7 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
}
}
#if 0
snd_printk("mpu cfg = 0x%x\n", cfg);
snd_printk(
KERN_DEBUG
"mpu cfg = 0x%x\n", cfg);
#endif
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
snd_es1688_mixer_write
(
chip
,
0x40
,
cfg
);
...
...
@@ -237,7 +240,9 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
cfg
=
0xf0
;
/* enable only DMA counter interrupt */
irq_bits
=
irqs
[
chip
->
irq
&
0x0f
];
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
irq_bits = 0;
cfg = 0x10;
...
...
@@ -250,7 +255,8 @@ static int snd_es1688_init(struct snd_es1688 * chip, int enable)
cfg
=
0xf0
;
/* extended mode DMA enable */
dma
=
chip
->
dma8
;
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
dma_bits = 0;
cfg = 0x00; /* disable all DMA */
...
...
@@ -341,8 +347,9 @@ static int snd_es1688_trigger(struct snd_es1688 *chip, int cmd, unsigned char va
return
-
EINVAL
;
/* something is wrong */
}
#if 0
printk("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: val = 0x%x, value = 0x%x\n", val, value);
printk(KERN_DEBUG "trigger: pointer = 0x%x\n",
snd_dma_pointer(chip->dma8, chip->dma_size));
#endif
snd_es1688_write
(
chip
,
0xb8
,
(
val
&
0xf0
)
|
value
);
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,
unsigned
char
dma_cmd
;
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
.
enh_mode
)
{
...
...
@@ -77,7 +78,8 @@ static void snd_gf1_dma_program(struct snd_gus_card * 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
);
#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
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
if
(
gus
->
gf1
.
enh_mode
)
{
...
...
@@ -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
);
kfree
(
block
);
#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
}
...
...
@@ -203,13 +207,16 @@ int snd_gf1_dma_transfer_block(struct snd_gus_card * gus,
}
*
block
=
*
__block
;
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);
#endif
#if 0
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);
#endif
snd_printdd
(
"addr = 0x%x, buffer = 0x%lx, count = 0x%x, cmd = 0x%x
\n
"
,
block
->
addr
,
(
long
)
block
->
buffer
,
block
->
count
,
block
->
cmd
);
snd_printdd
(
"gus->gf1.dma_data_pcm_last = 0x%lx
\n
"
,
(
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
);
if
(
synth
)
{
if
(
gus
->
gf1
.
dma_data_synth_last
)
{
...
...
sound/isa/gus/gus_irq.c
View file @
a3c6048d
...
...
@@ -41,7 +41,7 @@ __again:
if
(
status
==
0
)
return
IRQ_RETVAL
(
handled
);
handled
=
1
;
/
/ snd_printk("IRQ: status = 0x%x\n", status);
/
* snd_printk(KERN_DEBUG "IRQ: status = 0x%x\n", status); */
if
(
status
&
0x02
)
{
STAT_ADD
(
gus
->
gf1
.
interrupt_stat_midi_in
);
if
(
gus
->
gf1
.
interrupt_handler_midi_in
)
...
...
@@ -65,7 +65,9 @@ __again:
continue
;
/* multi request */
already
|=
_current_
;
/* mark request */
#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
pvoice
=
&
gus
->
gf1
.
voices
[
voice
];
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,
count
+=
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
));
block
.
cmd
=
SNDRV_GF1_DMA_IRQ
;
if
(
snd_pcm_format_unsigned
(
runtime
->
format
))
...
...
@@ -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
;
end
=
curr
+
(
pcmp
->
block_size
/
runtime
->
channels
);
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
;
vol
=
!
voice
?
gus
->
gf1
.
pcm_volume_level_left
:
gus
->
gf1
.
pcm_volume_level_right
;
spin_lock_irqsave
(
&
gus
->
reg_lock
,
flags
);
...
...
@@ -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
;
#if 0
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);
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);
#endif
pcmp
->
bpos
++
;
...
...
@@ -299,7 +308,11 @@ static int snd_gf1_pcm_poke_block(struct snd_gus_card *gus, unsigned char *buf,
unsigned
int
len
;
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
)
{
len
=
count
;
if
(
len
>
512
)
/* limit, to allow IRQ */
...
...
@@ -680,7 +693,8 @@ static int snd_gf1_pcm_playback_open(struct snd_pcm_substream *substream)
runtime
->
private_free
=
snd_gf1_pcm_playback_free
;
#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
if
((
err
=
snd_gf1_dma_init
(
gus
))
<
0
)
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)
}
spin_unlock_irqrestore
(
&
gus
->
uart_cmd_lock
,
flags
);
#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("[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));
snd_printk(KERN_DEBUG
"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
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
unsigned
long
port
=
bus
->
private_value
;
#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
outb
((
data
<<
1
)
|
ctrl
,
port
);
udelay
(
10
);
...
...
@@ -183,7 +183,7 @@ static int snd_interwave_i2c_getclockline(struct snd_i2c_bus *bus)
res
=
inb
(
port
)
&
1
;
#if 0
printk("i2c_getclockline - 0x%lx -> %i\n", port, res);
printk(
KERN_DEBUG
"i2c_getclockline - 0x%lx -> %i\n", port, res);
#endif
return
res
;
}
...
...
@@ -197,7 +197,7 @@ static int snd_interwave_i2c_getdataline(struct snd_i2c_bus *bus, int ack)
udelay
(
10
);
res
=
(
inb
(
port
)
&
2
)
>>
1
;
#if 0
printk("i2c_getdataline - 0x%lx -> %i\n", port, res);
printk(
KERN_DEBUG
"i2c_getdataline - 0x%lx -> %i\n", port, res);
#endif
return
res
;
}
...
...
@@ -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
+
1
,
d
+
1
);
#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,
snd_gf1_peek(gus, local),
snd_gf1_peek(gus, local + 1),
...
...
@@ -356,7 +357,8 @@ static void __devinit snd_interwave_bank_sizes(struct snd_gus_card * gus, int *s
}
}
#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
}
...
...
@@ -410,12 +412,12 @@ static void __devinit snd_interwave_detect_memory(struct snd_gus_card * gus)
lmct
=
(
psizes
[
3
]
<<
24
)
|
(
psizes
[
2
]
<<
16
)
|
(
psizes
[
1
]
<<
8
)
|
psizes
[
0
];
#if 0
printk("lmct = 0x%08x\n", lmct);
printk(
KERN_DEBUG
"lmct = 0x%08x\n", lmct);
#endif
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
lmc
);
i
++
)
if
(
lmct
==
lmc
[
i
])
{
#if 0
printk("found !!! %i\n", i);
printk(
KERN_DEBUG
"found !!! %i\n", i);
#endif
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
);
...
...
sound/isa/opl3sa2.c
View file @
a3c6048d
...
...
@@ -179,12 +179,13 @@ static unsigned char __snd_opl3sa2_read(struct snd_opl3sa2 *chip, unsigned char
unsigned
char
result
;
#if 0
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
outb
(
reg
,
chip
->
port
);
/* register */
result
=
inb
(
chip
->
port
+
1
);
#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
return
result
;
}
...
...
@@ -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
);
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
;
tmp
=
snd_opl3sa2_read
(
chip
,
OPL3SA2_MISC
);
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,
#endif
/* OPTi93X */
default:
snd_printk
(
"chip %d not supported
\n
"
,
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
hardware
);
return
-
ENODEV
;
}
return
0
;
...
...
@@ -294,7 +294,7 @@ static unsigned char snd_opti9xx_read(struct snd_opti9xx *chip,
#endif
/* OPTi93X */
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
);
...
...
@@ -336,7 +336,7 @@ static void snd_opti9xx_write(struct snd_opti9xx *chip, unsigned char reg,
#endif
/* OPTi93X */
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
);
...
...
@@ -412,7 +412,7 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
#endif
/* OPTi93X */
default:
snd_printk
(
"chip %d not supported
\n
"
,
chip
->
hardware
);
snd_printk
(
KERN_ERR
"chip %d not supported
\n
"
,
chip
->
hardware
);
return
-
EINVAL
;
}
...
...
@@ -430,7 +430,8 @@ static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
wss_base_bits
=
0x02
;
break
;
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
;
}
snd_opti9xx_write_mask
(
chip
,
OPTi9XX_MC_REG
(
1
),
wss_base_bits
<<
4
,
0x30
);
...
...
@@ -455,7 +456,7 @@ __skip_base:
irq_bits
=
0x04
;
break
;
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
;
}
...
...
@@ -470,13 +471,14 @@ __skip_base:
dma_bits
=
0x03
;
break
;
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
;
}
#if defined(CS4231) || defined(OPTi93X)
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
;
}
...
...
@@ -485,7 +487,8 @@ __skip_base:
case
1
:
break
;
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
;
}
dma_bits
|=
0x04
;
...
...
@@ -516,7 +519,8 @@ __skip_resources:
mpu_port_bits
=
0x00
;
break
;
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
);
goto
__skip_mpu
;
}
...
...
@@ -535,7 +539,7 @@ __skip_resources:
mpu_irq_bits
=
0x01
;
break
;
default:
snd_printk
(
"MPU-401 irq # %d not valid
\n
"
,
snd_printk
(
KERN_WARNING
"MPU-401 irq # %d not valid
\n
"
,
chip
->
mpu_irq
);
goto
__skip_mpu
;
}
...
...
@@ -726,7 +730,7 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
if
(
chip
->
wss_base
==
SNDRV_AUTO_PORT
)
{
chip
->
wss_base
=
snd_legacy_find_free_ioport
(
possible_ports
,
4
);
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
;
}
}
...
...
@@ -815,14 +819,8 @@ static int __devinit snd_opti9xx_probe(struct snd_card *card)
chip
->
fm_port
,
chip
->
fm_port
+
4
-
1
);
}
if
(
opl3
)
{
#ifdef CS4231
const
int
t1dev
=
1
;
#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
)
error
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
&
synth
);
if
(
error
<
0
)
return
error
;
}
}
...
...
@@ -900,7 +898,7 @@ static int __devinit snd_opti9xx_isa_probe(struct device *devptr,
#if defined(CS4231) || defined(OPTi93X)
if
(
dma2
==
SNDRV_AUTO_DMA
)
{
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
;
}
}
...
...
sound/isa/sc6000.c
View file @
a3c6048d
...
...
@@ -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
"
,
0x388
,
0x388
+
2
);
}
else
{
err
=
snd_opl3_timer_new
(
opl3
,
0
,
1
);
if
(
err
<
0
)
goto
err_unmap2
;
err
=
snd_opl3_hwdep_new
(
opl3
,
0
,
1
,
NULL
);
if
(
err
<
0
)
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,
return
0
;
#endif
if
(
cs4232_pcm_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
snd_printk
(
"specify CS4232 port
\n
"
);
snd_printk
(
KERN_ERR
"specify CS4232 port
\n
"
);
return
0
;
}
if
(
ics2115_port
[
dev
]
==
SNDRV_AUTO_PORT
)
{
snd_printk
(
"specify ICS2115 port
\n
"
);
snd_printk
(
KERN_ERR
"specify ICS2115 port
\n
"
);
return
0
;
}
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)
wbuf
[
1
]
=
i
>>
7
;
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
);
dev
->
sample_status
[
i
]
=
WF_ST_EMPTY
;
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)
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
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
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
wss_outb
(
chip
,
CS4231P
(
REG
),
value
);
...
...
@@ -235,7 +236,8 @@ unsigned char snd_wss_in(struct snd_wss *chip, unsigned char reg)
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
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
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
reg
);
mb
();
...
...
@@ -252,7 +254,7 @@ void snd_cs4236_ext_out(struct snd_wss *chip, unsigned char reg,
wss_outb
(
chip
,
CS4231P
(
REG
),
val
);
chip
->
eimage
[
CS4236_REG
(
reg
)]
=
val
;
#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
}
EXPORT_SYMBOL
(
snd_cs4236_ext_out
);
...
...
@@ -268,7 +270,8 @@ unsigned char snd_cs4236_ext_in(struct snd_wss *chip, unsigned char reg)
{
unsigned
char
res
;
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
;
}
#endif
...
...
@@ -394,13 +397,16 @@ void snd_wss_mce_up(struct snd_wss *chip)
snd_wss_wait
(
chip
);
#ifdef CONFIG_SND_DEBUG
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
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
chip
->
mce_bit
|=
CS4231_MCE
;
timeout
=
wss_inb
(
chip
,
CS4231P
(
REGSEL
));
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
))
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
...
...
@@ -419,7 +425,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
#ifdef CONFIG_SND_DEBUG
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
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
chip
->
mce_bit
&=
~
CS4231_MCE
;
...
...
@@ -427,7 +435,9 @@ void snd_wss_mce_down(struct snd_wss *chip)
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
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
))
return
;
...
...
@@ -565,7 +575,7 @@ static unsigned char snd_wss_get_format(struct snd_wss *chip,
if
(
channels
>
1
)
rformat
|=
CS4231_STEREO
;
#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
return
rformat
;
}
...
...
@@ -774,7 +784,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (1)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (1)
\n
"
);
#endif
snd_wss_mce_up
(
chip
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
...
...
@@ -789,7 +799,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (2)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (2)
\n
"
);
#endif
snd_wss_mce_up
(
chip
);
...
...
@@ -800,7 +810,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
#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
]);
#endif
...
...
@@ -817,7 +827,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (4)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (4)
\n
"
);
#endif
snd_wss_mce_up
(
chip
);
...
...
@@ -829,7 +839,7 @@ static void snd_wss_init(struct snd_wss *chip)
snd_wss_mce_down
(
chip
);
#ifdef SNDRV_DEBUG_MCE
snd_printk
(
"init: (5)
\n
"
);
snd_printk
(
KERN_DEBUG
"init: (5)
\n
"
);
#endif
}
...
...
@@ -1278,7 +1288,8 @@ static int snd_wss_probe(struct snd_wss *chip)
}
else
if
(
rev
==
0x03
)
{
chip
->
hardware
=
WSS_HW_CS4236B
;
}
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? */
}
}
...
...
@@ -1342,7 +1353,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
6
:
break
;
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 */
switch
(
id
>>
5
)
{
...
...
@@ -1353,7 +1367,10 @@ static int snd_wss_probe(struct snd_wss *chip)
chip
->
hardware
=
WSS_HW_CS4236B
;
break
;
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 */
chip
->
hardware
=
WSS_HW_CS4237B
;
...
...
@@ -1364,7 +1381,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
7
:
break
;
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 */
chip
->
hardware
=
WSS_HW_CS4238B
;
...
...
@@ -1374,7 +1394,10 @@ static int snd_wss_probe(struct snd_wss *chip)
case
7
:
break
;
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 */
chip
->
hardware
=
WSS_HW_CS4239
;
...
...
@@ -1384,10 +1407,15 @@ static int snd_wss_probe(struct snd_wss *chip)
case
6
:
break
;
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
{
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)
wss_outb
(
chip
,
CS4231P
(
REGSEL
),
chip
->
mce_bit
|
(
timeout
&
0x1f
));
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
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
||
!
(
chip
->
hardware
&
(
WSS_HW_CS4231_MASK
|
WSS_HW_CS4232_MASK
)))
{
return
;
...
...
@@ -1628,7 +1657,7 @@ static void snd_wss_resume(struct snd_wss *chip)
}
#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_cport
);
...
...
@@ -1651,6 +1680,7 @@ static int snd_wss_free(struct snd_wss *chip)
kfree
(
chip
);
return
0
;
}
EXPORT_SYMBOL
(
snd_wss_free
);
static
int
snd_wss_dev_free
(
struct
snd_device
*
device
)
{
...
...
@@ -1820,7 +1850,8 @@ int snd_wss_create(struct snd_card *card,
#if 0
if (chip->hardware & WSS_HW_CS4232_MASK) {
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
...
...
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