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
ac1cbbaa
Commit
ac1cbbaa
authored
Aug 22, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/uda134x' into asoc-next
parents
dc52399b
113591e4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
35 deletions
+53
-35
sound/soc/codecs/uda134x.c
sound/soc/codecs/uda134x.c
+53
-35
No files found.
sound/soc/codecs/uda134x.c
View file @
ac1cbbaa
...
...
@@ -325,7 +325,6 @@ static int uda134x_set_dai_fmt(struct snd_soc_dai *codec_dai,
static
int
uda134x_set_bias_level
(
struct
snd_soc_codec
*
codec
,
enum
snd_soc_bias_level
level
)
{
u8
reg
;
struct
uda134x_platform_data
*
pd
=
codec
->
control_data
;
int
i
;
u8
*
cache
=
codec
->
reg_cache
;
...
...
@@ -334,23 +333,6 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
switch
(
level
)
{
case
SND_SOC_BIAS_ON
:
/* ADC, DAC on */
switch
(
pd
->
model
)
{
case
UDA134X_UDA1340
:
case
UDA134X_UDA1344
:
case
UDA134X_UDA1345
:
reg
=
uda134x_read_reg_cache
(
codec
,
UDA134X_DATA011
);
uda134x_write
(
codec
,
UDA134X_DATA011
,
reg
|
0x03
);
break
;
case
UDA134X_UDA1341
:
reg
=
uda134x_read_reg_cache
(
codec
,
UDA134X_STATUS1
);
uda134x_write
(
codec
,
UDA134X_STATUS1
,
reg
|
0x03
);
break
;
default:
printk
(
KERN_ERR
"UDA134X SoC codec: "
"unsupported model %d
\n
"
,
pd
->
model
);
return
-
EINVAL
;
}
break
;
case
SND_SOC_BIAS_PREPARE
:
/* power on */
...
...
@@ -362,23 +344,6 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
}
break
;
case
SND_SOC_BIAS_STANDBY
:
/* ADC, DAC power off */
switch
(
pd
->
model
)
{
case
UDA134X_UDA1340
:
case
UDA134X_UDA1344
:
case
UDA134X_UDA1345
:
reg
=
uda134x_read_reg_cache
(
codec
,
UDA134X_DATA011
);
uda134x_write
(
codec
,
UDA134X_DATA011
,
reg
&
~
(
0x03
));
break
;
case
UDA134X_UDA1341
:
reg
=
uda134x_read_reg_cache
(
codec
,
UDA134X_STATUS1
);
uda134x_write
(
codec
,
UDA134X_STATUS1
,
reg
&
~
(
0x03
));
break
;
default:
printk
(
KERN_ERR
"UDA134X SoC codec: "
"unsupported model %d
\n
"
,
pd
->
model
);
return
-
EINVAL
;
}
break
;
case
SND_SOC_BIAS_OFF
:
/* power off */
...
...
@@ -450,6 +415,37 @@ SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
SOC_SINGLE
(
"DC Filter Enable Switch"
,
UDA134X_STATUS0
,
0
,
1
,
0
),
};
/* UDA1341 has the DAC/ADC power down in STATUS1 */
static
const
struct
snd_soc_dapm_widget
uda1341_dapm_widgets
[]
=
{
SND_SOC_DAPM_DAC
(
"DAC"
,
"Playback"
,
UDA134X_STATUS1
,
0
,
0
),
SND_SOC_DAPM_ADC
(
"ADC"
,
"Capture"
,
UDA134X_STATUS1
,
1
,
0
),
};
/* UDA1340/4/5 has the DAC/ADC pwoer down in DATA0 11 */
static
const
struct
snd_soc_dapm_widget
uda1340_dapm_widgets
[]
=
{
SND_SOC_DAPM_DAC
(
"DAC"
,
"Playback"
,
UDA134X_DATA011
,
0
,
0
),
SND_SOC_DAPM_ADC
(
"ADC"
,
"Capture"
,
UDA134X_DATA011
,
1
,
0
),
};
/* Common DAPM widgets */
static
const
struct
snd_soc_dapm_widget
uda134x_dapm_widgets
[]
=
{
SND_SOC_DAPM_INPUT
(
"VINL1"
),
SND_SOC_DAPM_INPUT
(
"VINR1"
),
SND_SOC_DAPM_INPUT
(
"VINL2"
),
SND_SOC_DAPM_INPUT
(
"VINR2"
),
SND_SOC_DAPM_OUTPUT
(
"VOUTL"
),
SND_SOC_DAPM_OUTPUT
(
"VOUTR"
),
};
static
const
struct
snd_soc_dapm_route
uda134x_dapm_routes
[]
=
{
{
"ADC"
,
NULL
,
"VINL1"
},
{
"ADC"
,
NULL
,
"VINR1"
},
{
"ADC"
,
NULL
,
"VINL2"
},
{
"ADC"
,
NULL
,
"VINR2"
},
{
"VOUTL"
,
NULL
,
"DAC"
},
{
"VOUTR"
,
NULL
,
"DAC"
},
};
static
const
struct
snd_soc_dai_ops
uda134x_dai_ops
=
{
.
startup
=
uda134x_startup
,
.
shutdown
=
uda134x_shutdown
,
...
...
@@ -485,6 +481,8 @@ static int uda134x_soc_probe(struct snd_soc_codec *codec)
{
struct
uda134x_priv
*
uda134x
;
struct
uda134x_platform_data
*
pd
=
codec
->
card
->
dev
->
platform_data
;
const
struct
snd_soc_dapm_widget
*
widgets
;
unsigned
num_widgets
;
int
ret
;
...
...
@@ -526,6 +524,22 @@ static int uda134x_soc_probe(struct snd_soc_codec *codec)
else
uda134x_set_bias_level
(
codec
,
SND_SOC_BIAS_STANDBY
);
if
(
pd
->
model
==
UDA134X_UDA1341
)
{
widgets
=
uda1341_dapm_widgets
;
num_widgets
=
ARRAY_SIZE
(
uda1341_dapm_widgets
);
}
else
{
widgets
=
uda1340_dapm_widgets
;
num_widgets
=
ARRAY_SIZE
(
uda1340_dapm_widgets
);
}
ret
=
snd_soc_dapm_new_controls
(
&
codec
->
dapm
,
widgets
,
num_widgets
);
if
(
ret
)
{
printk
(
KERN_ERR
"%s failed to register dapm controls: %d"
,
__func__
,
ret
);
kfree
(
uda134x
);
return
ret
;
}
switch
(
pd
->
model
)
{
case
UDA134X_UDA1340
:
case
UDA134X_UDA1344
:
...
...
@@ -599,6 +613,10 @@ static struct snd_soc_codec_driver soc_codec_dev_uda134x = {
.
read
=
uda134x_read_reg_cache
,
.
write
=
uda134x_write
,
.
set_bias_level
=
uda134x_set_bias_level
,
.
dapm_widgets
=
uda134x_dapm_widgets
,
.
num_dapm_widgets
=
ARRAY_SIZE
(
uda134x_dapm_widgets
),
.
dapm_routes
=
uda134x_dapm_routes
,
.
num_dapm_routes
=
ARRAY_SIZE
(
uda134x_dapm_routes
),
};
static
int
uda134x_codec_probe
(
struct
platform_device
*
pdev
)
...
...
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