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
Sep 04, 2018
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
);
...
...
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
);
}
...
...
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
:
...
...
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
,
...
...
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
,
...
...
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
);
...
...
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
))
...
...
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