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
d143a69f
Commit
d143a69f
authored
Apr 23, 2021
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/for-5.12' into asoc-linus
parents
bf05bf16
a89f3a93
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
84 additions
and
49 deletions
+84
-49
sound/soc/amd/raven/acp3x-i2s.c
sound/soc/amd/raven/acp3x-i2s.c
+2
-4
sound/soc/amd/raven/acp3x-pcm-dma.c
sound/soc/amd/raven/acp3x-pcm-dma.c
+2
-4
sound/soc/codecs/adau17x1.c
sound/soc/codecs/adau17x1.c
+11
-2
sound/soc/codecs/rt1011.c
sound/soc/codecs/rt1011.c
+2
-14
sound/soc/codecs/rt1011.h
sound/soc/codecs/rt1011.h
+0
-1
sound/soc/codecs/rt286.c
sound/soc/codecs/rt286.c
+4
-1
sound/soc/codecs/tas2552.c
sound/soc/codecs/tas2552.c
+3
-1
sound/soc/codecs/tlv320aic32x4.c
sound/soc/codecs/tlv320aic32x4.c
+6
-6
sound/soc/intel/boards/kbl_da7219_max98927.c
sound/soc/intel/boards/kbl_da7219_max98927.c
+30
-8
sound/soc/intel/keembay/kmb_platform.c
sound/soc/intel/keembay/kmb_platform.c
+3
-2
sound/soc/meson/axg-frddr.c
sound/soc/meson/axg-frddr.c
+21
-6
No files found.
sound/soc/amd/raven/acp3x-i2s.c
View file @
d143a69f
...
...
@@ -264,8 +264,7 @@ static struct snd_soc_dai_driver acp3x_i2s_dai = {
.
playback
=
{
.
rates
=
SNDRV_PCM_RATE_8000_96000
,
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S8
|
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S24_LE
|
SNDRV_PCM_FMTBIT_S32_LE
,
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S32_LE
,
.
channels_min
=
2
,
.
channels_max
=
8
,
.
rate_min
=
8000
,
...
...
@@ -274,8 +273,7 @@ static struct snd_soc_dai_driver acp3x_i2s_dai = {
.
capture
=
{
.
rates
=
SNDRV_PCM_RATE_8000_48000
,
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S8
|
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S24_LE
|
SNDRV_PCM_FMTBIT_S32_LE
,
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S32_LE
,
.
channels_min
=
2
,
.
channels_max
=
2
,
.
rate_min
=
8000
,
...
...
sound/soc/amd/raven/acp3x-pcm-dma.c
View file @
d143a69f
...
...
@@ -24,8 +24,7 @@ static const struct snd_pcm_hardware acp3x_pcm_hardware_playback = {
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_RESUME
,
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S8
|
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S24_LE
|
SNDRV_PCM_FMTBIT_S32_LE
,
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S32_LE
,
.
channels_min
=
2
,
.
channels_max
=
8
,
.
rates
=
SNDRV_PCM_RATE_8000_96000
,
...
...
@@ -45,8 +44,7 @@ static const struct snd_pcm_hardware acp3x_pcm_hardware_capture = {
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_RESUME
,
.
formats
=
SNDRV_PCM_FMTBIT_S16_LE
|
SNDRV_PCM_FMTBIT_S8
|
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S24_LE
|
SNDRV_PCM_FMTBIT_S32_LE
,
SNDRV_PCM_FMTBIT_U8
|
SNDRV_PCM_FMTBIT_S32_LE
,
.
channels_min
=
2
,
.
channels_max
=
2
,
.
rates
=
SNDRV_PCM_RATE_8000_48000
,
...
...
sound/soc/codecs/adau17x1.c
View file @
d143a69f
...
...
@@ -553,6 +553,7 @@ static int adau17x1_set_dai_fmt(struct snd_soc_dai *dai,
{
struct
adau
*
adau
=
snd_soc_component_get_drvdata
(
dai
->
component
);
unsigned
int
ctrl0
,
ctrl1
;
unsigned
int
ctrl0_mask
;
int
lrclk_pol
;
switch
(
fmt
&
SND_SOC_DAIFMT_MASTER_MASK
)
{
...
...
@@ -612,8 +613,16 @@ static int adau17x1_set_dai_fmt(struct snd_soc_dai *dai,
if
(
lrclk_pol
)
ctrl0
|=
ADAU17X1_SERIAL_PORT0_LRCLK_POL
;
regmap_write
(
adau
->
regmap
,
ADAU17X1_SERIAL_PORT0
,
ctrl0
);
regmap_write
(
adau
->
regmap
,
ADAU17X1_SERIAL_PORT1
,
ctrl1
);
/* Set the mask to update all relevant bits in ADAU17X1_SERIAL_PORT0 */
ctrl0_mask
=
ADAU17X1_SERIAL_PORT0_MASTER
|
ADAU17X1_SERIAL_PORT0_LRCLK_POL
|
ADAU17X1_SERIAL_PORT0_BCLK_POL
|
ADAU17X1_SERIAL_PORT0_PULSE_MODE
;
regmap_update_bits
(
adau
->
regmap
,
ADAU17X1_SERIAL_PORT0
,
ctrl0_mask
,
ctrl0
);
regmap_update_bits
(
adau
->
regmap
,
ADAU17X1_SERIAL_PORT1
,
ADAU17X1_SERIAL_PORT1_DELAY_MASK
,
ctrl1
);
adau
->
dai_fmt
=
fmt
&
SND_SOC_DAIFMT_FORMAT_MASK
;
...
...
sound/soc/codecs/rt1011.c
View file @
d143a69f
...
...
@@ -2239,18 +2239,9 @@ static int rt1011_calibrate(struct rt1011_priv *rt1011, unsigned char cali_flag)
dc_offset
|=
(
value
&
0xffff
);
dev_info
(
dev
,
"Gain1 offset=0x%x
\n
"
,
dc_offset
);
/* check the package info. */
regmap_read
(
rt1011
->
regmap
,
RT1011_EFUSE_MATCH_DONE
,
&
value
);
if
(
value
&
0x4
)
rt1011
->
pack_id
=
1
;
if
(
cali_flag
)
{
if
(
rt1011
->
pack_id
)
regmap_write
(
rt1011
->
regmap
,
RT1011_ADC_SET_1
,
0x292c
);
else
regmap_write
(
rt1011
->
regmap
,
RT1011_ADC_SET_1
,
0x2925
);
regmap_write
(
rt1011
->
regmap
,
RT1011_ADC_SET_1
,
0x2925
);
/* Class D on */
regmap_write
(
rt1011
->
regmap
,
RT1011_CLASS_D_POS
,
0x010e
);
regmap_write
(
rt1011
->
regmap
,
...
...
@@ -2376,10 +2367,7 @@ static void rt1011_calibration_work(struct work_struct *work)
rt1011_r0_load
(
rt1011
);
}
if
(
rt1011
->
pack_id
)
snd_soc_component_write
(
component
,
RT1011_ADC_SET_1
,
0x292c
);
else
snd_soc_component_write
(
component
,
RT1011_ADC_SET_1
,
0x2925
);
snd_soc_component_write
(
component
,
RT1011_ADC_SET_1
,
0x2925
);
}
static
int
rt1011_parse_dp
(
struct
rt1011_priv
*
rt1011
,
struct
device
*
dev
)
...
...
sound/soc/codecs/rt1011.h
View file @
d143a69f
...
...
@@ -692,7 +692,6 @@ struct rt1011_priv {
unsigned
int
r0_reg
,
cali_done
;
unsigned
int
r0_calib
,
temperature_calib
;
int
recv_spk_mode
;
unsigned
int
pack_id
;
/* 0: WLCSP; 1: QFN */
};
#endif
/* end of _RT1011_H_ */
sound/soc/codecs/rt286.c
View file @
d143a69f
...
...
@@ -171,6 +171,9 @@ static bool rt286_readable_register(struct device *dev, unsigned int reg)
case
RT286_PROC_COEF
:
case
RT286_SET_AMP_GAIN_ADC_IN1
:
case
RT286_SET_AMP_GAIN_ADC_IN2
:
case
RT286_SET_GPIO_MASK
:
case
RT286_SET_GPIO_DIRECTION
:
case
RT286_SET_GPIO_DATA
:
case
RT286_SET_POWER
(
RT286_DAC_OUT1
):
case
RT286_SET_POWER
(
RT286_DAC_OUT2
):
case
RT286_SET_POWER
(
RT286_ADC_IN1
):
...
...
@@ -1204,7 +1207,7 @@ static int rt286_i2c_probe(struct i2c_client *i2c,
mdelay
(
10
);
if
(
!
rt286
->
pdata
.
gpio2_en
)
regmap_write
(
rt286
->
regmap
,
RT286_SET_DMIC2_DEFAULT
,
0x40
00
);
regmap_write
(
rt286
->
regmap
,
RT286_SET_DMIC2_DEFAULT
,
0x40
);
else
regmap_write
(
rt286
->
regmap
,
RT286_SET_DMIC2_DEFAULT
,
0
);
...
...
sound/soc/codecs/tas2552.c
View file @
d143a69f
...
...
@@ -730,8 +730,10 @@ static int tas2552_probe(struct i2c_client *client,
ret
=
devm_snd_soc_register_component
(
&
client
->
dev
,
&
soc_component_dev_tas2552
,
tas2552_dai
,
ARRAY_SIZE
(
tas2552_dai
));
if
(
ret
<
0
)
if
(
ret
<
0
)
{
dev_err
(
&
client
->
dev
,
"Failed to register component: %d
\n
"
,
ret
);
pm_runtime_get_noresume
(
&
client
->
dev
);
}
return
ret
;
}
...
...
sound/soc/codecs/tlv320aic32x4.c
View file @
d143a69f
...
...
@@ -577,12 +577,12 @@ static const struct regmap_range_cfg aic32x4_regmap_pages[] = {
.
window_start
=
0
,
.
window_len
=
128
,
.
range_min
=
0
,
.
range_max
=
AIC32X4_R
MICPGAVOL
,
.
range_max
=
AIC32X4_R
EFPOWERUP
,
},
};
const
struct
regmap_config
aic32x4_regmap_config
=
{
.
max_register
=
AIC32X4_R
MICPGAVOL
,
.
max_register
=
AIC32X4_R
EFPOWERUP
,
.
ranges
=
aic32x4_regmap_pages
,
.
num_ranges
=
ARRAY_SIZE
(
aic32x4_regmap_pages
),
};
...
...
@@ -1243,6 +1243,10 @@ int aic32x4_probe(struct device *dev, struct regmap *regmap)
if
(
ret
)
goto
err_disable_regulators
;
ret
=
aic32x4_register_clocks
(
dev
,
aic32x4
->
mclk_name
);
if
(
ret
)
goto
err_disable_regulators
;
ret
=
devm_snd_soc_register_component
(
dev
,
&
soc_component_dev_aic32x4
,
&
aic32x4_dai
,
1
);
if
(
ret
)
{
...
...
@@ -1250,10 +1254,6 @@ int aic32x4_probe(struct device *dev, struct regmap *regmap)
goto
err_disable_regulators
;
}
ret
=
aic32x4_register_clocks
(
dev
,
aic32x4
->
mclk_name
);
if
(
ret
)
goto
err_disable_regulators
;
return
0
;
err_disable_regulators:
...
...
sound/soc/intel/boards/kbl_da7219_max98927.c
View file @
d143a69f
...
...
@@ -282,11 +282,33 @@ static int kabylake_ssp_fixup(struct snd_soc_pcm_runtime *rtd,
struct
snd_interval
*
chan
=
hw_param_interval
(
params
,
SNDRV_PCM_HW_PARAM_CHANNELS
);
struct
snd_mask
*
fmt
=
hw_param_mask
(
params
,
SNDRV_PCM_HW_PARAM_FORMAT
);
struct
snd_soc_dpcm
*
dpcm
=
container_of
(
params
,
struct
snd_soc_dpcm
,
hw_params
);
struct
snd_soc_dai_link
*
fe_dai_link
=
dpcm
->
fe
->
dai_link
;
struct
snd_soc_dai_link
*
be_dai_link
=
dpcm
->
be
->
dai_link
;
struct
snd_soc_dpcm
*
dpcm
,
*
rtd_dpcm
=
NULL
;
/*
* The following loop will be called only for playback stream
* In this platform, there is only one playback device on every SSP
*/
for_each_dpcm_fe
(
rtd
,
SNDRV_PCM_STREAM_PLAYBACK
,
dpcm
)
{
rtd_dpcm
=
dpcm
;
break
;
}
/*
* This following loop will be called only for capture stream
* In this platform, there is only one capture device on every SSP
*/
for_each_dpcm_fe
(
rtd
,
SNDRV_PCM_STREAM_CAPTURE
,
dpcm
)
{
rtd_dpcm
=
dpcm
;
break
;
}
if
(
!
rtd_dpcm
)
return
-
EINVAL
;
/*
* The above 2 loops are mutually exclusive based on the stream direction,
* thus rtd_dpcm variable will never be overwritten
*/
/*
* Topology for kblda7219m98373 & kblmax98373 supports only S24_LE,
* where as kblda7219m98927 & kblmax98927 supports S16_LE by default.
...
...
@@ -309,9 +331,9 @@ static int kabylake_ssp_fixup(struct snd_soc_pcm_runtime *rtd,
/*
* The ADSP will convert the FE rate to 48k, stereo, 24 bit
*/
if
(
!
strcmp
(
fe_
dai_link
->
name
,
"Kbl Audio Port"
)
||
!
strcmp
(
fe_
dai_link
->
name
,
"Kbl Audio Headset Playback"
)
||
!
strcmp
(
fe_
dai_link
->
name
,
"Kbl Audio Capture Port"
))
{
if
(
!
strcmp
(
rtd_dpcm
->
fe
->
dai_link
->
name
,
"Kbl Audio Port"
)
||
!
strcmp
(
rtd_dpcm
->
fe
->
dai_link
->
name
,
"Kbl Audio Headset Playback"
)
||
!
strcmp
(
rtd_dpcm
->
fe
->
dai_link
->
name
,
"Kbl Audio Capture Port"
))
{
rate
->
min
=
rate
->
max
=
48000
;
chan
->
min
=
chan
->
max
=
2
;
snd_mask_none
(
fmt
);
...
...
@@ -322,7 +344,7 @@ static int kabylake_ssp_fixup(struct snd_soc_pcm_runtime *rtd,
* The speaker on the SSP0 supports S16_LE and not S24_LE.
* thus changing the mask here
*/
if
(
!
strcmp
(
be_
dai_link
->
name
,
"SSP0-Codec"
))
if
(
!
strcmp
(
rtd_dpcm
->
be
->
dai_link
->
name
,
"SSP0-Codec"
))
snd_mask_set_format
(
fmt
,
SNDRV_PCM_FORMAT_S16_LE
);
return
0
;
...
...
sound/soc/intel/keembay/kmb_platform.c
View file @
d143a69f
...
...
@@ -105,14 +105,15 @@ static unsigned int kmb_pcm_tx_fn(struct kmb_i2s_info *kmb_i2s,
void
*
buf
=
runtime
->
dma_area
;
int
i
;
if
(
kmb_i2s
->
iec958_fmt
)
hdmi_reformat_iec958
(
runtime
,
kmb_i2s
,
tx_ptr
);
/* KMB i2s uses two separate L/R FIFO */
for
(
i
=
0
;
i
<
kmb_i2s
->
fifo_th
;
i
++
)
{
if
(
kmb_i2s
->
config
.
data_width
==
16
)
{
writel
(((
u16
(
*
)[
2
])
buf
)[
tx_ptr
][
0
],
i2s_base
+
LRBR_LTHR
(
0
));
writel
(((
u16
(
*
)[
2
])
buf
)[
tx_ptr
][
1
],
i2s_base
+
RRBR_RTHR
(
0
));
}
else
{
if
(
kmb_i2s
->
iec958_fmt
)
hdmi_reformat_iec958
(
runtime
,
kmb_i2s
,
tx_ptr
);
writel
(((
u32
(
*
)[
2
])
buf
)[
tx_ptr
][
0
],
i2s_base
+
LRBR_LTHR
(
0
));
writel
(((
u32
(
*
)[
2
])
buf
)[
tx_ptr
][
1
],
i2s_base
+
RRBR_RTHR
(
0
));
}
...
...
sound/soc/meson/axg-frddr.c
View file @
d143a69f
...
...
@@ -11,6 +11,7 @@
#include <linux/regmap.h>
#include <linux/module.h>
#include <linux/of_platform.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/soc-dai.h>
...
...
@@ -46,11 +47,28 @@ static int g12a_frddr_dai_prepare(struct snd_pcm_substream *substream,
return
0
;
}
static
int
axg_frddr_dai_hw_params
(
struct
snd_pcm_substream
*
substream
,
struct
snd_pcm_hw_params
*
params
,
struct
snd_soc_dai
*
dai
)
{
struct
axg_fifo
*
fifo
=
snd_soc_dai_get_drvdata
(
dai
);
unsigned
int
period
,
depth
,
val
;
period
=
params_period_bytes
(
params
);
/* Trim the FIFO depth if the period is small to improve latency */
depth
=
min
(
period
,
fifo
->
depth
);
val
=
(
depth
/
AXG_FIFO_BURST
)
-
1
;
regmap_update_bits
(
fifo
->
map
,
FIFO_CTRL1
,
CTRL1_FRDDR_DEPTH_MASK
,
CTRL1_FRDDR_DEPTH
(
val
));
return
0
;
}
static
int
axg_frddr_dai_startup
(
struct
snd_pcm_substream
*
substream
,
struct
snd_soc_dai
*
dai
)
{
struct
axg_fifo
*
fifo
=
snd_soc_dai_get_drvdata
(
dai
);
unsigned
int
val
;
int
ret
;
/* Enable pclk to access registers and clock the fifo ip */
...
...
@@ -61,11 +79,6 @@ static int axg_frddr_dai_startup(struct snd_pcm_substream *substream,
/* Apply single buffer mode to the interface */
regmap_update_bits
(
fifo
->
map
,
FIFO_CTRL0
,
CTRL0_FRDDR_PP_MODE
,
0
);
/* Use all fifo depth */
val
=
(
fifo
->
depth
/
AXG_FIFO_BURST
)
-
1
;
regmap_update_bits
(
fifo
->
map
,
FIFO_CTRL1
,
CTRL1_FRDDR_DEPTH_MASK
,
CTRL1_FRDDR_DEPTH
(
val
));
return
0
;
}
...
...
@@ -84,6 +97,7 @@ static int axg_frddr_pcm_new(struct snd_soc_pcm_runtime *rtd,
}
static
const
struct
snd_soc_dai_ops
axg_frddr_ops
=
{
.
hw_params
=
axg_frddr_dai_hw_params
,
.
startup
=
axg_frddr_dai_startup
,
.
shutdown
=
axg_frddr_dai_shutdown
,
};
...
...
@@ -157,6 +171,7 @@ static const struct axg_fifo_match_data axg_frddr_match_data = {
static
const
struct
snd_soc_dai_ops
g12a_frddr_ops
=
{
.
prepare
=
g12a_frddr_dai_prepare
,
.
hw_params
=
axg_frddr_dai_hw_params
,
.
startup
=
axg_frddr_dai_startup
,
.
shutdown
=
axg_frddr_dai_shutdown
,
};
...
...
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