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
4d39265b
Commit
4d39265b
authored
Aug 15, 2022
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/for-5.20' into asoc-6.0
parents
568035b0
b4b5f29a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
116 additions
and
76 deletions
+116
-76
sound/soc/amd/yc/acp6x-mach.c
sound/soc/amd/yc/acp6x-mach.c
+28
-0
sound/soc/codecs/rt5640.c
sound/soc/codecs/rt5640.c
+3
-2
sound/soc/codecs/tas2770.c
sound/soc/codecs/tas2770.c
+43
-55
sound/soc/codecs/tas2770.h
sound/soc/codecs/tas2770.h
+5
-0
sound/soc/codecs/tlv320aic32x4.c
sound/soc/codecs/tlv320aic32x4.c
+9
-0
sound/soc/intel/avs/pcm.c
sound/soc/intel/avs/pcm.c
+2
-2
sound/soc/intel/boards/sof_es8336.c
sound/soc/intel/boards/sof_es8336.c
+3
-1
sound/soc/sh/rz-ssi.c
sound/soc/sh/rz-ssi.c
+15
-11
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+3
-0
sound/soc/sof/debug.c
sound/soc/sof/debug.c
+3
-3
sound/soc/sof/intel/hda.c
sound/soc/sof/intel/hda.c
+1
-1
sound/soc/sof/ipc3-topology.c
sound/soc/sof/ipc3-topology.c
+1
-1
No files found.
sound/soc/amd/yc/acp6x-mach.c
View file @
4d39265b
...
...
@@ -143,6 +143,34 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"21CL"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"LENOVO"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"21EM"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"LENOVO"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"21EN"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"LENOVO"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"21J5"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"LENOVO"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"21J6"
),
}
},
{}
};
...
...
sound/soc/codecs/rt5640.c
View file @
4d39265b
...
...
@@ -1986,7 +1986,7 @@ static int rt5640_set_bias_level(struct snd_soc_component *component,
snd_soc_component_write
(
component
,
RT5640_PWR_MIXER
,
0x0000
);
if
(
rt5640
->
jd_src
==
RT5640_JD_SRC_HDA_HEADER
)
snd_soc_component_write
(
component
,
RT5640_PWR_ANLG1
,
0x
00
18
);
0x
28
18
);
else
snd_soc_component_write
(
component
,
RT5640_PWR_ANLG1
,
0x0000
);
...
...
@@ -2600,7 +2600,8 @@ static void rt5640_enable_hda_jack_detect(
snd_soc_component_update_bits
(
component
,
RT5640_DUMMY1
,
0x400
,
0x0
);
snd_soc_component_update_bits
(
component
,
RT5640_PWR_ANLG1
,
RT5640_PWR_VREF2
,
RT5640_PWR_VREF2
);
RT5640_PWR_VREF2
|
RT5640_PWR_MB
|
RT5640_PWR_BG
,
RT5640_PWR_VREF2
|
RT5640_PWR_MB
|
RT5640_PWR_BG
);
usleep_range
(
10000
,
15000
);
snd_soc_component_update_bits
(
component
,
RT5640_PWR_ANLG1
,
RT5640_PWR_FV2
,
RT5640_PWR_FV2
);
...
...
sound/soc/codecs/tas2770.c
View file @
4d39265b
...
...
@@ -46,34 +46,22 @@ static void tas2770_reset(struct tas2770_priv *tas2770)
usleep_range
(
1000
,
2000
);
}
static
int
tas2770_set_bias_level
(
struct
snd_soc_component
*
component
,
enum
snd_soc_bias_level
level
)
static
int
tas2770_update_pwr_ctrl
(
struct
tas2770_priv
*
tas2770
)
{
struct
tas2770_priv
*
tas2770
=
snd_soc_component_get_drvdata
(
component
);
struct
snd_soc_component
*
component
=
tas2770
->
component
;
unsigned
int
val
;
int
ret
;
switch
(
level
)
{
case
SND_SOC_BIAS_ON
:
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_ACTIVE
);
break
;
case
SND_SOC_BIAS_STANDBY
:
case
SND_SOC_BIAS_PREPARE
:
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_MUTE
);
break
;
case
SND_SOC_BIAS_OFF
:
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_SHUTDOWN
);
break
;
if
(
tas2770
->
dac_powered
)
val
=
tas2770
->
unmuted
?
TAS2770_PWR_CTRL_ACTIVE
:
TAS2770_PWR_CTRL_MUTE
;
else
val
=
TAS2770_PWR_CTRL_SHUTDOWN
;
default:
dev_err
(
tas2770
->
dev
,
"wrong power level setting %d
\n
"
,
leve
l
);
return
-
EINVAL
;
}
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
va
l
);
if
(
ret
<
0
)
return
ret
;
return
0
;
}
...
...
@@ -114,9 +102,7 @@ static int tas2770_codec_resume(struct snd_soc_component *component)
gpiod_set_value_cansleep
(
tas2770
->
sdz_gpio
,
1
);
usleep_range
(
1000
,
2000
);
}
else
{
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_ACTIVE
);
ret
=
tas2770_update_pwr_ctrl
(
tas2770
);
if
(
ret
<
0
)
return
ret
;
}
...
...
@@ -152,24 +138,19 @@ static int tas2770_dac_event(struct snd_soc_dapm_widget *w,
switch
(
event
)
{
case
SND_SOC_DAPM_POST_PMU
:
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_MUTE
);
tas2770
->
dac_powered
=
1
;
ret
=
tas2770_update_pwr_ctrl
(
tas2770
);
break
;
case
SND_SOC_DAPM_PRE_PMD
:
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_SHUTDOWN
);
tas2770
->
dac_powered
=
0
;
ret
=
tas2770_update_pwr_ctrl
(
tas2770
);
break
;
default:
dev_err
(
tas2770
->
dev
,
"Not supported evevt
\n
"
);
return
-
EINVAL
;
}
if
(
ret
<
0
)
return
ret
;
return
0
;
return
ret
;
}
static
const
struct
snd_kcontrol_new
isense_switch
=
...
...
@@ -203,21 +184,11 @@ static const struct snd_soc_dapm_route tas2770_audio_map[] = {
static
int
tas2770_mute
(
struct
snd_soc_dai
*
dai
,
int
mute
,
int
direction
)
{
struct
snd_soc_component
*
component
=
dai
->
component
;
int
ret
;
if
(
mute
)
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_MUTE
);
else
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_PWR_CTRL
,
TAS2770_PWR_CTRL_MASK
,
TAS2770_PWR_CTRL_ACTIVE
);
if
(
ret
<
0
)
return
ret
;
struct
tas2770_priv
*
tas2770
=
snd_soc_component_get_drvdata
(
component
);
return
0
;
tas2770
->
unmuted
=
!
mute
;
return
tas2770_update_pwr_ctrl
(
tas2770
);
}
static
int
tas2770_set_bitwidth
(
struct
tas2770_priv
*
tas2770
,
int
bitwidth
)
...
...
@@ -337,7 +308,7 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
struct
snd_soc_component
*
component
=
dai
->
component
;
struct
tas2770_priv
*
tas2770
=
snd_soc_component_get_drvdata
(
component
);
u8
tdm_rx_start_slot
=
0
,
asi_cfg_1
=
0
;
u8
tdm_rx_start_slot
=
0
,
invert_fpol
=
0
,
fpol_preinv
=
0
,
asi_cfg_1
=
0
;
int
ret
;
switch
(
fmt
&
SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK
)
{
...
...
@@ -349,9 +320,15 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
}
switch
(
fmt
&
SND_SOC_DAIFMT_INV_MASK
)
{
case
SND_SOC_DAIFMT_NB_IF
:
invert_fpol
=
1
;
fallthrough
;
case
SND_SOC_DAIFMT_NB_NF
:
asi_cfg_1
|=
TAS2770_TDM_CFG_REG1_RX_RSING
;
break
;
case
SND_SOC_DAIFMT_IB_IF
:
invert_fpol
=
1
;
fallthrough
;
case
SND_SOC_DAIFMT_IB_NF
:
asi_cfg_1
|=
TAS2770_TDM_CFG_REG1_RX_FALING
;
break
;
...
...
@@ -369,15 +346,19 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
switch
(
fmt
&
SND_SOC_DAIFMT_FORMAT_MASK
)
{
case
SND_SOC_DAIFMT_I2S
:
tdm_rx_start_slot
=
1
;
fpol_preinv
=
0
;
break
;
case
SND_SOC_DAIFMT_DSP_A
:
tdm_rx_start_slot
=
0
;
fpol_preinv
=
1
;
break
;
case
SND_SOC_DAIFMT_DSP_B
:
tdm_rx_start_slot
=
1
;
fpol_preinv
=
1
;
break
;
case
SND_SOC_DAIFMT_LEFT_J
:
tdm_rx_start_slot
=
0
;
fpol_preinv
=
1
;
break
;
default:
dev_err
(
tas2770
->
dev
,
...
...
@@ -391,6 +372,14 @@ static int tas2770_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_component_update_bits
(
component
,
TAS2770_TDM_CFG_REG0
,
TAS2770_TDM_CFG_REG0_FPOL_MASK
,
(
fpol_preinv
^
invert_fpol
)
?
TAS2770_TDM_CFG_REG0_FPOL_RSING
:
TAS2770_TDM_CFG_REG0_FPOL_FALING
);
if
(
ret
<
0
)
return
ret
;
return
0
;
}
...
...
@@ -489,7 +478,7 @@ static struct snd_soc_dai_driver tas2770_dai_driver[] = {
.
id
=
0
,
.
playback
=
{
.
stream_name
=
"ASI1 Playback"
,
.
channels_min
=
2
,
.
channels_min
=
1
,
.
channels_max
=
2
,
.
rates
=
TAS2770_RATES
,
.
formats
=
TAS2770_FORMATS
,
...
...
@@ -537,7 +526,6 @@ static const struct snd_soc_component_driver soc_component_driver_tas2770 = {
.
probe
=
tas2770_codec_probe
,
.
suspend
=
tas2770_codec_suspend
,
.
resume
=
tas2770_codec_resume
,
.
set_bias_level
=
tas2770_set_bias_level
,
.
controls
=
tas2770_snd_controls
,
.
num_controls
=
ARRAY_SIZE
(
tas2770_snd_controls
),
.
dapm_widgets
=
tas2770_dapm_widgets
,
...
...
sound/soc/codecs/tas2770.h
View file @
4d39265b
...
...
@@ -41,6 +41,9 @@
#define TAS2770_TDM_CFG_REG0_31_44_1_48KHZ 0x6
#define TAS2770_TDM_CFG_REG0_31_88_2_96KHZ 0x8
#define TAS2770_TDM_CFG_REG0_31_176_4_192KHZ 0xa
#define TAS2770_TDM_CFG_REG0_FPOL_MASK BIT(0)
#define TAS2770_TDM_CFG_REG0_FPOL_RSING 0
#define TAS2770_TDM_CFG_REG0_FPOL_FALING 1
/* TDM Configuration Reg1 */
#define TAS2770_TDM_CFG_REG1 TAS2770_REG(0X0, 0x0B)
#define TAS2770_TDM_CFG_REG1_MASK GENMASK(5, 1)
...
...
@@ -135,6 +138,8 @@ struct tas2770_priv {
struct
device
*
dev
;
int
v_sense_slot
;
int
i_sense_slot
;
bool
dac_powered
;
bool
unmuted
;
};
#endif
/* __TAS2770__ */
sound/soc/codecs/tlv320aic32x4.c
View file @
4d39265b
...
...
@@ -49,6 +49,8 @@ struct aic32x4_priv {
struct
aic32x4_setup_data
*
setup
;
struct
device
*
dev
;
enum
aic32x4_type
type
;
unsigned
int
fmt
;
};
static
int
aic32x4_reset_adc
(
struct
snd_soc_dapm_widget
*
w
,
...
...
@@ -611,6 +613,7 @@ static int aic32x4_set_dai_sysclk(struct snd_soc_dai *codec_dai,
static
int
aic32x4_set_dai_fmt
(
struct
snd_soc_dai
*
codec_dai
,
unsigned
int
fmt
)
{
struct
snd_soc_component
*
component
=
codec_dai
->
component
;
struct
aic32x4_priv
*
aic32x4
=
snd_soc_component_get_drvdata
(
component
);
u8
iface_reg_1
=
0
;
u8
iface_reg_2
=
0
;
u8
iface_reg_3
=
0
;
...
...
@@ -653,6 +656,8 @@ static int aic32x4_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
return
-
EINVAL
;
}
aic32x4
->
fmt
=
fmt
;
snd_soc_component_update_bits
(
component
,
AIC32X4_IFACE1
,
AIC32X4_IFACE1_DATATYPE_MASK
|
AIC32X4_IFACE1_MASTER_MASK
,
iface_reg_1
);
...
...
@@ -757,6 +762,10 @@ static int aic32x4_setup_clocks(struct snd_soc_component *component,
return
-
EINVAL
;
}
/* PCM over I2S is always 2-channel */
if
((
aic32x4
->
fmt
&
SND_SOC_DAIFMT_FORMAT_MASK
)
==
SND_SOC_DAIFMT_I2S
)
channels
=
2
;
madc
=
DIV_ROUND_UP
((
32
*
adc_resource_class
),
aosr
);
max_dosr
=
(
AIC32X4_MAX_DOSR_FREQ
/
sample_rate
/
dosr_increment
)
*
dosr_increment
;
...
...
sound/soc/intel/avs/pcm.c
View file @
4d39265b
...
...
@@ -636,8 +636,8 @@ static ssize_t topology_name_read(struct file *file, char __user *user_buf, size
char
buf
[
64
];
size_t
len
;
len
=
snprintf
(
buf
,
sizeof
(
buf
),
"%s/%s
\n
"
,
component
->
driver
->
topology_name_prefix
,
mach
->
tplg_filename
);
len
=
s
c
nprintf
(
buf
,
sizeof
(
buf
),
"%s/%s
\n
"
,
component
->
driver
->
topology_name_prefix
,
mach
->
tplg_filename
);
return
simple_read_from_buffer
(
user_buf
,
count
,
ppos
,
buf
,
len
);
}
...
...
sound/soc/intel/boards/sof_es8336.c
View file @
4d39265b
...
...
@@ -759,6 +759,9 @@ static int sof_es8336_remove(struct platform_device *pdev)
}
static
const
struct
platform_device_id
board_ids
[]
=
{
{
.
name
=
"sof-essx8336"
,
/* default quirk == 0 */
},
{
.
name
=
"adl_es83x6_c1_h02"
,
.
driver_data
=
(
kernel_ulong_t
)(
SOF_ES8336_SSP_CODEC
(
1
)
|
...
...
@@ -786,5 +789,4 @@ module_platform_driver(sof_es8336_driver);
MODULE_DESCRIPTION
(
"ASoC Intel(R) SOF + ES8336 Machine driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:sof-essx8336"
);
MODULE_IMPORT_NS
(
SND_SOC_INTEL_HDA_DSP_COMMON
);
sound/soc/sh/rz-ssi.c
View file @
4d39265b
...
...
@@ -1017,32 +1017,36 @@ static int rz_ssi_probe(struct platform_device *pdev)
ssi
->
rstc
=
devm_reset_control_get_exclusive
(
&
pdev
->
dev
,
NULL
);
if
(
IS_ERR
(
ssi
->
rstc
))
{
r
z_ssi_release_dma_channels
(
ssi
);
return
PTR_ERR
(
ssi
->
rstc
)
;
r
et
=
PTR_ERR
(
ssi
->
rstc
);
goto
err_reset
;
}
reset_control_deassert
(
ssi
->
rstc
);
pm_runtime_enable
(
&
pdev
->
dev
);
ret
=
pm_runtime_resume_and_get
(
&
pdev
->
dev
);
if
(
ret
<
0
)
{
rz_ssi_release_dma_channels
(
ssi
);
pm_runtime_disable
(
ssi
->
dev
);
reset_control_assert
(
ssi
->
rstc
);
return
dev_err_probe
(
ssi
->
dev
,
ret
,
"pm_runtime_resume_and_get failed
\n
"
);
dev_err
(
&
pdev
->
dev
,
"pm_runtime_resume_and_get failed
\n
"
);
goto
err_pm
;
}
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
rz_ssi_soc_component
,
rz_ssi_soc_dai
,
ARRAY_SIZE
(
rz_ssi_soc_dai
));
if
(
ret
<
0
)
{
rz_ssi_release_dma_channels
(
ssi
);
pm_runtime_put
(
ssi
->
dev
);
pm_runtime_disable
(
ssi
->
dev
);
reset_control_assert
(
ssi
->
rstc
);
dev_err
(
&
pdev
->
dev
,
"failed to register snd component
\n
"
);
goto
err_snd_soc
;
}
return
0
;
err_snd_soc:
pm_runtime_put
(
ssi
->
dev
);
err_pm:
pm_runtime_disable
(
ssi
->
dev
);
reset_control_assert
(
ssi
->
rstc
);
err_reset:
rz_ssi_release_dma_channels
(
ssi
);
return
ret
;
}
...
...
sound/soc/soc-pcm.c
View file @
4d39265b
...
...
@@ -1317,6 +1317,9 @@ static struct snd_soc_pcm_runtime *dpcm_get_be(struct snd_soc_card *card,
if
(
!
be
->
dai_link
->
no_pcm
)
continue
;
if
(
!
snd_soc_dpcm_get_substream
(
be
,
stream
))
continue
;
for_each_rtd_dais
(
be
,
i
,
dai
)
{
w
=
snd_soc_dai_get_widget
(
dai
,
stream
);
...
...
sound/soc/sof/debug.c
View file @
4d39265b
...
...
@@ -252,9 +252,9 @@ static int memory_info_update(struct snd_sof_dev *sdev, char *buf, size_t buff_s
}
for
(
i
=
0
,
len
=
0
;
i
<
reply
->
num_elems
;
i
++
)
{
ret
=
snprintf
(
buf
+
len
,
buff_size
-
len
,
"zone %d.%d used %#8x free %#8x
\n
"
,
reply
->
elems
[
i
].
zone
,
reply
->
elems
[
i
].
id
,
reply
->
elems
[
i
].
used
,
reply
->
elems
[
i
].
free
);
ret
=
s
c
nprintf
(
buf
+
len
,
buff_size
-
len
,
"zone %d.%d used %#8x free %#8x
\n
"
,
reply
->
elems
[
i
].
zone
,
reply
->
elems
[
i
].
id
,
reply
->
elems
[
i
].
used
,
reply
->
elems
[
i
].
free
);
if
(
ret
<
0
)
goto
error
;
len
+=
ret
;
...
...
sound/soc/sof/intel/hda.c
View file @
4d39265b
...
...
@@ -574,7 +574,7 @@ static void hda_dsp_dump_ext_rom_status(struct snd_sof_dev *sdev, const char *le
chip
=
get_chip_info
(
sdev
->
pdata
);
for
(
i
=
0
;
i
<
HDA_EXT_ROM_STATUS_SIZE
;
i
++
)
{
value
=
snd_sof_dsp_read
(
sdev
,
HDA_DSP_BAR
,
chip
->
rom_status_reg
+
i
*
0x4
);
len
+=
snprintf
(
msg
+
len
,
sizeof
(
msg
)
-
len
,
" 0x%x"
,
value
);
len
+=
s
c
nprintf
(
msg
+
len
,
sizeof
(
msg
)
-
len
,
" 0x%x"
,
value
);
}
dev_printk
(
level
,
sdev
->
dev
,
"extended rom status: %s"
,
msg
);
...
...
sound/soc/sof/ipc3-topology.c
View file @
4d39265b
...
...
@@ -2338,7 +2338,7 @@ static int sof_ipc3_parse_manifest(struct snd_soc_component *scomp, int index,
}
dev_info
(
scomp
->
dev
,
"Topology: ABI %d:%d:%d Kernel ABI %
hhu:%hhu:%hhu
\n
"
,
"Topology: ABI %d:%d:%d Kernel ABI %
d:%d:%d
\n
"
,
man
->
priv
.
data
[
0
],
man
->
priv
.
data
[
1
],
man
->
priv
.
data
[
2
],
SOF_ABI_MAJOR
,
SOF_ABI_MINOR
,
SOF_ABI_PATCH
);
...
...
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