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
5516e3f4
Commit
5516e3f4
authored
Sep 10, 2024
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-next
Signed-off-by:
Takashi Iwai
<
tiwai@suse.de
>
parents
28fbfaf6
c491b044
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
130 additions
and
91 deletions
+130
-91
include/sound/sof/topology.h
include/sound/sof/topology.h
+1
-1
include/uapi/sound/sof/abi.h
include/uapi/sound/sof/abi.h
+1
-1
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+3
-0
sound/soc/amd/yc/acp6x-mach.c
sound/soc/amd/yc/acp6x-mach.c
+7
-0
sound/soc/codecs/chv3-codec.c
sound/soc/codecs/chv3-codec.c
+1
-0
sound/soc/codecs/lpass-va-macro.c
sound/soc/codecs/lpass-va-macro.c
+10
-1
sound/soc/codecs/tda7419.c
sound/soc/codecs/tda7419.c
+1
-0
sound/soc/google/chv3-i2s.c
sound/soc/google/chv3-i2s.c
+1
-0
sound/soc/intel/boards/bxt_rt298.c
sound/soc/intel/boards/bxt_rt298.c
+1
-1
sound/soc/intel/boards/bytcht_cx2072x.c
sound/soc/intel/boards/bytcht_cx2072x.c
+1
-1
sound/soc/intel/boards/bytcht_da7213.c
sound/soc/intel/boards/bytcht_da7213.c
+1
-1
sound/soc/intel/boards/bytcht_es8316.c
sound/soc/intel/boards/bytcht_es8316.c
+1
-1
sound/soc/intel/boards/bytcr_rt5640.c
sound/soc/intel/boards/bytcr_rt5640.c
+1
-1
sound/soc/intel/boards/bytcr_rt5651.c
sound/soc/intel/boards/bytcr_rt5651.c
+1
-1
sound/soc/intel/boards/bytcr_wm5102.c
sound/soc/intel/boards/bytcr_wm5102.c
+1
-1
sound/soc/intel/boards/cht_bsw_rt5645.c
sound/soc/intel/boards/cht_bsw_rt5645.c
+1
-1
sound/soc/intel/boards/cht_bsw_rt5672.c
sound/soc/intel/boards/cht_bsw_rt5672.c
+1
-1
sound/soc/intel/common/soc-acpi-intel-cht-match.c
sound/soc/intel/common/soc-acpi-intel-cht-match.c
+0
-1
sound/soc/intel/keembay/kmb_platform.c
sound/soc/intel/keembay/kmb_platform.c
+1
-0
sound/soc/mediatek/mt8188/mt8188-mt6359.c
sound/soc/mediatek/mt8188/mt8188-mt6359.c
+13
-4
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+1
-0
sound/soc/sof/topology.c
sound/soc/sof/topology.c
+2
-0
sound/soc/sunxi/sun4i-i2s.c
sound/soc/sunxi/sun4i-i2s.c
+73
-70
sound/soc/tegra/tegra210_ahub.c
sound/soc/tegra/tegra210_ahub.c
+6
-4
No files found.
include/sound/sof/topology.h
View file @
5516e3f4
...
...
@@ -54,7 +54,7 @@ enum sof_comp_type {
struct
sof_ipc_comp
{
struct
sof_ipc_cmd_hdr
hdr
;
uint32_t
id
;
enum
sof_comp_type
type
;
uint32_t
type
;
uint32_t
pipeline_id
;
uint32_t
core
;
...
...
include/uapi/sound/sof/abi.h
View file @
5516e3f4
...
...
@@ -29,7 +29,7 @@
/* SOF ABI version major, minor and patch numbers */
#define SOF_ABI_MAJOR 3
#define SOF_ABI_MINOR 23
#define SOF_ABI_PATCH
0
#define SOF_ABI_PATCH
1
/* SOF ABI version number. Format within 32bit word is MMmmmppp */
#define SOF_ABI_MAJOR_SHIFT 24
...
...
sound/pci/hda/patch_realtek.c
View file @
5516e3f4
...
...
@@ -10183,6 +10183,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK
(
0x103c
,
0x87f5
,
"HP"
,
ALC287_FIXUP_HP_GPIO_LED
),
SND_PCI_QUIRK
(
0x103c
,
0x87f6
,
"HP Spectre x360 14"
,
ALC245_FIXUP_HP_X360_AMP
),
SND_PCI_QUIRK
(
0x103c
,
0x87f7
,
"HP Spectre x360 14"
,
ALC245_FIXUP_HP_X360_AMP
),
SND_PCI_QUIRK
(
0x103c
,
0x87fd
,
"HP Laptop 14-dq2xxx"
,
ALC236_FIXUP_HP_MUTE_LED_COEFBIT2
),
SND_PCI_QUIRK
(
0x103c
,
0x87fe
,
"HP Laptop 15s-fq2xxx"
,
ALC236_FIXUP_HP_MUTE_LED_COEFBIT2
),
SND_PCI_QUIRK
(
0x103c
,
0x8805
,
"HP ProBook 650 G8 Notebook PC"
,
ALC236_FIXUP_HP_GPIO_LED
),
SND_PCI_QUIRK
(
0x103c
,
0x880d
,
"HP EliteBook 830 G8 Notebook PC"
,
ALC285_FIXUP_HP_GPIO_LED
),
...
...
@@ -10307,6 +10308,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK
(
0x103c
,
0x8c16
,
"HP Spectre 16"
,
ALC287_FIXUP_CS35L41_I2C_2
),
SND_PCI_QUIRK
(
0x103c
,
0x8c17
,
"HP Spectre 16"
,
ALC287_FIXUP_CS35L41_I2C_2
),
SND_PCI_QUIRK
(
0x103c
,
0x8c21
,
"HP Pavilion Plus Laptop 14-ey0XXX"
,
ALC245_FIXUP_HP_X360_MUTE_LEDS
),
SND_PCI_QUIRK
(
0x103c
,
0x8c30
,
"HP Victus 15-fb1xxx"
,
ALC245_FIXUP_HP_MUTE_LED_COEFBIT
),
SND_PCI_QUIRK
(
0x103c
,
0x8c46
,
"HP EliteBook 830 G11"
,
ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED
),
SND_PCI_QUIRK
(
0x103c
,
0x8c47
,
"HP EliteBook 840 G11"
,
ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED
),
SND_PCI_QUIRK
(
0x103c
,
0x8c48
,
"HP EliteBook 860 G11"
,
ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED
),
...
...
@@ -10433,6 +10435,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK
(
0x1043
,
0x1e02
,
"ASUS UX3402ZA"
,
ALC245_FIXUP_CS35L41_SPI_2
),
SND_PCI_QUIRK
(
0x1043
,
0x1e11
,
"ASUS Zephyrus G15"
,
ALC289_FIXUP_ASUS_GA502
),
SND_PCI_QUIRK
(
0x1043
,
0x1e12
,
"ASUS UM3402"
,
ALC287_FIXUP_CS35L41_I2C_2
),
SND_PCI_QUIRK
(
0x1043
,
0x1e1f
,
"ASUS Vivobook 15 X1504VAP"
,
ALC2XX_FIXUP_HEADSET_MIC
),
SND_PCI_QUIRK
(
0x1043
,
0x1e51
,
"ASUS Zephyrus M15"
,
ALC294_FIXUP_ASUS_GU502_PINS
),
SND_PCI_QUIRK
(
0x1043
,
0x1e5e
,
"ASUS ROG Strix G513"
,
ALC294_FIXUP_ASUS_G513_PINS
),
SND_PCI_QUIRK
(
0x1043
,
0x1e8e
,
"ASUS Zephyrus G15"
,
ALC289_FIXUP_ASUS_GA401
),
...
...
sound/soc/amd/yc/acp6x-mach.c
View file @
5516e3f4
...
...
@@ -353,6 +353,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"Bravo 15 C7VF"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
DMI_MATCH
(
DMI_BOARD_VENDOR
,
"Micro-Star International Co., Ltd."
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"Bravo 17 D7VEK"
),
}
},
{
.
driver_data
=
&
acp6x_card
,
.
matches
=
{
...
...
sound/soc/codecs/chv3-codec.c
View file @
5516e3f4
...
...
@@ -26,6 +26,7 @@ static const struct of_device_id chv3_codec_of_match[] = {
{
.
compatible
=
"google,chv3-codec"
,
},
{
}
};
MODULE_DEVICE_TABLE
(
of
,
chv3_codec_of_match
);
static
struct
platform_driver
chv3_codec_platform_driver
=
{
.
driver
=
{
...
...
sound/soc/codecs/lpass-va-macro.c
View file @
5516e3f4
...
...
@@ -228,11 +228,13 @@ struct va_macro {
struct
va_macro_data
{
bool
has_swr_master
;
bool
has_npl_clk
;
int
version
;
};
static
const
struct
va_macro_data
sm8250_va_data
=
{
.
has_swr_master
=
false
,
.
has_npl_clk
=
false
,
.
version
=
LPASS_CODEC_VERSION_1_0
,
};
static
const
struct
va_macro_data
sm8450_va_data
=
{
...
...
@@ -1587,7 +1589,14 @@ static int va_macro_probe(struct platform_device *pdev)
goto
err_npl
;
}
va_macro_set_lpass_codec_version
(
va
);
/**
* old version of codecs do not have a reliable way to determine the
* version from registers, get them from soc specific data
*/
if
(
data
->
version
)
lpass_macro_set_codec_version
(
data
->
version
);
else
/* read version from register */
va_macro_set_lpass_codec_version
(
va
);
if
(
va
->
has_swr_master
)
{
/* Set default CLK div to 1 */
...
...
sound/soc/codecs/tda7419.c
View file @
5516e3f4
...
...
@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = {
{
.
compatible
=
"st,tda7419"
},
{
},
};
MODULE_DEVICE_TABLE
(
of
,
tda7419_of_match
);
static
struct
i2c_driver
tda7419_driver
=
{
.
driver
=
{
...
...
sound/soc/google/chv3-i2s.c
View file @
5516e3f4
...
...
@@ -322,6 +322,7 @@ static const struct of_device_id chv3_i2s_of_match[] = {
{
.
compatible
=
"google,chv3-i2s"
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
chv3_i2s_of_match
);
static
struct
platform_driver
chv3_i2s_driver
=
{
.
probe
=
chv3_i2s_probe
,
...
...
sound/soc/intel/boards/bxt_rt298.c
View file @
5516e3f4
...
...
@@ -605,7 +605,7 @@ static int broxton_audio_probe(struct platform_device *pdev)
int
i
;
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
broxton_rt298_dais
);
i
++
)
{
if
(
card
->
dai_link
[
i
].
codecs
->
name
&&
if
(
card
->
dai_link
[
i
].
num_codecs
&&
!
strncmp
(
card
->
dai_link
[
i
].
codecs
->
name
,
"i2c-INT343A:00"
,
I2C_NAME_SIZE
))
{
if
(
!
strncmp
(
card
->
name
,
"broxton-rt298"
,
...
...
sound/soc/intel/boards/bytcht_cx2072x.c
View file @
5516e3f4
...
...
@@ -241,7 +241,7 @@ static int snd_byt_cht_cx2072x_probe(struct platform_device *pdev)
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_cht_cx2072x_dais
);
i
++
)
{
if
(
byt_cht_cx2072x_dais
[
i
].
codecs
->
name
&&
if
(
byt_cht_cx2072x_dais
[
i
].
num_codecs
&&
!
strcmp
(
byt_cht_cx2072x_dais
[
i
].
codecs
->
name
,
"i2c-14F10720:00"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/bytcht_da7213.c
View file @
5516e3f4
...
...
@@ -245,7 +245,7 @@ static int bytcht_da7213_probe(struct platform_device *pdev)
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
dailink
);
i
++
)
{
if
(
dailink
[
i
].
codecs
->
name
&&
if
(
dailink
[
i
].
num_codecs
&&
!
strcmp
(
dailink
[
i
].
codecs
->
name
,
"i2c-DLGS7213:00"
))
{
dai_index
=
i
;
break
;
...
...
sound/soc/intel/boards/bytcht_es8316.c
View file @
5516e3f4
...
...
@@ -546,7 +546,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_cht_es8316_dais
);
i
++
)
{
if
(
byt_cht_es8316_dais
[
i
].
codecs
->
name
&&
if
(
byt_cht_es8316_dais
[
i
].
num_codecs
&&
!
strcmp
(
byt_cht_es8316_dais
[
i
].
codecs
->
name
,
"i2c-ESSX8316:00"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/bytcr_rt5640.c
View file @
5516e3f4
...
...
@@ -1677,7 +1677,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev)
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_rt5640_dais
);
i
++
)
{
if
(
byt_rt5640_dais
[
i
].
codecs
->
name
&&
if
(
byt_rt5640_dais
[
i
].
num_codecs
&&
!
strcmp
(
byt_rt5640_dais
[
i
].
codecs
->
name
,
"i2c-10EC5640:00"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/bytcr_rt5651.c
View file @
5516e3f4
...
...
@@ -910,7 +910,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_rt5651_dais
);
i
++
)
{
if
(
byt_rt5651_dais
[
i
].
codecs
->
name
&&
if
(
byt_rt5651_dais
[
i
].
num_codecs
&&
!
strcmp
(
byt_rt5651_dais
[
i
].
codecs
->
name
,
"i2c-10EC5651:00"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/bytcr_wm5102.c
View file @
5516e3f4
...
...
@@ -605,7 +605,7 @@ static int snd_byt_wm5102_mc_probe(struct platform_device *pdev)
/* find index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_wm5102_dais
);
i
++
)
{
if
(
byt_wm5102_dais
[
i
].
codecs
->
name
&&
if
(
byt_wm5102_dais
[
i
].
num_codecs
&&
!
strcmp
(
byt_wm5102_dais
[
i
].
codecs
->
name
,
"wm5102-codec"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/cht_bsw_rt5645.c
View file @
5516e3f4
...
...
@@ -569,7 +569,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
/* set correct codec name */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
cht_dailink
);
i
++
)
if
(
cht_dailink
[
i
].
codecs
->
name
&&
if
(
cht_dailink
[
i
].
num_codecs
&&
!
strcmp
(
cht_dailink
[
i
].
codecs
->
name
,
"i2c-10EC5645:00"
))
{
dai_index
=
i
;
...
...
sound/soc/intel/boards/cht_bsw_rt5672.c
View file @
5516e3f4
...
...
@@ -466,7 +466,7 @@ static int snd_cht_mc_probe(struct platform_device *pdev)
/* find index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
cht_dailink
);
i
++
)
{
if
(
cht_dailink
[
i
].
codecs
->
name
&&
if
(
cht_dailink
[
i
].
num_codecs
&&
!
strcmp
(
cht_dailink
[
i
].
codecs
->
name
,
RT5672_I2C_DEFAULT
))
{
dai_index
=
i
;
break
;
...
...
sound/soc/intel/common/soc-acpi-intel-cht-match.c
View file @
5516e3f4
...
...
@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = {
/* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */
.
matches
=
{
DMI_MATCH
(
DMI_SYS_VENDOR
,
"Intel Corporation"
),
DMI_MATCH
(
DMI_PRODUCT_NAME
,
"CHERRYVIEW D1 PLATFORM"
),
DMI_MATCH
(
DMI_PRODUCT_VERSION
,
"Blade3-10A-001"
),
},
},
...
...
sound/soc/intel/keembay/kmb_platform.c
View file @
5516e3f4
...
...
@@ -814,6 +814,7 @@ static const struct of_device_id kmb_plat_of_match[] = {
{
.
compatible
=
"intel,keembay-tdm"
,
.
data
=
&
intel_kmb_tdm_dai
},
{}
};
MODULE_DEVICE_TABLE
(
of
,
kmb_plat_of_match
);
static
int
kmb_plat_dai_probe
(
struct
platform_device
*
pdev
)
{
...
...
sound/soc/mediatek/mt8188/mt8188-mt6359.c
View file @
5516e3f4
...
...
@@ -734,6 +734,7 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)
struct
mtk_soc_card_data
*
soc_card_data
=
snd_soc_card_get_drvdata
(
rtd
->
card
);
struct
snd_soc_jack
*
jack
=
&
soc_card_data
->
card_data
->
jacks
[
MT8188_JACK_HEADSET
];
struct
snd_soc_component
*
component
=
snd_soc_rtd_to_codec
(
rtd
,
0
)
->
component
;
struct
mtk_platform_card_data
*
card_data
=
soc_card_data
->
card_data
;
int
ret
;
ret
=
snd_soc_dapm_new_controls
(
&
card
->
dapm
,
mt8188_nau8825_widgets
,
...
...
@@ -762,10 +763,18 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)
return
ret
;
}
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_0
,
KEY_PLAYPAUSE
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_1
,
KEY_VOICECOMMAND
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_2
,
KEY_VOLUMEUP
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_3
,
KEY_VOLUMEDOWN
);
if
(
card_data
->
flags
&
ES8326_HS_PRESENT
)
{
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_0
,
KEY_PLAYPAUSE
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_1
,
KEY_VOLUMEUP
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_2
,
KEY_VOLUMEDOWN
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_3
,
KEY_VOICECOMMAND
);
}
else
{
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_0
,
KEY_PLAYPAUSE
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_1
,
KEY_VOICECOMMAND
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_2
,
KEY_VOLUMEUP
);
snd_jack_set_key
(
jack
->
jack
,
SND_JACK_BTN_3
,
KEY_VOLUMEDOWN
);
}
ret
=
snd_soc_component_set_jack
(
component
,
jack
,
NULL
);
if
(
ret
)
{
...
...
sound/soc/soc-dapm.c
View file @
5516e3f4
...
...
@@ -4057,6 +4057,7 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
case
SND_SOC_DAPM_POST_PMD
:
kfree
(
substream
->
runtime
);
substream
->
runtime
=
NULL
;
break
;
default:
...
...
sound/soc/sof/topology.c
View file @
5516e3f4
...
...
@@ -2050,6 +2050,8 @@ static int sof_link_unload(struct snd_soc_component *scomp, struct snd_soc_dobj
if
(
!
slink
)
return
0
;
slink
->
link
->
platforms
->
name
=
NULL
;
kfree
(
slink
->
tuples
);
list_del
(
&
slink
->
list
);
kfree
(
slink
->
hw_configs
);
...
...
sound/soc/sunxi/sun4i-i2s.c
View file @
5516e3f4
...
...
@@ -100,8 +100,8 @@
#define SUN8I_I2S_CTRL_MODE_PCM (0 << 4)
#define SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK BIT(19)
#define SUN8I_I2S_FMT0_LRCLK_POLARITY_
INVERTED
(1 << 19)
#define SUN8I_I2S_FMT0_LRCLK_POLARITY_
NORMAL
(0 << 19)
#define SUN8I_I2S_FMT0_LRCLK_POLARITY_
START_HIGH
(1 << 19)
#define SUN8I_I2S_FMT0_LRCLK_POLARITY_
START_LOW
(0 << 19)
#define SUN8I_I2S_FMT0_LRCK_PERIOD_MASK GENMASK(17, 8)
#define SUN8I_I2S_FMT0_LRCK_PERIOD(period) ((period - 1) << 8)
#define SUN8I_I2S_FMT0_BCLK_POLARITY_MASK BIT(7)
...
...
@@ -729,65 +729,37 @@ static int sun4i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
static
int
sun8i_i2s_set_soc_fmt
(
const
struct
sun4i_i2s
*
i2s
,
unsigned
int
fmt
)
{
u32
mode
,
val
;
u32
mode
,
lrclk_pol
,
bclk_pol
,
val
;
u8
offset
;
/*
* DAI clock polarity
*
* The setup for LRCK contradicts the datasheet, but under a
* scope it's clear that the LRCK polarity is reversed
* compared to the expected polarity on the bus.
*/
switch
(
fmt
&
SND_SOC_DAIFMT_INV_MASK
)
{
case
SND_SOC_DAIFMT_IB_IF
:
/* Invert both clocks */
val
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_IB_NF
:
/* Invert bit clock */
val
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
|
SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_NB_IF
:
/* Invert frame clock */
val
=
0
;
break
;
case
SND_SOC_DAIFMT_NB_NF
:
val
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED
;
break
;
default:
return
-
EINVAL
;
}
regmap_update_bits
(
i2s
->
regmap
,
SUN4I_I2S_FMT0_REG
,
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
|
SUN8I_I2S_FMT0_BCLK_POLARITY_MASK
,
val
);
/* DAI Mode */
switch
(
fmt
&
SND_SOC_DAIFMT_FORMAT_MASK
)
{
case
SND_SOC_DAIFMT_DSP_A
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_PCM
;
offset
=
1
;
break
;
case
SND_SOC_DAIFMT_DSP_B
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_PCM
;
offset
=
0
;
break
;
case
SND_SOC_DAIFMT_I2S
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_LOW
;
mode
=
SUN8I_I2S_CTRL_MODE_LEFT
;
offset
=
1
;
break
;
case
SND_SOC_DAIFMT_LEFT_J
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_LEFT
;
offset
=
0
;
break
;
case
SND_SOC_DAIFMT_RIGHT_J
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_RIGHT
;
offset
=
0
;
break
;
...
...
@@ -805,6 +777,35 @@ static int sun8i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
SUN8I_I2S_TX_CHAN_OFFSET_MASK
,
SUN8I_I2S_TX_CHAN_OFFSET
(
offset
));
/* DAI clock polarity */
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_NORMAL
;
switch
(
fmt
&
SND_SOC_DAIFMT_INV_MASK
)
{
case
SND_SOC_DAIFMT_IB_IF
:
/* Invert both clocks */
lrclk_pol
^=
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
;
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_IB_NF
:
/* Invert bit clock */
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_NB_IF
:
/* Invert frame clock */
lrclk_pol
^=
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
;
break
;
case
SND_SOC_DAIFMT_NB_NF
:
/* No inversion */
break
;
default:
return
-
EINVAL
;
}
regmap_update_bits
(
i2s
->
regmap
,
SUN4I_I2S_FMT0_REG
,
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
|
SUN8I_I2S_FMT0_BCLK_POLARITY_MASK
,
lrclk_pol
|
bclk_pol
);
/* DAI clock master masks */
switch
(
fmt
&
SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK
)
{
case
SND_SOC_DAIFMT_BP_FP
:
...
...
@@ -836,65 +837,37 @@ static int sun8i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
static
int
sun50i_h6_i2s_set_soc_fmt
(
const
struct
sun4i_i2s
*
i2s
,
unsigned
int
fmt
)
{
u32
mode
,
val
;
u32
mode
,
lrclk_pol
,
bclk_pol
,
val
;
u8
offset
;
/*
* DAI clock polarity
*
* The setup for LRCK contradicts the datasheet, but under a
* scope it's clear that the LRCK polarity is reversed
* compared to the expected polarity on the bus.
*/
switch
(
fmt
&
SND_SOC_DAIFMT_INV_MASK
)
{
case
SND_SOC_DAIFMT_IB_IF
:
/* Invert both clocks */
val
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_IB_NF
:
/* Invert bit clock */
val
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
|
SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_NB_IF
:
/* Invert frame clock */
val
=
0
;
break
;
case
SND_SOC_DAIFMT_NB_NF
:
val
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED
;
break
;
default:
return
-
EINVAL
;
}
regmap_update_bits
(
i2s
->
regmap
,
SUN4I_I2S_FMT0_REG
,
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
|
SUN8I_I2S_FMT0_BCLK_POLARITY_MASK
,
val
);
/* DAI Mode */
switch
(
fmt
&
SND_SOC_DAIFMT_FORMAT_MASK
)
{
case
SND_SOC_DAIFMT_DSP_A
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_PCM
;
offset
=
1
;
break
;
case
SND_SOC_DAIFMT_DSP_B
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_PCM
;
offset
=
0
;
break
;
case
SND_SOC_DAIFMT_I2S
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_LOW
;
mode
=
SUN8I_I2S_CTRL_MODE_LEFT
;
offset
=
1
;
break
;
case
SND_SOC_DAIFMT_LEFT_J
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_LEFT
;
offset
=
0
;
break
;
case
SND_SOC_DAIFMT_RIGHT_J
:
lrclk_pol
=
SUN8I_I2S_FMT0_LRCLK_POLARITY_START_HIGH
;
mode
=
SUN8I_I2S_CTRL_MODE_RIGHT
;
offset
=
0
;
break
;
...
...
@@ -912,6 +885,36 @@ static int sun50i_h6_i2s_set_soc_fmt(const struct sun4i_i2s *i2s,
SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK
,
SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET
(
offset
));
/* DAI clock polarity */
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_NORMAL
;
switch
(
fmt
&
SND_SOC_DAIFMT_INV_MASK
)
{
case
SND_SOC_DAIFMT_IB_IF
:
/* Invert both clocks */
lrclk_pol
^=
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
;
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_IB_NF
:
/* Invert bit clock */
bclk_pol
=
SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED
;
break
;
case
SND_SOC_DAIFMT_NB_IF
:
/* Invert frame clock */
lrclk_pol
^=
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
;
break
;
case
SND_SOC_DAIFMT_NB_NF
:
/* No inversion */
break
;
default:
return
-
EINVAL
;
}
regmap_update_bits
(
i2s
->
regmap
,
SUN4I_I2S_FMT0_REG
,
SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK
|
SUN8I_I2S_FMT0_BCLK_POLARITY_MASK
,
lrclk_pol
|
bclk_pol
);
/* DAI clock master masks */
switch
(
fmt
&
SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK
)
{
case
SND_SOC_DAIFMT_BP_FP
:
...
...
sound/soc/tegra/tegra210_ahub.c
View file @
5516e3f4
...
...
@@ -2,7 +2,7 @@
//
// tegra210_ahub.c - Tegra210 AHUB driver
//
// Copyright (c) 2020-202
2
, NVIDIA CORPORATION. All rights reserved.
// Copyright (c) 2020-202
4
, NVIDIA CORPORATION. All rights reserved.
#include <linux/clk.h>
#include <linux/device.h>
...
...
@@ -1391,11 +1391,13 @@ static int tegra_ahub_probe(struct platform_device *pdev)
return
err
;
}
pm_runtime_enable
(
&
pdev
->
dev
);
err
=
of_platform_populate
(
pdev
->
dev
.
of_node
,
NULL
,
NULL
,
&
pdev
->
dev
);
if
(
err
)
if
(
err
)
{
pm_runtime_disable
(
&
pdev
->
dev
);
return
err
;
pm_runtime_enable
(
&
pdev
->
dev
);
}
return
0
;
}
...
...
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