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
f7ce058b
Commit
f7ce058b
authored
Oct 02, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/davem/BK/net-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
0dd934ee
e4eaa6be
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
97 additions
and
54 deletions
+97
-54
drivers/pnp/isapnp.c
drivers/pnp/isapnp.c
+1
-1
include/sound/snd_wavefront.h
include/sound/snd_wavefront.h
+2
-1
sound/Config.in
sound/Config.in
+4
-5
sound/core/oss/pcm_oss.c
sound/core/oss/pcm_oss.c
+2
-2
sound/core/pcm_native.c
sound/core/pcm_native.c
+8
-14
sound/isa/wavefront/wavefront.c
sound/isa/wavefront/wavefront.c
+1
-0
sound/isa/wavefront/wavefront_synth.c
sound/isa/wavefront/wavefront_synth.c
+14
-6
sound/pci/ali5451/ali5451.c
sound/pci/ali5451/ali5451.c
+4
-8
sound/pci/cs46xx/dsp_spos.c
sound/pci/cs46xx/dsp_spos.c
+2
-3
sound/pci/cs46xx/dsp_spos_scb_lib.c
sound/pci/cs46xx/dsp_spos_scb_lib.c
+0
-4
sound/usb/usbaudio.c
sound/usb/usbaudio.c
+37
-4
sound/usb/usbmidi.c
sound/usb/usbmidi.c
+19
-3
sound/usb/usbmixer.c
sound/usb/usbmixer.c
+3
-3
No files found.
drivers/pnp/isapnp.c
View file @
f7ce058b
...
@@ -1048,7 +1048,7 @@ int isapnp_cfg_begin(int csn, int logdev)
...
@@ -1048,7 +1048,7 @@ int isapnp_cfg_begin(int csn, int logdev)
isapnp_wait
();
isapnp_wait
();
isapnp_key
();
isapnp_key
();
isapnp_wake
(
csn
);
isapnp_wake
(
csn
);
#if
1
#if
0
/* to avoid malfunction when the isapnptools package is used */
/* to avoid malfunction when the isapnptools package is used */
/* we must set RDP to our value again */
/* we must set RDP to our value again */
/* it is possible to set RDP only in the isolation phase */
/* it is possible to set RDP only in the isolation phase */
...
...
include/sound/snd_wavefront.h
View file @
f7ce058b
...
@@ -91,8 +91,9 @@ struct _snd_wavefront {
...
@@ -91,8 +91,9 @@ struct _snd_wavefront {
int
samples_used
;
/* how many */
int
samples_used
;
/* how many */
char
interrupts_are_midi
;
/* h/w MPU interrupts enabled ? */
char
interrupts_are_midi
;
/* h/w MPU interrupts enabled ? */
char
rom_samples_rdonly
;
/* can we write on ROM samples */
char
rom_samples_rdonly
;
/* can we write on ROM samples */
spinlock_t
irq_lock
;
wait_queue_head_t
interrupt_sleeper
;
wait_queue_head_t
interrupt_sleeper
;
snd_wavefront_midi_t
midi
;
/* ICS2115 MIDI interface */
snd_wavefront_midi_t
midi
;
/* ICS2115 MIDI interface */
};
};
struct
_snd_wavefront_card
{
struct
_snd_wavefront_card
{
...
...
sound/Config.in
View file @
f7ce058b
...
@@ -36,11 +36,10 @@ fi
...
@@ -36,11 +36,10 @@ fi
if [ "$CONFIG_SND" != "n" -a "$CONFIG_USB" != "n" ]; then
if [ "$CONFIG_SND" != "n" -a "$CONFIG_USB" != "n" ]; then
source sound/usb/Config.in
source sound/usb/Config.in
fi
fi
if [ "$CONFIG_SND" != "n" -a "$CONFIG_SPARC32" = "y" ]; then
if [ "$CONFIG_SND" != "n" ]; then
source sound/sparc/Config.in
if [ "$CONFIG_SPARC32" = "y" -o "$CONFIG_SPARC64" = "y" ]; then
fi
source sound/sparc/Config.in
if [ "$CONFIG_SND" != "n" -a "$CONFIG_SPARC64" = "y" ]; then
fi
source sound/sparc/Config.in
fi
fi
endmenu
endmenu
sound/core/oss/pcm_oss.c
View file @
f7ce058b
...
@@ -1851,8 +1851,8 @@ static unsigned int snd_pcm_oss_poll(struct file *file, poll_table * wait)
...
@@ -1851,8 +1851,8 @@ static unsigned int snd_pcm_oss_poll(struct file *file, poll_table * wait)
mask
=
0
;
mask
=
0
;
if
(
psubstream
!=
NULL
)
{
if
(
psubstream
!=
NULL
)
{
snd_pcm_runtime_t
*
runtime
=
psubstream
->
runtime
;
snd_pcm_runtime_t
*
runtime
=
psubstream
->
runtime
;
spin_lock_irq
(
&
runtime
->
lock
);
poll_wait
(
file
,
&
runtime
->
sleep
,
wait
);
poll_wait
(
file
,
&
runtime
->
sleep
,
wait
);
spin_lock_irq
(
&
runtime
->
lock
);
if
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_DRAINING
&&
if
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_DRAINING
&&
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_RUNNING
||
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_RUNNING
||
snd_pcm_oss_playback_ready
(
psubstream
)))
snd_pcm_oss_playback_ready
(
psubstream
)))
...
@@ -1861,8 +1861,8 @@ static unsigned int snd_pcm_oss_poll(struct file *file, poll_table * wait)
...
@@ -1861,8 +1861,8 @@ static unsigned int snd_pcm_oss_poll(struct file *file, poll_table * wait)
}
}
if
(
csubstream
!=
NULL
)
{
if
(
csubstream
!=
NULL
)
{
snd_pcm_runtime_t
*
runtime
=
csubstream
->
runtime
;
snd_pcm_runtime_t
*
runtime
=
csubstream
->
runtime
;
spin_lock_irq
(
&
runtime
->
lock
);
poll_wait
(
file
,
&
runtime
->
sleep
,
wait
);
poll_wait
(
file
,
&
runtime
->
sleep
,
wait
);
spin_lock_irq
(
&
runtime
->
lock
);
if
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_RUNNING
||
if
(
runtime
->
status
->
state
!=
SNDRV_PCM_STATE_RUNNING
||
snd_pcm_oss_capture_ready
(
csubstream
))
snd_pcm_oss_capture_ready
(
csubstream
))
mask
|=
POLLIN
|
POLLRDNORM
;
mask
|=
POLLIN
|
POLLRDNORM
;
...
...
sound/core/pcm_native.c
View file @
f7ce058b
...
@@ -947,7 +947,10 @@ static inline void snd_pcm_post_reset(snd_pcm_substream_t * substream, int state
...
@@ -947,7 +947,10 @@ static inline void snd_pcm_post_reset(snd_pcm_substream_t * substream, int state
static
int
snd_pcm_reset
(
snd_pcm_substream_t
*
substream
)
static
int
snd_pcm_reset
(
snd_pcm_substream_t
*
substream
)
{
{
int
res
;
int
res
;
spin_lock_irq
(
&
substream
->
runtime
->
lock
);
_SND_PCM_ACTION
(
reset
,
substream
,
0
,
res
,
0
);
_SND_PCM_ACTION
(
reset
,
substream
,
0
,
res
,
0
);
spin_unlock_irq
(
&
substream
->
runtime
->
lock
);
return
res
;
return
res
;
}
}
...
@@ -984,6 +987,7 @@ int snd_pcm_prepare(snd_pcm_substream_t *substream)
...
@@ -984,6 +987,7 @@ int snd_pcm_prepare(snd_pcm_substream_t *substream)
{
{
int
res
;
int
res
;
snd_card_t
*
card
=
substream
->
pcm
->
card
;
snd_card_t
*
card
=
substream
->
pcm
->
card
;
snd_power_lock
(
card
);
snd_power_lock
(
card
);
while
(
snd_power_get_state
(
card
)
!=
SNDRV_CTL_POWER_D0
)
{
while
(
snd_power_get_state
(
card
)
!=
SNDRV_CTL_POWER_D0
)
{
if
(
substream
->
ffile
->
f_flags
&
O_NONBLOCK
)
{
if
(
substream
->
ffile
->
f_flags
&
O_NONBLOCK
)
{
...
@@ -993,7 +997,9 @@ int snd_pcm_prepare(snd_pcm_substream_t *substream)
...
@@ -993,7 +997,9 @@ int snd_pcm_prepare(snd_pcm_substream_t *substream)
snd_power_wait
(
card
);
snd_power_wait
(
card
);
}
}
spin_lock_irq
(
&
substream
->
runtime
->
lock
);
_SND_PCM_ACTION
(
prepare
,
substream
,
0
,
res
,
0
);
_SND_PCM_ACTION
(
prepare
,
substream
,
0
,
res
,
0
);
spin_unlock_irq
(
&
substream
->
runtime
->
lock
);
_power_unlock:
_power_unlock:
snd_power_unlock
(
card
);
snd_power_unlock
(
card
);
...
@@ -2051,21 +2057,9 @@ static int snd_pcm_common_ioctl1(snd_pcm_substream_t *substream,
...
@@ -2051,21 +2057,9 @@ static int snd_pcm_common_ioctl1(snd_pcm_substream_t *substream,
case
SNDRV_PCM_IOCTL_CHANNEL_INFO
:
case
SNDRV_PCM_IOCTL_CHANNEL_INFO
:
return
snd_pcm_channel_info
(
substream
,
(
snd_pcm_channel_info_t
*
)
arg
);
return
snd_pcm_channel_info
(
substream
,
(
snd_pcm_channel_info_t
*
)
arg
);
case
SNDRV_PCM_IOCTL_PREPARE
:
case
SNDRV_PCM_IOCTL_PREPARE
:
{
return
snd_pcm_prepare
(
substream
);
int
res
;
spin_lock_irq
(
&
substream
->
runtime
->
lock
);
res
=
snd_pcm_prepare
(
substream
);
spin_unlock_irq
(
&
substream
->
runtime
->
lock
);
return
res
;
}
case
SNDRV_PCM_IOCTL_RESET
:
case
SNDRV_PCM_IOCTL_RESET
:
{
return
snd_pcm_reset
(
substream
);
int
res
;
spin_lock_irq
(
&
substream
->
runtime
->
lock
);
res
=
snd_pcm_reset
(
substream
);
spin_unlock_irq
(
&
substream
->
runtime
->
lock
);
return
res
;
}
case
SNDRV_PCM_IOCTL_START
:
case
SNDRV_PCM_IOCTL_START
:
{
{
int
res
;
int
res
;
...
...
sound/isa/wavefront/wavefront.c
View file @
f7ce058b
...
@@ -495,6 +495,7 @@ snd_wavefront_probe (int dev)
...
@@ -495,6 +495,7 @@ snd_wavefront_probe (int dev)
}
}
acard
=
(
snd_wavefront_card_t
*
)
card
->
private_data
;
acard
=
(
snd_wavefront_card_t
*
)
card
->
private_data
;
acard
->
wavefront
.
irq
=
-
1
;
acard
->
wavefront
.
irq
=
-
1
;
spin_lock_init
(
&
acard
->
wavefront
.
irq_lock
);
init_waitqueue_head
(
&
acard
->
wavefront
.
interrupt_sleeper
);
init_waitqueue_head
(
&
acard
->
wavefront
.
interrupt_sleeper
);
spin_lock_init
(
&
acard
->
wavefront
.
midi
.
open
);
spin_lock_init
(
&
acard
->
wavefront
.
midi
.
open
);
spin_lock_init
(
&
acard
->
wavefront
.
midi
.
virtual
);
spin_lock_init
(
&
acard
->
wavefront
.
midi
.
virtual
);
...
...
sound/isa/wavefront/wavefront_synth.c
View file @
f7ce058b
...
@@ -1705,9 +1705,11 @@ snd_wavefront_internal_interrupt (snd_wavefront_card_t *card)
...
@@ -1705,9 +1705,11 @@ snd_wavefront_internal_interrupt (snd_wavefront_card_t *card)
return
;
return
;
}
}
spin_lock
(
&
dev
->
irq_lock
);
dev
->
irq_ok
=
1
;
dev
->
irq_ok
=
1
;
dev
->
irq_cnt
++
;
dev
->
irq_cnt
++
;
wake_up_interruptible
(
&
dev
->
interrupt_sleeper
);
spin_unlock
(
&
dev
->
irq_lock
);
wake_up
(
&
dev
->
interrupt_sleeper
);
}
}
/* STATUS REGISTER
/* STATUS REGISTER
...
@@ -1755,14 +1757,20 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev,
...
@@ -1755,14 +1757,20 @@ wavefront_should_cause_interrupt (snd_wavefront_t *dev,
int
val
,
int
port
,
int
timeout
)
int
val
,
int
port
,
int
timeout
)
{
{
unsigned
long
flags
;
wait_queue_t
wait
;
save_flags
(
flags
);
init_waitqueue_entry
(
&
wait
,
current
);
cli
();
spin_lock_irq
(
&
dev
->
irq_lock
);
add_wait_queue
(
&
dev
->
interrupt_sleeper
,
&
wait
);
dev
->
irq_ok
=
0
;
dev
->
irq_ok
=
0
;
outb
(
val
,
port
);
outb
(
val
,
port
);
interruptible_sleep_on_timeout
(
&
dev
->
interrupt_sleeper
,
timeout
);
spin_unlock_irq
(
&
dev
->
irq_lock
);
restore_flags
(
flags
);
while
(
1
)
{
if
((
timeout
=
schedule_timeout
(
timeout
))
==
0
)
return
;
if
(
dev
->
irq_ok
)
return
;
}
}
}
static
int
__init
static
int
__init
...
...
sound/pci/ali5451/ali5451.c
View file @
f7ce058b
...
@@ -1871,7 +1871,6 @@ static void snd_ali_suspend(struct pci_dev *dev)
...
@@ -1871,7 +1871,6 @@ static void snd_ali_suspend(struct pci_dev *dev)
ali_t
*
chip
=
snd_magic_cast
(
ali_t
,
pci_get_drvdata
(
dev
),
return
);
ali_t
*
chip
=
snd_magic_cast
(
ali_t
,
pci_get_drvdata
(
dev
),
return
);
#endif
#endif
ali_image_t
*
im
;
ali_image_t
*
im
;
unsigned
long
flags
;
int
i
,
j
;
int
i
,
j
;
im
=
chip
->
image
;
im
=
chip
->
image
;
...
@@ -1882,8 +1881,7 @@ static void snd_ali_suspend(struct pci_dev *dev)
...
@@ -1882,8 +1881,7 @@ static void snd_ali_suspend(struct pci_dev *dev)
return
;
return
;
#endif
#endif
save_flags
(
flags
);
spin_lock_irq
(
&
chip
->
reg_lock
);
cli
();
im
->
regs
[
ALI_MISCINT
>>
2
]
=
inl
(
ALI_REG
(
chip
,
ALI_MISCINT
));
im
->
regs
[
ALI_MISCINT
>>
2
]
=
inl
(
ALI_REG
(
chip
,
ALI_MISCINT
));
// im->regs[ALI_START >> 2] = inl(ALI_REG(chip, ALI_START));
// im->regs[ALI_START >> 2] = inl(ALI_REG(chip, ALI_START));
...
@@ -1907,7 +1905,7 @@ static void snd_ali_suspend(struct pci_dev *dev)
...
@@ -1907,7 +1905,7 @@ static void snd_ali_suspend(struct pci_dev *dev)
// stop all HW channel
// stop all HW channel
outl
(
0xffffffff
,
ALI_REG
(
chip
,
ALI_STOP
));
outl
(
0xffffffff
,
ALI_REG
(
chip
,
ALI_STOP
));
restore_flags
(
flags
);
spin_unlock_irq
(
&
chip
->
reg_lock
);
#ifndef PCI_OLD_SUSPEND
#ifndef PCI_OLD_SUSPEND
return
0
;
return
0
;
#endif
#endif
...
@@ -1925,7 +1923,6 @@ static void snd_ali_resume(struct pci_dev *dev)
...
@@ -1925,7 +1923,6 @@ static void snd_ali_resume(struct pci_dev *dev)
ali_t
*
chip
=
snd_magic_cast
(
ali_t
,
pci_get_drvdata
(
dev
),
return
);
ali_t
*
chip
=
snd_magic_cast
(
ali_t
,
pci_get_drvdata
(
dev
),
return
);
#endif
#endif
ali_image_t
*
im
;
ali_image_t
*
im
;
unsigned
long
flags
;
int
i
,
j
;
int
i
,
j
;
im
=
chip
->
image
;
im
=
chip
->
image
;
...
@@ -1938,8 +1935,7 @@ static void snd_ali_resume(struct pci_dev *dev)
...
@@ -1938,8 +1935,7 @@ static void snd_ali_resume(struct pci_dev *dev)
pci_enable_device
(
chip
->
pci
);
pci_enable_device
(
chip
->
pci
);
save_flags
(
flags
);
spin_lock_irq
(
&
chip
->
reg_lock
);
cli
();
for
(
i
=
0
;
i
<
ALI_CHANNELS
;
i
++
)
{
for
(
i
=
0
;
i
<
ALI_CHANNELS
;
i
++
)
{
outb
(
i
,
ALI_REG
(
chip
,
ALI_GC_CIR
));
outb
(
i
,
ALI_REG
(
chip
,
ALI_GC_CIR
));
...
@@ -1960,7 +1956,7 @@ static void snd_ali_resume(struct pci_dev *dev)
...
@@ -1960,7 +1956,7 @@ static void snd_ali_resume(struct pci_dev *dev)
// restore IRQ enable bits
// restore IRQ enable bits
outl
(
im
->
regs
[
ALI_MISCINT
>>
2
],
ALI_REG
(
chip
,
ALI_MISCINT
));
outl
(
im
->
regs
[
ALI_MISCINT
>>
2
],
ALI_REG
(
chip
,
ALI_MISCINT
));
restore_flags
(
flags
);
spin_unlock_irq
(
&
chip
->
reg_lock
);
#ifndef PCI_OLD_SUSPEND
#ifndef PCI_OLD_SUSPEND
return
0
;
return
0
;
#endif
#endif
...
...
sound/pci/cs46xx/dsp_spos.c
View file @
f7ce058b
...
@@ -1595,8 +1595,7 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
...
@@ -1595,8 +1595,7 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
ins
->
spdif_in_src
,
ins
->
spdif_in_src
,
SCB_ON_PARENT_SUBLIST_SCB
);
SCB_ON_PARENT_SUBLIST_SCB
);
save_flags
(
flags
);
spin_lock_irq
(
&
chip
->
reg_lock
);
cli
();
/* reset SPDIF input sample buffer pointer */
/* reset SPDIF input sample buffer pointer */
snd_cs46xx_poke
(
chip
,
(
SPDIFI_SCB_INST
+
0x0c
)
<<
2
,
snd_cs46xx_poke
(
chip
,
(
SPDIFI_SCB_INST
+
0x0c
)
<<
2
,
...
@@ -1609,7 +1608,7 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
...
@@ -1609,7 +1608,7 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
/* restore SPDIF input volume */
/* restore SPDIF input volume */
snd_cs46xx_poke
(
chip
,
(
ASYNCRX_SCB_ADDR
+
0xE
)
<<
2
,
ins
->
spdif_input_volume
);
snd_cs46xx_poke
(
chip
,
(
ASYNCRX_SCB_ADDR
+
0xE
)
<<
2
,
ins
->
spdif_input_volume
);
snd_cs46xx_poke
(
chip
,
(
ASYNCRX_SCB_ADDR
+
0xF
)
<<
2
,
ins
->
spdif_input_volume
);
snd_cs46xx_poke
(
chip
,
(
ASYNCRX_SCB_ADDR
+
0xF
)
<<
2
,
ins
->
spdif_input_volume
);
restore_flags
(
flags
);
spin_unlock_irq
(
&
chip
->
reg_lock
);
/* set SPDIF input sample rate and unmute
/* set SPDIF input sample rate and unmute
NOTE: only 48khz support for SPDIF input this time */
NOTE: only 48khz support for SPDIF input this time */
...
...
sound/pci/cs46xx/dsp_spos_scb_lib.c
View file @
f7ce058b
...
@@ -1426,14 +1426,10 @@ int cs46xx_src_link(cs46xx_t *chip,dsp_scb_descriptor_t * src)
...
@@ -1426,14 +1426,10 @@ int cs46xx_src_link(cs46xx_t *chip,dsp_scb_descriptor_t * src)
src
->
parent_scb_ptr
=
parent_scb
;
src
->
parent_scb_ptr
=
parent_scb
;
/* update entry in DSP RAM */
/* update entry in DSP RAM */
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
snd_cs46xx_poke
(
chip
,
snd_cs46xx_poke
(
chip
,
(
parent_scb
->
address
+
SCBsubListPtr
)
<<
2
,
(
parent_scb
->
address
+
SCBsubListPtr
)
<<
2
,
(
parent_scb
->
sub_list_ptr
->
address
<<
0x10
)
|
(
parent_scb
->
sub_list_ptr
->
address
<<
0x10
)
|
(
parent_scb
->
next_scb_ptr
->
address
));
(
parent_scb
->
next_scb_ptr
->
address
));
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
return
0
;
return
0
;
}
}
sound/usb/usbaudio.c
View file @
f7ce058b
...
@@ -1292,9 +1292,15 @@ void *snd_usb_find_csint_desc(void *buffer, int buflen, void *after, u8 dsubtype
...
@@ -1292,9 +1292,15 @@ void *snd_usb_find_csint_desc(void *buffer, int buflen, void *after, u8 dsubtype
* entry point for linux usb interface
* entry point for linux usb interface
*/
*/
static
void
*
usb_audio_probe
(
struct
usb_device
*
dev
,
unsigned
int
ifnum
,
#ifndef OLD_USB
static
int
usb_audio_probe
(
struct
usb_interface
*
intf
,
const
struct
usb_device_id
*
id
);
static
void
usb_audio_disconnect
(
struct
usb_interface
*
intf
);
#else
static
void
*
usb_audio_probe
(
usb_device
*
dev
,
unsigned
int
ifnum
,
const
struct
usb_device_id
*
id
);
const
struct
usb_device_id
*
id
);
static
void
usb_audio_disconnect
(
struct
usb_device
*
dev
,
void
*
ptr
);
static
void
usb_audio_disconnect
(
struct
usb_device
*
dev
,
void
*
ptr
);
#endif
static
struct
usb_device_id
usb_audio_ids
[]
=
{
static
struct
usb_device_id
usb_audio_ids
[]
=
{
#include "usbquirks.h"
#include "usbquirks.h"
...
@@ -1310,7 +1316,9 @@ static struct usb_driver usb_audio_driver = {
...
@@ -1310,7 +1316,9 @@ static struct usb_driver usb_audio_driver = {
.
name
=
"snd-usb-audio"
,
.
name
=
"snd-usb-audio"
,
.
probe
=
usb_audio_probe
,
.
probe
=
usb_audio_probe
,
.
disconnect
=
usb_audio_disconnect
,
.
disconnect
=
usb_audio_disconnect
,
#ifdef OLD_USB
.
driver_list
=
LIST_HEAD_INIT
(
usb_audio_driver
.
driver_list
),
.
driver_list
=
LIST_HEAD_INIT
(
usb_audio_driver
.
driver_list
),
#endif
.
id_table
=
usb_audio_ids
,
.
id_table
=
usb_audio_ids
,
};
};
...
@@ -2042,9 +2050,18 @@ static int alloc_desc_buffer(struct usb_device *dev, int index, unsigned char **
...
@@ -2042,9 +2050,18 @@ static int alloc_desc_buffer(struct usb_device *dev, int index, unsigned char **
* only at the first time. the successive calls of this function will
* only at the first time. the successive calls of this function will
* append the pcm interface to the corresponding card.
* append the pcm interface to the corresponding card.
*/
*/
#ifndef OLD_USB
static
int
usb_audio_probe
(
struct
usb_interface
*
intf
,
const
struct
usb_device_id
*
id
)
#else
static
void
*
usb_audio_probe
(
struct
usb_device
*
dev
,
unsigned
int
ifnum
,
static
void
*
usb_audio_probe
(
struct
usb_device
*
dev
,
unsigned
int
ifnum
,
const
struct
usb_device_id
*
id
)
const
struct
usb_device_id
*
id
)
#endif
{
{
#ifndef OLD_USB
struct
usb_device
*
dev
=
interface_to_usbdev
(
intf
);
int
ifnum
=
intf
->
altsetting
->
bInterfaceNumber
;
#endif
struct
usb_config_descriptor
*
config
=
dev
->
actconfig
;
struct
usb_config_descriptor
*
config
=
dev
->
actconfig
;
const
snd_usb_audio_quirk_t
*
quirk
=
(
const
snd_usb_audio_quirk_t
*
)
id
->
driver_info
;
const
snd_usb_audio_quirk_t
*
quirk
=
(
const
snd_usb_audio_quirk_t
*
)
id
->
driver_info
;
unsigned
char
*
buffer
;
unsigned
char
*
buffer
;
...
@@ -2054,17 +2071,17 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
...
@@ -2054,17 +2071,17 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
snd_usb_audio_t
*
chip
;
snd_usb_audio_t
*
chip
;
if
(
quirk
&&
ifnum
!=
quirk
->
ifnum
)
if
(
quirk
&&
ifnum
!=
quirk
->
ifnum
)
return
NULL
;
goto
__err_val
;
if
(
usb_set_configuration
(
dev
,
config
->
bConfigurationValue
)
<
0
)
{
if
(
usb_set_configuration
(
dev
,
config
->
bConfigurationValue
)
<
0
)
{
snd_printk
(
KERN_ERR
"cannot set configuration (value 0x%x)
\n
"
,
config
->
bConfigurationValue
);
snd_printk
(
KERN_ERR
"cannot set configuration (value 0x%x)
\n
"
,
config
->
bConfigurationValue
);
return
NULL
;
goto
__err_val
;
}
}
index
=
dev
->
actconfig
-
config
;
index
=
dev
->
actconfig
-
config
;
buflen
=
alloc_desc_buffer
(
dev
,
index
,
&
buffer
);
buflen
=
alloc_desc_buffer
(
dev
,
index
,
&
buffer
);
if
(
buflen
<=
0
)
if
(
buflen
<=
0
)
return
NULL
;
goto
__err_val
;
/*
/*
* found a config. now register to ALSA
* found a config. now register to ALSA
...
@@ -2126,12 +2143,21 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
...
@@ -2126,12 +2143,21 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
chip
->
num_interfaces
++
;
chip
->
num_interfaces
++
;
up
(
&
register_mutex
);
up
(
&
register_mutex
);
kfree
(
buffer
);
kfree
(
buffer
);
#ifndef OLD_USB
return
0
;
#else
return
chip
;
return
chip
;
#endif
__error
:
__error
:
up
(
&
register_mutex
);
up
(
&
register_mutex
);
kfree
(
buffer
);
kfree
(
buffer
);
__err_val
:
#ifndef OLD_USB
return
-
EIO
;
#else
return
NULL
;
return
NULL
;
#endif
}
}
...
@@ -2139,8 +2165,15 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
...
@@ -2139,8 +2165,15 @@ static void *usb_audio_probe(struct usb_device *dev, unsigned int ifnum,
* we need to take care of counter, since disconnection can be called also
* we need to take care of counter, since disconnection can be called also
* many times as well as usb_audio_probe().
* many times as well as usb_audio_probe().
*/
*/
#ifndef OLD_USB
static
void
usb_audio_disconnect
(
struct
usb_interface
*
intf
)
#else
static
void
usb_audio_disconnect
(
struct
usb_device
*
dev
,
void
*
ptr
)
static
void
usb_audio_disconnect
(
struct
usb_device
*
dev
,
void
*
ptr
)
#endif
{
{
#ifndef OLD_USB
void
*
ptr
=
dev_get_drvdata
(
&
intf
->
dev
);
#endif
snd_usb_audio_t
*
chip
;
snd_usb_audio_t
*
chip
;
if
(
ptr
==
(
void
*
)
-
1
)
if
(
ptr
==
(
void
*
)
-
1
)
...
...
sound/usb/usbmidi.c
View file @
f7ce058b
...
@@ -479,6 +479,22 @@ static void snd_usbmidi_in_endpoint_delete(snd_usb_midi_in_endpoint_t* ep)
...
@@ -479,6 +479,22 @@ static void snd_usbmidi_in_endpoint_delete(snd_usb_midi_in_endpoint_t* ep)
snd_magic_kfree
(
ep
);
snd_magic_kfree
(
ep
);
}
}
#ifndef OLD_USB
/* this code is not exported from USB core anymore */
struct
usb_interface
*
local_usb_ifnum_to_if
(
struct
usb_device
*
dev
,
unsigned
ifnum
)
{
int
i
;
for
(
i
=
0
;
i
<
dev
->
actconfig
->
bNumInterfaces
;
i
++
)
if
(
dev
->
actconfig
->
interface
[
i
].
altsetting
[
0
].
bInterfaceNumber
==
ifnum
)
return
&
dev
->
actconfig
->
interface
[
i
];
return
NULL
;
}
#else
#define local_usb_ifnum_to_if usb_ifnum_to_if
#endif
/*
/*
* For Roland devices, use the alternate setting which uses interrupt
* For Roland devices, use the alternate setting which uses interrupt
* transfers for input.
* transfers for input.
...
@@ -491,7 +507,7 @@ static usb_endpoint_descriptor_t* snd_usbmidi_get_int_epd(snd_usb_midi_t* umidi,
...
@@ -491,7 +507,7 @@ static usb_endpoint_descriptor_t* snd_usbmidi_get_int_epd(snd_usb_midi_t* umidi,
if
(
umidi
->
chip
->
dev
->
descriptor
.
idVendor
!=
0x0582
)
if
(
umidi
->
chip
->
dev
->
descriptor
.
idVendor
!=
0x0582
)
return
NULL
;
return
NULL
;
intf
=
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
intf
=
local_
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
if
(
!
intf
||
intf
->
num_altsetting
!=
2
)
if
(
!
intf
||
intf
->
num_altsetting
!=
2
)
return
NULL
;
return
NULL
;
...
@@ -803,7 +819,7 @@ static int snd_usbmidi_get_ms_info(snd_usb_midi_t* umidi,
...
@@ -803,7 +819,7 @@ static int snd_usbmidi_get_ms_info(snd_usb_midi_t* umidi,
memset
(
endpoints
,
0
,
sizeof
(
*
endpoints
)
*
MIDI_MAX_ENDPOINTS
);
memset
(
endpoints
,
0
,
sizeof
(
*
endpoints
)
*
MIDI_MAX_ENDPOINTS
);
intf
=
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
intf
=
local_
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
if
(
!
intf
)
if
(
!
intf
)
return
-
ENXIO
;
return
-
ENXIO
;
intfd
=
&
intf
->
altsetting
[
0
];
intfd
=
&
intf
->
altsetting
[
0
];
...
@@ -862,7 +878,7 @@ static int snd_usbmidi_detect_endpoint(snd_usb_midi_t* umidi,
...
@@ -862,7 +878,7 @@ static int snd_usbmidi_detect_endpoint(snd_usb_midi_t* umidi,
usb_endpoint_descriptor_t
*
epd
;
usb_endpoint_descriptor_t
*
epd
;
if
(
endpoint
->
epnum
==
-
1
)
{
if
(
endpoint
->
epnum
==
-
1
)
{
intf
=
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
intf
=
local_
usb_ifnum_to_if
(
umidi
->
chip
->
dev
,
umidi
->
ifnum
);
if
(
!
intf
||
intf
->
num_altsetting
<
1
)
if
(
!
intf
||
intf
->
num_altsetting
<
1
)
return
-
ENOENT
;
return
-
ENOENT
;
intfd
=
intf
->
altsetting
;
intfd
=
intf
->
altsetting
;
...
...
sound/usb/usbmixer.c
View file @
f7ce058b
...
@@ -60,7 +60,7 @@ struct usb_mixer_build {
...
@@ -60,7 +60,7 @@ struct usb_mixer_build {
unsigned
char
*
buffer
;
unsigned
char
*
buffer
;
unsigned
int
buflen
;
unsigned
int
buflen
;
unsigned
int
ctrlif
;
unsigned
int
ctrlif
;
unsigned
long
unitbitmap
[
32
/
sizeof
(
unsigned
long
)]
;
DECLARE_BITMAP
(
unitbitmap
,
32
*
32
)
;
usb_audio_term_t
oterm
;
usb_audio_term_t
oterm
;
};
};
...
@@ -1252,7 +1252,7 @@ static int parse_audio_unit(mixer_build_t *state, int unitid)
...
@@ -1252,7 +1252,7 @@ static int parse_audio_unit(mixer_build_t *state, int unitid)
{
{
unsigned
char
*
p1
;
unsigned
char
*
p1
;
if
(
test_and_set_bit
(
unitid
,
&
state
->
unitbitmap
))
if
(
test_and_set_bit
(
unitid
,
state
->
unitbitmap
))
return
0
;
/* the unit already visited */
return
0
;
/* the unit already visited */
p1
=
find_audio_control_unit
(
state
,
unitid
);
p1
=
find_audio_control_unit
(
state
,
unitid
);
...
@@ -1302,7 +1302,7 @@ int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif, unsigned char *buffe
...
@@ -1302,7 +1302,7 @@ int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif, unsigned char *buffe
while
((
desc
=
snd_usb_find_csint_desc
(
buffer
,
buflen
,
desc
,
OUTPUT_TERMINAL
,
ctrlif
,
-
1
))
!=
NULL
)
{
while
((
desc
=
snd_usb_find_csint_desc
(
buffer
,
buflen
,
desc
,
OUTPUT_TERMINAL
,
ctrlif
,
-
1
))
!=
NULL
)
{
if
(
desc
[
0
]
<
9
)
if
(
desc
[
0
]
<
9
)
continue
;
/* invalid descriptor? */
continue
;
/* invalid descriptor? */
set_bit
(
desc
[
3
],
&
state
.
unitbitmap
);
/* mark terminal ID as visited */
set_bit
(
desc
[
3
],
state
.
unitbitmap
);
/* mark terminal ID as visited */
state
.
oterm
.
id
=
desc
[
3
];
state
.
oterm
.
id
=
desc
[
3
];
state
.
oterm
.
type
=
combine_word
(
&
desc
[
4
]);
state
.
oterm
.
type
=
combine_word
(
&
desc
[
4
]);
state
.
oterm
.
name
=
desc
[
8
];
state
.
oterm
.
name
=
desc
[
8
];
...
...
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