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
Kirill Smelkov
linux
Commits
ba8add90
Commit
ba8add90
authored
Mar 23, 2003
by
Dave Jones
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] bring OSS mad16 in sync with 2.4
parent
dafb1e82
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
26 deletions
+42
-26
sound/oss/mad16.c
sound/oss/mad16.c
+42
-26
No files found.
sound/oss/mad16.c
View file @
ba8add90
...
@@ -365,6 +365,8 @@ static int __init init_c930(struct address_info *hw_config)
...
@@ -365,6 +365,8 @@ static int __init init_c930(struct address_info *hw_config)
{
{
unsigned
char
cfg
=
0
;
unsigned
char
cfg
=
0
;
cfg
|=
(
0x0f
&
mad16_conf
);
if
(
c931_detected
)
if
(
c931_detected
)
{
{
/* Bit 0 has reversd meaning. Bits 1 and 2 sese
/* Bit 0 has reversd meaning. Bits 1 and 2 sese
...
@@ -402,7 +404,10 @@ static int __init init_c930(struct address_info *hw_config)
...
@@ -402,7 +404,10 @@ static int __init init_c930(struct address_info *hw_config)
and the C931. */
and the C931. */
cfg
=
c931_detected
?
0x04
:
0x00
;
cfg
=
c931_detected
?
0x04
:
0x00
;
mad_write
(
MC4_PORT
,
0x52
|
cfg
);
if
(
mad16_cdsel
&
0x20
)
mad_write
(
MC4_PORT
,
0x62
|
cfg
);
/* opl4 */
else
mad_write
(
MC4_PORT
,
0x52
|
cfg
);
/* opl3 */
mad_write
(
MC5_PORT
,
0x3C
);
/* Init it into mode2 */
mad_write
(
MC5_PORT
,
0x3C
);
/* Init it into mode2 */
mad_write
(
MC6_PORT
,
0x02
);
/* Enable WSS, Disable MPU and SB */
mad_write
(
MC6_PORT
,
0x02
);
/* Enable WSS, Disable MPU and SB */
...
@@ -529,10 +534,12 @@ static int __init probe_mad16(struct address_info *hw_config)
...
@@ -529,10 +534,12 @@ static int __init probe_mad16(struct address_info *hw_config)
return
init_c930
(
hw_config
);
return
init_c930
(
hw_config
);
for
(
i
=
0xf8d
;
i
<=
0xf93
;
i
++
)
for
(
i
=
0xf8d
;
i
<=
0xf93
;
i
++
)
{
if
(
!
c924pnp
)
if
(
!
c924pnp
)
DDB
(
printk
(
"port %03x = %02x
\n
"
,
i
,
mad_read
(
i
)))
else
DDB
(
printk
(
"port %03x = %02x
\n
"
,
i
,
mad_read
(
i
)))
else
DDB
(
printk
(
"port %03x = %02x
\n
"
,
i
-
0x80
,
mad_read
(
i
)));
DDB
(
printk
(
"port %03x = %02x
\n
"
,
i
-
0x80
,
mad_read
(
i
)));
}
/*
/*
* Set the WSS address
* Set the WSS address
...
@@ -559,10 +566,10 @@ static int __init probe_mad16(struct address_info *hw_config)
...
@@ -559,10 +566,10 @@ static int __init probe_mad16(struct address_info *hw_config)
*/
*/
tmp
&=
~
0x0f
;
tmp
&=
~
0x0f
;
tmp
|=
(
mad16_conf
&
0x0f
);
/* CD-ROM and joystick bits */
mad_write
(
MC1_PORT
,
tmp
);
mad_write
(
MC1_PORT
,
tmp
);
tmp
=
mad_read
(
MC2_PORT
);
tmp
=
mad16_cdsel
;
mad_write
(
MC2_PORT
,
tmp
);
mad_write
(
MC2_PORT
,
tmp
);
mad_write
(
MC3_PORT
,
0xf0
);
/* Disable SB */
mad_write
(
MC3_PORT
,
0xf0
);
/* Disable SB */
...
@@ -590,9 +597,12 @@ static int __init probe_mad16(struct address_info *hw_config)
...
@@ -590,9 +597,12 @@ static int __init probe_mad16(struct address_info *hw_config)
mad_write
(
MC5_PORT
,
0x30
|
cs4231_mode
);
mad_write
(
MC5_PORT
,
0x30
|
cs4231_mode
);
}
}
for
(
i
=
0xf8d
;
i
<=
0xf93
;
i
++
)
if
(
!
c924pnp
)
for
(
i
=
0xf8d
;
i
<=
0xf93
;
i
++
)
{
DDB
(
printk
(
"port %03x after init = %02x
\n
"
,
i
,
mad_read
(
i
)))
else
if
(
!
c924pnp
)
DDB
(
printk
(
"port %03x after init = %02x
\n
"
,
i
-
0x80
,
mad_read
(
i
)));
DDB
(
printk
(
"port %03x after init = %02x
\n
"
,
i
,
mad_read
(
i
)))
else
DDB
(
printk
(
"port %03x after init = %02x
\n
"
,
i
-
0x80
,
mad_read
(
i
)));
}
wss_init
(
hw_config
);
wss_init
(
hw_config
);
return
1
;
return
1
;
...
@@ -879,7 +889,7 @@ static int __initdata cdirq = 0;
...
@@ -879,7 +889,7 @@ static int __initdata cdirq = 0;
static
int
__initdata
cdport
=
0x340
;
static
int
__initdata
cdport
=
0x340
;
static
int
__initdata
cddma
=
-
1
;
static
int
__initdata
cddma
=
-
1
;
static
int
__initdata
opl4
=
0
;
static
int
__initdata
opl4
=
0
;
static
int
__initdata
joystick
=
1
;
static
int
__initdata
joystick
=
0
;
MODULE_PARM
(
mpu_io
,
"i"
);
MODULE_PARM
(
mpu_io
,
"i"
);
MODULE_PARM
(
mpu_irq
,
"i"
);
MODULE_PARM
(
mpu_irq
,
"i"
);
...
@@ -953,14 +963,14 @@ static int __init init_mad16(void)
...
@@ -953,14 +963,14 @@ static int __init init_mad16(void)
return
-
EINVAL
;
return
-
EINVAL
;
}
}
/*
/*
* Build the config words
* Build the config words
*/
*/
mad16_conf
=
(
joystick
^
1
)
|
cdtype
;
mad16_conf
=
(
joystick
^
1
)
|
cdtype
;
mad16_cdsel
=
0
;
mad16_cdsel
=
0
;
if
(
opl4
)
if
(
opl4
)
mad16_cdsel
|=
0x20
;
mad16_cdsel
|=
0x20
;
if
(
cdtype
){
if
(
cdtype
){
if
(
cddma
>
7
||
cddma
<
0
||
dma_map
[
dmatype
][
cddma
]
==
-
1
)
if
(
cddma
>
7
||
cddma
<
0
||
dma_map
[
dmatype
][
cddma
]
==
-
1
)
...
@@ -978,8 +988,8 @@ static int __init init_mad16(void)
...
@@ -978,8 +988,8 @@ static int __init init_mad16(void)
printk
(
", no IRQ"
);
printk
(
", no IRQ"
);
else
if
(
cdirq
<
0
||
cdirq
>
15
||
irq_map
[
cdirq
]
==
-
1
)
else
if
(
cdirq
<
0
||
cdirq
>
15
||
irq_map
[
cdirq
]
==
-
1
)
{
{
printk
(
", invalid IRQ (disabling)"
);
printk
(
", invalid IRQ (disabling)"
);
cdirq
=
0
;
cdirq
=
0
;
}
}
else
printk
(
", IRQ %d"
,
cdirq
);
else
printk
(
", IRQ %d"
,
cdirq
);
...
@@ -1032,14 +1042,14 @@ static int __init init_mad16(void)
...
@@ -1032,14 +1042,14 @@ static int __init init_mad16(void)
found_mpu
=
probe_mad16_mpu
(
&
cfg_mpu
);
found_mpu
=
probe_mad16_mpu
(
&
cfg_mpu
);
if
(
joystick
==
1
)
{
if
(
joystick
==
1
)
{
/* register gameport */
/* register gameport */
if
(
!
request_region
(
0x201
,
1
,
"mad16 gameport"
))
if
(
!
request_region
(
0x201
,
1
,
"mad16 gameport"
))
printk
(
KERN_ERR
"mad16: gameport address 0x201 already in use
\n
"
);
printk
(
KERN_ERR
"mad16: gameport address 0x201 already in use
\n
"
);
else
{
else
{
printk
(
KERN_ERR
"mad16: gameport enabled at 0x201
\n
"
);
printk
(
KERN_ERR
"mad16: gameport enabled at 0x201
\n
"
);
gameport
.
io
=
0x201
;
gameport
.
io
=
0x201
;
gameport_register_port
(
&
gameport
);
gameport_register_port
(
&
gameport
);
}
}
}
}
else
printk
(
KERN_ERR
"mad16: gameport disabled.
\n
"
);
else
printk
(
KERN_ERR
"mad16: gameport disabled.
\n
"
);
return
0
;
return
0
;
...
@@ -1049,6 +1059,12 @@ static void __exit cleanup_mad16(void)
...
@@ -1049,6 +1059,12 @@ static void __exit cleanup_mad16(void)
{
{
if
(
found_mpu
)
if
(
found_mpu
)
unload_mad16_mpu
(
&
cfg_mpu
);
unload_mad16_mpu
(
&
cfg_mpu
);
if
(
gameport
.
io
)
{
/* the gameport was initialized so we must free it up */
gameport_unregister_port
(
&
gameport
);
gameport
.
io
=
0
;
release_region
(
0x201
,
1
);
}
unload_mad16
(
&
cfg
);
unload_mad16
(
&
cfg
);
}
}
...
@@ -1058,9 +1074,9 @@ module_exit(cleanup_mad16);
...
@@ -1058,9 +1074,9 @@ module_exit(cleanup_mad16);
#ifndef MODULE
#ifndef MODULE
static
int
__init
setup_mad16
(
char
*
str
)
static
int
__init
setup_mad16
(
char
*
str
)
{
{
/* io, irq */
/* io, irq */
int
ints
[
8
];
int
ints
[
8
];
str
=
get_options
(
str
,
ARRAY_SIZE
(
ints
),
ints
);
str
=
get_options
(
str
,
ARRAY_SIZE
(
ints
),
ints
);
io
=
ints
[
1
];
io
=
ints
[
1
];
...
...
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