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
70f7922c
Commit
70f7922c
authored
6 years ago
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/pcm-indirect-fixes' into for-next
Signed-off-by:
Takashi Iwai
<
tiwai@suse.de
>
parents
b917d58d
d873d5ea
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
30 additions
and
43 deletions
+30
-43
sound/core/rawmidi.c
sound/core/rawmidi.c
+2
-2
sound/hda/ext/hdac_ext_stream.c
sound/hda/ext/hdac_ext_stream.c
+7
-15
sound/mips/hal2.c
sound/mips/hal2.c
+5
-8
sound/pci/cs46xx/cs46xx_lib.c
sound/pci/cs46xx/cs46xx_lib.c
+4
-2
sound/pci/emu10k1/emupcm.c
sound/pci/emu10k1/emupcm.c
+2
-1
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+2
-1
sound/pci/rme32.c
sound/pci/rme32.c
+8
-14
No files found.
sound/core/rawmidi.c
View file @
70f7922c
...
...
@@ -129,7 +129,7 @@ static int snd_rawmidi_runtime_create(struct snd_rawmidi_substream *substream)
runtime
->
avail
=
0
;
else
runtime
->
avail
=
runtime
->
buffer_size
;
runtime
->
buffer
=
kv
m
alloc
(
runtime
->
buffer_size
,
GFP_KERNEL
);
runtime
->
buffer
=
kv
z
alloc
(
runtime
->
buffer_size
,
GFP_KERNEL
);
if
(
!
runtime
->
buffer
)
{
kfree
(
runtime
);
return
-
ENOMEM
;
...
...
@@ -655,7 +655,7 @@ static int resize_runtime_buffer(struct snd_rawmidi_runtime *runtime,
if
(
params
->
avail_min
<
1
||
params
->
avail_min
>
params
->
buffer_size
)
return
-
EINVAL
;
if
(
params
->
buffer_size
!=
runtime
->
buffer_size
)
{
newbuf
=
kv
m
alloc
(
params
->
buffer_size
,
GFP_KERNEL
);
newbuf
=
kv
z
alloc
(
params
->
buffer_size
,
GFP_KERNEL
);
if
(
!
newbuf
)
return
-
ENOMEM
;
spin_lock_irq
(
&
runtime
->
lock
);
...
...
This diff is collapsed.
Click to expand it.
sound/hda/ext/hdac_ext_stream.c
View file @
70f7922c
...
...
@@ -146,7 +146,8 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_decouple);
*/
void
snd_hdac_ext_link_stream_start
(
struct
hdac_ext_stream
*
stream
)
{
snd_hdac_updatel
(
stream
->
pplc_addr
,
AZX_REG_PPLCCTL
,
0
,
AZX_PPLCCTL_RUN
);
snd_hdac_updatel
(
stream
->
pplc_addr
,
AZX_REG_PPLCCTL
,
AZX_PPLCCTL_RUN
,
AZX_PPLCCTL_RUN
);
}
EXPORT_SYMBOL_GPL
(
snd_hdac_ext_link_stream_start
);
...
...
@@ -171,7 +172,8 @@ void snd_hdac_ext_link_stream_reset(struct hdac_ext_stream *stream)
snd_hdac_ext_link_stream_clear
(
stream
);
snd_hdac_updatel
(
stream
->
pplc_addr
,
AZX_REG_PPLCCTL
,
0
,
AZX_PPLCCTL_STRST
);
snd_hdac_updatel
(
stream
->
pplc_addr
,
AZX_REG_PPLCCTL
,
AZX_PPLCCTL_STRST
,
AZX_PPLCCTL_STRST
);
udelay
(
3
);
timeout
=
50
;
do
{
...
...
@@ -242,7 +244,7 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_link_set_stream_id);
void
snd_hdac_ext_link_clear_stream_id
(
struct
hdac_ext_link
*
link
,
int
stream
)
{
snd_hdac_updatew
(
link
->
ml_addr
,
AZX_REG_ML_LOSIDV
,
0
,
(
1
<<
stream
)
);
snd_hdac_updatew
(
link
->
ml_addr
,
AZX_REG_ML_LOSIDV
,
(
1
<<
stream
),
0
);
}
EXPORT_SYMBOL_GPL
(
snd_hdac_ext_link_clear_stream_id
);
...
...
@@ -415,7 +417,6 @@ void snd_hdac_ext_stream_spbcap_enable(struct hdac_bus *bus,
bool
enable
,
int
index
)
{
u32
mask
=
0
;
u32
register_mask
=
0
;
if
(
!
bus
->
spbcap
)
{
dev_err
(
bus
->
dev
,
"Address of SPB capability is NULL
\n
"
);
...
...
@@ -424,12 +425,8 @@ void snd_hdac_ext_stream_spbcap_enable(struct hdac_bus *bus,
mask
|=
(
1
<<
index
);
register_mask
=
readl
(
bus
->
spbcap
+
AZX_REG_SPB_SPBFCCTL
);
mask
|=
register_mask
;
if
(
enable
)
snd_hdac_updatel
(
bus
->
spbcap
,
AZX_REG_SPB_SPBFCCTL
,
0
,
mask
);
snd_hdac_updatel
(
bus
->
spbcap
,
AZX_REG_SPB_SPBFCCTL
,
mask
,
mask
);
else
snd_hdac_updatel
(
bus
->
spbcap
,
AZX_REG_SPB_SPBFCCTL
,
mask
,
0
);
}
...
...
@@ -503,7 +500,6 @@ void snd_hdac_ext_stream_drsm_enable(struct hdac_bus *bus,
bool
enable
,
int
index
)
{
u32
mask
=
0
;
u32
register_mask
=
0
;
if
(
!
bus
->
drsmcap
)
{
dev_err
(
bus
->
dev
,
"Address of DRSM capability is NULL
\n
"
);
...
...
@@ -512,12 +508,8 @@ void snd_hdac_ext_stream_drsm_enable(struct hdac_bus *bus,
mask
|=
(
1
<<
index
);
register_mask
=
readl
(
bus
->
drsmcap
+
AZX_REG_SPB_SPBFCCTL
);
mask
|=
register_mask
;
if
(
enable
)
snd_hdac_updatel
(
bus
->
drsmcap
,
AZX_REG_DRSM_CTL
,
0
,
mask
);
snd_hdac_updatel
(
bus
->
drsmcap
,
AZX_REG_DRSM_CTL
,
mask
,
mask
);
else
snd_hdac_updatel
(
bus
->
drsmcap
,
AZX_REG_DRSM_CTL
,
mask
,
0
);
}
...
...
This diff is collapsed.
Click to expand it.
sound/mips/hal2.c
View file @
70f7922c
...
...
@@ -500,7 +500,8 @@ static const struct snd_pcm_hardware hal2_pcm_hw = {
.
info
=
(
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_BLOCK_TRANSFER
),
SNDRV_PCM_INFO_BLOCK_TRANSFER
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
SNDRV_PCM_FMTBIT_S16_BE
,
.
rates
=
SNDRV_PCM_RATE_8000_48000
,
.
rate_min
=
8000
,
...
...
@@ -563,6 +564,8 @@ static int hal2_playback_prepare(struct snd_pcm_substream *substream)
dac
->
sample_rate
=
hal2_compute_rate
(
dac
,
runtime
->
rate
);
memset
(
&
dac
->
pcm_indirect
,
0
,
sizeof
(
dac
->
pcm_indirect
));
dac
->
pcm_indirect
.
hw_buffer_size
=
H2_BUF_SIZE
;
dac
->
pcm_indirect
.
hw_queue_size
=
H2_BUF_SIZE
/
2
;
dac
->
pcm_indirect
.
hw_io
=
dac
->
buffer_dma
;
dac
->
pcm_indirect
.
sw_buffer_size
=
snd_pcm_lib_buffer_bytes
(
substream
);
dac
->
substream
=
substream
;
hal2_setup_dac
(
hal2
);
...
...
@@ -575,9 +578,6 @@ static int hal2_playback_trigger(struct snd_pcm_substream *substream, int cmd)
switch
(
cmd
)
{
case
SNDRV_PCM_TRIGGER_START
:
hal2
->
dac
.
pcm_indirect
.
hw_io
=
hal2
->
dac
.
buffer_dma
;
hal2
->
dac
.
pcm_indirect
.
hw_data
=
0
;
substream
->
ops
->
ack
(
substream
);
hal2_start_dac
(
hal2
);
break
;
case
SNDRV_PCM_TRIGGER_STOP
:
...
...
@@ -615,7 +615,6 @@ static int hal2_playback_ack(struct snd_pcm_substream *substream)
struct
snd_hal2
*
hal2
=
snd_pcm_substream_chip
(
substream
);
struct
hal2_codec
*
dac
=
&
hal2
->
dac
;
dac
->
pcm_indirect
.
hw_queue_size
=
H2_BUF_SIZE
/
2
;
return
snd_pcm_indirect_playback_transfer
(
substream
,
&
dac
->
pcm_indirect
,
hal2_playback_transfer
);
...
...
@@ -655,6 +654,7 @@ static int hal2_capture_prepare(struct snd_pcm_substream *substream)
memset
(
&
adc
->
pcm_indirect
,
0
,
sizeof
(
adc
->
pcm_indirect
));
adc
->
pcm_indirect
.
hw_buffer_size
=
H2_BUF_SIZE
;
adc
->
pcm_indirect
.
hw_queue_size
=
H2_BUF_SIZE
/
2
;
adc
->
pcm_indirect
.
hw_io
=
adc
->
buffer_dma
;
adc
->
pcm_indirect
.
sw_buffer_size
=
snd_pcm_lib_buffer_bytes
(
substream
);
adc
->
substream
=
substream
;
hal2_setup_adc
(
hal2
);
...
...
@@ -667,9 +667,6 @@ static int hal2_capture_trigger(struct snd_pcm_substream *substream, int cmd)
switch
(
cmd
)
{
case
SNDRV_PCM_TRIGGER_START
:
hal2
->
adc
.
pcm_indirect
.
hw_io
=
hal2
->
adc
.
buffer_dma
;
hal2
->
adc
.
pcm_indirect
.
hw_data
=
0
;
printk
(
KERN_DEBUG
"buffer_dma %x
\n
"
,
hal2
->
adc
.
buffer_dma
);
hal2_start_adc
(
hal2
);
break
;
case
SNDRV_PCM_TRIGGER_STOP
:
...
...
This diff is collapsed.
Click to expand it.
sound/pci/cs46xx/cs46xx_lib.c
View file @
70f7922c
...
...
@@ -1443,7 +1443,8 @@ static const struct snd_pcm_hardware snd_cs46xx_playback =
.
info
=
(
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_BLOCK_TRANSFER
/*|*/
/*SNDRV_PCM_INFO_RESUME*/
),
/*SNDRV_PCM_INFO_RESUME*/
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
(
SNDRV_PCM_FMTBIT_S8
|
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S16_BE
|
SNDRV_PCM_FMTBIT_U16_LE
|
SNDRV_PCM_FMTBIT_U16_BE
),
...
...
@@ -1465,7 +1466,8 @@ static const struct snd_pcm_hardware snd_cs46xx_capture =
.
info
=
(
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_BLOCK_TRANSFER
/*|*/
/*SNDRV_PCM_INFO_RESUME*/
),
/*SNDRV_PCM_INFO_RESUME*/
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
SNDRV_PCM_RATE_CONTINUOUS
|
SNDRV_PCM_RATE_8000_48000
,
.
rate_min
=
5500
,
...
...
This diff is collapsed.
Click to expand it.
sound/pci/emu10k1/emupcm.c
View file @
70f7922c
...
...
@@ -1753,7 +1753,8 @@ static const struct snd_pcm_hardware snd_emu10k1_fx8010_playback =
{
.
info
=
(
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_RESUME
|
/* SNDRV_PCM_INFO_MMAP_VALID | */
SNDRV_PCM_INFO_PAUSE
),
/* SNDRV_PCM_INFO_MMAP_VALID | */
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
SNDRV_PCM_RATE_48000
,
.
rate_min
=
48000
,
...
...
This diff is collapsed.
Click to expand it.
sound/pci/hda/hda_codec.c
View file @
70f7922c
...
...
@@ -3935,7 +3935,8 @@ void snd_hda_bus_reset_codecs(struct hda_bus *bus)
list_for_each_codec
(
codec
,
bus
)
{
/* FIXME: maybe a better way needed for forced reset */
cancel_delayed_work_sync
(
&
codec
->
jackpoll_work
);
if
(
current_work
()
!=
&
codec
->
jackpoll_work
.
work
)
cancel_delayed_work_sync
(
&
codec
->
jackpoll_work
);
#ifdef CONFIG_PM
if
(
hda_codec_is_power_on
(
codec
))
{
hda_call_codec_suspend
(
codec
);
...
...
This diff is collapsed.
Click to expand it.
sound/pci/rme32.c
View file @
70f7922c
...
...
@@ -319,7 +319,8 @@ static const struct snd_pcm_hardware snd_rme32_spdif_info = {
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
),
SNDRV_PCM_INFO_SYNC_START
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
(
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S32_LE
),
.
rates
=
(
SNDRV_PCM_RATE_32000
|
...
...
@@ -346,7 +347,8 @@ static const struct snd_pcm_hardware snd_rme32_adat_info =
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
),
SNDRV_PCM_INFO_SYNC_START
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
(
SNDRV_PCM_RATE_44100
|
SNDRV_PCM_RATE_48000
),
...
...
@@ -370,7 +372,8 @@ static const struct snd_pcm_hardware snd_rme32_spdif_fd_info = {
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
),
SNDRV_PCM_INFO_SYNC_START
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
(
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S32_LE
),
.
rates
=
(
SNDRV_PCM_RATE_32000
|
...
...
@@ -397,7 +400,8 @@ static const struct snd_pcm_hardware snd_rme32_adat_fd_info =
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_INTERLEAVED
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_SYNC_START
),
SNDRV_PCM_INFO_SYNC_START
|
SNDRV_PCM_INFO_SYNC_APPLPTR
),
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
,
.
rates
=
(
SNDRV_PCM_RATE_44100
|
SNDRV_PCM_RATE_48000
),
...
...
@@ -1104,16 +1108,6 @@ snd_rme32_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
snd_pcm_trigger_done
(
s
,
substream
);
}
/* prefill playback buffer */
if
(
cmd
==
SNDRV_PCM_TRIGGER_START
&&
rme32
->
fullduplex_mode
)
{
snd_pcm_group_for_each_entry
(
s
,
substream
)
{
if
(
s
==
rme32
->
playback_substream
)
{
s
->
ops
->
ack
(
s
);
break
;
}
}
}
switch
(
cmd
)
{
case
SNDRV_PCM_TRIGGER_START
:
if
(
rme32
->
running
&&
!
RME32_ISWORKING
(
rme32
))
...
...
This diff is collapsed.
Click to expand it.
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