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
099a47a2
Commit
099a47a2
authored
Jun 03, 2004
by
Alexander Viro
Committed by
Linus Torvalds
Jun 03, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] sparse: rme9652 annotation
Annotated driver and ioctl structure used by it.
parent
2996867d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
45 deletions
+44
-45
include/sound/hdsp.h
include/sound/hdsp.h
+1
-1
sound/pci/rme9652/hdsp.c
sound/pci/rme9652/hdsp.c
+41
-42
sound/pci/rme9652/rme9652.c
sound/pci/rme9652/rme9652.c
+2
-2
No files found.
include/sound/hdsp.h
View file @
099a47a2
...
...
@@ -76,7 +76,7 @@ struct _snd_hdsp_config_info {
typedef
struct
_snd_hdsp_firmware
hdsp_firmware_t
;
struct
_snd_hdsp_firmware
{
unsigned
long
*
firmware_data
;
/* 24413 long words */
unsigned
long
__user
*
firmware_data
;
/* 24413 long words */
};
#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, hdsp_firmware_t)
...
...
sound/pci/rme9652/hdsp.c
View file @
099a47a2
...
...
@@ -1250,9 +1250,9 @@ static inline void snd_hdsp_midi_write_byte (hdsp_t *hdsp, int id, int val)
{
/* the hardware already does the relevant bit-mask with 0xff */
if
(
id
)
{
return
hdsp_write
(
hdsp
,
HDSP_midiDataOut1
,
val
);
hdsp_write
(
hdsp
,
HDSP_midiDataOut1
,
val
);
}
else
{
return
hdsp_write
(
hdsp
,
HDSP_midiDataOut0
,
val
);
hdsp_write
(
hdsp
,
HDSP_midiDataOut0
,
val
);
}
}
...
...
@@ -3834,7 +3834,7 @@ static char *hdsp_channel_buffer_location(hdsp_t *hdsp,
}
static
int
snd_hdsp_playback_copy
(
snd_pcm_substream_t
*
substream
,
int
channel
,
snd_pcm_uframes_t
pos
,
void
*
src
,
snd_pcm_uframes_t
count
)
snd_pcm_uframes_t
pos
,
void
__user
*
src
,
snd_pcm_uframes_t
count
)
{
hdsp_t
*
hdsp
=
_snd_pcm_substream_chip
(
substream
);
char
*
channel_buf
;
...
...
@@ -3849,7 +3849,7 @@ static int snd_hdsp_playback_copy(snd_pcm_substream_t *substream, int channel,
}
static
int
snd_hdsp_capture_copy
(
snd_pcm_substream_t
*
substream
,
int
channel
,
snd_pcm_uframes_t
pos
,
void
*
dst
,
snd_pcm_uframes_t
count
)
snd_pcm_uframes_t
pos
,
void
__user
*
dst
,
snd_pcm_uframes_t
count
)
{
hdsp_t
*
hdsp
=
_snd_pcm_substream_chip
(
substream
);
char
*
channel_buf
;
...
...
@@ -4531,10 +4531,11 @@ static int snd_hdsp_hwdep_dummy_op(snd_hwdep_t *hw, struct file *file)
static
int
snd_hdsp_hwdep_ioctl
(
snd_hwdep_t
*
hw
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
hdsp_t
*
hdsp
=
(
hdsp_t
*
)
hw
->
private_data
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
switch
(
cmd
)
{
case
SNDRV_HDSP_IOCTL_GET_PEAK_RMS
:
{
hdsp_peak_rms_t
*
peak_rms
;
hdsp_peak_rms_t
__user
*
peak_rms
;
int
i
;
if
(
hdsp
->
io_type
==
H9652
)
{
...
...
@@ -4542,38 +4543,38 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
int
doublespeed
=
0
;
if
(
hdsp_read
(
hdsp
,
HDSP_statusRegister
)
&
HDSP_DoubleSpeedStatus
)
doublespeed
=
1
;
peak_rms
=
(
hdsp_peak_rms_t
*
)
arg
;
peak_rms
=
(
hdsp_peak_rms_t
__user
*
)
arg
;
for
(
i
=
0
;
i
<
26
;
++
i
)
{
if
(
!
(
doublespeed
&&
(
i
&
4
)))
{
if
(
copy_to_user_fromio
((
void
*
)
peak_rms
->
input_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user_fromio
((
void
__user
*
)
peak_rms
->
input_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user_fromio
((
void
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
(
doublespeed
?
14
:
26
)
*
4
-
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user_fromio
((
void
__user
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
(
doublespeed
?
14
:
26
)
*
4
-
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user_fromio
((
void
*
)
peak_rms
->
output_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
2
*
(
doublespeed
?
14
:
26
)
*
4
-
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user_fromio
((
void
__user
*
)
peak_rms
->
output_peaks
+
i
*
4
,
hdsp
->
iobase
+
HDSP_9652_peakBase
-
2
*
(
doublespeed
?
14
:
26
)
*
4
-
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
rms_low
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
i
*
8
)
&
0xFFFFFF00
;
rms_high
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
i
*
8
+
4
)
&
0xFFFFFF00
;
rms_high
+=
(
rms_low
>>
24
);
rms_low
<<=
8
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
return
-
EFAULT
;
rms_low
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
(
doublespeed
?
14
:
26
)
*
8
+
i
*
8
)
&
0xFFFFFF00
;
rms_high
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
(
doublespeed
?
14
:
26
)
*
8
+
i
*
8
+
4
)
&
0xFFFFFF00
;
rms_high
+=
(
rms_low
>>
24
);
rms_low
<<=
8
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
return
-
EFAULT
;
rms_low
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
2
*
(
doublespeed
?
14
:
26
)
*
8
+
i
*
8
)
&
0xFFFFFF00
;
rms_high
=
*
(
u32
*
)(
hdsp
->
iobase
+
HDSP_9652_rmsBase
+
2
*
(
doublespeed
?
14
:
26
)
*
8
+
i
*
8
+
4
)
&
0xFFFFFF00
;
rms_high
+=
(
rms_low
>>
24
);
rms_low
<<=
8
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_rms
+
i
*
8
,
&
rms_low
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_rms
+
i
*
8
+
4
,
&
rms_high
,
4
)
!=
0
)
return
-
EFAULT
;
}
}
...
...
@@ -4586,25 +4587,25 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
if
(
hdsp_read
(
hdsp
,
HDSP_statusRegister
)
&
HDSP_DoubleSpeedStatus
)
doublespeed
=
1
;
m
=
(
hdsp_9632_meters_t
*
)(
hdsp
->
iobase
+
HDSP_9632_metersBase
);
peak_rms
=
(
hdsp_peak_rms_t
*
)
arg
;
peak_rms
=
(
hdsp_peak_rms_t
__user
*
)
arg
;
for
(
i
=
0
,
j
=
0
;
i
<
16
;
++
i
,
++
j
)
{
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_peaks
+
i
*
4
,
&
(
m
->
input_peak
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_peaks
+
i
*
4
,
&
(
m
->
input_peak
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
&
(
m
->
playback_peak
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
&
(
m
->
playback_peak
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_peaks
+
i
*
4
,
&
(
m
->
output_peak
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_peaks
+
i
*
4
,
&
(
m
->
output_peak
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
,
&
(
m
->
input_rms_low
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
,
&
(
m
->
input_rms_low
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
,
&
(
m
->
playback_rms_low
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
,
&
(
m
->
playback_rms_low
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_rms
+
i
*
8
,
&
(
m
->
output_rms_low
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_rms
+
i
*
8
,
&
(
m
->
output_rms_low
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
&
(
m
->
input_rms_high
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
&
(
m
->
input_rms_high
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
&
(
m
->
playback_rms_high
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
&
(
m
->
playback_rms_high
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_rms
+
i
*
8
+
4
,
&
(
m
->
output_rms_high
[
j
]),
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_rms
+
i
*
8
+
4
,
&
(
m
->
output_rms_high
[
j
]),
4
)
!=
0
)
return
-
EFAULT
;
if
(
doublespeed
&&
i
==
3
)
i
+=
4
;
}
...
...
@@ -4614,25 +4615,25 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
snd_printk
(
"firmware needs to be uploaded to the card.
\n
"
);
return
-
EINVAL
;
}
peak_rms
=
(
hdsp_peak_rms_t
*
)
arg
;
peak_rms
=
(
hdsp_peak_rms_t
__user
*
)
arg
;
for
(
i
=
0
;
i
<
26
;
++
i
)
{
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackPeakLevel
+
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackPeakLevel
+
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputPeakLevel
+
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputPeakLevel
+
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
}
for
(
i
=
0
;
i
<
26
;
++
i
)
{
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackRmsLevel
+
i
*
8
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
+
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackRmsLevel
+
i
*
8
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
playback_rms
+
i
*
8
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackRmsLevel
+
i
*
8
+
4
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
playback_rms
+
i
*
8
,
(
void
*
)
hdsp
->
iobase
+
HDSP_playbackRmsLevel
+
i
*
8
+
4
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputRmsLevel
+
i
*
8
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
+
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputRmsLevel
+
i
*
8
,
4
)
!=
0
)
return
-
EFAULT
;
if
(
copy_to_user
((
void
*
)
peak_rms
->
input_rms
+
i
*
8
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputRmsLevel
+
i
*
8
+
4
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
input_rms
+
i
*
8
,
(
void
*
)
hdsp
->
iobase
+
HDSP_inputRmsLevel
+
i
*
8
+
4
,
4
)
!=
0
)
return
-
EFAULT
;
}
for
(
i
=
0
;
i
<
28
;
++
i
)
{
if
(
copy_to_user
((
void
*
)
peak_rms
->
output_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_outputPeakLevel
+
i
*
4
,
4
)
!=
0
)
if
(
copy_to_user
((
void
__user
*
)
peak_rms
->
output_peaks
+
i
*
4
,
(
void
*
)
hdsp
->
iobase
+
HDSP_outputPeakLevel
+
i
*
4
,
4
)
!=
0
)
return
-
EFAULT
;
}
break
;
...
...
@@ -4680,7 +4681,7 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
info
.
analog_extension_board
=
(
unsigned
char
)
hdsp_aeb
(
hdsp
);
}
spin_unlock_irqrestore
(
&
hdsp
->
lock
,
flags
);
if
(
copy_to_user
(
(
void
*
)
arg
,
&
info
,
sizeof
(
info
)))
if
(
copy_to_user
(
argp
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
break
;
}
...
...
@@ -4690,7 +4691,7 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
if
(
hdsp
->
io_type
!=
H9632
)
return
-
EINVAL
;
h9632_aeb
.
aebi
=
hdsp
->
ss_in_channels
-
H9632_SS_CHANNELS
;
h9632_aeb
.
aebo
=
hdsp
->
ss_out_channels
-
H9632_SS_CHANNELS
;
if
(
copy_to_user
(
(
void
*
)
arg
,
&
h9632_aeb
,
sizeof
(
h9632_aeb
)))
if
(
copy_to_user
(
argp
,
&
h9632_aeb
,
sizeof
(
h9632_aeb
)))
return
-
EFAULT
;
break
;
}
...
...
@@ -4706,14 +4707,14 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
}
hdsp_version
.
io_type
=
hdsp
->
io_type
;
hdsp_version
.
firmware_rev
=
hdsp
->
firmware_rev
;
if
((
err
=
copy_to_user
(
(
void
*
)
arg
,
&
hdsp_version
,
sizeof
(
hdsp_version
))))
{
if
((
err
=
copy_to_user
(
argp
,
&
hdsp_version
,
sizeof
(
hdsp_version
))))
{
return
-
EFAULT
;
}
break
;
}
case
SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE
:
{
hdsp_firmware_t
*
firmware
;
unsigned
long
*
firmware_data
;
hdsp_firmware_t
__user
*
firmware
;
unsigned
long
__user
*
firmware_data
;
int
err
;
if
(
hdsp
->
io_type
==
H9652
||
hdsp
->
io_type
==
H9632
)
return
-
EINVAL
;
...
...
@@ -4721,7 +4722,7 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
if
(
hdsp
->
io_type
==
Undefined
)
return
-
EINVAL
;
snd_printk
(
"initializing firmware upload
\n
"
);
firmware
=
(
hdsp_firmware_t
*
)
arg
;
firmware
=
(
hdsp_firmware_t
__user
*
)
argp
;
if
(
get_user
(
firmware_data
,
&
firmware
->
firmware_data
))
{
return
-
EFAULT
;
...
...
@@ -4754,9 +4755,7 @@ static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int
break
;
}
case
SNDRV_HDSP_IOCTL_GET_MIXER
:
{
hdsp_mixer_t
*
mixer
;
mixer
=
(
hdsp_mixer_t
*
)
arg
;
hdsp_mixer_t
__user
*
mixer
=
(
hdsp_mixer_t
__user
*
)
argp
;
if
(
copy_to_user
(
mixer
->
matrix
,
hdsp
->
mixer_matrix
,
sizeof
(
unsigned
short
)
*
HDSP_MATRIX_MIXER_SIZE
))
return
-
EFAULT
;
break
;
...
...
sound/pci/rme9652/rme9652.c
View file @
099a47a2
...
...
@@ -2011,7 +2011,7 @@ static char *rme9652_channel_buffer_location(rme9652_t *rme9652,
}
static
int
snd_rme9652_playback_copy
(
snd_pcm_substream_t
*
substream
,
int
channel
,
snd_pcm_uframes_t
pos
,
void
*
src
,
snd_pcm_uframes_t
count
)
snd_pcm_uframes_t
pos
,
void
__user
*
src
,
snd_pcm_uframes_t
count
)
{
rme9652_t
*
rme9652
=
_snd_pcm_substream_chip
(
substream
);
char
*
channel_buf
;
...
...
@@ -2028,7 +2028,7 @@ static int snd_rme9652_playback_copy(snd_pcm_substream_t *substream, int channel
}
static
int
snd_rme9652_capture_copy
(
snd_pcm_substream_t
*
substream
,
int
channel
,
snd_pcm_uframes_t
pos
,
void
*
dst
,
snd_pcm_uframes_t
count
)
snd_pcm_uframes_t
pos
,
void
__user
*
dst
,
snd_pcm_uframes_t
count
)
{
rme9652_t
*
rme9652
=
_snd_pcm_substream_chip
(
substream
);
char
*
channel_buf
;
...
...
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