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
ddaa1ed5
Commit
ddaa1ed5
authored
Aug 06, 2021
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge some cs42l42 patches into asoc-5.15
parents
585fb31c
e2f68672
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
318 additions
and
189 deletions
+318
-189
Documentation/devicetree/bindings/sound/renesas,rsnd.yaml
Documentation/devicetree/bindings/sound/renesas,rsnd.yaml
+1
-1
MAINTAINERS
MAINTAINERS
+2
-1
include/sound/soc.h
include/sound/soc.h
+6
-0
sound/soc/Kconfig
sound/soc/Kconfig
+1
-0
sound/soc/amd/acp-da7219-max98357a.c
sound/soc/amd/acp-da7219-max98357a.c
+10
-0
sound/soc/amd/acp-pcm-dma.c
sound/soc/amd/acp-pcm-dma.c
+1
-1
sound/soc/amd/raven/acp3x-pcm-dma.c
sound/soc/amd/raven/acp3x-pcm-dma.c
+1
-1
sound/soc/amd/renoir/acp3x-pdm-dma.c
sound/soc/amd/renoir/acp3x-pdm-dma.c
+1
-1
sound/soc/amd/renoir/rn-pci-acp3x.c
sound/soc/amd/renoir/rn-pci-acp3x.c
+2
-0
sound/soc/codecs/Kconfig
sound/soc/codecs/Kconfig
+2
-0
sound/soc/codecs/Makefile
sound/soc/codecs/Makefile
+4
-1
sound/soc/codecs/cs42l42.c
sound/soc/codecs/cs42l42.c
+96
-36
sound/soc/codecs/cs42l42.h
sound/soc/codecs/cs42l42.h
+3
-0
sound/soc/codecs/nau8824.c
sound/soc/codecs/nau8824.c
+6
-36
sound/soc/codecs/rt5631.c
sound/soc/codecs/rt5631.c
+2
-0
sound/soc/codecs/rt5682.c
sound/soc/codecs/rt5682.c
+7
-2
sound/soc/codecs/tlv320aic31xx.c
sound/soc/codecs/tlv320aic31xx.c
+12
-0
sound/soc/codecs/tlv320aic32x4.c
sound/soc/codecs/tlv320aic32x4.c
+39
-21
sound/soc/codecs/wcd938x.c
sound/soc/codecs/wcd938x.c
+9
-9
sound/soc/codecs/wm_adsp.c
sound/soc/codecs/wm_adsp.c
+0
-1
sound/soc/intel/atom/sst-mfld-platform-pcm.c
sound/soc/intel/atom/sst-mfld-platform-pcm.c
+1
-2
sound/soc/intel/boards/sof_da7219_max98373.c
sound/soc/intel/boards/sof_da7219_max98373.c
+1
-1
sound/soc/kirkwood/kirkwood-dma.c
sound/soc/kirkwood/kirkwood-dma.c
+18
-8
sound/soc/soc-component.c
sound/soc/soc-component.c
+27
-36
sound/soc/soc-pcm.c
sound/soc/soc-pcm.c
+16
-6
sound/soc/sof/intel/Kconfig
sound/soc/sof/intel/Kconfig
+2
-2
sound/soc/sof/intel/hda-ipc.c
sound/soc/sof/intel/hda-ipc.c
+2
-2
sound/soc/sof/intel/hda.c
sound/soc/sof/intel/hda.c
+12
-0
sound/soc/sof/intel/pci-tgl.c
sound/soc/sof/intel/pci-tgl.c
+1
-0
sound/soc/tegra/tegra_pcm.c
sound/soc/tegra/tegra_pcm.c
+18
-12
sound/soc/ti/j721e-evm.c
sound/soc/ti/j721e-evm.c
+12
-6
sound/soc/uniphier/aio-dma.c
sound/soc/uniphier/aio-dma.c
+1
-1
sound/soc/xilinx/xlnx_formatter_pcm.c
sound/soc/xilinx/xlnx_formatter_pcm.c
+2
-2
No files found.
Documentation/devicetree/bindings/sound/renesas,rsnd.yaml
View file @
ddaa1ed5
...
...
@@ -114,7 +114,7 @@ properties:
ports
:
$ref
:
/schemas/graph.yaml#/properties/ports
properties
:
p
atternP
roperties
:
port(@[0-9a-f]+)?
:
$ref
:
audio-graph-port.yaml#
unevaluatedProperties
:
false
...
...
MAINTAINERS
View file @
ddaa1ed5
...
...
@@ -19992,7 +19992,8 @@ F: Documentation/devicetree/bindings/extcon/wlf,arizona.yaml
F: Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
F: Documentation/devicetree/bindings/mfd/wm831x.txt
F: Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
F: Documentation/devicetree/bindings/sound/wlf,arizona.yaml
F: Documentation/devicetree/bindings/sound/wlf,*.yaml
F: Documentation/devicetree/bindings/sound/wm*
F: Documentation/hwmon/wm83??.rst
F: arch/arm/mach-s3c/mach-crag6410*
F: drivers/clk/clk-wm83*.c
...
...
include/sound/soc.h
View file @
ddaa1ed5
...
...
@@ -712,6 +712,12 @@ struct snd_soc_dai_link {
/* Do not create a PCM for this DAI link (Backend link) */
unsigned
int
ignore
:
1
;
/* This flag will reorder stop sequence. By enabling this flag
* DMA controller stop sequence will be invoked first followed by
* CPU DAI driver stop sequence
*/
unsigned
int
stop_dma_first
:
1
;
#ifdef CONFIG_SND_SOC_TOPOLOGY
struct
snd_soc_dobj
dobj
;
/* For topology */
#endif
...
...
sound/soc/Kconfig
View file @
ddaa1ed5
...
...
@@ -36,6 +36,7 @@ config SND_SOC_COMPRESS
config SND_SOC_TOPOLOGY
bool
select SND_DYNAMIC_MINORS
config SND_SOC_TOPOLOGY_KUNIT_TEST
tristate "KUnit tests for SoC topology"
...
...
sound/soc/amd/acp-da7219-max98357a.c
View file @
ddaa1ed5
...
...
@@ -525,6 +525,7 @@ static struct snd_soc_dai_link cz_dai_7219_98357[] = {
|
SND_SOC_DAIFMT_CBM_CFM
,
.
init
=
cz_da7219_init
,
.
dpcm_playback
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_da7219_play_ops
,
SND_SOC_DAILINK_REG
(
designware1
,
dlgs
,
platform
),
},
...
...
@@ -534,6 +535,7 @@ static struct snd_soc_dai_link cz_dai_7219_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_da7219_cap_ops
,
SND_SOC_DAILINK_REG
(
designware2
,
dlgs
,
platform
),
},
...
...
@@ -543,6 +545,7 @@ static struct snd_soc_dai_link cz_dai_7219_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_playback
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_max_play_ops
,
SND_SOC_DAILINK_REG
(
designware3
,
mx
,
platform
),
},
...
...
@@ -553,6 +556,7 @@ static struct snd_soc_dai_link cz_dai_7219_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_dmic0_cap_ops
,
SND_SOC_DAILINK_REG
(
designware3
,
adau
,
platform
),
},
...
...
@@ -563,6 +567,7 @@ static struct snd_soc_dai_link cz_dai_7219_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_dmic1_cap_ops
,
SND_SOC_DAILINK_REG
(
designware2
,
adau
,
platform
),
},
...
...
@@ -576,6 +581,7 @@ static struct snd_soc_dai_link cz_dai_5682_98357[] = {
|
SND_SOC_DAIFMT_CBM_CFM
,
.
init
=
cz_rt5682_init
,
.
dpcm_playback
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_rt5682_play_ops
,
SND_SOC_DAILINK_REG
(
designware1
,
rt5682
,
platform
),
},
...
...
@@ -585,6 +591,7 @@ static struct snd_soc_dai_link cz_dai_5682_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_rt5682_cap_ops
,
SND_SOC_DAILINK_REG
(
designware2
,
rt5682
,
platform
),
},
...
...
@@ -594,6 +601,7 @@ static struct snd_soc_dai_link cz_dai_5682_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_playback
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_rt5682_max_play_ops
,
SND_SOC_DAILINK_REG
(
designware3
,
mx
,
platform
),
},
...
...
@@ -604,6 +612,7 @@ static struct snd_soc_dai_link cz_dai_5682_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_rt5682_dmic0_cap_ops
,
SND_SOC_DAILINK_REG
(
designware3
,
adau
,
platform
),
},
...
...
@@ -614,6 +623,7 @@ static struct snd_soc_dai_link cz_dai_5682_98357[] = {
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
dpcm_capture
=
1
,
.
stop_dma_first
=
1
,
.
ops
=
&
cz_rt5682_dmic1_cap_ops
,
SND_SOC_DAILINK_REG
(
designware2
,
adau
,
platform
),
},
...
...
sound/soc/amd/acp-pcm-dma.c
View file @
ddaa1ed5
...
...
@@ -969,7 +969,7 @@ static int acp_dma_hw_params(struct snd_soc_component *component,
acp_set_sram_bank_state
(
rtd
->
acp_mmio
,
0
,
true
);
/* Save for runtime private data */
rtd
->
dma_addr
=
substream
->
dma_buffer
.
addr
;
rtd
->
dma_addr
=
runtime
->
dma_
addr
;
rtd
->
order
=
get_order
(
size
);
/* Fill the page table entries in ACP SRAM */
...
...
sound/soc/amd/raven/acp3x-pcm-dma.c
View file @
ddaa1ed5
...
...
@@ -286,7 +286,7 @@ static int acp3x_dma_hw_params(struct snd_soc_component *component,
pr_err
(
"pinfo failed
\n
"
);
}
size
=
params_buffer_bytes
(
params
);
rtd
->
dma_addr
=
substream
->
dma_buffer
.
addr
;
rtd
->
dma_addr
=
substream
->
runtime
->
dma_
addr
;
rtd
->
num_pages
=
(
PAGE_ALIGN
(
size
)
>>
PAGE_SHIFT
);
config_acp3x_dma
(
rtd
,
substream
->
stream
);
return
0
;
...
...
sound/soc/amd/renoir/acp3x-pdm-dma.c
View file @
ddaa1ed5
...
...
@@ -242,7 +242,7 @@ static int acp_pdm_dma_hw_params(struct snd_soc_component *component,
return
-
EINVAL
;
size
=
params_buffer_bytes
(
params
);
period_bytes
=
params_period_bytes
(
params
);
rtd
->
dma_addr
=
substream
->
dma_buffer
.
addr
;
rtd
->
dma_addr
=
substream
->
runtime
->
dma_
addr
;
rtd
->
num_pages
=
(
PAGE_ALIGN
(
size
)
>>
PAGE_SHIFT
);
config_acp_dma
(
rtd
,
substream
->
stream
);
init_pdm_ring_buffer
(
MEM_WINDOW_START
,
size
,
period_bytes
,
...
...
sound/soc/amd/renoir/rn-pci-acp3x.c
View file @
ddaa1ed5
...
...
@@ -382,6 +382,8 @@ static const struct dev_pm_ops rn_acp_pm = {
.
runtime_resume
=
snd_rn_acp_resume
,
.
suspend
=
snd_rn_acp_suspend
,
.
resume
=
snd_rn_acp_resume
,
.
restore
=
snd_rn_acp_resume
,
.
poweroff
=
snd_rn_acp_suspend
,
};
static
void
snd_rn_acp_remove
(
struct
pci_dev
*
pci
)
...
...
sound/soc/codecs/Kconfig
View file @
ddaa1ed5
...
...
@@ -1575,7 +1575,9 @@ config SND_SOC_WCD934X
Qualcomm SoCs like SDM845.
config SND_SOC_WCD938X
depends on SND_SOC_WCD938X_SDW
tristate
depends on SOUNDWIRE || !SOUNDWIRE
config SND_SOC_WCD938X_SDW
tristate "WCD9380/WCD9385 Codec - SDW"
...
...
sound/soc/codecs/Makefile
View file @
ddaa1ed5
...
...
@@ -585,7 +585,10 @@ obj-$(CONFIG_SND_SOC_WCD_MBHC) += snd-soc-wcd-mbhc.o
obj-$(CONFIG_SND_SOC_WCD9335)
+=
snd-soc-wcd9335.o
obj-$(CONFIG_SND_SOC_WCD934X)
+=
snd-soc-wcd934x.o
obj-$(CONFIG_SND_SOC_WCD938X)
+=
snd-soc-wcd938x.o
obj-$(CONFIG_SND_SOC_WCD938X_SDW)
+=
snd-soc-wcd938x-sdw.o
ifdef
CONFIG_SND_SOC_WCD938X_SDW
# avoid link failure by forcing sdw code built-in when needed
obj-$(CONFIG_SND_SOC_WCD938X)
+=
snd-soc-wcd938x-sdw.o
endif
obj-$(CONFIG_SND_SOC_WL1273)
+=
snd-soc-wl1273.o
obj-$(CONFIG_SND_SOC_WM0010)
+=
snd-soc-wm0010.o
obj-$(CONFIG_SND_SOC_WM1250_EV1)
+=
snd-soc-wm1250-ev1.o
...
...
sound/soc/codecs/cs42l42.c
View file @
ddaa1ed5
This diff is collapsed.
Click to expand it.
sound/soc/codecs/cs42l42.h
View file @
ddaa1ed5
...
...
@@ -653,6 +653,8 @@
/* Page 0x25 Audio Port Registers */
#define CS42L42_SP_RX_CH_SEL (CS42L42_PAGE_25 + 0x01)
#define CS42L42_SP_RX_CHB_SEL_SHIFT 2
#define CS42L42_SP_RX_CHB_SEL_MASK (3 << CS42L42_SP_RX_CHB_SEL_SHIFT)
#define CS42L42_SP_RX_ISOC_CTL (CS42L42_PAGE_25 + 0x02)
#define CS42L42_SP_RX_RSYNC_SHIFT 6
...
...
@@ -775,6 +777,7 @@ struct cs42l42_private {
struct
gpio_desc
*
reset_gpio
;
struct
completion
pdn_done
;
struct
snd_soc_jack
*
jack
;
int
pll_config
;
int
bclk
;
u32
sclk
;
u32
srate
;
...
...
sound/soc/codecs/nau8824.c
View file @
ddaa1ed5
...
...
@@ -828,36 +828,6 @@ static void nau8824_int_status_clear_all(struct regmap *regmap)
}
}
static
void
nau8824_dapm_disable_pin
(
struct
nau8824
*
nau8824
,
const
char
*
pin
)
{
struct
snd_soc_dapm_context
*
dapm
=
nau8824
->
dapm
;
const
char
*
prefix
=
dapm
->
component
->
name_prefix
;
char
prefixed_pin
[
80
];
if
(
prefix
)
{
snprintf
(
prefixed_pin
,
sizeof
(
prefixed_pin
),
"%s %s"
,
prefix
,
pin
);
snd_soc_dapm_disable_pin
(
dapm
,
prefixed_pin
);
}
else
{
snd_soc_dapm_disable_pin
(
dapm
,
pin
);
}
}
static
void
nau8824_dapm_enable_pin
(
struct
nau8824
*
nau8824
,
const
char
*
pin
)
{
struct
snd_soc_dapm_context
*
dapm
=
nau8824
->
dapm
;
const
char
*
prefix
=
dapm
->
component
->
name_prefix
;
char
prefixed_pin
[
80
];
if
(
prefix
)
{
snprintf
(
prefixed_pin
,
sizeof
(
prefixed_pin
),
"%s %s"
,
prefix
,
pin
);
snd_soc_dapm_force_enable_pin
(
dapm
,
prefixed_pin
);
}
else
{
snd_soc_dapm_force_enable_pin
(
dapm
,
pin
);
}
}
static
void
nau8824_eject_jack
(
struct
nau8824
*
nau8824
)
{
struct
snd_soc_dapm_context
*
dapm
=
nau8824
->
dapm
;
...
...
@@ -866,8 +836,8 @@ static void nau8824_eject_jack(struct nau8824 *nau8824)
/* Clear all interruption status */
nau8824_int_status_clear_all
(
regmap
);
nau8824_dapm_disable_pin
(
nau8824
,
"SAR"
);
nau8824_dapm_disable_pin
(
nau8824
,
"MICBIAS"
);
snd_soc_dapm_disable_pin
(
dapm
,
"SAR"
);
snd_soc_dapm_disable_pin
(
dapm
,
"MICBIAS"
);
snd_soc_dapm_sync
(
dapm
);
/* Enable the insertion interruption, disable the ejection
...
...
@@ -897,8 +867,8 @@ static void nau8824_jdet_work(struct work_struct *work)
struct
regmap
*
regmap
=
nau8824
->
regmap
;
int
adc_value
,
event
=
0
,
event_mask
=
0
;
nau8824_dapm_enable_pin
(
nau8824
,
"MICBIAS"
);
nau8824_dapm_enable_pin
(
nau8824
,
"SAR"
);
snd_soc_dapm_enable_pin
(
dapm
,
"MICBIAS"
);
snd_soc_dapm_enable_pin
(
dapm
,
"SAR"
);
snd_soc_dapm_sync
(
dapm
);
msleep
(
100
);
...
...
@@ -909,8 +879,8 @@ static void nau8824_jdet_work(struct work_struct *work)
if
(
adc_value
<
HEADSET_SARADC_THD
)
{
event
|=
SND_JACK_HEADPHONE
;
nau8824_dapm_disable_pin
(
nau8824
,
"SAR"
);
nau8824_dapm_disable_pin
(
nau8824
,
"MICBIAS"
);
snd_soc_dapm_disable_pin
(
dapm
,
"SAR"
);
snd_soc_dapm_disable_pin
(
dapm
,
"MICBIAS"
);
snd_soc_dapm_sync
(
dapm
);
}
else
{
event
|=
SND_JACK_HEADSET
;
...
...
sound/soc/codecs/rt5631.c
View file @
ddaa1ed5
...
...
@@ -1695,6 +1695,8 @@ static const struct regmap_config rt5631_regmap_config = {
.
reg_defaults
=
rt5631_reg
,
.
num_reg_defaults
=
ARRAY_SIZE
(
rt5631_reg
),
.
cache_type
=
REGCACHE_RBTREE
,
.
use_single_read
=
true
,
.
use_single_write
=
true
,
};
static
int
rt5631_i2c_probe
(
struct
i2c_client
*
i2c
,
...
...
sound/soc/codecs/rt5682.c
View file @
ddaa1ed5
...
...
@@ -44,6 +44,7 @@ static const struct reg_sequence patch_list[] = {
{
RT5682_I2C_CTRL
,
0x000f
},
{
RT5682_PLL2_INTERNAL
,
0x8266
},
{
RT5682_SAR_IL_CMD_3
,
0x8365
},
{
RT5682_SAR_IL_CMD_6
,
0x0180
},
};
void
rt5682_apply_patch_list
(
struct
rt5682_priv
*
rt5682
,
struct
device
*
dev
)
...
...
@@ -973,10 +974,14 @@ int rt5682_headset_detect(struct snd_soc_component *component, int jack_insert)
rt5682_enable_push_button_irq
(
component
,
false
);
snd_soc_component_update_bits
(
component
,
RT5682_CBJ_CTRL_1
,
RT5682_TRIG_JD_MASK
,
RT5682_TRIG_JD_LOW
);
if
(
!
snd_soc_dapm_get_pin_status
(
dapm
,
"MICBIAS"
))
if
(
!
snd_soc_dapm_get_pin_status
(
dapm
,
"MICBIAS"
)
&&
!
snd_soc_dapm_get_pin_status
(
dapm
,
"PLL1"
)
&&
!
snd_soc_dapm_get_pin_status
(
dapm
,
"PLL2B"
))
snd_soc_component_update_bits
(
component
,
RT5682_PWR_ANLG_1
,
RT5682_PWR_MB
,
0
);
if
(
!
snd_soc_dapm_get_pin_status
(
dapm
,
"Vref2"
))
if
(
!
snd_soc_dapm_get_pin_status
(
dapm
,
"Vref2"
)
&&
!
snd_soc_dapm_get_pin_status
(
dapm
,
"PLL1"
)
&&
!
snd_soc_dapm_get_pin_status
(
dapm
,
"PLL2B"
))
snd_soc_component_update_bits
(
component
,
RT5682_PWR_ANLG_1
,
RT5682_PWR_VREF2
,
0
);
snd_soc_component_update_bits
(
component
,
RT5682_PWR_ANLG_3
,
...
...
sound/soc/codecs/tlv320aic31xx.c
View file @
ddaa1ed5
...
...
@@ -35,6 +35,9 @@
#include "tlv320aic31xx.h"
static
int
aic31xx_set_jack
(
struct
snd_soc_component
*
component
,
struct
snd_soc_jack
*
jack
,
void
*
data
);
static
const
struct
reg_default
aic31xx_reg_defaults
[]
=
{
{
AIC31XX_CLKMUX
,
0x00
},
{
AIC31XX_PLLPR
,
0x11
},
...
...
@@ -1256,6 +1259,13 @@ static int aic31xx_power_on(struct snd_soc_component *component)
return
ret
;
}
/*
* The jack detection configuration is in the same register
* that is used to report jack detect status so is volatile
* and not covered by the cache sync, restore it separately.
*/
aic31xx_set_jack
(
component
,
aic31xx
->
jack
,
NULL
);
return
0
;
}
...
...
@@ -1604,6 +1614,8 @@ static int aic31xx_i2c_probe(struct i2c_client *i2c,
ret
);
return
ret
;
}
regcache_cache_only
(
aic31xx
->
regmap
,
true
);
aic31xx
->
dev
=
&
i2c
->
dev
;
aic31xx
->
irq
=
i2c
->
irq
;
...
...
sound/soc/codecs/tlv320aic32x4.c
View file @
ddaa1ed5
...
...
@@ -250,8 +250,8 @@ static DECLARE_TLV_DB_SCALE(tlv_pcm, -6350, 50, 0);
static
DECLARE_TLV_DB_SCALE
(
tlv_driver_gain
,
-
600
,
100
,
0
);
/* -12dB min, 0.5dB steps */
static
DECLARE_TLV_DB_SCALE
(
tlv_adc_vol
,
-
1200
,
50
,
0
);
static
DECLARE_TLV_DB_
LINEAR
(
tlv_spk_vol
,
TLV_DB_GAIN_MUTE
,
0
);
/* -6dB min, 1dB steps */
static
DECLARE_TLV_DB_
SCALE
(
tlv_tas_driver_gain
,
-
5850
,
50
,
0
);
static
DECLARE_TLV_DB_SCALE
(
tlv_amp_vol
,
0
,
600
,
1
);
static
const
char
*
const
lo_cm_text
[]
=
{
...
...
@@ -682,11 +682,20 @@ static int aic32x4_set_dosr(struct snd_soc_component *component, u16 dosr)
static
int
aic32x4_set_processing_blocks
(
struct
snd_soc_component
*
component
,
u8
r_block
,
u8
p_block
)
{
if
(
r_block
>
18
||
p_block
>
25
)
return
-
EINVAL
;
struct
aic32x4_priv
*
aic32x4
=
snd_soc_component_get_drvdata
(
component
);
if
(
aic32x4
->
type
==
AIC32X4_TYPE_TAS2505
)
{
if
(
r_block
||
p_block
>
3
)
return
-
EINVAL
;
snd_soc_component_write
(
component
,
AIC32X4_ADCSPB
,
r_block
);
snd_soc_component_write
(
component
,
AIC32X4_DACSPB
,
p_block
);
snd_soc_component_write
(
component
,
AIC32X4_DACSPB
,
p_block
);
}
else
{
/* AIC32x4 */
if
(
r_block
>
18
||
p_block
>
25
)
return
-
EINVAL
;
snd_soc_component_write
(
component
,
AIC32X4_ADCSPB
,
r_block
);
snd_soc_component_write
(
component
,
AIC32X4_DACSPB
,
p_block
);
}
return
0
;
}
...
...
@@ -695,6 +704,7 @@ static int aic32x4_setup_clocks(struct snd_soc_component *component,
unsigned
int
sample_rate
,
unsigned
int
channels
,
unsigned
int
bit_depth
)
{
struct
aic32x4_priv
*
aic32x4
=
snd_soc_component_get_drvdata
(
component
);
u8
aosr
;
u16
dosr
;
u8
adc_resource_class
,
dac_resource_class
;
...
...
@@ -721,19 +731,28 @@ static int aic32x4_setup_clocks(struct snd_soc_component *component,
adc_resource_class
=
6
;
dac_resource_class
=
8
;
dosr_increment
=
8
;
aic32x4_set_processing_blocks
(
component
,
1
,
1
);
if
(
aic32x4
->
type
==
AIC32X4_TYPE_TAS2505
)
aic32x4_set_processing_blocks
(
component
,
0
,
1
);
else
aic32x4_set_processing_blocks
(
component
,
1
,
1
);
}
else
if
(
sample_rate
<=
96000
)
{
aosr
=
64
;
adc_resource_class
=
6
;
dac_resource_class
=
8
;
dosr_increment
=
4
;
aic32x4_set_processing_blocks
(
component
,
1
,
9
);
if
(
aic32x4
->
type
==
AIC32X4_TYPE_TAS2505
)
aic32x4_set_processing_blocks
(
component
,
0
,
1
);
else
aic32x4_set_processing_blocks
(
component
,
1
,
9
);
}
else
if
(
sample_rate
==
192000
)
{
aosr
=
32
;
adc_resource_class
=
3
;
dac_resource_class
=
4
;
dosr_increment
=
2
;
aic32x4_set_processing_blocks
(
component
,
13
,
19
);
if
(
aic32x4
->
type
==
AIC32X4_TYPE_TAS2505
)
aic32x4_set_processing_blocks
(
component
,
0
,
1
);
else
aic32x4_set_processing_blocks
(
component
,
13
,
19
);
}
else
{
dev_err
(
component
->
dev
,
"Sampling rate not supported
\n
"
);
return
-
EINVAL
;
...
...
@@ -1063,21 +1082,20 @@ static const struct snd_soc_component_driver soc_component_dev_aic32x4 = {
};
static
const
struct
snd_kcontrol_new
aic32x4_tas2505_snd_controls
[]
=
{
SOC_
DOUBLE_R_S_TLV
(
"PCM Playback Volume"
,
AIC32X4_LDACVOL
,
AIC32X4_LDACVOL
,
0
,
-
0x7f
,
0x30
,
7
,
0
,
tlv_pcm
),
SOC_
SINGLE_S8_TLV
(
"PCM Playback Volume"
,
AIC32X4_LDACVOL
,
-
0x7f
,
0x3
0
,
tlv_pcm
),
SOC_ENUM
(
"DAC Playback PowerTune Switch"
,
l_ptm_enum
),
SOC_DOUBLE_R_S_TLV
(
"HP Driver Playback Volume"
,
AIC32X4_HPLGAIN
,
AIC32X4_HPLGAIN
,
0
,
-
0x6
,
0x1d
,
5
,
0
,
tlv_driver_gain
),
SOC_DOUBLE_R
(
"HP DAC Playback Switch"
,
AIC32X4_HPLGAIN
,
AIC32X4_HPLGAIN
,
6
,
0x01
,
1
),
SOC_SINGLE
(
"Auto-mute Switch"
,
AIC32X4_DACMUTE
,
4
,
7
,
0
),
SOC_SINGLE_TLV
(
"HP Driver Gain Volume"
,
AIC32X4_HPLGAIN
,
0
,
0x74
,
1
,
tlv_tas_driver_gain
),
SOC_SINGLE
(
"HP DAC Playback Switch"
,
AIC32X4_HPLGAIN
,
6
,
1
,
1
),
SOC_SINGLE_RANGE_TLV
(
"Speaker Driver Playback Volume"
,
TAS2505_SPKVOL1
,
0
,
0
,
117
,
1
,
tlv_spk_vol
),
SOC_SINGLE_TLV
(
"Speaker Amplifier Playback Volume"
,
TAS2505_SPKVOL2
,
4
,
5
,
0
,
tlv_amp_vol
),
SOC_SINGLE_TLV
(
"Speaker Driver Playback Volume"
,
TAS2505_SPKVOL1
,
0
,
0x74
,
1
,
tlv_tas_driver_gain
),
SOC_SINGLE_TLV
(
"Speaker Amplifier Playback Volume"
,
TAS2505_SPKVOL2
,
4
,
5
,
0
,
tlv_amp_vol
),
SOC_SINGLE
(
"Auto-mute Switch"
,
AIC32X4_DACMUTE
,
4
,
7
,
0
),
};
static
const
struct
snd_kcontrol_new
hp_output_mixer_controls
[]
=
{
...
...
sound/soc/codecs/wcd938x.c
View file @
ddaa1ed5
...
...
@@ -4076,13 +4076,6 @@ static int wcd938x_soc_codec_probe(struct snd_soc_component *component)
(
WCD938X_DIGITAL_INTR_LEVEL_0
+
i
),
0
);
}
ret
=
wcd938x_irq_init
(
wcd938x
,
component
->
dev
);
if
(
ret
)
{
dev_err
(
component
->
dev
,
"%s: IRQ init failed: %d
\n
"
,
__func__
,
ret
);
return
ret
;
}
wcd938x
->
hphr_pdm_wd_int
=
regmap_irq_get_virq
(
wcd938x
->
irq_chip
,
WCD938X_IRQ_HPHR_PDM_WD_INT
);
wcd938x
->
hphl_pdm_wd_int
=
regmap_irq_get_virq
(
wcd938x
->
irq_chip
,
...
...
@@ -4342,7 +4335,6 @@ static int wcd938x_bind(struct device *dev)
}
wcd938x
->
sdw_priv
[
AIF1_PB
]
=
dev_get_drvdata
(
wcd938x
->
rxdev
);
wcd938x
->
sdw_priv
[
AIF1_PB
]
->
wcd938x
=
wcd938x
;
wcd938x
->
sdw_priv
[
AIF1_PB
]
->
slave_irq
=
wcd938x
->
virq
;
wcd938x
->
txdev
=
wcd938x_sdw_device_get
(
wcd938x
->
txnode
);
if
(
!
wcd938x
->
txdev
)
{
...
...
@@ -4351,7 +4343,6 @@ static int wcd938x_bind(struct device *dev)
}
wcd938x
->
sdw_priv
[
AIF1_CAP
]
=
dev_get_drvdata
(
wcd938x
->
txdev
);
wcd938x
->
sdw_priv
[
AIF1_CAP
]
->
wcd938x
=
wcd938x
;
wcd938x
->
sdw_priv
[
AIF1_CAP
]
->
slave_irq
=
wcd938x
->
virq
;
wcd938x
->
tx_sdw_dev
=
dev_to_sdw_dev
(
wcd938x
->
txdev
);
if
(
!
wcd938x
->
tx_sdw_dev
)
{
dev_err
(
dev
,
"could not get txslave with matching of dev
\n
"
);
...
...
@@ -4384,6 +4375,15 @@ static int wcd938x_bind(struct device *dev)
return
PTR_ERR
(
wcd938x
->
regmap
);
}
ret
=
wcd938x_irq_init
(
wcd938x
,
dev
);
if
(
ret
)
{
dev_err
(
dev
,
"%s: IRQ init failed: %d
\n
"
,
__func__
,
ret
);
return
ret
;
}
wcd938x
->
sdw_priv
[
AIF1_PB
]
->
slave_irq
=
wcd938x
->
virq
;
wcd938x
->
sdw_priv
[
AIF1_CAP
]
->
slave_irq
=
wcd938x
->
virq
;
ret
=
wcd938x_set_micbias_data
(
wcd938x
);
if
(
ret
<
0
)
{
dev_err
(
dev
,
"%s: bad micbias pdata
\n
"
,
__func__
);
...
...
sound/soc/codecs/wm_adsp.c
View file @
ddaa1ed5
...
...
@@ -747,7 +747,6 @@ static void wm_adsp2_init_debugfs(struct wm_adsp *dsp,
static
void
wm_adsp2_cleanup_debugfs
(
struct
wm_adsp
*
dsp
)
{
wm_adsp_debugfs_clear
(
dsp
);
debugfs_remove_recursive
(
dsp
->
debugfs_root
);
}
#else
static
inline
void
wm_adsp2_init_debugfs
(
struct
wm_adsp
*
dsp
,
...
...
sound/soc/intel/atom/sst-mfld-platform-pcm.c
View file @
ddaa1ed5
...
...
@@ -127,7 +127,7 @@ static void sst_fill_alloc_params(struct snd_pcm_substream *substream,
snd_pcm_uframes_t
period_size
;
ssize_t
periodbytes
;
ssize_t
buffer_bytes
=
snd_pcm_lib_buffer_bytes
(
substream
);
u32
buffer_addr
=
virt_to_phys
(
substream
->
dma_buffer
.
area
)
;
u32
buffer_addr
=
substream
->
runtime
->
dma_addr
;
channels
=
substream
->
runtime
->
channels
;
period_size
=
substream
->
runtime
->
period_size
;
...
...
@@ -233,7 +233,6 @@ static int sst_platform_alloc_stream(struct snd_pcm_substream *substream,
/* set codec params and inform SST driver the same */
sst_fill_pcm_params
(
substream
,
&
param
);
sst_fill_alloc_params
(
substream
,
&
alloc_params
);
substream
->
runtime
->
dma_area
=
substream
->
dma_buffer
.
area
;
str_params
.
sparams
=
param
;
str_params
.
aparams
=
alloc_params
;
str_params
.
codec
=
SST_CODEC_TYPE_PCM
;
...
...
sound/soc/intel/boards/sof_da7219_max98373.c
View file @
ddaa1ed5
...
...
@@ -404,7 +404,7 @@ static int audio_probe(struct platform_device *pdev)
return
-
ENOMEM
;
/* By default dais[0] is configured for max98373 */
if
(
!
strcmp
(
pdev
->
name
,
"sof_da7219_m
a
x98360a"
))
{
if
(
!
strcmp
(
pdev
->
name
,
"sof_da7219_mx98360a"
))
{
dais
[
0
]
=
(
struct
snd_soc_dai_link
)
{
.
name
=
"SSP1-Codec"
,
.
id
=
0
,
...
...
sound/soc/kirkwood/kirkwood-dma.c
View file @
ddaa1ed5
...
...
@@ -104,8 +104,6 @@ static int kirkwood_dma_open(struct snd_soc_component *component,
int
err
;
struct
snd_pcm_runtime
*
runtime
=
substream
->
runtime
;
struct
kirkwood_dma_data
*
priv
=
kirkwood_priv
(
substream
);
const
struct
mbus_dram_target_info
*
dram
;
unsigned
long
addr
;
snd_soc_set_runtime_hwparams
(
substream
,
&
kirkwood_dma_snd_hw
);
...
...
@@ -142,20 +140,14 @@ static int kirkwood_dma_open(struct snd_soc_component *component,
writel
((
unsigned
int
)
-
1
,
priv
->
io
+
KIRKWOOD_ERR_MASK
);
}
dram
=
mv_mbus_dram_info
();
addr
=
substream
->
dma_buffer
.
addr
;
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
{
if
(
priv
->
substream_play
)
return
-
EBUSY
;
priv
->
substream_play
=
substream
;
kirkwood_dma_conf_mbus_windows
(
priv
->
io
,
KIRKWOOD_PLAYBACK_WIN
,
addr
,
dram
);
}
else
{
if
(
priv
->
substream_rec
)
return
-
EBUSY
;
priv
->
substream_rec
=
substream
;
kirkwood_dma_conf_mbus_windows
(
priv
->
io
,
KIRKWOOD_RECORD_WIN
,
addr
,
dram
);
}
return
0
;
...
...
@@ -182,6 +174,23 @@ static int kirkwood_dma_close(struct snd_soc_component *component,
return
0
;
}
static
int
kirkwood_dma_hw_params
(
struct
snd_soc_component
*
component
,
struct
snd_pcm_substream
*
substream
,
struct
snd_pcm_hw_params
*
params
)
{
struct
kirkwood_dma_data
*
priv
=
kirkwood_priv
(
substream
);
const
struct
mbus_dram_target_info
*
dram
=
mv_mbus_dram_info
();
unsigned
long
addr
=
substream
->
runtime
->
dma_addr
;
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
kirkwood_dma_conf_mbus_windows
(
priv
->
io
,
KIRKWOOD_PLAYBACK_WIN
,
addr
,
dram
);
else
kirkwood_dma_conf_mbus_windows
(
priv
->
io
,
KIRKWOOD_RECORD_WIN
,
addr
,
dram
);
return
0
;
}
static
int
kirkwood_dma_prepare
(
struct
snd_soc_component
*
component
,
struct
snd_pcm_substream
*
substream
)
{
...
...
@@ -246,6 +255,7 @@ const struct snd_soc_component_driver kirkwood_soc_component = {
.
name
=
DRV_NAME
,
.
open
=
kirkwood_dma_open
,
.
close
=
kirkwood_dma_close
,
.
hw_params
=
kirkwood_dma_hw_params
,
.
prepare
=
kirkwood_dma_prepare
,
.
pointer
=
kirkwood_dma_pointer
,
.
pcm_construct
=
kirkwood_dma_new
,
...
...
sound/soc/soc-component.c
View file @
ddaa1ed5
...
...
@@ -148,86 +148,75 @@ int snd_soc_component_set_bias_level(struct snd_soc_component *component,
return
soc_component_ret
(
component
,
ret
);
}
static
int
soc_component_pin
(
struct
snd_soc_component
*
component
,
const
char
*
pin
,
int
(
*
pin_func
)(
struct
snd_soc_dapm_context
*
dapm
,
const
char
*
pin
))
{
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
char
*
full_name
;
int
ret
;
if
(
!
component
->
name_prefix
)
{
ret
=
pin_func
(
dapm
,
pin
);
goto
end
;
}
full_name
=
kasprintf
(
GFP_KERNEL
,
"%s %s"
,
component
->
name_prefix
,
pin
);
if
(
!
full_name
)
{
ret
=
-
ENOMEM
;
goto
end
;
}
ret
=
pin_func
(
dapm
,
full_name
);
kfree
(
full_name
);
end:
return
soc_component_ret
(
component
,
ret
);
}
int
snd_soc_component_enable_pin
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_enable_pin
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_enable_pin
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_enable_pin
);
int
snd_soc_component_enable_pin_unlocked
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_enable_pin_unlocked
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_enable_pin_unlocked
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_enable_pin_unlocked
);
int
snd_soc_component_disable_pin
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_disable_pin
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_disable_pin
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_disable_pin
);
int
snd_soc_component_disable_pin_unlocked
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_disable_pin_unlocked
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_disable_pin_unlocked
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_disable_pin_unlocked
);
int
snd_soc_component_nc_pin
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_nc_pin
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_nc_pin
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_nc_pin
);
int
snd_soc_component_nc_pin_unlocked
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_nc_pin_unlocked
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_nc_pin_unlocked
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_nc_pin_unlocked
);
int
snd_soc_component_get_pin_status
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_get_pin_status
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_get_pin_status
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_get_pin_status
);
int
snd_soc_component_force_enable_pin
(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_force_enable_pin
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_force_enable_pin
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_force_enable_pin
);
...
...
@@ -235,7 +224,9 @@ int snd_soc_component_force_enable_pin_unlocked(
struct
snd_soc_component
*
component
,
const
char
*
pin
)
{
return
soc_component_pin
(
component
,
pin
,
snd_soc_dapm_force_enable_pin_unlocked
);
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_component_get_dapm
(
component
);
return
snd_soc_dapm_force_enable_pin_unlocked
(
dapm
,
pin
);
}
EXPORT_SYMBOL_GPL
(
snd_soc_component_force_enable_pin_unlocked
);
...
...
sound/soc/soc-pcm.c
View file @
ddaa1ed5
...
...
@@ -1014,6 +1014,7 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
static
int
soc_pcm_trigger
(
struct
snd_pcm_substream
*
substream
,
int
cmd
)
{
struct
snd_soc_pcm_runtime
*
rtd
=
asoc_substream_to_rtd
(
substream
);
int
ret
=
-
EINVAL
,
_ret
=
0
;
int
rollback
=
0
;
...
...
@@ -1054,14 +1055,23 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
case
SNDRV_PCM_TRIGGER_STOP
:
case
SNDRV_PCM_TRIGGER_SUSPEND
:
case
SNDRV_PCM_TRIGGER_PAUSE_PUSH
:
ret
=
snd_soc_pcm_dai_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
if
(
rtd
->
dai_link
->
stop_dma_first
)
{
ret
=
snd_soc_pcm_component_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
ret
=
snd_soc_pcm_component_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
ret
=
snd_soc_pcm_dai_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
}
else
{
ret
=
snd_soc_pcm_dai_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
ret
=
snd_soc_pcm_component_trigger
(
substream
,
cmd
,
rollback
);
if
(
ret
<
0
)
break
;
}
ret
=
snd_soc_link_trigger
(
substream
,
cmd
,
rollback
);
break
;
}
...
...
sound/soc/sof/intel/Kconfig
View file @
ddaa1ed5
...
...
@@ -278,6 +278,8 @@ config SND_SOC_SOF_HDA
config SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
tristate
select SOUNDWIRE_INTEL if SND_SOC_SOF_INTEL_SOUNDWIRE
select SND_INTEL_SOUNDWIRE_ACPI if SND_SOC_SOF_INTEL_SOUNDWIRE
config SND_SOC_SOF_INTEL_SOUNDWIRE
tristate "SOF support for SoundWire"
...
...
@@ -285,8 +287,6 @@ config SND_SOC_SOF_INTEL_SOUNDWIRE
depends on SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE
depends on ACPI && SOUNDWIRE
depends on !(SOUNDWIRE=m && SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=y)
select SOUNDWIRE_INTEL
select SND_INTEL_SOUNDWIRE_ACPI
help
This adds support for SoundWire with Sound Open Firmware
for Intel(R) platforms.
...
...
sound/soc/sof/intel/hda-ipc.c
View file @
ddaa1ed5
...
...
@@ -107,8 +107,8 @@ void hda_dsp_ipc_get_reply(struct snd_sof_dev *sdev)
}
else
{
/* reply correct size ? */
if
(
reply
.
hdr
.
size
!=
msg
->
reply_size
&&
/* getter payload is never known upfront */
!
(
reply
.
hdr
.
cmd
&
SOF_IPC_GLB_PROBE
))
{
/* getter payload is never known upfront */
((
reply
.
hdr
.
cmd
&
SOF_GLB_TYPE_MASK
)
!=
SOF_IPC_GLB_PROBE
))
{
dev_err
(
sdev
->
dev
,
"error: reply expected %zu got %u bytes
\n
"
,
msg
->
reply_size
,
reply
.
hdr
.
size
);
ret
=
-
EINVAL
;
...
...
sound/soc/sof/intel/hda.c
View file @
ddaa1ed5
...
...
@@ -200,12 +200,16 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev)
int
hda_sdw_startup
(
struct
snd_sof_dev
*
sdev
)
{
struct
sof_intel_hda_dev
*
hdev
;
struct
snd_sof_pdata
*
pdata
=
sdev
->
pdata
;
hdev
=
sdev
->
pdata
->
hw_pdata
;
if
(
!
hdev
->
sdw
)
return
0
;
if
(
pdata
->
machine
&&
!
pdata
->
machine
->
mach_params
.
link_mask
)
return
0
;
return
sdw_intel_startup
(
hdev
->
sdw
);
}
...
...
@@ -1015,6 +1019,14 @@ static int hda_generic_machine_select(struct snd_sof_dev *sdev)
hda_mach
->
mach_params
.
dmic_num
=
dmic_num
;
pdata
->
machine
=
hda_mach
;
pdata
->
tplg_filename
=
tplg_filename
;
if
(
codec_num
==
2
)
{
/*
* Prevent SoundWire links from starting when an external
* HDaudio codec is used
*/
hda_mach
->
mach_params
.
link_mask
=
0
;
}
}
}
...
...
sound/soc/sof/intel/pci-tgl.c
View file @
ddaa1ed5
...
...
@@ -89,6 +89,7 @@ static const struct sof_dev_desc adls_desc = {
static
const
struct
sof_dev_desc
adl_desc
=
{
.
machines
=
snd_soc_acpi_intel_adl_machines
,
.
alt_machines
=
snd_soc_acpi_intel_adl_sdw_machines
,
.
use_acpi_target_states
=
true
,
.
resindex_lpe_base
=
0
,
.
resindex_pcicfg_base
=
-
1
,
.
resindex_imr_base
=
-
1
,
...
...
sound/soc/tegra/tegra_pcm.c
View file @
ddaa1ed5
...
...
@@ -213,19 +213,19 @@ snd_pcm_uframes_t tegra_pcm_pointer(struct snd_soc_component *component,
}
EXPORT_SYMBOL_GPL
(
tegra_pcm_pointer
);
static
int
tegra_pcm_preallocate_dma_buffer
(
struct
snd_pcm
*
pcm
,
int
stream
,
static
int
tegra_pcm_preallocate_dma_buffer
(
struct
device
*
dev
,
struct
snd_pcm
*
pcm
,
int
stream
,
size_t
size
)
{
struct
snd_pcm_substream
*
substream
=
pcm
->
streams
[
stream
].
substream
;
struct
snd_dma_buffer
*
buf
=
&
substream
->
dma_buffer
;
buf
->
area
=
dma_alloc_wc
(
pcm
->
card
->
dev
,
size
,
&
buf
->
addr
,
GFP_KERNEL
);
buf
->
area
=
dma_alloc_wc
(
dev
,
size
,
&
buf
->
addr
,
GFP_KERNEL
);
if
(
!
buf
->
area
)
return
-
ENOMEM
;
buf
->
private_data
=
NULL
;
buf
->
dev
.
type
=
SNDRV_DMA_TYPE_DEV
;
buf
->
dev
.
dev
=
pcm
->
card
->
dev
;
buf
->
dev
.
dev
=
dev
;
buf
->
bytes
=
size
;
return
0
;
...
...
@@ -244,31 +244,28 @@ static void tegra_pcm_deallocate_dma_buffer(struct snd_pcm *pcm, int stream)
if
(
!
buf
->
area
)
return
;
dma_free_wc
(
pcm
->
card
->
dev
,
buf
->
bytes
,
buf
->
area
,
buf
->
addr
);
dma_free_wc
(
buf
->
dev
.
dev
,
buf
->
bytes
,
buf
->
area
,
buf
->
addr
);
buf
->
area
=
NULL
;
}
static
int
tegra_pcm_dma_allocate
(
struct
snd_soc_pcm_runtime
*
rtd
,
static
int
tegra_pcm_dma_allocate
(
struct
device
*
dev
,
struct
snd_soc_pcm_runtime
*
rtd
,
size_t
size
)
{
struct
snd_card
*
card
=
rtd
->
card
->
snd_card
;
struct
snd_pcm
*
pcm
=
rtd
->
pcm
;
int
ret
;
ret
=
dma_set_mask_and_coherent
(
card
->
dev
,
DMA_BIT_MASK
(
32
));
ret
=
dma_set_mask_and_coherent
(
dev
,
DMA_BIT_MASK
(
32
));
if
(
ret
<
0
)
return
ret
;
if
(
pcm
->
streams
[
SNDRV_PCM_STREAM_PLAYBACK
].
substream
)
{
ret
=
tegra_pcm_preallocate_dma_buffer
(
pcm
,
SNDRV_PCM_STREAM_PLAYBACK
,
size
);
ret
=
tegra_pcm_preallocate_dma_buffer
(
dev
,
pcm
,
SNDRV_PCM_STREAM_PLAYBACK
,
size
);
if
(
ret
)
goto
err
;
}
if
(
pcm
->
streams
[
SNDRV_PCM_STREAM_CAPTURE
].
substream
)
{
ret
=
tegra_pcm_preallocate_dma_buffer
(
pcm
,
SNDRV_PCM_STREAM_CAPTURE
,
size
);
ret
=
tegra_pcm_preallocate_dma_buffer
(
dev
,
pcm
,
SNDRV_PCM_STREAM_CAPTURE
,
size
);
if
(
ret
)
goto
err_free_play
;
}
...
...
@@ -284,7 +281,16 @@ static int tegra_pcm_dma_allocate(struct snd_soc_pcm_runtime *rtd,
int
tegra_pcm_construct
(
struct
snd_soc_component
*
component
,
struct
snd_soc_pcm_runtime
*
rtd
)
{
return
tegra_pcm_dma_allocate
(
rtd
,
tegra_pcm_hardware
.
buffer_bytes_max
);
struct
device
*
dev
=
component
->
dev
;
/*
* Fallback for backwards-compatibility with older device trees that
* have the iommus property in the virtual, top-level "sound" node.
*/
if
(
!
of_get_property
(
dev
->
of_node
,
"iommus"
,
NULL
))
dev
=
rtd
->
card
->
snd_card
->
dev
;
return
tegra_pcm_dma_allocate
(
dev
,
rtd
,
tegra_pcm_hardware
.
buffer_bytes_max
);
}
EXPORT_SYMBOL_GPL
(
tegra_pcm_construct
);
...
...
sound/soc/ti/j721e-evm.c
View file @
ddaa1ed5
...
...
@@ -200,7 +200,7 @@ static int j721e_configure_refclk(struct j721e_priv *priv,
return
ret
;
}
if
(
priv
->
hsdiv_rates
[
domain
->
parent_clk_id
]
!=
scki
)
{
if
(
domain
->
parent_clk_id
==
-
1
||
priv
->
hsdiv_rates
[
domain
->
parent_clk_id
]
!=
scki
)
{
dev_dbg
(
priv
->
dev
,
"domain%u configuration for %u Hz: %s, %dxFS (SCKI: %u Hz)
\n
"
,
audio_domain
,
rate
,
...
...
@@ -281,23 +281,29 @@ static int j721e_audio_startup(struct snd_pcm_substream *substream)
j721e_rule_rate
,
&
priv
->
rate_range
,
SNDRV_PCM_HW_PARAM_RATE
,
-
1
);
mutex_unlock
(
&
priv
->
mutex
);
if
(
ret
)
return
re
t
;
goto
ou
t
;
/* Reset TDM slots to 32 */
ret
=
snd_soc_dai_set_tdm_slot
(
cpu_dai
,
0x3
,
0x3
,
2
,
32
);
if
(
ret
&&
ret
!=
-
ENOTSUPP
)
return
re
t
;
goto
ou
t
;
for_each_rtd_codec_dais
(
rtd
,
i
,
codec_dai
)
{
ret
=
snd_soc_dai_set_tdm_slot
(
codec_dai
,
0x3
,
0x3
,
2
,
32
);
if
(
ret
&&
ret
!=
-
ENOTSUPP
)
return
re
t
;
goto
ou
t
;
}
return
0
;
if
(
ret
==
-
ENOTSUPP
)
ret
=
0
;
out:
if
(
ret
)
domain
->
active
--
;
mutex_unlock
(
&
priv
->
mutex
);
return
ret
;
}
static
int
j721e_audio_hw_params
(
struct
snd_pcm_substream
*
substream
,
...
...
sound/soc/uniphier/aio-dma.c
View file @
ddaa1ed5
...
...
@@ -198,7 +198,7 @@ static int uniphier_aiodma_mmap(struct snd_soc_component *component,
vma
->
vm_page_prot
=
pgprot_writecombine
(
vma
->
vm_page_prot
);
return
remap_pfn_range
(
vma
,
vma
->
vm_start
,
substream
->
dma_buffer
.
addr
>>
PAGE_SHIFT
,
substream
->
runtime
->
dma_
addr
>>
PAGE_SHIFT
,
vma
->
vm_end
-
vma
->
vm_start
,
vma
->
vm_page_prot
);
}
...
...
sound/soc/xilinx/xlnx_formatter_pcm.c
View file @
ddaa1ed5
...
...
@@ -452,8 +452,8 @@ static int xlnx_formatter_pcm_hw_params(struct snd_soc_component *component,
stream_data
->
buffer_size
=
size
;
low
=
lower_32_bits
(
substream
->
dma_buffer
.
addr
);
high
=
upper_32_bits
(
substream
->
dma_buffer
.
addr
);
low
=
lower_32_bits
(
runtime
->
dma_
addr
);
high
=
upper_32_bits
(
runtime
->
dma_
addr
);
writel
(
low
,
stream_data
->
mmio
+
XLNX_AUD_BUFF_ADDR_LSB
);
writel
(
high
,
stream_data
->
mmio
+
XLNX_AUD_BUFF_ADDR_MSB
);
...
...
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