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
8e143296
Commit
8e143296
authored
Oct 29, 2021
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/for-5.15' into asoc-linus
parents
5816b3e6
5d03907b
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
295 additions
and
257 deletions
+295
-257
Documentation/devicetree/bindings/sound/amlogic,t9015.yaml
Documentation/devicetree/bindings/sound/amlogic,t9015.yaml
+6
-0
MAINTAINERS
MAINTAINERS
+2
-1
sound/soc/codecs/Kconfig
sound/soc/codecs/Kconfig
+1
-0
sound/soc/codecs/cs42l42.c
sound/soc/codecs/cs42l42.c
+129
-105
sound/soc/codecs/cs42l42.h
sound/soc/codecs/cs42l42.h
+3
-0
sound/soc/codecs/cs4341.c
sound/soc/codecs/cs4341.c
+7
-0
sound/soc/codecs/nau8824.c
sound/soc/codecs/nau8824.c
+2
-2
sound/soc/codecs/pcm179x-spi.c
sound/soc/codecs/pcm179x-spi.c
+1
-0
sound/soc/codecs/pcm512x.c
sound/soc/codecs/pcm512x.c
+2
-0
sound/soc/codecs/wcd938x.c
sound/soc/codecs/wcd938x.c
+3
-3
sound/soc/codecs/wm8960.c
sound/soc/codecs/wm8960.c
+10
-3
sound/soc/fsl/fsl_esai.c
sound/soc/fsl/fsl_esai.c
+10
-6
sound/soc/fsl/fsl_micfil.c
sound/soc/fsl/fsl_micfil.c
+10
-5
sound/soc/fsl/fsl_sai.c
sound/soc/fsl/fsl_sai.c
+9
-5
sound/soc/fsl/fsl_spdif.c
sound/soc/fsl/fsl_spdif.c
+9
-5
sound/soc/fsl/fsl_xcvr.c
sound/soc/fsl/fsl_xcvr.c
+22
-10
sound/soc/intel/boards/bytcht_es8316.c
sound/soc/intel/boards/bytcht_es8316.c
+12
-25
sound/soc/intel/boards/sof_sdw.c
sound/soc/intel/boards/sof_sdw.c
+5
-0
sound/soc/mediatek/Kconfig
sound/soc/mediatek/Kconfig
+3
-0
sound/soc/mediatek/common/mtk-afe-fe-dai.c
sound/soc/mediatek/common/mtk-afe-fe-dai.c
+11
-8
sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c
sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c
+3
-4
sound/soc/rockchip/Makefile
sound/soc/rockchip/Makefile
+1
-2
sound/soc/rockchip/rockchip_i2s.c
sound/soc/rockchip/rockchip_i2s.c
+1
-2
sound/soc/rockchip/rockchip_pcm.c
sound/soc/rockchip/rockchip_pcm.c
+0
-44
sound/soc/rockchip/rockchip_pcm.h
sound/soc/rockchip/rockchip_pcm.h
+0
-11
sound/soc/soc-core.c
sound/soc/soc-core.c
+1
-0
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+8
-5
sound/soc/sof/core.c
sound/soc/sof/core.c
+1
-3
sound/soc/sof/imx/imx8.c
sound/soc/sof/imx/imx8.c
+8
-1
sound/soc/sof/imx/imx8m.c
sound/soc/sof/imx/imx8m.c
+8
-1
sound/soc/sof/loader.c
sound/soc/sof/loader.c
+5
-3
sound/soc/sof/trace.c
sound/soc/sof/trace.c
+0
-1
sound/soc/sof/xtensa/core.c
sound/soc/sof/xtensa/core.c
+2
-2
No files found.
Documentation/devicetree/bindings/sound/amlogic,t9015.yaml
View file @
8e143296
...
@@ -34,6 +34,10 @@ properties:
...
@@ -34,6 +34,10 @@ properties:
resets
:
resets
:
maxItems
:
1
maxItems
:
1
AVDD-supply
:
description
:
Analogue power supply.
required
:
required
:
-
"
#sound-dai-cells"
-
"
#sound-dai-cells"
-
compatible
-
compatible
...
@@ -41,6 +45,7 @@ required:
...
@@ -41,6 +45,7 @@ required:
-
clocks
-
clocks
-
clock-names
-
clock-names
-
resets
-
resets
-
AVDD-supply
additionalProperties
:
false
additionalProperties
:
false
...
@@ -56,4 +61,5 @@ examples:
...
@@ -56,4 +61,5 @@ examples:
clocks = <&clkc CLKID_AUDIO_CODEC>;
clocks = <&clkc CLKID_AUDIO_CODEC>;
clock-names = "pclk";
clock-names = "pclk";
resets = <&reset RESET_AUDIO_CODEC>;
resets = <&reset RESET_AUDIO_CODEC>;
AVDD-supply = <&vddao_1v8>;
};
};
MAINTAINERS
View file @
8e143296
...
@@ -17883,7 +17883,8 @@ M: Olivier Moysan <olivier.moysan@foss.st.com>
...
@@ -17883,7 +17883,8 @@ M: Olivier Moysan <olivier.moysan@foss.st.com>
M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
M: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Maintained
S: Maintained
F: Documentation/devicetree/bindings/iio/adc/st,stm32-*.yaml
F: Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
F: Documentation/devicetree/bindings/sound/st,stm32-*.yaml
F: sound/soc/stm/
F: sound/soc/stm/
STM32 TIMER/LPTIMER DRIVERS
STM32 TIMER/LPTIMER DRIVERS
...
...
sound/soc/codecs/Kconfig
View file @
8e143296
...
@@ -1583,6 +1583,7 @@ config SND_SOC_WCD938X_SDW
...
@@ -1583,6 +1583,7 @@ config SND_SOC_WCD938X_SDW
tristate "WCD9380/WCD9385 Codec - SDW"
tristate "WCD9380/WCD9385 Codec - SDW"
select SND_SOC_WCD938X
select SND_SOC_WCD938X
select SND_SOC_WCD_MBHC
select SND_SOC_WCD_MBHC
select REGMAP_IRQ
depends on SOUNDWIRE
depends on SOUNDWIRE
select REGMAP_SOUNDWIRE
select REGMAP_SOUNDWIRE
help
help
...
...
sound/soc/codecs/cs42l42.c
View file @
8e143296
This diff is collapsed.
Click to expand it.
sound/soc/codecs/cs42l42.h
View file @
8e143296
...
@@ -288,6 +288,7 @@
...
@@ -288,6 +288,7 @@
#define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A)
#define CS42L42_IN_ASRC_CLK (CS42L42_PAGE_12 + 0x0A)
#define CS42L42_CLK_IASRC_SEL_SHIFT 0
#define CS42L42_CLK_IASRC_SEL_SHIFT 0
#define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT)
#define CS42L42_CLK_IASRC_SEL_MASK (1 << CS42L42_CLK_IASRC_SEL_SHIFT)
#define CS42L42_CLK_IASRC_SEL_6 0
#define CS42L42_CLK_IASRC_SEL_12 1
#define CS42L42_CLK_IASRC_SEL_12 1
#define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B)
#define CS42L42_OUT_ASRC_CLK (CS42L42_PAGE_12 + 0x0B)
...
@@ -761,6 +762,7 @@
...
@@ -761,6 +762,7 @@
#define CS42L42_CLOCK_SWITCH_DELAY_US 150
#define CS42L42_CLOCK_SWITCH_DELAY_US 150
#define CS42L42_PLL_LOCK_POLL_US 250
#define CS42L42_PLL_LOCK_POLL_US 250
#define CS42L42_PLL_LOCK_TIMEOUT_US 1250
#define CS42L42_PLL_LOCK_TIMEOUT_US 1250
#define CS42L42_HP_ADC_EN_TIME_US 20000
static
const
char
*
const
cs42l42_supply_names
[
CS42L42_NUM_SUPPLIES
]
=
{
static
const
char
*
const
cs42l42_supply_names
[
CS42L42_NUM_SUPPLIES
]
=
{
"VA"
,
"VA"
,
...
@@ -794,6 +796,7 @@ struct cs42l42_private {
...
@@ -794,6 +796,7 @@ struct cs42l42_private {
u8
hs_bias_ramp_time
;
u8
hs_bias_ramp_time
;
u8
hs_bias_sense_en
;
u8
hs_bias_sense_en
;
u8
stream_use
;
u8
stream_use
;
bool
hp_adc_up_pending
;
};
};
#endif
/* __CS42L42_H__ */
#endif
/* __CS42L42_H__ */
sound/soc/codecs/cs4341.c
View file @
8e143296
...
@@ -305,12 +305,19 @@ static int cs4341_spi_probe(struct spi_device *spi)
...
@@ -305,12 +305,19 @@ static int cs4341_spi_probe(struct spi_device *spi)
return
cs4341_probe
(
&
spi
->
dev
);
return
cs4341_probe
(
&
spi
->
dev
);
}
}
static
const
struct
spi_device_id
cs4341_spi_ids
[]
=
{
{
"cs4341a"
},
{
}
};
MODULE_DEVICE_TABLE
(
spi
,
cs4341_spi_ids
);
static
struct
spi_driver
cs4341_spi_driver
=
{
static
struct
spi_driver
cs4341_spi_driver
=
{
.
driver
=
{
.
driver
=
{
.
name
=
"cs4341-spi"
,
.
name
=
"cs4341-spi"
,
.
of_match_table
=
of_match_ptr
(
cs4341_dt_ids
),
.
of_match_table
=
of_match_ptr
(
cs4341_dt_ids
),
},
},
.
probe
=
cs4341_spi_probe
,
.
probe
=
cs4341_spi_probe
,
.
id_table
=
cs4341_spi_ids
,
};
};
#endif
#endif
...
...
sound/soc/codecs/nau8824.c
View file @
8e143296
...
@@ -867,8 +867,8 @@ static void nau8824_jdet_work(struct work_struct *work)
...
@@ -867,8 +867,8 @@ static void nau8824_jdet_work(struct work_struct *work)
struct
regmap
*
regmap
=
nau8824
->
regmap
;
struct
regmap
*
regmap
=
nau8824
->
regmap
;
int
adc_value
,
event
=
0
,
event_mask
=
0
;
int
adc_value
,
event
=
0
,
event_mask
=
0
;
snd_soc_dapm_enable_pin
(
dapm
,
"MICBIAS"
);
snd_soc_dapm_
force_
enable_pin
(
dapm
,
"MICBIAS"
);
snd_soc_dapm_enable_pin
(
dapm
,
"SAR"
);
snd_soc_dapm_
force_
enable_pin
(
dapm
,
"SAR"
);
snd_soc_dapm_sync
(
dapm
);
snd_soc_dapm_sync
(
dapm
);
msleep
(
100
);
msleep
(
100
);
...
...
sound/soc/codecs/pcm179x-spi.c
View file @
8e143296
...
@@ -36,6 +36,7 @@ static const struct of_device_id pcm179x_of_match[] = {
...
@@ -36,6 +36,7 @@ static const struct of_device_id pcm179x_of_match[] = {
MODULE_DEVICE_TABLE
(
of
,
pcm179x_of_match
);
MODULE_DEVICE_TABLE
(
of
,
pcm179x_of_match
);
static
const
struct
spi_device_id
pcm179x_spi_ids
[]
=
{
static
const
struct
spi_device_id
pcm179x_spi_ids
[]
=
{
{
"pcm1792a"
,
0
},
{
"pcm179x"
,
0
},
{
"pcm179x"
,
0
},
{
},
{
},
};
};
...
...
sound/soc/codecs/pcm512x.c
View file @
8e143296
...
@@ -116,6 +116,8 @@ static const struct reg_default pcm512x_reg_defaults[] = {
...
@@ -116,6 +116,8 @@ static const struct reg_default pcm512x_reg_defaults[] = {
{
PCM512x_FS_SPEED_MODE
,
0x00
},
{
PCM512x_FS_SPEED_MODE
,
0x00
},
{
PCM512x_IDAC_1
,
0x01
},
{
PCM512x_IDAC_1
,
0x01
},
{
PCM512x_IDAC_2
,
0x00
},
{
PCM512x_IDAC_2
,
0x00
},
{
PCM512x_I2S_1
,
0x02
},
{
PCM512x_I2S_2
,
0x00
},
};
};
static
bool
pcm512x_readable
(
struct
device
*
dev
,
unsigned
int
reg
)
static
bool
pcm512x_readable
(
struct
device
*
dev
,
unsigned
int
reg
)
...
...
sound/soc/codecs/wcd938x.c
View file @
8e143296
...
@@ -4144,10 +4144,10 @@ static int wcd938x_codec_set_jack(struct snd_soc_component *comp,
...
@@ -4144,10 +4144,10 @@ static int wcd938x_codec_set_jack(struct snd_soc_component *comp,
{
{
struct
wcd938x_priv
*
wcd
=
dev_get_drvdata
(
comp
->
dev
);
struct
wcd938x_priv
*
wcd
=
dev_get_drvdata
(
comp
->
dev
);
if
(
!
jack
)
if
(
jack
)
return
wcd_mbhc_start
(
wcd
->
wcd_mbhc
,
&
wcd
->
mbhc_cfg
,
jack
);
return
wcd_mbhc_start
(
wcd
->
wcd_mbhc
,
&
wcd
->
mbhc_cfg
,
jack
);
else
wcd_mbhc_stop
(
wcd
->
wcd_mbhc
);
wcd_mbhc_stop
(
wcd
->
wcd_mbhc
);
return
0
;
return
0
;
}
}
...
...
sound/soc/codecs/wm8960.c
View file @
8e143296
...
@@ -742,9 +742,16 @@ static int wm8960_configure_clocking(struct snd_soc_component *component)
...
@@ -742,9 +742,16 @@ static int wm8960_configure_clocking(struct snd_soc_component *component)
int
i
,
j
,
k
;
int
i
,
j
,
k
;
int
ret
;
int
ret
;
if
(
!
(
iface1
&
(
1
<<
6
)))
{
/*
dev_dbg
(
component
->
dev
,
* For Slave mode clocking should still be configured,
"Codec is slave mode, no need to configure clock
\n
"
);
* so this if statement should be removed, but some platform
* may not work if the sysclk is not configured, to avoid such
* compatible issue, just add '!wm8960->sysclk' condition in
* this if statement.
*/
if
(
!
(
iface1
&
(
1
<<
6
))
&&
!
wm8960
->
sysclk
)
{
dev_warn
(
component
->
dev
,
"slave mode, but proceeding with no clock configuration
\n
"
);
return
0
;
return
0
;
}
}
...
...
sound/soc/fsl/fsl_esai.c
View file @
8e143296
...
@@ -1073,6 +1073,16 @@ static int fsl_esai_probe(struct platform_device *pdev)
...
@@ -1073,6 +1073,16 @@ static int fsl_esai_probe(struct platform_device *pdev)
if
(
ret
<
0
)
if
(
ret
<
0
)
goto
err_pm_get_sync
;
goto
err_pm_get_sync
;
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_ESAI_DMABUF_SIZE
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to init imx pcm dma: %d
\n
"
,
ret
);
goto
err_pm_get_sync
;
}
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_esai_component
,
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_esai_component
,
&
fsl_esai_dai
,
1
);
&
fsl_esai_dai
,
1
);
if
(
ret
)
{
if
(
ret
)
{
...
@@ -1082,12 +1092,6 @@ static int fsl_esai_probe(struct platform_device *pdev)
...
@@ -1082,12 +1092,6 @@ static int fsl_esai_probe(struct platform_device *pdev)
INIT_WORK
(
&
esai_priv
->
work
,
fsl_esai_hw_reset
);
INIT_WORK
(
&
esai_priv
->
work
,
fsl_esai_hw_reset
);
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_ESAI_DMABUF_SIZE
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to init imx pcm dma: %d
\n
"
,
ret
);
goto
err_pm_get_sync
;
}
return
ret
;
return
ret
;
err_pm_get_sync:
err_pm_get_sync:
...
...
sound/soc/fsl/fsl_micfil.c
View file @
8e143296
...
@@ -737,18 +737,23 @@ static int fsl_micfil_probe(struct platform_device *pdev)
...
@@ -737,18 +737,23 @@ static int fsl_micfil_probe(struct platform_device *pdev)
pm_runtime_enable
(
&
pdev
->
dev
);
pm_runtime_enable
(
&
pdev
->
dev
);
regcache_cache_only
(
micfil
->
regmap
,
true
);
regcache_cache_only
(
micfil
->
regmap
,
true
);
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret
=
devm_snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
NULL
,
0
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to pcm register
\n
"
);
return
ret
;
}
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_micfil_component
,
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_micfil_component
,
&
fsl_micfil_dai
,
1
);
&
fsl_micfil_dai
,
1
);
if
(
ret
)
{
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to register component %s
\n
"
,
dev_err
(
&
pdev
->
dev
,
"failed to register component %s
\n
"
,
fsl_micfil_component
.
name
);
fsl_micfil_component
.
name
);
return
ret
;
}
}
ret
=
devm_snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
NULL
,
0
);
if
(
ret
)
dev_err
(
&
pdev
->
dev
,
"failed to pcm register
\n
"
);
return
ret
;
return
ret
;
}
}
...
...
sound/soc/fsl/fsl_sai.c
View file @
8e143296
...
@@ -1152,11 +1152,10 @@ static int fsl_sai_probe(struct platform_device *pdev)
...
@@ -1152,11 +1152,10 @@ static int fsl_sai_probe(struct platform_device *pdev)
if
(
ret
<
0
)
if
(
ret
<
0
)
goto
err_pm_get_sync
;
goto
err_pm_get_sync
;
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_component
,
/*
&
sai
->
cpu_dai_drv
,
1
);
* Register platform component before registering cpu dai for there
if
(
ret
)
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
goto
err_pm_get_sync
;
*/
if
(
sai
->
soc_data
->
use_imx_pcm
)
{
if
(
sai
->
soc_data
->
use_imx_pcm
)
{
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_SAI_DMABUF_SIZE
);
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_SAI_DMABUF_SIZE
);
if
(
ret
)
if
(
ret
)
...
@@ -1167,6 +1166,11 @@ static int fsl_sai_probe(struct platform_device *pdev)
...
@@ -1167,6 +1166,11 @@ static int fsl_sai_probe(struct platform_device *pdev)
goto
err_pm_get_sync
;
goto
err_pm_get_sync
;
}
}
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_component
,
&
sai
->
cpu_dai_drv
,
1
);
if
(
ret
)
goto
err_pm_get_sync
;
return
ret
;
return
ret
;
err_pm_get_sync:
err_pm_get_sync:
...
...
sound/soc/fsl/fsl_spdif.c
View file @
8e143296
...
@@ -1434,16 +1434,20 @@ static int fsl_spdif_probe(struct platform_device *pdev)
...
@@ -1434,16 +1434,20 @@ static int fsl_spdif_probe(struct platform_device *pdev)
pm_runtime_enable
(
&
pdev
->
dev
);
pm_runtime_enable
(
&
pdev
->
dev
);
regcache_cache_only
(
spdif_priv
->
regmap
,
true
);
regcache_cache_only
(
spdif_priv
->
regmap
,
true
);
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_spdif_component
,
/*
&
spdif_priv
->
cpu_dai_drv
,
1
);
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_SPDIF_DMABUF_SIZE
);
if
(
ret
)
{
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"failed to register DAI: %d
\n
"
,
ret
);
dev_err
_probe
(
&
pdev
->
dev
,
ret
,
"imx_pcm_dma_init failed
\n
"
);
goto
err_pm_disable
;
goto
err_pm_disable
;
}
}
ret
=
imx_pcm_dma_init
(
pdev
,
IMX_SPDIF_DMABUF_SIZE
);
ret
=
devm_snd_soc_register_component
(
&
pdev
->
dev
,
&
fsl_spdif_component
,
&
spdif_priv
->
cpu_dai_drv
,
1
);
if
(
ret
)
{
if
(
ret
)
{
dev_err
_probe
(
&
pdev
->
dev
,
ret
,
"imx_pcm_dma_init failed
\n
"
);
dev_err
(
&
pdev
->
dev
,
"failed to register DAI: %d
\n
"
,
ret
);
goto
err_pm_disable
;
goto
err_pm_disable
;
}
}
...
...
sound/soc/fsl/fsl_xcvr.c
View file @
8e143296
...
@@ -487,8 +487,9 @@ static int fsl_xcvr_prepare(struct snd_pcm_substream *substream,
...
@@ -487,8 +487,9 @@ static int fsl_xcvr_prepare(struct snd_pcm_substream *substream,
return
ret
;
return
ret
;
}
}
/*
clear
DPATH RESET */
/*
set
DPATH RESET */
m_ctl
|=
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
);
m_ctl
|=
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
);
v_ctl
|=
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
);
ret
=
regmap_update_bits
(
xcvr
->
regmap
,
FSL_XCVR_EXT_CTRL
,
m_ctl
,
v_ctl
);
ret
=
regmap_update_bits
(
xcvr
->
regmap
,
FSL_XCVR_EXT_CTRL
,
m_ctl
,
v_ctl
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
dev_err
(
dai
->
dev
,
"Error while setting EXT_CTRL: %d
\n
"
,
ret
);
dev_err
(
dai
->
dev
,
"Error while setting EXT_CTRL: %d
\n
"
,
ret
);
...
@@ -590,10 +591,6 @@ static void fsl_xcvr_shutdown(struct snd_pcm_substream *substream,
...
@@ -590,10 +591,6 @@ static void fsl_xcvr_shutdown(struct snd_pcm_substream *substream,
val
|=
FSL_XCVR_EXT_CTRL_CMDC_RESET
(
tx
);
val
|=
FSL_XCVR_EXT_CTRL_CMDC_RESET
(
tx
);
}
}
/* set DPATH RESET */
mask
|=
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
);
val
|=
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
);
ret
=
regmap_update_bits
(
xcvr
->
regmap
,
FSL_XCVR_EXT_CTRL
,
mask
,
val
);
ret
=
regmap_update_bits
(
xcvr
->
regmap
,
FSL_XCVR_EXT_CTRL
,
mask
,
val
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
dev_err
(
dai
->
dev
,
"Err setting DPATH RESET: %d
\n
"
,
ret
);
dev_err
(
dai
->
dev
,
"Err setting DPATH RESET: %d
\n
"
,
ret
);
...
@@ -643,6 +640,16 @@ static int fsl_xcvr_trigger(struct snd_pcm_substream *substream, int cmd,
...
@@ -643,6 +640,16 @@ static int fsl_xcvr_trigger(struct snd_pcm_substream *substream, int cmd,
dev_err
(
dai
->
dev
,
"Failed to enable DMA: %d
\n
"
,
ret
);
dev_err
(
dai
->
dev
,
"Failed to enable DMA: %d
\n
"
,
ret
);
return
ret
;
return
ret
;
}
}
/* clear DPATH RESET */
ret
=
regmap_update_bits
(
xcvr
->
regmap
,
FSL_XCVR_EXT_CTRL
,
FSL_XCVR_EXT_CTRL_DPTH_RESET
(
tx
),
0
);
if
(
ret
<
0
)
{
dev_err
(
dai
->
dev
,
"Failed to clear DPATH RESET: %d
\n
"
,
ret
);
return
ret
;
}
break
;
break
;
case
SNDRV_PCM_TRIGGER_STOP
:
case
SNDRV_PCM_TRIGGER_STOP
:
case
SNDRV_PCM_TRIGGER_SUSPEND
:
case
SNDRV_PCM_TRIGGER_SUSPEND
:
...
@@ -1215,18 +1222,23 @@ static int fsl_xcvr_probe(struct platform_device *pdev)
...
@@ -1215,18 +1222,23 @@ static int fsl_xcvr_probe(struct platform_device *pdev)
pm_runtime_enable
(
dev
);
pm_runtime_enable
(
dev
);
regcache_cache_only
(
xcvr
->
regmap
,
true
);
regcache_cache_only
(
xcvr
->
regmap
,
true
);
/*
* Register platform component before registering cpu dai for there
* is not defer probe for platform component in snd_soc_add_pcm_runtime().
*/
ret
=
devm_snd_dmaengine_pcm_register
(
dev
,
NULL
,
0
);
if
(
ret
)
{
dev_err
(
dev
,
"failed to pcm register
\n
"
);
return
ret
;
}
ret
=
devm_snd_soc_register_component
(
dev
,
&
fsl_xcvr_comp
,
ret
=
devm_snd_soc_register_component
(
dev
,
&
fsl_xcvr_comp
,
&
fsl_xcvr_dai
,
1
);
&
fsl_xcvr_dai
,
1
);
if
(
ret
)
{
if
(
ret
)
{
dev_err
(
dev
,
"failed to register component %s
\n
"
,
dev_err
(
dev
,
"failed to register component %s
\n
"
,
fsl_xcvr_comp
.
name
);
fsl_xcvr_comp
.
name
);
return
ret
;
}
}
ret
=
devm_snd_dmaengine_pcm_register
(
dev
,
NULL
,
0
);
if
(
ret
)
dev_err
(
dev
,
"failed to pcm register
\n
"
);
return
ret
;
return
ret
;
}
}
...
...
sound/soc/intel/boards/bytcht_es8316.c
View file @
8e143296
...
@@ -456,12 +456,12 @@ static const struct dmi_system_id byt_cht_es8316_quirk_table[] = {
...
@@ -456,12 +456,12 @@ static const struct dmi_system_id byt_cht_es8316_quirk_table[] = {
static
int
snd_byt_cht_es8316_mc_probe
(
struct
platform_device
*
pdev
)
static
int
snd_byt_cht_es8316_mc_probe
(
struct
platform_device
*
pdev
)
{
{
struct
device
*
dev
=
&
pdev
->
dev
;
static
const
char
*
const
mic_name
[]
=
{
"in1"
,
"in2"
};
static
const
char
*
const
mic_name
[]
=
{
"in1"
,
"in2"
};
struct
snd_soc_acpi_mach
*
mach
=
dev_get_platdata
(
dev
);
struct
property_entry
props
[
MAX_NO_PROPS
]
=
{};
struct
property_entry
props
[
MAX_NO_PROPS
]
=
{};
struct
byt_cht_es8316_private
*
priv
;
struct
byt_cht_es8316_private
*
priv
;
const
struct
dmi_system_id
*
dmi_id
;
const
struct
dmi_system_id
*
dmi_id
;
struct
device
*
dev
=
&
pdev
->
dev
;
struct
snd_soc_acpi_mach
*
mach
;
struct
fwnode_handle
*
fwnode
;
struct
fwnode_handle
*
fwnode
;
const
char
*
platform_name
;
const
char
*
platform_name
;
struct
acpi_device
*
adev
;
struct
acpi_device
*
adev
;
...
@@ -476,7 +476,6 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
...
@@ -476,7 +476,6 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
if
(
!
priv
)
if
(
!
priv
)
return
-
ENOMEM
;
return
-
ENOMEM
;
mach
=
dev
->
platform_data
;
/* fix index of codec dai */
/* fix index of codec dai */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_cht_es8316_dais
);
i
++
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
byt_cht_es8316_dais
);
i
++
)
{
if
(
!
strcmp
(
byt_cht_es8316_dais
[
i
].
codecs
->
name
,
if
(
!
strcmp
(
byt_cht_es8316_dais
[
i
].
codecs
->
name
,
...
@@ -494,7 +493,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
...
@@ -494,7 +493,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
put_device
(
&
adev
->
dev
);
put_device
(
&
adev
->
dev
);
byt_cht_es8316_dais
[
dai_index
].
codecs
->
name
=
codec_name
;
byt_cht_es8316_dais
[
dai_index
].
codecs
->
name
=
codec_name
;
}
else
{
}
else
{
dev_err
(
&
pdev
->
dev
,
"Error cannot find '%s' dev
\n
"
,
mach
->
id
);
dev_err
(
dev
,
"Error cannot find '%s' dev
\n
"
,
mach
->
id
);
return
-
ENXIO
;
return
-
ENXIO
;
}
}
...
@@ -533,11 +532,8 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
...
@@ -533,11 +532,8 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
/* get the clock */
/* get the clock */
priv
->
mclk
=
devm_clk_get
(
dev
,
"pmc_plt_clk_3"
);
priv
->
mclk
=
devm_clk_get
(
dev
,
"pmc_plt_clk_3"
);
if
(
IS_ERR
(
priv
->
mclk
))
{
if
(
IS_ERR
(
priv
->
mclk
))
ret
=
PTR_ERR
(
priv
->
mclk
);
return
dev_err_probe
(
dev
,
PTR_ERR
(
priv
->
mclk
),
"clk_get pmc_plt_clk_3 failed
\n
"
);
dev_err
(
dev
,
"clk_get pmc_plt_clk_3 failed: %d
\n
"
,
ret
);
return
ret
;
}
/* get speaker enable GPIO */
/* get speaker enable GPIO */
codec_dev
=
acpi_get_first_physical_node
(
adev
);
codec_dev
=
acpi_get_first_physical_node
(
adev
);
...
@@ -567,22 +563,13 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
...
@@ -567,22 +563,13 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
devm_acpi_dev_add_driver_gpios
(
codec_dev
,
byt_cht_es8316_gpios
);
devm_acpi_dev_add_driver_gpios
(
codec_dev
,
byt_cht_es8316_gpios
);
priv
->
speaker_en_gpio
=
priv
->
speaker_en_gpio
=
gpiod_get_index
(
codec_dev
,
"speaker-enable"
,
0
,
gpiod_get_optional
(
codec_dev
,
"speaker-enable"
,
/* see comment in byt_cht_es8316_resume */
/* see comment in byt_cht_es8316_resume() */
GPIOD_OUT_LOW
|
GPIOD_FLAGS_BIT_NONEXCLUSIVE
);
GPIOD_OUT_LOW
|
GPIOD_FLAGS_BIT_NONEXCLUSIVE
);
if
(
IS_ERR
(
priv
->
speaker_en_gpio
))
{
if
(
IS_ERR
(
priv
->
speaker_en_gpio
))
{
ret
=
PTR_ERR
(
priv
->
speaker_en_gpio
);
ret
=
dev_err_probe
(
dev
,
PTR_ERR
(
priv
->
speaker_en_gpio
),
switch
(
ret
)
{
"get speaker GPIO failed
\n
"
);
case
-
ENOENT
:
goto
err_put_codec
;
priv
->
speaker_en_gpio
=
NULL
;
break
;
default:
dev_err
(
dev
,
"get speaker GPIO failed: %d
\n
"
,
ret
);
fallthrough
;
case
-
EPROBE_DEFER
:
goto
err_put_codec
;
}
}
}
snprintf
(
components_string
,
sizeof
(
components_string
),
snprintf
(
components_string
,
sizeof
(
components_string
),
...
@@ -597,7 +584,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
...
@@ -597,7 +584,7 @@ static int snd_byt_cht_es8316_mc_probe(struct platform_device *pdev)
byt_cht_es8316_card
.
long_name
=
long_name
;
byt_cht_es8316_card
.
long_name
=
long_name
;
#endif
#endif
sof_parent
=
snd_soc_acpi_sof_parent
(
&
pdev
->
dev
);
sof_parent
=
snd_soc_acpi_sof_parent
(
dev
);
/* set card and driver name */
/* set card and driver name */
if
(
sof_parent
)
{
if
(
sof_parent
)
{
...
...
sound/soc/intel/boards/sof_sdw.c
View file @
8e143296
...
@@ -929,6 +929,11 @@ static int create_sdw_dailink(struct snd_soc_card *card,
...
@@ -929,6 +929,11 @@ static int create_sdw_dailink(struct snd_soc_card *card,
cpus
+
*
cpu_id
,
cpu_dai_num
,
cpus
+
*
cpu_id
,
cpu_dai_num
,
codecs
,
codec_num
,
codecs
,
codec_num
,
NULL
,
&
sdw_ops
);
NULL
,
&
sdw_ops
);
/*
* SoundWire DAILINKs use 'stream' functions and Bank Switch operations
* based on wait_for_completion(), tag them as 'nonatomic'.
*/
dai_links
[
*
be_index
].
nonatomic
=
true
;
ret
=
set_codec_init_func
(
card
,
link
,
dai_links
+
(
*
be_index
)
++
,
ret
=
set_codec_init_func
(
card
,
link
,
dai_links
+
(
*
be_index
)
++
,
playback
,
group_id
);
playback
,
group_id
);
...
...
sound/soc/mediatek/Kconfig
View file @
8e143296
# SPDX-License-Identifier: GPL-2.0-only
# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_MEDIATEK
config SND_SOC_MEDIATEK
tristate
tristate
select REGMAP_MMIO
config SND_SOC_MT2701
config SND_SOC_MT2701
tristate "ASoC support for Mediatek MT2701 chip"
tristate "ASoC support for Mediatek MT2701 chip"
...
@@ -188,7 +189,9 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682
...
@@ -188,7 +189,9 @@ config SND_SOC_MT8192_MT6359_RT1015_RT5682
config SND_SOC_MT8195
config SND_SOC_MT8195
tristate "ASoC support for Mediatek MT8195 chip"
tristate "ASoC support for Mediatek MT8195 chip"
depends on ARCH_MEDIATEK || COMPILE_TEST
depends on ARCH_MEDIATEK || COMPILE_TEST
depends on COMMON_CLK
select SND_SOC_MEDIATEK
select SND_SOC_MEDIATEK
select MFD_SYSCON if SND_SOC_MT6359
help
help
This adds ASoC platform driver support for Mediatek MT8195 chip
This adds ASoC platform driver support for Mediatek MT8195 chip
that can be used with other codecs.
that can be used with other codecs.
...
...
sound/soc/mediatek/common/mtk-afe-fe-dai.c
View file @
8e143296
...
@@ -334,9 +334,11 @@ int mtk_afe_suspend(struct snd_soc_component *component)
...
@@ -334,9 +334,11 @@ int mtk_afe_suspend(struct snd_soc_component *component)
devm_kcalloc
(
dev
,
afe
->
reg_back_up_list_num
,
devm_kcalloc
(
dev
,
afe
->
reg_back_up_list_num
,
sizeof
(
unsigned
int
),
GFP_KERNEL
);
sizeof
(
unsigned
int
),
GFP_KERNEL
);
for
(
i
=
0
;
i
<
afe
->
reg_back_up_list_num
;
i
++
)
if
(
afe
->
reg_back_up
)
{
regmap_read
(
regmap
,
afe
->
reg_back_up_list
[
i
],
for
(
i
=
0
;
i
<
afe
->
reg_back_up_list_num
;
i
++
)
&
afe
->
reg_back_up
[
i
]);
regmap_read
(
regmap
,
afe
->
reg_back_up_list
[
i
],
&
afe
->
reg_back_up
[
i
]);
}
afe
->
suspended
=
true
;
afe
->
suspended
=
true
;
afe
->
runtime_suspend
(
dev
);
afe
->
runtime_suspend
(
dev
);
...
@@ -356,12 +358,13 @@ int mtk_afe_resume(struct snd_soc_component *component)
...
@@ -356,12 +358,13 @@ int mtk_afe_resume(struct snd_soc_component *component)
afe
->
runtime_resume
(
dev
);
afe
->
runtime_resume
(
dev
);
if
(
!
afe
->
reg_back_up
)
if
(
!
afe
->
reg_back_up
)
{
dev_dbg
(
dev
,
"%s no reg_backup
\n
"
,
__func__
);
dev_dbg
(
dev
,
"%s no reg_backup
\n
"
,
__func__
);
}
else
{
for
(
i
=
0
;
i
<
afe
->
reg_back_up_list_num
;
i
++
)
for
(
i
=
0
;
i
<
afe
->
reg_back_up_list_num
;
i
++
)
mtk_regmap_write
(
regmap
,
afe
->
reg_back_up_list
[
i
],
mtk_regmap_write
(
regmap
,
afe
->
reg_back_up_list
[
i
],
afe
->
reg_back_up
[
i
]);
afe
->
reg_back_up
[
i
]);
}
afe
->
suspended
=
false
;
afe
->
suspended
=
false
;
return
0
;
return
0
;
...
...
sound/soc/mediatek/mt8195/mt8195-mt6359-rt1019-rt5682.c
View file @
8e143296
...
@@ -424,8 +424,8 @@ static int mt8195_hdmi_codec_init(struct snd_soc_pcm_runtime *rtd)
...
@@ -424,8 +424,8 @@ static int mt8195_hdmi_codec_init(struct snd_soc_pcm_runtime *rtd)
return
snd_soc_component_set_jack
(
cmpnt_codec
,
&
priv
->
hdmi_jack
,
NULL
);
return
snd_soc_component_set_jack
(
cmpnt_codec
,
&
priv
->
hdmi_jack
,
NULL
);
}
}
static
int
mt8195_
hdmitx_
dptx_hw_params_fixup
(
struct
snd_soc_pcm_runtime
*
rtd
,
static
int
mt8195_dptx_hw_params_fixup
(
struct
snd_soc_pcm_runtime
*
rtd
,
struct
snd_pcm_hw_params
*
params
)
struct
snd_pcm_hw_params
*
params
)
{
{
/* fix BE i2s format to 32bit, clean param mask first */
/* fix BE i2s format to 32bit, clean param mask first */
...
@@ -902,7 +902,7 @@ static struct snd_soc_dai_link mt8195_mt6359_rt1019_rt5682_dai_links[] = {
...
@@ -902,7 +902,7 @@ static struct snd_soc_dai_link mt8195_mt6359_rt1019_rt5682_dai_links[] = {
.
no_pcm
=
1
,
.
no_pcm
=
1
,
.
dpcm_playback
=
1
,
.
dpcm_playback
=
1
,
.
ops
=
&
mt8195_dptx_ops
,
.
ops
=
&
mt8195_dptx_ops
,
.
be_hw_params_fixup
=
mt8195_
hdmitx_
dptx_hw_params_fixup
,
.
be_hw_params_fixup
=
mt8195_dptx_hw_params_fixup
,
SND_SOC_DAILINK_REG
(
DPTX_BE
),
SND_SOC_DAILINK_REG
(
DPTX_BE
),
},
},
[
DAI_LINK_ETDM1_IN_BE
]
=
{
[
DAI_LINK_ETDM1_IN_BE
]
=
{
...
@@ -953,7 +953,6 @@ static struct snd_soc_dai_link mt8195_mt6359_rt1019_rt5682_dai_links[] = {
...
@@ -953,7 +953,6 @@ static struct snd_soc_dai_link mt8195_mt6359_rt1019_rt5682_dai_links[] = {
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBS_CFS
,
SND_SOC_DAIFMT_CBS_CFS
,
.
dpcm_playback
=
1
,
.
dpcm_playback
=
1
,
.
be_hw_params_fixup
=
mt8195_hdmitx_dptx_hw_params_fixup
,
SND_SOC_DAILINK_REG
(
ETDM3_OUT_BE
),
SND_SOC_DAILINK_REG
(
ETDM3_OUT_BE
),
},
},
[
DAI_LINK_PCM1_BE
]
=
{
[
DAI_LINK_PCM1_BE
]
=
{
...
...
sound/soc/rockchip/Makefile
View file @
8e143296
# SPDX-License-Identifier: GPL-2.0
# SPDX-License-Identifier: GPL-2.0
# ROCKCHIP Platform Support
# ROCKCHIP Platform Support
snd-soc-rockchip-i2s-objs
:=
rockchip_i2s.o
snd-soc-rockchip-i2s-objs
:=
rockchip_i2s.o
snd-soc-rockchip-pcm-objs
:=
rockchip_pcm.o
snd-soc-rockchip-pdm-objs
:=
rockchip_pdm.o
snd-soc-rockchip-pdm-objs
:=
rockchip_pdm.o
snd-soc-rockchip-spdif-objs
:=
rockchip_spdif.o
snd-soc-rockchip-spdif-objs
:=
rockchip_spdif.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S)
+=
snd-soc-rockchip-i2s.o
snd-soc-rockchip-pcm.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_I2S)
+=
snd-soc-rockchip-i2s.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_PDM)
+=
snd-soc-rockchip-pdm.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_PDM)
+=
snd-soc-rockchip-pdm.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF)
+=
snd-soc-rockchip-spdif.o
obj-$(CONFIG_SND_SOC_ROCKCHIP_SPDIF)
+=
snd-soc-rockchip-spdif.o
...
...
sound/soc/rockchip/rockchip_i2s.c
View file @
8e143296
...
@@ -20,7 +20,6 @@
...
@@ -20,7 +20,6 @@
#include <sound/dmaengine_pcm.h>
#include <sound/dmaengine_pcm.h>
#include "rockchip_i2s.h"
#include "rockchip_i2s.h"
#include "rockchip_pcm.h"
#define DRV_NAME "rockchip-i2s"
#define DRV_NAME "rockchip-i2s"
...
@@ -756,7 +755,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
...
@@ -756,7 +755,7 @@ static int rockchip_i2s_probe(struct platform_device *pdev)
goto
err_suspend
;
goto
err_suspend
;
}
}
ret
=
rockchip_pcm_platform_register
(
&
pdev
->
dev
);
ret
=
devm_snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
NULL
,
0
);
if
(
ret
)
{
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"Could not register PCM
\n
"
);
dev_err
(
&
pdev
->
dev
,
"Could not register PCM
\n
"
);
goto
err_suspend
;
goto
err_suspend
;
...
...
sound/soc/rockchip/rockchip_pcm.c
deleted
100644 → 0
View file @
5816b3e6
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2018 Rockchip Electronics Co. Ltd.
*/
#include <linux/device.h>
#include <linux/init.h>
#include <linux/module.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <sound/dmaengine_pcm.h>
#include "rockchip_pcm.h"
static
const
struct
snd_pcm_hardware
snd_rockchip_hardware
=
{
.
info
=
SNDRV_PCM_INFO_MMAP
|
SNDRV_PCM_INFO_MMAP_VALID
|
SNDRV_PCM_INFO_PAUSE
|
SNDRV_PCM_INFO_RESUME
|
SNDRV_PCM_INFO_INTERLEAVED
,
.
period_bytes_min
=
32
,
.
period_bytes_max
=
8192
,
.
periods_min
=
1
,
.
periods_max
=
52
,
.
buffer_bytes_max
=
64
*
1024
,
.
fifo_size
=
32
,
};
static
const
struct
snd_dmaengine_pcm_config
rk_dmaengine_pcm_config
=
{
.
pcm_hardware
=
&
snd_rockchip_hardware
,
.
prepare_slave_config
=
snd_dmaengine_pcm_prepare_slave_config
,
.
prealloc_buffer_size
=
32
*
1024
,
};
int
rockchip_pcm_platform_register
(
struct
device
*
dev
)
{
return
devm_snd_dmaengine_pcm_register
(
dev
,
&
rk_dmaengine_pcm_config
,
SND_DMAENGINE_PCM_FLAG_COMPAT
);
}
EXPORT_SYMBOL_GPL
(
rockchip_pcm_platform_register
);
MODULE_LICENSE
(
"GPL v2"
);
sound/soc/rockchip/rockchip_pcm.h
deleted
100644 → 0
View file @
5816b3e6
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2018 Rockchip Electronics Co. Ltd.
*/
#ifndef _ROCKCHIP_PCM_H
#define _ROCKCHIP_PCM_H
int
rockchip_pcm_platform_register
(
struct
device
*
dev
);
#endif
sound/soc/soc-core.c
View file @
8e143296
...
@@ -2599,6 +2599,7 @@ int snd_soc_component_initialize(struct snd_soc_component *component,
...
@@ -2599,6 +2599,7 @@ int snd_soc_component_initialize(struct snd_soc_component *component,
INIT_LIST_HEAD
(
&
component
->
dai_list
);
INIT_LIST_HEAD
(
&
component
->
dai_list
);
INIT_LIST_HEAD
(
&
component
->
dobj_list
);
INIT_LIST_HEAD
(
&
component
->
dobj_list
);
INIT_LIST_HEAD
(
&
component
->
card_list
);
INIT_LIST_HEAD
(
&
component
->
card_list
);
INIT_LIST_HEAD
(
&
component
->
list
);
mutex_init
(
&
component
->
io_mutex
);
mutex_init
(
&
component
->
io_mutex
);
component
->
name
=
fmt_single_name
(
dev
,
&
component
->
id
);
component
->
name
=
fmt_single_name
(
dev
,
&
component
->
id
);
...
...
sound/soc/soc-dapm.c
View file @
8e143296
...
@@ -2561,6 +2561,7 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
...
@@ -2561,6 +2561,7 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
const
char
*
pin
,
int
status
)
const
char
*
pin
,
int
status
)
{
{
struct
snd_soc_dapm_widget
*
w
=
dapm_find_widget
(
dapm
,
pin
,
true
);
struct
snd_soc_dapm_widget
*
w
=
dapm_find_widget
(
dapm
,
pin
,
true
);
int
ret
=
0
;
dapm_assert_locked
(
dapm
);
dapm_assert_locked
(
dapm
);
...
@@ -2573,13 +2574,14 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
...
@@ -2573,13 +2574,14 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,
dapm_mark_dirty
(
w
,
"pin configuration"
);
dapm_mark_dirty
(
w
,
"pin configuration"
);
dapm_widget_invalidate_input_paths
(
w
);
dapm_widget_invalidate_input_paths
(
w
);
dapm_widget_invalidate_output_paths
(
w
);
dapm_widget_invalidate_output_paths
(
w
);
ret
=
1
;
}
}
w
->
connected
=
status
;
w
->
connected
=
status
;
if
(
status
==
0
)
if
(
status
==
0
)
w
->
force
=
0
;
w
->
force
=
0
;
return
0
;
return
ret
;
}
}
/**
/**
...
@@ -3583,14 +3585,15 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
...
@@ -3583,14 +3585,15 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
{
{
struct
snd_soc_card
*
card
=
snd_kcontrol_chip
(
kcontrol
);
struct
snd_soc_card
*
card
=
snd_kcontrol_chip
(
kcontrol
);
const
char
*
pin
=
(
const
char
*
)
kcontrol
->
private_value
;
const
char
*
pin
=
(
const
char
*
)
kcontrol
->
private_value
;
int
ret
;
if
(
ucontrol
->
value
.
integer
.
value
[
0
])
if
(
ucontrol
->
value
.
integer
.
value
[
0
])
snd_soc_dapm_enable_pin
(
&
card
->
dapm
,
pin
);
ret
=
snd_soc_dapm_enable_pin
(
&
card
->
dapm
,
pin
);
else
else
snd_soc_dapm_disable_pin
(
&
card
->
dapm
,
pin
);
ret
=
snd_soc_dapm_disable_pin
(
&
card
->
dapm
,
pin
);
snd_soc_dapm_sync
(
&
card
->
dapm
);
snd_soc_dapm_sync
(
&
card
->
dapm
);
return
0
;
return
ret
;
}
}
EXPORT_SYMBOL_GPL
(
snd_soc_dapm_put_pin_switch
);
EXPORT_SYMBOL_GPL
(
snd_soc_dapm_put_pin_switch
);
...
@@ -4023,7 +4026,7 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
...
@@ -4023,7 +4026,7 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
rtd
->
params_select
=
ucontrol
->
value
.
enumerated
.
item
[
0
];
rtd
->
params_select
=
ucontrol
->
value
.
enumerated
.
item
[
0
];
return
0
;
return
1
;
}
}
static
void
static
void
...
...
sound/soc/sof/core.c
View file @
8e143296
...
@@ -371,7 +371,6 @@ int snd_sof_device_remove(struct device *dev)
...
@@ -371,7 +371,6 @@ int snd_sof_device_remove(struct device *dev)
dev_warn
(
dev
,
"error: %d failed to prepare DSP for device removal"
,
dev_warn
(
dev
,
"error: %d failed to prepare DSP for device removal"
,
ret
);
ret
);
snd_sof_fw_unload
(
sdev
);
snd_sof_ipc_free
(
sdev
);
snd_sof_ipc_free
(
sdev
);
snd_sof_free_debug
(
sdev
);
snd_sof_free_debug
(
sdev
);
snd_sof_free_trace
(
sdev
);
snd_sof_free_trace
(
sdev
);
...
@@ -394,8 +393,7 @@ int snd_sof_device_remove(struct device *dev)
...
@@ -394,8 +393,7 @@ int snd_sof_device_remove(struct device *dev)
snd_sof_remove
(
sdev
);
snd_sof_remove
(
sdev
);
/* release firmware */
/* release firmware */
release_firmware
(
pdata
->
fw
);
snd_sof_fw_unload
(
sdev
);
pdata
->
fw
=
NULL
;
return
0
;
return
0
;
}
}
...
...
sound/soc/sof/imx/imx8.c
View file @
8e143296
...
@@ -365,7 +365,14 @@ static int imx8_remove(struct snd_sof_dev *sdev)
...
@@ -365,7 +365,14 @@ static int imx8_remove(struct snd_sof_dev *sdev)
/* on i.MX8 there is 1 to 1 match between type and BAR idx */
/* on i.MX8 there is 1 to 1 match between type and BAR idx */
static
int
imx8_get_bar_index
(
struct
snd_sof_dev
*
sdev
,
u32
type
)
static
int
imx8_get_bar_index
(
struct
snd_sof_dev
*
sdev
,
u32
type
)
{
{
return
type
;
/* Only IRAM and SRAM bars are valid */
switch
(
type
)
{
case
SOF_FW_BLK_TYPE_IRAM
:
case
SOF_FW_BLK_TYPE_SRAM
:
return
type
;
default:
return
-
EINVAL
;
}
}
}
static
void
imx8_ipc_msg_data
(
struct
snd_sof_dev
*
sdev
,
static
void
imx8_ipc_msg_data
(
struct
snd_sof_dev
*
sdev
,
...
...
sound/soc/sof/imx/imx8m.c
View file @
8e143296
...
@@ -228,7 +228,14 @@ static int imx8m_remove(struct snd_sof_dev *sdev)
...
@@ -228,7 +228,14 @@ static int imx8m_remove(struct snd_sof_dev *sdev)
/* on i.MX8 there is 1 to 1 match between type and BAR idx */
/* on i.MX8 there is 1 to 1 match between type and BAR idx */
static
int
imx8m_get_bar_index
(
struct
snd_sof_dev
*
sdev
,
u32
type
)
static
int
imx8m_get_bar_index
(
struct
snd_sof_dev
*
sdev
,
u32
type
)
{
{
return
type
;
/* Only IRAM and SRAM bars are valid */
switch
(
type
)
{
case
SOF_FW_BLK_TYPE_IRAM
:
case
SOF_FW_BLK_TYPE_SRAM
:
return
type
;
default:
return
-
EINVAL
;
}
}
}
static
void
imx8m_ipc_msg_data
(
struct
snd_sof_dev
*
sdev
,
static
void
imx8m_ipc_msg_data
(
struct
snd_sof_dev
*
sdev
,
...
...
sound/soc/sof/loader.c
View file @
8e143296
...
@@ -729,10 +729,10 @@ int snd_sof_load_firmware_raw(struct snd_sof_dev *sdev)
...
@@ -729,10 +729,10 @@ int snd_sof_load_firmware_raw(struct snd_sof_dev *sdev)
ret
=
request_firmware
(
&
plat_data
->
fw
,
fw_filename
,
sdev
->
dev
);
ret
=
request_firmware
(
&
plat_data
->
fw
,
fw_filename
,
sdev
->
dev
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
dev_err
(
sdev
->
dev
,
"error: request firmware %s failed err: %d
\n
"
,
fw_filename
,
ret
);
dev_err
(
sdev
->
dev
,
dev_err
(
sdev
->
dev
,
"you may need to download the firmware from https://github.com/thesofproject/sof-bin/
\n
"
);
"error: sof firmware file is missing, you might need to
\n
"
);
dev_err
(
sdev
->
dev
,
" download it from https://github.com/thesofproject/sof-bin/
\n
"
);
goto
err
;
goto
err
;
}
else
{
}
else
{
dev_dbg
(
sdev
->
dev
,
"request_firmware %s successful
\n
"
,
dev_dbg
(
sdev
->
dev
,
"request_firmware %s successful
\n
"
,
...
@@ -880,5 +880,7 @@ EXPORT_SYMBOL(snd_sof_run_firmware);
...
@@ -880,5 +880,7 @@ EXPORT_SYMBOL(snd_sof_run_firmware);
void
snd_sof_fw_unload
(
struct
snd_sof_dev
*
sdev
)
void
snd_sof_fw_unload
(
struct
snd_sof_dev
*
sdev
)
{
{
/* TODO: support module unloading at runtime */
/* TODO: support module unloading at runtime */
release_firmware
(
sdev
->
pdata
->
fw
);
sdev
->
pdata
->
fw
=
NULL
;
}
}
EXPORT_SYMBOL
(
snd_sof_fw_unload
);
EXPORT_SYMBOL
(
snd_sof_fw_unload
);
sound/soc/sof/trace.c
View file @
8e143296
...
@@ -530,7 +530,6 @@ void snd_sof_trace_notify_for_error(struct snd_sof_dev *sdev)
...
@@ -530,7 +530,6 @@ void snd_sof_trace_notify_for_error(struct snd_sof_dev *sdev)
return
;
return
;
if
(
sdev
->
dtrace_is_enabled
)
{
if
(
sdev
->
dtrace_is_enabled
)
{
dev_err
(
sdev
->
dev
,
"error: waking up any trace sleepers
\n
"
);
sdev
->
dtrace_error
=
true
;
sdev
->
dtrace_error
=
true
;
wake_up
(
&
sdev
->
trace_sleep
);
wake_up
(
&
sdev
->
trace_sleep
);
}
}
...
...
sound/soc/sof/xtensa/core.c
View file @
8e143296
...
@@ -122,9 +122,9 @@ static void xtensa_stack(struct snd_sof_dev *sdev, void *oops, u32 *stack,
...
@@ -122,9 +122,9 @@ static void xtensa_stack(struct snd_sof_dev *sdev, void *oops, u32 *stack,
* 0x0049fbb0: 8000f2d0 0049fc00 6f6c6c61 00632e63
* 0x0049fbb0: 8000f2d0 0049fc00 6f6c6c61 00632e63
*/
*/
for
(
i
=
0
;
i
<
stack_words
;
i
+=
4
)
{
for
(
i
=
0
;
i
<
stack_words
;
i
+=
4
)
{
hex_dump_to_buffer
(
stack
+
i
*
4
,
16
,
16
,
4
,
hex_dump_to_buffer
(
stack
+
i
,
16
,
16
,
4
,
buf
,
sizeof
(
buf
),
false
);
buf
,
sizeof
(
buf
),
false
);
dev_err
(
sdev
->
dev
,
"0x%08x: %s
\n
"
,
stack_ptr
+
i
,
buf
);
dev_err
(
sdev
->
dev
,
"0x%08x: %s
\n
"
,
stack_ptr
+
i
*
4
,
buf
);
}
}
}
}
...
...
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