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
a72ff08f
Commit
a72ff08f
authored
Jun 01, 2020
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/for-5.7' into asoc-linus
parents
9cb1fd0e
f4aa5e21
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
186 additions
and
222 deletions
+186
-222
Documentation/devicetree/bindings/sound/nau8825.txt
Documentation/devicetree/bindings/sound/nau8825.txt
+1
-1
Documentation/devicetree/bindings/sound/rt1308.txt
Documentation/devicetree/bindings/sound/rt1308.txt
+0
-0
include/sound/soc.h
include/sound/soc.h
+3
-3
sound/soc/amd/raven/acp3x-pcm-dma.c
sound/soc/amd/raven/acp3x-pcm-dma.c
+24
-13
sound/soc/codecs/adau7118-i2c.c
sound/soc/codecs/adau7118-i2c.c
+7
-0
sound/soc/codecs/max9768.c
sound/soc/codecs/max9768.c
+1
-1
sound/soc/codecs/max98373.c
sound/soc/codecs/max98373.c
+1
-1
sound/soc/codecs/max9867.c
sound/soc/codecs/max9867.c
+3
-3
sound/soc/codecs/tlv320adcx140.c
sound/soc/codecs/tlv320adcx140.c
+10
-9
sound/soc/codecs/tlv320adcx140.h
sound/soc/codecs/tlv320adcx140.h
+1
-0
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8962.c
+3
-4
sound/soc/fsl/fsl_esai.c
sound/soc/fsl/fsl_esai.c
+4
-0
sound/soc/intel/baytrail/sst-baytrail-ipc.c
sound/soc/intel/baytrail/sst-baytrail-ipc.c
+2
-2
sound/soc/intel/boards/broadwell.c
sound/soc/intel/boards/broadwell.c
+16
-1
sound/soc/intel/common/sst-dsp.c
sound/soc/intel/common/sst-dsp.c
+3
-6
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
+3
-4
sound/soc/pxa/mmp-sspa.c
sound/soc/pxa/mmp-sspa.c
+1
-4
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+6
-6
sound/soc/sof/control.c
sound/soc/sof/control.c
+2
-2
sound/soc/sof/sof-audio.h
sound/soc/sof/sof-audio.h
+1
-1
sound/soc/sof/topology.c
sound/soc/sof/topology.c
+2
-0
sound/soc/tegra/tegra_alc5632.c
sound/soc/tegra/tegra_alc5632.c
+1
-6
sound/soc/tegra/tegra_asoc_utils.c
sound/soc/tegra/tegra_asoc_utils.c
+56
-57
sound/soc/tegra/tegra_asoc_utils.h
sound/soc/tegra/tegra_asoc_utils.h
+0
-1
sound/soc/tegra/tegra_max98090.c
sound/soc/tegra/tegra_max98090.c
+6
-16
sound/soc/tegra/tegra_rt5640.c
sound/soc/tegra/tegra_rt5640.c
+6
-16
sound/soc/tegra/tegra_rt5677.c
sound/soc/tegra/tegra_rt5677.c
+1
-6
sound/soc/tegra/tegra_sgtl5000.c
sound/soc/tegra/tegra_sgtl5000.c
+1
-6
sound/soc/tegra/tegra_wm8753.c
sound/soc/tegra/tegra_wm8753.c
+6
-16
sound/soc/tegra/tegra_wm8903.c
sound/soc/tegra/tegra_wm8903.c
+6
-16
sound/soc/tegra/tegra_wm9712.c
sound/soc/tegra/tegra_wm9712.c
+2
-6
sound/soc/tegra/trimslice.c
sound/soc/tegra/trimslice.c
+4
-14
sound/soc/ti/davinci-mcasp.c
sound/soc/ti/davinci-mcasp.c
+3
-1
No files found.
Documentation/devicetree/bindings/sound/nau8825.txt
View file @
a72ff08f
...
...
@@ -101,5 +101,5 @@ Example:
nuvoton,crosstalk-enable;
clock-names = "mclk";
clocks = <&tegra_
car TEGRA210_CLK
_CLK_OUT_2>;
clocks = <&tegra_
pmc TEGRA_PMC
_CLK_OUT_2>;
};
Documentation/devicetree/bindings/sound/rt1308.txt
100755 → 100644
View file @
a72ff08f
File mode changed from 100755 to 100644
include/sound/soc.h
View file @
a72ff08f
...
...
@@ -790,9 +790,6 @@ struct snd_soc_dai_link {
const
struct
snd_soc_pcm_stream
*
params
;
unsigned
int
num_params
;
struct
snd_soc_dapm_widget
*
playback_widget
;
struct
snd_soc_dapm_widget
*
capture_widget
;
unsigned
int
dai_fmt
;
/* format to set on init */
enum
snd_soc_dpcm_trigger
trigger
[
2
];
/* trigger type for DPCM */
...
...
@@ -1156,6 +1153,9 @@ struct snd_soc_pcm_runtime {
struct
snd_soc_dai
**
cpu_dais
;
unsigned
int
num_cpus
;
struct
snd_soc_dapm_widget
*
playback_widget
;
struct
snd_soc_dapm_widget
*
capture_widget
;
struct
delayed_work
delayed_work
;
void
(
*
close_delayed_work_func
)(
struct
snd_soc_pcm_runtime
*
rtd
);
#ifdef CONFIG_DEBUG_FS
...
...
sound/soc/amd/raven/acp3x-pcm-dma.c
View file @
a72ff08f
...
...
@@ -241,14 +241,6 @@ static int acp3x_dma_open(struct snd_soc_component *component,
adata
->
i2ssp_play_stream
&&
!
adata
->
i2ssp_capture_stream
)
rv_writel
(
1
,
adata
->
acp3x_base
+
mmACP_EXTERNAL_INTR_ENB
);
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
{
adata
->
play_stream
=
substream
;
adata
->
i2ssp_play_stream
=
substream
;
}
else
{
adata
->
capture_stream
=
substream
;
adata
->
i2ssp_capture_stream
=
substream
;
}
i2s_data
->
acp3x_base
=
adata
->
acp3x_base
;
runtime
->
private_data
=
i2s_data
;
return
ret
;
...
...
@@ -263,23 +255,42 @@ static int acp3x_dma_hw_params(struct snd_soc_component *component,
struct
snd_soc_pcm_runtime
*
prtd
;
struct
snd_soc_card
*
card
;
struct
acp3x_platform_info
*
pinfo
;
struct
i2s_dev_data
*
adata
;
u64
size
;
prtd
=
substream
->
private_data
;
card
=
prtd
->
card
;
pinfo
=
snd_soc_card_get_drvdata
(
card
);
adata
=
dev_get_drvdata
(
component
->
dev
);
rtd
=
substream
->
runtime
->
private_data
;
if
(
!
rtd
)
return
-
EINVAL
;
if
(
pinfo
)
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
if
(
pinfo
)
{
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
{
rtd
->
i2s_instance
=
pinfo
->
play_i2s_instance
;
else
switch
(
rtd
->
i2s_instance
)
{
case
I2S_BT_INSTANCE
:
adata
->
play_stream
=
substream
;
break
;
case
I2S_SP_INSTANCE
:
default:
adata
->
i2ssp_play_stream
=
substream
;
}
}
else
{
rtd
->
i2s_instance
=
pinfo
->
cap_i2s_instance
;
else
switch
(
rtd
->
i2s_instance
)
{
case
I2S_BT_INSTANCE
:
adata
->
capture_stream
=
substream
;
break
;
case
I2S_SP_INSTANCE
:
default:
adata
->
i2ssp_capture_stream
=
substream
;
}
}
}
else
{
pr_err
(
"pinfo failed
\n
"
);
}
size
=
params_buffer_bytes
(
params
);
rtd
->
dma_addr
=
substream
->
dma_buffer
.
addr
;
rtd
->
num_pages
=
(
PAGE_ALIGN
(
size
)
>>
PAGE_SHIFT
);
...
...
sound/soc/codecs/adau7118-i2c.c
View file @
a72ff08f
...
...
@@ -32,6 +32,12 @@ static const struct reg_default adau7118_reg_defaults[] = {
{
ADAU7118_REG_RESET
,
0x00
},
};
static
bool
adau7118_volatile
(
struct
device
*
dev
,
unsigned
int
reg
)
{
return
(
reg
==
ADAU7118_REG_RESET
);
}
static
const
struct
regmap_config
adau7118_regmap_config
=
{
.
reg_bits
=
8
,
.
val_bits
=
8
,
...
...
@@ -39,6 +45,7 @@ static const struct regmap_config adau7118_regmap_config = {
.
num_reg_defaults
=
ARRAY_SIZE
(
adau7118_reg_defaults
),
.
cache_type
=
REGCACHE_RBTREE
,
.
max_register
=
ADAU7118_REG_RESET
,
.
volatile_reg
=
adau7118_volatile
,
};
static
int
adau7118_probe_i2c
(
struct
i2c_client
*
i2c
,
...
...
sound/soc/codecs/max9768.c
View file @
a72ff08f
...
...
@@ -220,6 +220,6 @@ static struct i2c_driver max9768_i2c_driver = {
};
module_i2c_driver
(
max9768_i2c_driver
);
MODULE_AUTHOR
(
"Wolfram Sang <
w.sang
@pengutronix.de>"
);
MODULE_AUTHOR
(
"Wolfram Sang <
kernel
@pengutronix.de>"
);
MODULE_DESCRIPTION
(
"ASoC MAX9768 amplifier driver"
);
MODULE_LICENSE
(
"GPL v2"
);
sound/soc/codecs/max98373.c
View file @
a72ff08f
...
...
@@ -850,8 +850,8 @@ static int max98373_resume(struct device *dev)
{
struct
max98373_priv
*
max98373
=
dev_get_drvdata
(
dev
);
max98373_reset
(
max98373
,
dev
);
regcache_cache_only
(
max98373
->
regmap
,
false
);
max98373_reset
(
max98373
,
dev
);
regcache_sync
(
max98373
->
regmap
);
return
0
;
}
...
...
sound/soc/codecs/max9867.c
View file @
a72ff08f
...
...
@@ -46,19 +46,19 @@ static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(max9867_micboost_tlv,
static
const
struct
snd_kcontrol_new
max9867_snd_controls
[]
=
{
SOC_DOUBLE_R_TLV
(
"Master Playback Volume"
,
MAX9867_LEFTVOL
,
MAX9867_RIGHTVOL
,
0
,
4
1
,
1
,
max9867_master_tlv
),
MAX9867_RIGHTVOL
,
0
,
4
0
,
1
,
max9867_master_tlv
),
SOC_DOUBLE_R_TLV
(
"Line Capture Volume"
,
MAX9867_LEFTLINELVL
,
MAX9867_RIGHTLINELVL
,
0
,
15
,
1
,
max9867_line_tlv
),
SOC_DOUBLE_R_TLV
(
"Mic Capture Volume"
,
MAX9867_LEFTMICGAIN
,
MAX9867_RIGHTMICGAIN
,
0
,
20
,
1
,
max9867_mic_tlv
),
SOC_DOUBLE_R_TLV
(
"Mic Boost Capture Volume"
,
MAX9867_LEFTMICGAIN
,
MAX9867_RIGHTMICGAIN
,
5
,
4
,
0
,
max9867_micboost_tlv
),
MAX9867_RIGHTMICGAIN
,
5
,
3
,
0
,
max9867_micboost_tlv
),
SOC_SINGLE
(
"Digital Sidetone Volume"
,
MAX9867_SIDETONE
,
0
,
31
,
1
),
SOC_SINGLE_TLV
(
"Digital Playback Volume"
,
MAX9867_DACLEVEL
,
0
,
15
,
1
,
max9867_dac_tlv
),
SOC_SINGLE_TLV
(
"Digital Boost Playback Volume"
,
MAX9867_DACLEVEL
,
4
,
3
,
0
,
max9867_dacboost_tlv
),
SOC_DOUBLE_TLV
(
"Digital Capture Volume"
,
MAX9867_ADCLEVEL
,
0
,
4
,
15
,
1
,
SOC_DOUBLE_TLV
(
"Digital Capture Volume"
,
MAX9867_ADCLEVEL
,
4
,
0
,
15
,
1
,
max9867_adc_tlv
),
SOC_ENUM
(
"Speaker Mode"
,
max9867_spkmode
),
SOC_SINGLE
(
"Volume Smoothing Switch"
,
MAX9867_MODECONFIG
,
6
,
1
,
0
),
...
...
sound/soc/codecs/tlv320adcx140.c
View file @
a72ff08f
...
...
@@ -511,11 +511,11 @@ static const struct snd_soc_dapm_route adcx140_audio_map[] = {
static
const
struct
snd_kcontrol_new
adcx140_snd_controls
[]
=
{
SOC_SINGLE_TLV
(
"Analog CH1 Mic Gain Volume"
,
ADCX140_CH1_CFG1
,
2
,
42
,
0
,
adc_tlv
),
SOC_SINGLE_TLV
(
"Analog CH2 Mic Gain Volume"
,
ADCX140_CH
1_CFG2
,
2
,
42
,
0
,
SOC_SINGLE_TLV
(
"Analog CH2 Mic Gain Volume"
,
ADCX140_CH
2_CFG1
,
2
,
42
,
0
,
adc_tlv
),
SOC_SINGLE_TLV
(
"Analog CH3 Mic Gain Volume"
,
ADCX140_CH
1_CFG3
,
2
,
42
,
0
,
SOC_SINGLE_TLV
(
"Analog CH3 Mic Gain Volume"
,
ADCX140_CH
3_CFG1
,
2
,
42
,
0
,
adc_tlv
),
SOC_SINGLE_TLV
(
"Analog CH4 Mic Gain Volume"
,
ADCX140_CH
1_CFG4
,
2
,
42
,
0
,
SOC_SINGLE_TLV
(
"Analog CH4 Mic Gain Volume"
,
ADCX140_CH
4_CFG1
,
2
,
42
,
0
,
adc_tlv
),
SOC_SINGLE_TLV
(
"DRE Threshold"
,
ADCX140_DRE_CFG0
,
4
,
9
,
0
,
...
...
@@ -739,11 +739,12 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
{
struct
adcx140_priv
*
adcx140
=
snd_soc_component_get_drvdata
(
component
);
int
sleep_cfg_val
=
ADCX140_WAKE_DEV
;
u8
bias_source
;
u8
vref_source
;
u32
bias_source
;
u32
vref_source
;
u8
bias_cfg
;
int
ret
;
ret
=
device_property_read_u
8
(
adcx140
->
dev
,
"ti,mic-bias-source"
,
ret
=
device_property_read_u
32
(
adcx140
->
dev
,
"ti,mic-bias-source"
,
&
bias_source
);
if
(
ret
)
bias_source
=
ADCX140_MIC_BIAS_VAL_VREF
;
...
...
@@ -754,7 +755,7 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
return
-
EINVAL
;
}
ret
=
device_property_read_u
8
(
adcx140
->
dev
,
"ti,vref-source"
,
ret
=
device_property_read_u
32
(
adcx140
->
dev
,
"ti,vref-source"
,
&
vref_source
);
if
(
ret
)
vref_source
=
ADCX140_MIC_BIAS_VREF_275V
;
...
...
@@ -765,7 +766,7 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
return
-
EINVAL
;
}
bias_
source
|=
vref_source
;
bias_
cfg
=
bias_source
<<
ADCX140_MIC_BIAS_SHIFT
|
vref_source
;
ret
=
adcx140_reset
(
adcx140
);
if
(
ret
)
...
...
@@ -785,7 +786,7 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
ret
=
regmap_update_bits
(
adcx140
->
regmap
,
ADCX140_BIAS_CFG
,
ADCX140_MIC_BIAS_VAL_MSK
|
ADCX140_MIC_BIAS_VREF_MSK
,
bias_
source
);
ADCX140_MIC_BIAS_VREF_MSK
,
bias_
cfg
);
if
(
ret
)
dev_err
(
adcx140
->
dev
,
"setting MIC bias failed %d
\n
"
,
ret
);
out:
...
...
sound/soc/codecs/tlv320adcx140.h
View file @
a72ff08f
...
...
@@ -116,6 +116,7 @@
#define ADCX140_MIC_BIAS_VAL_VREF_1096 1
#define ADCX140_MIC_BIAS_VAL_AVDD 6
#define ADCX140_MIC_BIAS_VAL_MSK GENMASK(6, 4)
#define ADCX140_MIC_BIAS_SHIFT 4
#define ADCX140_MIC_BIAS_VREF_275V 0
#define ADCX140_MIC_BIAS_VREF_25V 1
...
...
sound/soc/codecs/wm8962.c
View file @
a72ff08f
...
...
@@ -118,7 +118,7 @@ static const struct reg_default wm8962_reg[] = {
{
5
,
0x0018
},
/* R5 - ADC & DAC Control 1 */
{
6
,
0x2008
},
/* R6 - ADC & DAC Control 2 */
{
7
,
0x000A
},
/* R7 - Audio Interface 0 */
{
8
,
0x01E4
},
/* R8 - Clocking2 */
{
9
,
0x0300
},
/* R9 - Audio Interface 1 */
{
10
,
0x00C0
},
/* R10 - Left DAC volume */
{
11
,
0x00C0
},
/* R11 - Right DAC volume */
...
...
@@ -788,7 +788,6 @@ static bool wm8962_volatile_register(struct device *dev, unsigned int reg)
{
switch
(
reg
)
{
case
WM8962_CLOCKING1
:
case
WM8962_CLOCKING2
:
case
WM8962_SOFTWARE_RESET
:
case
WM8962_THERMAL_SHUTDOWN_STATUS
:
case
WM8962_ADDITIONAL_CONTROL_4
:
...
...
@@ -3799,8 +3798,8 @@ static int wm8962_runtime_resume(struct device *dev)
/* SYSCLK defaults to on; make sure it is off so we can safely
* write to registers if the device is declocked.
*/
regmap_
upda
te_bits
(
wm8962
->
regmap
,
WM8962_CLOCKING2
,
WM8962_SYSCLK_ENA
,
0
);
regmap_
wri
te_bits
(
wm8962
->
regmap
,
WM8962_CLOCKING2
,
WM8962_SYSCLK_ENA
,
0
);
/* Ensure we have soft control over all registers */
regmap_update_bits
(
wm8962
->
regmap
,
WM8962_CLOCKING2
,
...
...
sound/soc/fsl/fsl_esai.c
View file @
a72ff08f
...
...
@@ -87,6 +87,10 @@ static irqreturn_t esai_isr(int irq, void *devid)
if
((
saisr
&
(
ESAI_SAISR_TUE
|
ESAI_SAISR_ROE
))
&&
esai_priv
->
reset_at_xrun
)
{
dev_dbg
(
&
pdev
->
dev
,
"reset module for xrun
\n
"
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_TCR
,
ESAI_xCR_xEIE_MASK
,
0
);
regmap_update_bits
(
esai_priv
->
regmap
,
REG_ESAI_RCR
,
ESAI_xCR_xEIE_MASK
,
0
);
tasklet_schedule
(
&
esai_priv
->
task
);
}
...
...
sound/soc/intel/baytrail/sst-baytrail-ipc.c
View file @
a72ff08f
...
...
@@ -666,8 +666,8 @@ static bool byt_is_dsp_busy(struct sst_dsp *dsp)
{
u64
ipcx
;
ipcx
=
sst_dsp_shim_read_unlocked
(
dsp
,
SST_IPCX
);
return
(
ipcx
&
(
SST_
IPCX_BUSY
|
SS
T_IPCX_DONE
));
ipcx
=
sst_dsp_shim_read
64
_unlocked
(
dsp
,
SST_IPCX
);
return
(
ipcx
&
(
SST_
BYT_IPCX_BUSY
|
SST_BY
T_IPCX_DONE
));
}
int
sst_byt_dsp_init
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
)
...
...
sound/soc/intel/boards/broadwell.c
View file @
a72ff08f
...
...
@@ -230,7 +230,8 @@ static struct snd_soc_dai_link broadwell_rt286_dais[] = {
},
};
static
int
broadwell_suspend
(
struct
snd_soc_card
*
card
){
static
int
broadwell_disable_jack
(
struct
snd_soc_card
*
card
)
{
struct
snd_soc_component
*
component
;
for_each_card_components
(
card
,
component
)
{
...
...
@@ -241,9 +242,15 @@ static int broadwell_suspend(struct snd_soc_card *card){
break
;
}
}
return
0
;
}
static
int
broadwell_suspend
(
struct
snd_soc_card
*
card
)
{
return
broadwell_disable_jack
(
card
);
}
static
int
broadwell_resume
(
struct
snd_soc_card
*
card
){
struct
snd_soc_component
*
component
;
...
...
@@ -292,8 +299,16 @@ static int broadwell_audio_probe(struct platform_device *pdev)
return
devm_snd_soc_register_card
(
&
pdev
->
dev
,
&
broadwell_rt286
);
}
static
int
broadwell_audio_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
return
broadwell_disable_jack
(
card
);
}
static
struct
platform_driver
broadwell_audio
=
{
.
probe
=
broadwell_audio_probe
,
.
remove
=
broadwell_audio_remove
,
.
driver
=
{
.
name
=
"broadwell-audio"
,
},
...
...
sound/soc/intel/common/sst-dsp.c
View file @
a72ff08f
...
...
@@ -10,7 +10,7 @@
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/io.h>
#include <linux/io
-64-nonatomic-lo-hi
.h>
#include <linux/delay.h>
#include "sst-dsp.h"
...
...
@@ -34,16 +34,13 @@ EXPORT_SYMBOL_GPL(sst_shim32_read);
void
sst_shim32_write64
(
void
__iomem
*
addr
,
u32
offset
,
u64
value
)
{
memcpy_toio
(
addr
+
offset
,
&
value
,
sizeof
(
value
)
);
writeq
(
value
,
addr
+
offset
);
}
EXPORT_SYMBOL_GPL
(
sst_shim32_write64
);
u64
sst_shim32_read64
(
void
__iomem
*
addr
,
u32
offset
)
{
u64
val
;
memcpy_fromio
(
&
val
,
addr
+
offset
,
sizeof
(
val
));
return
val
;
return
readq
(
addr
+
offset
);
}
EXPORT_SYMBOL_GPL
(
sst_shim32_read64
);
...
...
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c
View file @
a72ff08f
...
...
@@ -1186,10 +1186,9 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev)
/* request irq */
irq_id
=
platform_get_irq
(
pdev
,
0
);
if
(
!
irq_id
)
{
dev_err
(
dev
,
"%pOFn no irq found
\n
"
,
dev
->
of_node
);
return
-
ENXIO
;
}
if
(
irq_id
<
0
)
return
irq_id
;
ret
=
devm_request_irq
(
dev
,
irq_id
,
mt8183_afe_irq_handler
,
IRQF_TRIGGER_NONE
,
"asys-isr"
,
(
void
*
)
afe
);
if
(
ret
)
{
...
...
sound/soc/pxa/mmp-sspa.c
View file @
a72ff08f
...
...
@@ -275,9 +275,6 @@ static int mmp_sspa_hw_params(struct snd_pcm_substream *substream,
case
SNDRV_PCM_FORMAT_S16_LE
:
sspa_ctrl
|=
SSPA_CTL_XSSZ1
(
SSPA_CTL_16_BITS
);
break
;
case
SNDRV_PCM_FORMAT_S20_3LE
:
sspa_ctrl
|=
SSPA_CTL_XSSZ1
(
SSPA_CTL_20_BITS
);
break
;
case
SNDRV_PCM_FORMAT_S24_3LE
:
sspa_ctrl
|=
SSPA_CTL_XSSZ1
(
SSPA_CTL_24_BITS
);
break
;
...
...
@@ -362,7 +359,7 @@ static int mmp_sspa_probe(struct snd_soc_dai *dai)
#define MMP_SSPA_RATES SNDRV_PCM_RATE_8000_192000
#define MMP_SSPA_FORMATS (SNDRV_PCM_FMTBIT_S8 | \
SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S24_
3
LE | \
SNDRV_PCM_FMTBIT_S32_LE)
static
const
struct
snd_soc_dai_ops
mmp_sspa_dai_ops
=
{
...
...
sound/soc/soc-dapm.c
View file @
a72ff08f
...
...
@@ -4340,16 +4340,16 @@ static void dapm_connect_dai_pair(struct snd_soc_card *card,
codec
=
codec_dai
->
playback_widget
;
if
(
playback_cpu
&&
codec
)
{
if
(
dai_link
->
params
&&
!
dai_link
->
playback_widget
)
{
if
(
dai_link
->
params
&&
!
rtd
->
playback_widget
)
{
substream
=
streams
[
SNDRV_PCM_STREAM_PLAYBACK
].
substream
;
dai
=
snd_soc_dapm_new_dai
(
card
,
substream
,
"playback"
);
if
(
IS_ERR
(
dai
))
goto
capture
;
dai_link
->
playback_widget
=
dai
;
rtd
->
playback_widget
=
dai
;
}
dapm_connect_dai_routes
(
&
card
->
dapm
,
cpu_dai
,
playback_cpu
,
dai_link
->
playback_widget
,
rtd
->
playback_widget
,
codec_dai
,
codec
);
}
...
...
@@ -4358,16 +4358,16 @@ static void dapm_connect_dai_pair(struct snd_soc_card *card,
codec
=
codec_dai
->
capture_widget
;
if
(
codec
&&
capture_cpu
)
{
if
(
dai_link
->
params
&&
!
dai_link
->
capture_widget
)
{
if
(
dai_link
->
params
&&
!
rtd
->
capture_widget
)
{
substream
=
streams
[
SNDRV_PCM_STREAM_CAPTURE
].
substream
;
dai
=
snd_soc_dapm_new_dai
(
card
,
substream
,
"capture"
);
if
(
IS_ERR
(
dai
))
return
;
dai_link
->
capture_widget
=
dai
;
rtd
->
capture_widget
=
dai
;
}
dapm_connect_dai_routes
(
&
card
->
dapm
,
codec_dai
,
codec
,
dai_link
->
capture_widget
,
rtd
->
capture_widget
,
cpu_dai
,
capture_cpu
);
}
}
...
...
sound/soc/sof/control.c
View file @
a72ff08f
...
...
@@ -19,8 +19,8 @@ static void update_mute_led(struct snd_sof_control *scontrol,
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
unsigned
int
temp
=
0
;
unsigned
int
mask
;
int
temp
=
0
;
int
mask
;
int
i
;
mask
=
1U
<<
snd_ctl_get_ioffidx
(
kcontrol
,
&
ucontrol
->
id
);
...
...
sound/soc/sof/sof-audio.h
View file @
a72ff08f
...
...
@@ -56,7 +56,7 @@ struct snd_sof_pcm {
struct
snd_sof_led_control
{
unsigned
int
use_led
;
unsigned
int
direction
;
unsigned
int
led_value
;
int
led_value
;
};
/* ALSA SOF Kcontrol device */
...
...
sound/soc/sof/topology.c
View file @
a72ff08f
...
...
@@ -1203,6 +1203,8 @@ static int sof_control_load(struct snd_soc_component *scomp, int index,
return
ret
;
}
scontrol
->
led_ctl
.
led_value
=
-
1
;
dobj
->
private
=
scontrol
;
list_add
(
&
scontrol
->
list
,
&
sdev
->
kcontrol_list
);
return
ret
;
...
...
sound/soc/tegra/tegra_alc5632.c
View file @
a72ff08f
...
...
@@ -205,13 +205,11 @@ static int tegra_alc5632_probe(struct platform_device *pdev)
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_
fini_utils
;
goto
err_
put_cpu_of_node
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
alc5632
->
util_data
);
err_put_cpu_of_node:
of_node_put
(
tegra_alc5632_dai
.
cpus
->
of_node
);
tegra_alc5632_dai
.
cpus
->
of_node
=
NULL
;
...
...
@@ -226,12 +224,9 @@ static int tegra_alc5632_probe(struct platform_device *pdev)
static
int
tegra_alc5632_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_alc5632
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
of_node_put
(
tegra_alc5632_dai
.
cpus
->
of_node
);
tegra_alc5632_dai
.
cpus
->
of_node
=
NULL
;
tegra_alc5632_dai
.
platforms
->
of_node
=
NULL
;
...
...
sound/soc/tegra/tegra_asoc_utils.c
View file @
a72ff08f
...
...
@@ -60,8 +60,6 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
data
->
set_mclk
=
0
;
clk_disable_unprepare
(
data
->
clk_cdev1
);
clk_disable_unprepare
(
data
->
clk_pll_a_out0
);
clk_disable_unprepare
(
data
->
clk_pll_a
);
err
=
clk_set_rate
(
data
->
clk_pll_a
,
new_baseclock
);
if
(
err
)
{
...
...
@@ -77,18 +75,6 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
/* Don't set cdev1/extern1 rate; it's locked to pll_a_out0 */
err
=
clk_prepare_enable
(
data
->
clk_pll_a
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable pll_a: %d
\n
"
,
err
);
return
err
;
}
err
=
clk_prepare_enable
(
data
->
clk_pll_a_out0
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable pll_a_out0: %d
\n
"
,
err
);
return
err
;
}
err
=
clk_prepare_enable
(
data
->
clk_cdev1
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable cdev1: %d
\n
"
,
err
);
...
...
@@ -109,8 +95,6 @@ int tegra_asoc_utils_set_ac97_rate(struct tegra_asoc_utils_data *data)
int
err
;
clk_disable_unprepare
(
data
->
clk_cdev1
);
clk_disable_unprepare
(
data
->
clk_pll_a_out0
);
clk_disable_unprepare
(
data
->
clk_pll_a
);
/*
* AC97 rate is fixed at 24.576MHz and is used for both the host
...
...
@@ -130,18 +114,6 @@ int tegra_asoc_utils_set_ac97_rate(struct tegra_asoc_utils_data *data)
/* Don't set cdev1/extern1 rate; it's locked to pll_a_out0 */
err
=
clk_prepare_enable
(
data
->
clk_pll_a
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable pll_a: %d
\n
"
,
err
);
return
err
;
}
err
=
clk_prepare_enable
(
data
->
clk_pll_a_out0
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable pll_a_out0: %d
\n
"
,
err
);
return
err
;
}
err
=
clk_prepare_enable
(
data
->
clk_cdev1
);
if
(
err
)
{
dev_err
(
data
->
dev
,
"Can't enable cdev1: %d
\n
"
,
err
);
...
...
@@ -158,6 +130,7 @@ EXPORT_SYMBOL_GPL(tegra_asoc_utils_set_ac97_rate);
int
tegra_asoc_utils_init
(
struct
tegra_asoc_utils_data
*
data
,
struct
device
*
dev
)
{
struct
clk
*
clk_out_1
,
*
clk_extern1
;
int
ret
;
data
->
dev
=
dev
;
...
...
@@ -175,52 +148,78 @@ int tegra_asoc_utils_init(struct tegra_asoc_utils_data *data,
return
-
EINVAL
;
}
data
->
clk_pll_a
=
clk_get
(
dev
,
"pll_a"
);
data
->
clk_pll_a
=
devm_
clk_get
(
dev
,
"pll_a"
);
if
(
IS_ERR
(
data
->
clk_pll_a
))
{
dev_err
(
data
->
dev
,
"Can't retrieve clk pll_a
\n
"
);
ret
=
PTR_ERR
(
data
->
clk_pll_a
);
goto
err
;
return
PTR_ERR
(
data
->
clk_pll_a
);
}
data
->
clk_pll_a_out0
=
clk_get
(
dev
,
"pll_a_out0"
);
data
->
clk_pll_a_out0
=
devm_
clk_get
(
dev
,
"pll_a_out0"
);
if
(
IS_ERR
(
data
->
clk_pll_a_out0
))
{
dev_err
(
data
->
dev
,
"Can't retrieve clk pll_a_out0
\n
"
);
ret
=
PTR_ERR
(
data
->
clk_pll_a_out0
);
goto
err_put_pll_a
;
return
PTR_ERR
(
data
->
clk_pll_a_out0
);
}
data
->
clk_cdev1
=
clk_get
(
dev
,
"mclk"
);
data
->
clk_cdev1
=
devm_
clk_get
(
dev
,
"mclk"
);
if
(
IS_ERR
(
data
->
clk_cdev1
))
{
dev_err
(
data
->
dev
,
"Can't retrieve clk cdev1
\n
"
);
ret
=
PTR_ERR
(
data
->
clk_cdev1
);
goto
err_put_pll_a_out0
;
return
PTR_ERR
(
data
->
clk_cdev1
);
}
ret
=
tegra_asoc_utils_set_rate
(
data
,
44100
,
256
*
44100
);
if
(
ret
)
goto
err_put_cdev1
;
/*
* If clock parents are not set in DT, configure here to use clk_out_1
* as mclk and extern1 as parent for Tegra30 and higher.
*/
if
(
!
of_find_property
(
dev
->
of_node
,
"assigned-clock-parents"
,
NULL
)
&&
data
->
soc
>
TEGRA_ASOC_UTILS_SOC_TEGRA20
)
{
dev_warn
(
data
->
dev
,
"Configuring clocks for a legacy device-tree
\n
"
);
dev_warn
(
data
->
dev
,
"Please update DT to use assigned-clock-parents
\n
"
);
clk_extern1
=
devm_clk_get
(
dev
,
"extern1"
);
if
(
IS_ERR
(
clk_extern1
))
{
dev_err
(
data
->
dev
,
"Can't retrieve clk extern1
\n
"
);
return
PTR_ERR
(
clk_extern1
);
}
ret
=
clk_set_parent
(
clk_extern1
,
data
->
clk_pll_a_out0
);
if
(
ret
<
0
)
{
dev_err
(
data
->
dev
,
"Set parent failed for clk extern1
\n
"
);
return
ret
;
}
clk_out_1
=
devm_clk_get
(
dev
,
"pmc_clk_out_1"
);
if
(
IS_ERR
(
clk_out_1
))
{
dev_err
(
data
->
dev
,
"Can't retrieve pmc_clk_out_1
\n
"
);
return
PTR_ERR
(
clk_out_1
);
}
ret
=
clk_set_parent
(
clk_out_1
,
clk_extern1
);
if
(
ret
<
0
)
{
dev_err
(
data
->
dev
,
"Set parent failed for pmc_clk_out_1
\n
"
);
return
ret
;
}
data
->
clk_cdev1
=
clk_out_1
;
}
return
0
;
/*
* FIXME: There is some unknown dependency between audio mclk disable
* and suspend-resume functionality on Tegra30, although audio mclk is
* only needed for audio.
*/
ret
=
clk_prepare_enable
(
data
->
clk_cdev1
);
if
(
ret
)
{
dev_err
(
data
->
dev
,
"Can't enable cdev1: %d
\n
"
,
ret
);
return
ret
;
}
err_put_cdev1:
clk_put
(
data
->
clk_cdev1
);
err_put_pll_a_out0:
clk_put
(
data
->
clk_pll_a_out0
);
err_put_pll_a:
clk_put
(
data
->
clk_pll_a
);
err:
return
ret
;
return
0
;
}
EXPORT_SYMBOL_GPL
(
tegra_asoc_utils_init
);
void
tegra_asoc_utils_fini
(
struct
tegra_asoc_utils_data
*
data
)
{
clk_put
(
data
->
clk_cdev1
);
clk_put
(
data
->
clk_pll_a_out0
);
clk_put
(
data
->
clk_pll_a
);
}
EXPORT_SYMBOL_GPL
(
tegra_asoc_utils_fini
);
MODULE_AUTHOR
(
"Stephen Warren <swarren@nvidia.com>"
);
MODULE_DESCRIPTION
(
"Tegra ASoC utility code"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/tegra/tegra_asoc_utils.h
View file @
a72ff08f
...
...
@@ -34,6 +34,5 @@ int tegra_asoc_utils_set_rate(struct tegra_asoc_utils_data *data, int srate,
int
tegra_asoc_utils_set_ac97_rate
(
struct
tegra_asoc_utils_data
*
data
);
int
tegra_asoc_utils_init
(
struct
tegra_asoc_utils_data
*
data
,
struct
device
*
dev
);
void
tegra_asoc_utils_fini
(
struct
tegra_asoc_utils_data
*
data
);
#endif
sound/soc/tegra/tegra_max98090.c
View file @
a72ff08f
...
...
@@ -218,19 +218,18 @@ static int tegra_max98090_probe(struct platform_device *pdev)
ret
=
snd_soc_of_parse_card_name
(
card
,
"nvidia,model"
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_of_parse_audio_routing
(
card
,
"nvidia,audio-routing"
);
if
(
ret
)
goto
err
;
return
ret
;
tegra_max98090_dai
.
codecs
->
of_node
=
of_parse_phandle
(
np
,
"nvidia,audio-codec"
,
0
);
if
(
!
tegra_max98090_dai
.
codecs
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,audio-codec' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_max98090_dai
.
cpus
->
of_node
=
of_parse_phandle
(
np
,
...
...
@@ -238,40 +237,31 @@ static int tegra_max98090_probe(struct platform_device *pdev)
if
(
!
tegra_max98090_dai
.
cpus
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,i2s-controller' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_max98090_dai
.
platforms
->
of_node
=
tegra_max98090_dai
.
cpus
->
of_node
;
ret
=
tegra_asoc_utils_init
(
&
machine
->
util_data
,
&
pdev
->
dev
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_fini_utils
;
return
ret
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err:
return
ret
;
}
static
int
tegra_max98090_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_max98090
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
return
0
;
}
...
...
sound/soc/tegra/tegra_rt5640.c
View file @
a72ff08f
...
...
@@ -164,19 +164,18 @@ static int tegra_rt5640_probe(struct platform_device *pdev)
ret
=
snd_soc_of_parse_card_name
(
card
,
"nvidia,model"
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_of_parse_audio_routing
(
card
,
"nvidia,audio-routing"
);
if
(
ret
)
goto
err
;
return
ret
;
tegra_rt5640_dai
.
codecs
->
of_node
=
of_parse_phandle
(
np
,
"nvidia,audio-codec"
,
0
);
if
(
!
tegra_rt5640_dai
.
codecs
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,audio-codec' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_rt5640_dai
.
cpus
->
of_node
=
of_parse_phandle
(
np
,
...
...
@@ -184,40 +183,31 @@ static int tegra_rt5640_probe(struct platform_device *pdev)
if
(
!
tegra_rt5640_dai
.
cpus
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,i2s-controller' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_rt5640_dai
.
platforms
->
of_node
=
tegra_rt5640_dai
.
cpus
->
of_node
;
ret
=
tegra_asoc_utils_init
(
&
machine
->
util_data
,
&
pdev
->
dev
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_fini_utils
;
return
ret
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err:
return
ret
;
}
static
int
tegra_rt5640_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_rt5640
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
return
0
;
}
...
...
sound/soc/tegra/tegra_rt5677.c
View file @
a72ff08f
...
...
@@ -270,13 +270,11 @@ static int tegra_rt5677_probe(struct platform_device *pdev)
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_
fini_utils
;
goto
err_
put_cpu_of_node
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err_put_cpu_of_node:
of_node_put
(
tegra_rt5677_dai
.
cpus
->
of_node
);
tegra_rt5677_dai
.
cpus
->
of_node
=
NULL
;
...
...
@@ -291,12 +289,9 @@ static int tegra_rt5677_probe(struct platform_device *pdev)
static
int
tegra_rt5677_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_rt5677
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
tegra_rt5677_dai
.
platforms
->
of_node
=
NULL
;
of_node_put
(
tegra_rt5677_dai
.
codecs
->
of_node
);
tegra_rt5677_dai
.
codecs
->
of_node
=
NULL
;
...
...
sound/soc/tegra/tegra_sgtl5000.c
View file @
a72ff08f
...
...
@@ -156,13 +156,11 @@ static int tegra_sgtl5000_driver_probe(struct platform_device *pdev)
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_
fini_utils
;
goto
err_
put_cpu_of_node
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err_put_cpu_of_node:
of_node_put
(
tegra_sgtl5000_dai
.
cpus
->
of_node
);
tegra_sgtl5000_dai
.
cpus
->
of_node
=
NULL
;
...
...
@@ -177,13 +175,10 @@ static int tegra_sgtl5000_driver_probe(struct platform_device *pdev)
static
int
tegra_sgtl5000_driver_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_sgtl5000
*
machine
=
snd_soc_card_get_drvdata
(
card
);
int
ret
;
ret
=
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
of_node_put
(
tegra_sgtl5000_dai
.
cpus
->
of_node
);
tegra_sgtl5000_dai
.
cpus
->
of_node
=
NULL
;
tegra_sgtl5000_dai
.
platforms
->
of_node
=
NULL
;
...
...
sound/soc/tegra/tegra_wm8753.c
View file @
a72ff08f
...
...
@@ -127,19 +127,18 @@ static int tegra_wm8753_driver_probe(struct platform_device *pdev)
ret
=
snd_soc_of_parse_card_name
(
card
,
"nvidia,model"
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_of_parse_audio_routing
(
card
,
"nvidia,audio-routing"
);
if
(
ret
)
goto
err
;
return
ret
;
tegra_wm8753_dai
.
codecs
->
of_node
=
of_parse_phandle
(
np
,
"nvidia,audio-codec"
,
0
);
if
(
!
tegra_wm8753_dai
.
codecs
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,audio-codec' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_wm8753_dai
.
cpus
->
of_node
=
of_parse_phandle
(
np
,
...
...
@@ -147,40 +146,31 @@ static int tegra_wm8753_driver_probe(struct platform_device *pdev)
if
(
!
tegra_wm8753_dai
.
cpus
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,i2s-controller' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_wm8753_dai
.
platforms
->
of_node
=
tegra_wm8753_dai
.
cpus
->
of_node
;
ret
=
tegra_asoc_utils_init
(
&
machine
->
util_data
,
&
pdev
->
dev
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_fini_utils
;
return
ret
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err:
return
ret
;
}
static
int
tegra_wm8753_driver_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_wm8753
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
return
0
;
}
...
...
sound/soc/tegra/tegra_wm8903.c
View file @
a72ff08f
...
...
@@ -319,19 +319,18 @@ static int tegra_wm8903_driver_probe(struct platform_device *pdev)
ret
=
snd_soc_of_parse_card_name
(
card
,
"nvidia,model"
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_of_parse_audio_routing
(
card
,
"nvidia,audio-routing"
);
if
(
ret
)
goto
err
;
return
ret
;
tegra_wm8903_dai
.
codecs
->
of_node
=
of_parse_phandle
(
np
,
"nvidia,audio-codec"
,
0
);
if
(
!
tegra_wm8903_dai
.
codecs
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,audio-codec' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_wm8903_dai
.
cpus
->
of_node
=
of_parse_phandle
(
np
,
...
...
@@ -339,40 +338,31 @@ static int tegra_wm8903_driver_probe(struct platform_device *pdev)
if
(
!
tegra_wm8903_dai
.
cpus
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,i2s-controller' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
tegra_wm8903_dai
.
platforms
->
of_node
=
tegra_wm8903_dai
.
cpus
->
of_node
;
ret
=
tegra_asoc_utils_init
(
&
machine
->
util_data
,
&
pdev
->
dev
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_fini_utils
;
return
ret
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
err:
return
ret
;
}
static
int
tegra_wm8903_driver_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_wm8903
*
machine
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
return
0
;
}
...
...
sound/soc/tegra/tegra_wm9712.c
View file @
a72ff08f
...
...
@@ -113,19 +113,17 @@ static int tegra_wm9712_driver_probe(struct platform_device *pdev)
ret
=
tegra_asoc_utils_set_ac97_rate
(
&
machine
->
util_data
);
if
(
ret
)
goto
asoc_utils_fini
;
goto
codec_unregister
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
asoc_utils_fini
;
goto
codec_unregister
;
}
return
0
;
asoc_utils_fini:
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
codec_unregister:
platform_device_del
(
machine
->
codec
);
codec_put:
...
...
@@ -140,8 +138,6 @@ static int tegra_wm9712_driver_remove(struct platform_device *pdev)
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
machine
->
util_data
);
platform_device_unregister
(
machine
->
codec
);
return
0
;
...
...
sound/soc/tegra/trimslice.c
View file @
a72ff08f
...
...
@@ -125,8 +125,7 @@ static int tegra_snd_trimslice_probe(struct platform_device *pdev)
if
(
!
trimslice_tlv320aic23_dai
.
codecs
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,audio-codec' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
trimslice_tlv320aic23_dai
.
cpus
->
of_node
=
of_parse_phandle
(
np
,
...
...
@@ -134,8 +133,7 @@ static int tegra_snd_trimslice_probe(struct platform_device *pdev)
if
(
!
trimslice_tlv320aic23_dai
.
cpus
->
of_node
)
{
dev_err
(
&
pdev
->
dev
,
"Property 'nvidia,i2s-controller' missing or invalid
\n
"
);
ret
=
-
EINVAL
;
goto
err
;
return
-
EINVAL
;
}
trimslice_tlv320aic23_dai
.
platforms
->
of_node
=
...
...
@@ -143,32 +141,24 @@ static int tegra_snd_trimslice_probe(struct platform_device *pdev)
ret
=
tegra_asoc_utils_init
(
&
trimslice
->
util_data
,
&
pdev
->
dev
);
if
(
ret
)
goto
err
;
return
ret
;
ret
=
snd_soc_register_card
(
card
);
if
(
ret
)
{
dev_err
(
&
pdev
->
dev
,
"snd_soc_register_card failed (%d)
\n
"
,
ret
);
goto
err_fini_utils
;
return
ret
;
}
return
0
;
err_fini_utils:
tegra_asoc_utils_fini
(
&
trimslice
->
util_data
);
err:
return
ret
;
}
static
int
tegra_snd_trimslice_remove
(
struct
platform_device
*
pdev
)
{
struct
snd_soc_card
*
card
=
platform_get_drvdata
(
pdev
);
struct
tegra_trimslice
*
trimslice
=
snd_soc_card_get_drvdata
(
card
);
snd_soc_unregister_card
(
card
);
tegra_asoc_utils_fini
(
&
trimslice
->
util_data
);
return
0
;
}
...
...
sound/soc/ti/davinci-mcasp.c
View file @
a72ff08f
...
...
@@ -1896,8 +1896,10 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp)
PTR_ERR
(
chan
));
return
PTR_ERR
(
chan
);
}
if
(
WARN_ON
(
!
chan
->
device
||
!
chan
->
device
->
dev
))
if
(
WARN_ON
(
!
chan
->
device
||
!
chan
->
device
->
dev
))
{
dma_release_channel
(
chan
);
return
-
EINVAL
;
}
if
(
chan
->
device
->
dev
->
of_node
)
ret
=
of_property_read_string
(
chan
->
device
->
dev
->
of_node
,
...
...
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