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
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
Hide 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,15 +250,24 @@ 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
)
*
(
mcfg
->
in_fmt
->
bit_depth
>>
3
)
*
multiplier
;
mcfg
->
obs
=
(
mcfg
->
out_fmt
->
s_freq
/
1000
)
*
(
mcfg
->
out_fmt
->
channels
)
*
(
mcfg
->
out_fmt
->
bit_depth
>>
3
)
*
multiplier
;
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
;
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
;
}
static
int
skl_tplg_update_be_blob
(
struct
snd_soc_dapm_widget
*
w
,
...
...
@@ -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