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
20230620
Commit
20230620
authored
Jan 23, 2020
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'asoc-5.5' into asoc-linus
parents
def9d278
8ce1cbd6
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
144 additions
and
78 deletions
+144
-78
sound/soc/codecs/cs47l15.c
sound/soc/codecs/cs47l15.c
+12
-1
sound/soc/codecs/cs47l35.c
sound/soc/codecs/cs47l35.c
+11
-1
sound/soc/codecs/cs47l85.c
sound/soc/codecs/cs47l85.c
+8
-1
sound/soc/codecs/cs47l90.c
sound/soc/codecs/cs47l90.c
+8
-1
sound/soc/codecs/cs47l92.c
sound/soc/codecs/cs47l92.c
+13
-1
sound/soc/codecs/madera.c
sound/soc/codecs/madera.c
+10
-3
sound/soc/codecs/madera.h
sound/soc/codecs/madera.h
+3
-1
sound/soc/codecs/wm_adsp.c
sound/soc/codecs/wm_adsp.c
+51
-47
sound/soc/intel/boards/skl_hda_dsp_common.c
sound/soc/intel/boards/skl_hda_dsp_common.c
+12
-9
sound/soc/soc-generic-dmaengine-pcm.c
sound/soc/soc-generic-dmaengine-pcm.c
+9
-7
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+2
-2
sound/soc/soc-topology.c
sound/soc/soc-topology.c
+4
-3
sound/soc/sof/intel/hda.h
sound/soc/sof/intel/hda.h
+1
-1
No files found.
sound/soc/codecs/cs47l15.c
View file @
20230620
...
...
@@ -529,6 +529,7 @@ SND_SOC_DAPM_OUTPUT("DRC2 Signal Activity"),
SND_SOC_DAPM_OUTPUT
(
"DSP Trigger Out"
),
SND_SOC_DAPM_DEMUX
(
"HPOUT1 Demux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l15_outdemux
),
SND_SOC_DAPM_MUX
(
"HPOUT1 Mono Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l15_outdemux
),
SND_SOC_DAPM_PGA
(
"PWM1 Driver"
,
MADERA_PWM_DRIVE_1
,
MADERA_PWM1_ENA_SHIFT
,
0
,
NULL
,
0
),
...
...
@@ -1084,6 +1085,9 @@ static const struct snd_soc_dapm_route cs47l15_dapm_routes[] = {
{
"AEC2 Loopback"
,
"HPOUT1R"
,
"OUT1R"
},
{
"HPOUT1 Demux"
,
NULL
,
"OUT1L"
},
{
"HPOUT1 Demux"
,
NULL
,
"OUT1R"
},
{
"OUT1R"
,
NULL
,
"HPOUT1 Mono Mux"
},
{
"HPOUTL"
,
"HPOUT"
,
"HPOUT1 Demux"
},
{
"HPOUTR"
,
"HPOUT"
,
"HPOUT1 Demux"
},
{
"EPOUTP"
,
"EPOUT"
,
"HPOUT1 Demux"
},
...
...
@@ -1261,6 +1265,11 @@ static irqreturn_t cs47l15_adsp2_irq(int irq, void *data)
return
IRQ_HANDLED
;
}
static
const
struct
snd_soc_dapm_route
cs47l15_mono_routes
[]
=
{
{
"HPOUT1 Mono Mux"
,
"HPOUT"
,
"OUT1L"
},
{
"HPOUT1 Mono Mux"
,
"EPOUT"
,
"OUT1L"
},
};
static
int
cs47l15_component_probe
(
struct
snd_soc_component
*
component
)
{
struct
cs47l15
*
cs47l15
=
snd_soc_component_get_drvdata
(
component
);
...
...
@@ -1277,7 +1286,9 @@ static int cs47l15_component_probe(struct snd_soc_component *component)
if
(
ret
)
return
ret
;
ret
=
madera_init_outputs
(
component
,
CS47L15_MONO_OUTPUTS
);
ret
=
madera_init_outputs
(
component
,
cs47l15_mono_routes
,
ARRAY_SIZE
(
cs47l15_mono_routes
),
CS47L15_MONO_OUTPUTS
);
if
(
ret
)
return
ret
;
...
...
sound/soc/codecs/cs47l35.c
View file @
20230620
...
...
@@ -631,6 +631,7 @@ SND_SOC_DAPM_OUTPUT("DRC2 Signal Activity"),
SND_SOC_DAPM_OUTPUT
(
"DSP Trigger Out"
),
SND_SOC_DAPM_DEMUX
(
"HPOUT1 Demux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l35_outdemux
),
SND_SOC_DAPM_MUX
(
"HPOUT1 Mono Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l35_outdemux
),
SND_SOC_DAPM_PGA
(
"PWM1 Driver"
,
MADERA_PWM_DRIVE_1
,
MADERA_PWM1_ENA_SHIFT
,
0
,
NULL
,
0
),
...
...
@@ -1309,6 +1310,8 @@ static const struct snd_soc_dapm_route cs47l35_dapm_routes[] = {
{
"SPKOUTN"
,
NULL
,
"OUT4L"
},
{
"SPKOUTP"
,
NULL
,
"OUT4L"
},
{
"OUT1R"
,
NULL
,
"HPOUT1 Mono Mux"
},
{
"HPOUTL"
,
"HPOUT"
,
"HPOUT1 Demux"
},
{
"HPOUTR"
,
"HPOUT"
,
"HPOUT1 Demux"
},
{
"EPOUTP"
,
"EPOUT"
,
"HPOUT1 Demux"
},
...
...
@@ -1552,6 +1555,11 @@ static irqreturn_t cs47l35_adsp2_irq(int irq, void *data)
return
IRQ_HANDLED
;
}
static
const
struct
snd_soc_dapm_route
cs47l35_mono_routes
[]
=
{
{
"HPOUT1 Mono Mux"
,
"HPOUT"
,
"OUT1L"
},
{
"HPOUT1 Mono Mux"
,
"EPOUT"
,
"OUT1L"
},
};
static
int
cs47l35_component_probe
(
struct
snd_soc_component
*
component
)
{
struct
cs47l35
*
cs47l35
=
snd_soc_component_get_drvdata
(
component
);
...
...
@@ -1568,7 +1576,9 @@ static int cs47l35_component_probe(struct snd_soc_component *component)
if
(
ret
)
return
ret
;
ret
=
madera_init_outputs
(
component
,
CS47L35_MONO_OUTPUTS
);
ret
=
madera_init_outputs
(
component
,
cs47l35_mono_routes
,
ARRAY_SIZE
(
cs47l35_mono_routes
),
CS47L35_MONO_OUTPUTS
);
if
(
ret
)
return
ret
;
...
...
sound/soc/codecs/cs47l85.c
View file @
20230620
...
...
@@ -2005,12 +2005,18 @@ static const struct snd_soc_dapm_route cs47l85_dapm_routes[] = {
{
"IN3R"
,
NULL
,
"IN3R Mode"
},
{
"IN4L"
,
NULL
,
"DMICCLK4"
},
{
"IN4L"
,
NULL
,
"DMICDAT4"
},
{
"IN4R"
,
NULL
,
"DMICCLK4"
},
{
"IN4R"
,
NULL
,
"DMICDAT4"
},
{
"IN5L"
,
NULL
,
"DMICCLK5"
},
{
"IN5L"
,
NULL
,
"DMICDAT5"
},
{
"IN5R"
,
NULL
,
"DMICCLK5"
},
{
"IN5R"
,
NULL
,
"DMICDAT5"
},
{
"IN6L"
,
NULL
,
"DMICCLK6"
},
{
"IN6L"
,
NULL
,
"DMICDAT6"
},
{
"IN6R"
,
NULL
,
"DMICCLK6"
},
{
"IN6R"
,
NULL
,
"DMICDAT6"
},
MADERA_MIXER_ROUTES
(
"OUT1L"
,
"HPOUT1L"
),
...
...
@@ -2507,7 +2513,8 @@ static int cs47l85_component_probe(struct snd_soc_component *component)
if
(
ret
)
return
ret
;
ret
=
madera_init_outputs
(
component
,
CS47L85_MONO_OUTPUTS
);
ret
=
madera_init_outputs
(
component
,
NULL
,
CS47L85_MONO_OUTPUTS
,
CS47L85_MONO_OUTPUTS
);
if
(
ret
)
return
ret
;
...
...
sound/soc/codecs/cs47l90.c
View file @
20230620
...
...
@@ -1935,12 +1935,18 @@ static const struct snd_soc_dapm_route cs47l90_dapm_routes[] = {
{
"IN2R"
,
NULL
,
"IN2R Mode"
},
{
"IN3L"
,
NULL
,
"DMICCLK3"
},
{
"IN3L"
,
NULL
,
"DMICDAT3"
},
{
"IN3R"
,
NULL
,
"DMICCLK3"
},
{
"IN3R"
,
NULL
,
"DMICDAT3"
},
{
"IN4L"
,
NULL
,
"DMICCLK4"
},
{
"IN4L"
,
NULL
,
"DMICDAT4"
},
{
"IN4R"
,
NULL
,
"DMICCLK4"
},
{
"IN4R"
,
NULL
,
"DMICDAT4"
},
{
"IN5L"
,
NULL
,
"DMICCLK5"
},
{
"IN5L"
,
NULL
,
"DMICDAT5"
},
{
"IN5R"
,
NULL
,
"DMICCLK5"
},
{
"IN5R"
,
NULL
,
"DMICDAT5"
},
MADERA_MIXER_ROUTES
(
"OUT1L"
,
"HPOUT1L"
),
...
...
@@ -2418,7 +2424,8 @@ static int cs47l90_component_probe(struct snd_soc_component *component)
if
(
ret
)
return
ret
;
ret
=
madera_init_outputs
(
component
,
CS47L90_MONO_OUTPUTS
);
ret
=
madera_init_outputs
(
component
,
NULL
,
CS47L90_MONO_OUTPUTS
,
CS47L90_MONO_OUTPUTS
);
if
(
ret
)
return
ret
;
...
...
sound/soc/codecs/cs47l92.c
View file @
20230620
...
...
@@ -730,6 +730,7 @@ SND_SOC_DAPM_MUX("IN2L Mode", SND_SOC_NOPM, 0, 0, &madera_inmode[1]),
SND_SOC_DAPM_MUX
(
"IN2R Mode"
,
SND_SOC_NOPM
,
0
,
0
,
&
madera_inmode
[
1
]),
SND_SOC_DAPM_DEMUX
(
"OUT3 Demux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l92_outdemux
),
SND_SOC_DAPM_MUX
(
"OUT3 Mono Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
cs47l92_outdemux
),
SND_SOC_DAPM_OUTPUT
(
"DRC1 Signal Activity"
),
SND_SOC_DAPM_OUTPUT
(
"DRC2 Signal Activity"
),
...
...
@@ -1584,6 +1585,8 @@ static const struct snd_soc_dapm_route cs47l92_dapm_routes[] = {
{
"OUT3 Demux"
,
NULL
,
"OUT3L"
},
{
"OUT3 Demux"
,
NULL
,
"OUT3R"
},
{
"OUT3R"
,
NULL
,
"OUT3 Mono Mux"
},
{
"HPOUT3L"
,
"HPOUT3"
,
"OUT3 Demux"
},
{
"HPOUT3R"
,
"HPOUT3"
,
"OUT3 Demux"
},
{
"HPOUT4L"
,
"HPOUT4"
,
"OUT3 Demux"
},
...
...
@@ -1817,6 +1820,13 @@ static irqreturn_t cs47l92_adsp2_irq(int irq, void *data)
return
IRQ_HANDLED
;
}
static
const
struct
snd_soc_dapm_route
cs47l92_mono_routes
[]
=
{
{
"OUT1R"
,
NULL
,
"OUT1L"
},
{
"OUT2R"
,
NULL
,
"OUT2L"
},
{
"OUT3 Mono Mux"
,
"HPOUT3"
,
"OUT3L"
},
{
"OUT3 Mono Mux"
,
"HPOUT4"
,
"OUT3L"
},
};
static
int
cs47l92_component_probe
(
struct
snd_soc_component
*
component
)
{
struct
cs47l92
*
cs47l92
=
snd_soc_component_get_drvdata
(
component
);
...
...
@@ -1833,7 +1843,9 @@ static int cs47l92_component_probe(struct snd_soc_component *component)
if
(
ret
)
return
ret
;
ret
=
madera_init_outputs
(
component
,
CS47L92_MONO_OUTPUTS
);
ret
=
madera_init_outputs
(
component
,
cs47l92_mono_routes
,
ARRAY_SIZE
(
cs47l92_mono_routes
),
CS47L92_MONO_OUTPUTS
);
if
(
ret
)
return
ret
;
...
...
sound/soc/codecs/madera.c
View file @
20230620
...
...
@@ -1162,7 +1162,9 @@ static const struct snd_soc_dapm_route madera_mono_routes[] = {
{
"OUT6R"
,
NULL
,
"OUT6L"
},
};
int
madera_init_outputs
(
struct
snd_soc_component
*
component
,
int
n_mono_routes
)
int
madera_init_outputs
(
struct
snd_soc_component
*
component
,
const
struct
snd_soc_dapm_route
*
routes
,
int
n_mono_routes
,
int
n_real
)
{
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
...
...
@@ -1179,16 +1181,21 @@ int madera_init_outputs(struct snd_soc_component *component, int n_mono_routes)
n_mono_routes
=
MADERA_MAX_OUTPUT
;
}
if
(
!
routes
)
routes
=
madera_mono_routes
;
for
(
i
=
0
;
i
<
n_mono_routes
;
i
++
)
{
/* Default is 0 so noop with defaults */
if
(
pdata
->
out_mono
[
i
])
{
val
=
MADERA_OUT1_MONO
;
snd_soc_dapm_add_routes
(
dapm
,
&
madera_mono_routes
[
i
],
1
);
snd_soc_dapm_add_routes
(
dapm
,
&
routes
[
i
],
1
);
}
else
{
val
=
0
;
}
if
(
i
>=
n_real
)
continue
;
regmap_update_bits
(
madera
->
regmap
,
MADERA_OUTPUT_PATH_CONFIG_1L
+
(
i
*
8
),
MADERA_OUT1_MONO
,
val
);
...
...
sound/soc/codecs/madera.h
View file @
20230620
...
...
@@ -421,7 +421,9 @@ int madera_core_free(struct madera_priv *priv);
int
madera_init_overheat
(
struct
madera_priv
*
priv
);
int
madera_free_overheat
(
struct
madera_priv
*
priv
);
int
madera_init_inputs
(
struct
snd_soc_component
*
component
);
int
madera_init_outputs
(
struct
snd_soc_component
*
component
,
int
n_mono_routes
);
int
madera_init_outputs
(
struct
snd_soc_component
*
component
,
const
struct
snd_soc_dapm_route
*
routes
,
int
n_mono_routes
,
int
n_real
);
int
madera_init_bus_error_irq
(
struct
madera_priv
*
priv
,
int
dsp_num
,
irq_handler_t
handler
);
void
madera_free_bus_error_irq
(
struct
madera_priv
*
priv
,
int
dsp_num
);
...
...
sound/soc/codecs/wm_adsp.c
View file @
20230620
...
...
@@ -1030,8 +1030,8 @@ static int wm_coeff_write_acked_control(struct wm_coeff_ctl *ctl,
return
-
ETIMEDOUT
;
}
static
int
wm_coeff_write_c
ontrol
(
struct
wm_coeff_ctl
*
ctl
,
const
void
*
buf
,
size_t
len
)
static
int
wm_coeff_write_c
trl_raw
(
struct
wm_coeff_ctl
*
ctl
,
const
void
*
buf
,
size_t
len
)
{
struct
wm_adsp
*
dsp
=
ctl
->
dsp
;
void
*
scratch
;
...
...
@@ -1061,6 +1061,23 @@ static int wm_coeff_write_control(struct wm_coeff_ctl *ctl,
return
0
;
}
static
int
wm_coeff_write_ctrl
(
struct
wm_coeff_ctl
*
ctl
,
const
void
*
buf
,
size_t
len
)
{
int
ret
=
0
;
if
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
)
ret
=
-
EPERM
;
else
if
(
buf
!=
ctl
->
cache
)
memcpy
(
ctl
->
cache
,
buf
,
len
);
ctl
->
set
=
1
;
if
(
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_write_ctrl_raw
(
ctl
,
buf
,
len
);
return
ret
;
}
static
int
wm_coeff_put
(
struct
snd_kcontrol
*
kctl
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1071,16 +1088,7 @@ static int wm_coeff_put(struct snd_kcontrol *kctl,
int
ret
=
0
;
mutex_lock
(
&
ctl
->
dsp
->
pwr_lock
);
if
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
)
ret
=
-
EPERM
;
else
memcpy
(
ctl
->
cache
,
p
,
ctl
->
len
);
ctl
->
set
=
1
;
if
(
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_write_control
(
ctl
,
p
,
ctl
->
len
);
ret
=
wm_coeff_write_ctrl
(
ctl
,
p
,
ctl
->
len
);
mutex_unlock
(
&
ctl
->
dsp
->
pwr_lock
);
return
ret
;
...
...
@@ -1096,15 +1104,10 @@ static int wm_coeff_tlv_put(struct snd_kcontrol *kctl,
mutex_lock
(
&
ctl
->
dsp
->
pwr_lock
);
if
(
copy_from_user
(
ctl
->
cache
,
bytes
,
size
))
{
if
(
copy_from_user
(
ctl
->
cache
,
bytes
,
size
))
ret
=
-
EFAULT
;
}
else
{
ctl
->
set
=
1
;
if
(
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_write_control
(
ctl
,
ctl
->
cache
,
size
);
else
if
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
)
ret
=
-
EPERM
;
}
else
ret
=
wm_coeff_write_ctrl
(
ctl
,
ctl
->
cache
,
size
);
mutex_unlock
(
&
ctl
->
dsp
->
pwr_lock
);
...
...
@@ -1135,8 +1138,8 @@ static int wm_coeff_put_acked(struct snd_kcontrol *kctl,
return
ret
;
}
static
int
wm_coeff_read_c
ontrol
(
struct
wm_coeff_ctl
*
ctl
,
void
*
buf
,
size_t
len
)
static
int
wm_coeff_read_c
trl_raw
(
struct
wm_coeff_ctl
*
ctl
,
void
*
buf
,
size_t
len
)
{
struct
wm_adsp
*
dsp
=
ctl
->
dsp
;
void
*
scratch
;
...
...
@@ -1166,29 +1169,37 @@ static int wm_coeff_read_control(struct wm_coeff_ctl *ctl,
return
0
;
}
static
int
wm_coeff_get
(
struct
snd_kcontrol
*
kctl
,
struct
snd_ctl_elem_value
*
ucontrol
)
static
int
wm_coeff_read_ctrl
(
struct
wm_coeff_ctl
*
ctl
,
void
*
buf
,
size_t
len
)
{
struct
soc_bytes_ext
*
bytes_ext
=
(
struct
soc_bytes_ext
*
)
kctl
->
private_value
;
struct
wm_coeff_ctl
*
ctl
=
bytes_ext_to_ctl
(
bytes_ext
);
char
*
p
=
ucontrol
->
value
.
bytes
.
data
;
int
ret
=
0
;
mutex_lock
(
&
ctl
->
dsp
->
pwr_lock
);
if
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
)
{
if
(
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_read_control
(
ctl
,
p
,
ctl
->
len
);
ret
urn
wm_coeff_read_ctrl_raw
(
ctl
,
buf
,
len
);
else
ret
=
-
EPERM
;
ret
urn
-
EPERM
;
}
else
{
if
(
!
ctl
->
flags
&&
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_read_c
ontrol
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
ret
=
wm_coeff_read_c
trl_raw
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
memcpy
(
p
,
ctl
->
cache
,
ctl
->
len
);
if
(
buf
!=
ctl
->
cache
)
memcpy
(
buf
,
ctl
->
cache
,
len
);
}
return
ret
;
}
static
int
wm_coeff_get
(
struct
snd_kcontrol
*
kctl
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
soc_bytes_ext
*
bytes_ext
=
(
struct
soc_bytes_ext
*
)
kctl
->
private_value
;
struct
wm_coeff_ctl
*
ctl
=
bytes_ext_to_ctl
(
bytes_ext
);
char
*
p
=
ucontrol
->
value
.
bytes
.
data
;
int
ret
;
mutex_lock
(
&
ctl
->
dsp
->
pwr_lock
);
ret
=
wm_coeff_read_ctrl
(
ctl
,
p
,
ctl
->
len
);
mutex_unlock
(
&
ctl
->
dsp
->
pwr_lock
);
return
ret
;
...
...
@@ -1204,15 +1215,7 @@ static int wm_coeff_tlv_get(struct snd_kcontrol *kctl,
mutex_lock
(
&
ctl
->
dsp
->
pwr_lock
);
if
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
)
{
if
(
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_read_control
(
ctl
,
ctl
->
cache
,
size
);
else
ret
=
-
EPERM
;
}
else
{
if
(
!
ctl
->
flags
&&
ctl
->
enabled
&&
ctl
->
dsp
->
running
)
ret
=
wm_coeff_read_control
(
ctl
,
ctl
->
cache
,
size
);
}
ret
=
wm_coeff_read_ctrl_raw
(
ctl
,
ctl
->
cache
,
size
);
if
(
!
ret
&&
copy_to_user
(
bytes
,
ctl
->
cache
,
size
))
ret
=
-
EFAULT
;
...
...
@@ -1340,7 +1343,7 @@ static int wm_coeff_init_control_caches(struct wm_adsp *dsp)
* created so we don't need to do anything.
*/
if
(
!
ctl
->
flags
||
(
ctl
->
flags
&
WMFW_CTL_FLAG_READABLE
))
{
ret
=
wm_coeff_read_c
ontrol
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
ret
=
wm_coeff_read_c
trl_raw
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
if
(
ret
<
0
)
return
ret
;
}
...
...
@@ -1358,7 +1361,8 @@ static int wm_coeff_sync_controls(struct wm_adsp *dsp)
if
(
!
ctl
->
enabled
)
continue
;
if
(
ctl
->
set
&&
!
(
ctl
->
flags
&
WMFW_CTL_FLAG_VOLATILE
))
{
ret
=
wm_coeff_write_control
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
ret
=
wm_coeff_write_ctrl_raw
(
ctl
,
ctl
->
cache
,
ctl
->
len
);
if
(
ret
<
0
)
return
ret
;
}
...
...
@@ -2048,7 +2052,7 @@ int wm_adsp_write_ctl(struct wm_adsp *dsp, const char *name, int type,
if
(
len
>
ctl
->
len
)
return
-
EINVAL
;
ret
=
wm_coeff_write_c
ontro
l
(
ctl
,
buf
,
len
);
ret
=
wm_coeff_write_c
tr
l
(
ctl
,
buf
,
len
);
kcontrol
=
snd_soc_card_get_kcontrol
(
dsp
->
component
->
card
,
ctl
->
name
);
snd_ctl_notify
(
dsp
->
component
->
card
->
snd_card
,
...
...
@@ -2070,7 +2074,7 @@ int wm_adsp_read_ctl(struct wm_adsp *dsp, const char *name, int type,
if
(
len
>
ctl
->
len
)
return
-
EINVAL
;
return
wm_coeff_read_c
ontro
l
(
ctl
,
buf
,
len
);
return
wm_coeff_read_c
tr
l
(
ctl
,
buf
,
len
);
}
EXPORT_SYMBOL_GPL
(
wm_adsp_read_ctl
);
...
...
sound/soc/intel/boards/skl_hda_dsp_common.c
View file @
20230620
...
...
@@ -41,16 +41,19 @@ int skl_hda_hdmi_add_pcm(struct snd_soc_card *card, int device)
return
0
;
}
SND_SOC_DAILINK_DEFS
(
idisp1
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp1 Pin"
)),
SND_SOC_DAILINK_DEF
(
idisp1_cpu
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp1 Pin"
)));
SND_SOC_DAILINK_DEF
(
idisp1_codec
,
DAILINK_COMP_ARRAY
(
COMP_CODEC
(
"ehdaudio0D2"
,
"intel-hdmi-hifi1"
)));
SND_SOC_DAILINK_DEFS
(
idisp2
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp2 Pin"
)),
SND_SOC_DAILINK_DEF
(
idisp2_cpu
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp2 Pin"
)));
SND_SOC_DAILINK_DEF
(
idisp2_codec
,
DAILINK_COMP_ARRAY
(
COMP_CODEC
(
"ehdaudio0D2"
,
"intel-hdmi-hifi2"
)));
SND_SOC_DAILINK_DEFS
(
idisp3
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp3 Pin"
)),
SND_SOC_DAILINK_DEF
(
idisp3_cpu
,
DAILINK_COMP_ARRAY
(
COMP_CPU
(
"iDisp3 Pin"
)));
SND_SOC_DAILINK_DEF
(
idisp3_codec
,
DAILINK_COMP_ARRAY
(
COMP_CODEC
(
"ehdaudio0D2"
,
"intel-hdmi-hifi3"
)));
SND_SOC_DAILINK_DEF
(
analog_cpu
,
...
...
@@ -83,21 +86,21 @@ struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS] = {
.
id
=
1
,
.
dpcm_playback
=
1
,
.
no_pcm
=
1
,
SND_SOC_DAILINK_REG
(
idisp1
),
SND_SOC_DAILINK_REG
(
idisp1
_cpu
,
idisp1_codec
,
platform
),
},
{
.
name
=
"iDisp2"
,
.
id
=
2
,
.
dpcm_playback
=
1
,
.
no_pcm
=
1
,
SND_SOC_DAILINK_REG
(
idisp2
),
SND_SOC_DAILINK_REG
(
idisp2
_cpu
,
idisp2_codec
,
platform
),
},
{
.
name
=
"iDisp3"
,
.
id
=
3
,
.
dpcm_playback
=
1
,
.
no_pcm
=
1
,
SND_SOC_DAILINK_REG
(
idisp3
),
SND_SOC_DAILINK_REG
(
idisp3
_cpu
,
idisp3_codec
,
platform
),
},
{
.
name
=
"Analog Playback and Capture"
,
...
...
sound/soc/soc-generic-dmaengine-pcm.c
View file @
20230620
...
...
@@ -117,7 +117,6 @@ dmaengine_pcm_set_runtime_hwparams(struct snd_soc_component *component,
struct
dma_chan
*
chan
=
pcm
->
chan
[
substream
->
stream
];
struct
snd_dmaengine_dai_dma_data
*
dma_data
;
struct
snd_pcm_hardware
hw
;
int
ret
;
if
(
pcm
->
config
&&
pcm
->
config
->
pcm_hardware
)
return
snd_soc_set_runtime_hwparams
(
substream
,
...
...
@@ -138,12 +137,15 @@ dmaengine_pcm_set_runtime_hwparams(struct snd_soc_component *component,
if
(
pcm
->
flags
&
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
)
hw
.
info
|=
SNDRV_PCM_INFO_BATCH
;
ret
=
snd_dmaengine_pcm_refine_runtime_hwparams
(
substream
,
dma_data
,
&
hw
,
chan
);
if
(
ret
)
return
ret
;
/**
* FIXME: Remove the return value check to align with the code
* before adding snd_dmaengine_pcm_refine_runtime_hwparams
* function.
*/
snd_dmaengine_pcm_refine_runtime_hwparams
(
substream
,
dma_data
,
&
hw
,
chan
);
return
snd_soc_set_runtime_hwparams
(
substream
,
&
hw
);
}
...
...
sound/soc/soc-pcm.c
View file @
20230620
...
...
@@ -2916,10 +2916,10 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
for_each_rtd_codec_dai
(
rtd
,
i
,
codec_dai
)
{
if
(
snd_soc_dai_stream_valid
(
codec_dai
,
SNDRV_PCM_STREAM_PLAYBACK
)
&&
snd_soc_dai_stream_valid
(
cpu_dai
,
SNDRV_PCM_STREAM_
PLAYBACK
))
snd_soc_dai_stream_valid
(
cpu_dai
,
SNDRV_PCM_STREAM_
CAPTURE
))
playback
=
1
;
if
(
snd_soc_dai_stream_valid
(
codec_dai
,
SNDRV_PCM_STREAM_CAPTURE
)
&&
snd_soc_dai_stream_valid
(
cpu_dai
,
SNDRV_PCM_STREAM_
CAPTURE
))
snd_soc_dai_stream_valid
(
cpu_dai
,
SNDRV_PCM_STREAM_
PLAYBACK
))
capture
=
1
;
}
...
...
sound/soc/soc-topology.c
View file @
20230620
...
...
@@ -1906,6 +1906,10 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
link
->
num_codecs
=
1
;
link
->
num_platforms
=
1
;
link
->
dobj
.
index
=
tplg
->
index
;
link
->
dobj
.
ops
=
tplg
->
ops
;
link
->
dobj
.
type
=
SND_SOC_DOBJ_DAI_LINK
;
if
(
strlen
(
pcm
->
pcm_name
))
{
link
->
name
=
kstrdup
(
pcm
->
pcm_name
,
GFP_KERNEL
);
link
->
stream_name
=
kstrdup
(
pcm
->
pcm_name
,
GFP_KERNEL
);
...
...
@@ -1942,9 +1946,6 @@ static int soc_tplg_fe_link_create(struct soc_tplg *tplg,
goto
err
;
}
link
->
dobj
.
index
=
tplg
->
index
;
link
->
dobj
.
ops
=
tplg
->
ops
;
link
->
dobj
.
type
=
SND_SOC_DOBJ_DAI_LINK
;
list_add
(
&
link
->
dobj
.
list
,
&
tplg
->
comp
->
dobj_list
);
return
0
;
...
...
sound/soc/sof/intel/hda.h
View file @
20230620
...
...
@@ -345,7 +345,7 @@
/* Number of DAIs */
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
#define SOF_SKL_NUM_DAIS 1
4
#define SOF_SKL_NUM_DAIS 1
5
#else
#define SOF_SKL_NUM_DAIS 8
#endif
...
...
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