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
e4080577
Commit
e4080577
authored
Apr 26, 2016
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/fix/intel' into asoc-linus
parents
f179f3f8
f0c8e1d9
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
32 deletions
+63
-32
sound/hda/ext/hdac_ext_stream.c
sound/hda/ext/hdac_ext_stream.c
+2
-3
sound/soc/intel/Kconfig
sound/soc/intel/Kconfig
+0
-1
sound/soc/intel/haswell/sst-haswell-ipc.c
sound/soc/intel/haswell/sst-haswell-ipc.c
+1
-1
sound/soc/intel/skylake/skl-sst-dsp.c
sound/soc/intel/skylake/skl-sst-dsp.c
+5
-0
sound/soc/intel/skylake/skl-topology.c
sound/soc/intel/skylake/skl-topology.c
+28
-14
sound/soc/intel/skylake/skl-topology.h
sound/soc/intel/skylake/skl-topology.h
+4
-4
sound/soc/intel/skylake/skl.c
sound/soc/intel/skylake/skl.c
+23
-9
No files found.
sound/hda/ext/hdac_ext_stream.c
View file @
e4080577
...
...
@@ -104,12 +104,11 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_init_all);
*/
void
snd_hdac_stream_free_all
(
struct
hdac_ext_bus
*
ebus
)
{
struct
hdac_stream
*
s
;
struct
hdac_stream
*
s
,
*
_s
;
struct
hdac_ext_stream
*
stream
;
struct
hdac_bus
*
bus
=
ebus_to_hbus
(
ebus
);
while
(
!
list_empty
(
&
bus
->
stream_list
))
{
s
=
list_first_entry
(
&
bus
->
stream_list
,
struct
hdac_stream
,
list
);
list_for_each_entry_safe
(
s
,
_s
,
&
bus
->
stream_list
,
list
)
{
stream
=
stream_to_hdac_ext_stream
(
s
);
snd_hdac_ext_stream_decouple
(
ebus
,
stream
,
false
);
list_del
(
&
s
->
list
);
...
...
sound/soc/intel/Kconfig
View file @
e4080577
...
...
@@ -163,7 +163,6 @@ config SND_SOC_INTEL_SKYLAKE
tristate
select SND_HDA_EXT_CORE
select SND_SOC_TOPOLOGY
select SND_HDA_I915
select SND_SOC_INTEL_SST
config SND_SOC_INTEL_SKL_RT286_MACH
...
...
sound/soc/intel/haswell/sst-haswell-ipc.c
View file @
e4080577
...
...
@@ -1345,7 +1345,7 @@ int sst_hsw_stream_reset(struct sst_hsw *hsw, struct sst_hsw_stream *stream)
return
0
;
/* wait for pause to complete before we reset the stream */
while
(
stream
->
running
&&
tries
--
)
while
(
stream
->
running
&&
--
tries
)
msleep
(
1
);
if
(
!
tries
)
{
dev_err
(
hsw
->
dev
,
"error: reset stream %d still running
\n
"
,
...
...
sound/soc/intel/skylake/skl-sst-dsp.c
View file @
e4080577
...
...
@@ -336,6 +336,11 @@ void skl_dsp_free(struct sst_dsp *dsp)
skl_ipc_int_disable
(
dsp
);
free_irq
(
dsp
->
irq
,
dsp
);
dsp
->
cl_dev
.
ops
.
cl_cleanup_controller
(
dsp
);
skl_cldma_int_disable
(
dsp
);
skl_ipc_op_int_disable
(
dsp
);
skl_ipc_int_disable
(
dsp
);
skl_dsp_disable_core
(
dsp
);
}
EXPORT_SYMBOL_GPL
(
skl_dsp_free
);
...
...
sound/soc/intel/skylake/skl-topology.c
View file @
e4080577
...
...
@@ -239,6 +239,7 @@ static void skl_tplg_update_buffer_size(struct skl_sst *ctx,
{
int
multiplier
=
1
;
struct
skl_module_fmt
*
in_fmt
,
*
out_fmt
;
int
in_rate
,
out_rate
;
/* Since fixups is applied to pin 0 only, ibs, obs needs
...
...
@@ -249,13 +250,22 @@ static void skl_tplg_update_buffer_size(struct skl_sst *ctx,
if
(
mcfg
->
m_type
==
SKL_MODULE_TYPE_SRCINT
)
multiplier
=
5
;
mcfg
->
ibs
=
(
in_fmt
->
s_freq
/
1000
)
*
(
mcfg
->
in_fmt
->
channels
)
*
if
(
in_fmt
->
s_freq
%
1000
)
in_rate
=
(
in_fmt
->
s_freq
/
1000
)
+
1
;
else
in_rate
=
(
in_fmt
->
s_freq
/
1000
);
mcfg
->
ibs
=
in_rate
*
(
mcfg
->
in_fmt
->
channels
)
*
(
mcfg
->
in_fmt
->
bit_depth
>>
3
)
*
multiplier
;
mcfg
->
obs
=
(
mcfg
->
out_fmt
->
s_freq
/
1000
)
*
(
mcfg
->
out_fmt
->
channels
)
*
if
(
mcfg
->
out_fmt
->
s_freq
%
1000
)
out_rate
=
(
mcfg
->
out_fmt
->
s_freq
/
1000
)
+
1
;
else
out_rate
=
(
mcfg
->
out_fmt
->
s_freq
/
1000
);
mcfg
->
obs
=
out_rate
*
(
mcfg
->
out_fmt
->
channels
)
*
(
mcfg
->
out_fmt
->
bit_depth
>>
3
)
*
multiplier
;
}
...
...
@@ -485,11 +495,15 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe)
if
(
!
skl_is_pipe_mcps_avail
(
skl
,
mconfig
))
return
-
ENOMEM
;
skl_tplg_alloc_pipe_mcps
(
skl
,
mconfig
);
if
(
mconfig
->
is_loadable
&&
ctx
->
dsp
->
fw_ops
.
load_mod
)
{
ret
=
ctx
->
dsp
->
fw_ops
.
load_mod
(
ctx
->
dsp
,
mconfig
->
id
.
module_id
,
mconfig
->
guid
);
if
(
ret
<
0
)
return
ret
;
mconfig
->
m_state
=
SKL_MODULE_LOADED
;
}
/* update blob if blob is null for be with default value */
...
...
@@ -509,7 +523,6 @@ skl_tplg_init_pipe_modules(struct skl *skl, struct skl_pipe *pipe)
ret
=
skl_tplg_set_module_params
(
w
,
ctx
);
if
(
ret
<
0
)
return
ret
;
skl_tplg_alloc_pipe_mcps
(
skl
,
mconfig
);
}
return
0
;
...
...
@@ -524,7 +537,8 @@ static int skl_tplg_unload_pipe_modules(struct skl_sst *ctx,
list_for_each_entry
(
w_module
,
&
pipe
->
w_list
,
node
)
{
mconfig
=
w_module
->
w
->
priv
;
if
(
mconfig
->
is_loadable
&&
ctx
->
dsp
->
fw_ops
.
unload_mod
)
if
(
mconfig
->
is_loadable
&&
ctx
->
dsp
->
fw_ops
.
unload_mod
&&
mconfig
->
m_state
>
SKL_MODULE_UNINIT
)
return
ctx
->
dsp
->
fw_ops
.
unload_mod
(
ctx
->
dsp
,
mconfig
->
id
.
module_id
);
}
...
...
@@ -558,6 +572,9 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w,
if
(
!
skl_is_pipe_mem_avail
(
skl
,
mconfig
))
return
-
ENOMEM
;
skl_tplg_alloc_pipe_mem
(
skl
,
mconfig
);
skl_tplg_alloc_pipe_mcps
(
skl
,
mconfig
);
/*
* Create a list of modules for pipe.
* This list contains modules from source to sink
...
...
@@ -601,9 +618,6 @@ static int skl_tplg_mixer_dapm_pre_pmu_event(struct snd_soc_dapm_widget *w,
src_module
=
dst_module
;
}
skl_tplg_alloc_pipe_mem
(
skl
,
mconfig
);
skl_tplg_alloc_pipe_mcps
(
skl
,
mconfig
);
return
0
;
}
...
...
sound/soc/intel/skylake/skl-topology.h
View file @
e4080577
...
...
@@ -274,10 +274,10 @@ struct skl_pipe {
enum
skl_module_state
{
SKL_MODULE_UNINIT
=
0
,
SKL_MODULE_
INIT_DONE
=
1
,
SKL_MODULE_
LOADED
=
2
,
SKL_MODULE_
UNLOADED
=
3
,
SKL_MODULE_
BIND_DONE
=
4
SKL_MODULE_
LOADED
=
1
,
SKL_MODULE_
INIT_DONE
=
2
,
SKL_MODULE_
BIND_DONE
=
3
,
SKL_MODULE_
UNLOADED
=
4
,
};
struct
skl_module_cfg
{
...
...
sound/soc/intel/skylake/skl.c
View file @
e4080577
...
...
@@ -222,6 +222,7 @@ static int skl_suspend(struct device *dev)
struct
hdac_ext_bus
*
ebus
=
pci_get_drvdata
(
pci
);
struct
skl
*
skl
=
ebus_to_skl
(
ebus
);
struct
hdac_bus
*
bus
=
ebus_to_hbus
(
ebus
);
int
ret
=
0
;
/*
* Do not suspend if streams which are marked ignore suspend are
...
...
@@ -232,10 +233,20 @@ static int skl_suspend(struct device *dev)
enable_irq_wake
(
bus
->
irq
);
pci_save_state
(
pci
);
pci_disable_device
(
pci
);
return
0
;
}
else
{
return
_skl_suspend
(
ebus
);
ret
=
_skl_suspend
(
ebus
);
if
(
ret
<
0
)
return
ret
;
}
if
(
IS_ENABLED
(
CONFIG_SND_SOC_HDAC_HDMI
))
{
ret
=
snd_hdac_display_power
(
bus
,
false
);
if
(
ret
<
0
)
dev_err
(
bus
->
dev
,
"Cannot turn OFF display power on i915
\n
"
);
}
return
ret
;
}
static
int
skl_resume
(
struct
device
*
dev
)
...
...
@@ -316,17 +327,20 @@ static int skl_free(struct hdac_ext_bus *ebus)
if
(
bus
->
irq
>=
0
)
free_irq
(
bus
->
irq
,
(
void
*
)
bus
);
if
(
bus
->
remap_addr
)
iounmap
(
bus
->
remap_addr
);
snd_hdac_bus_free_stream_pages
(
bus
);
snd_hdac_stream_free_all
(
ebus
);
snd_hdac_link_free_all
(
ebus
);
if
(
bus
->
remap_addr
)
iounmap
(
bus
->
remap_addr
);
pci_release_regions
(
skl
->
pci
);
pci_disable_device
(
skl
->
pci
);
snd_hdac_ext_bus_exit
(
ebus
);
if
(
IS_ENABLED
(
CONFIG_SND_SOC_HDAC_HDMI
))
snd_hdac_i915_exit
(
&
ebus
->
bus
);
return
0
;
}
...
...
@@ -719,12 +733,12 @@ static void skl_remove(struct pci_dev *pci)
if
(
skl
->
tplg
)
release_firmware
(
skl
->
tplg
);
if
(
IS_ENABLED
(
CONFIG_SND_SOC_HDAC_HDMI
))
snd_hdac_i915_exit
(
&
ebus
->
bus
);
if
(
pci_dev_run_wake
(
pci
))
pm_runtime_get_noresume
(
&
pci
->
dev
);
pci_dev_put
(
pci
);
/* codec removal, invoke bus_device_remove */
snd_hdac_ext_bus_device_remove
(
ebus
);
skl_platform_unregister
(
&
pci
->
dev
);
skl_free_dsp
(
skl
);
skl_machine_device_unregister
(
skl
);
...
...
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