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
nexedi
linux
Commits
45aae62d
Commit
45aae62d
authored
Feb 19, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'regulator/topic/arizona' into regulator-next
parents
fc221525
57a10a1f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
4 deletions
+83
-4
drivers/regulator/Kconfig
drivers/regulator/Kconfig
+1
-0
drivers/regulator/arizona-micsupp.c
drivers/regulator/arizona-micsupp.c
+74
-4
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm5102.c
+4
-0
sound/soc/codecs/wm5110.c
sound/soc/codecs/wm5110.c
+4
-0
No files found.
drivers/regulator/Kconfig
View file @
45aae62d
...
...
@@ -91,6 +91,7 @@ config REGULATOR_AAT2870
config REGULATOR_ARIZONA
tristate "Wolfson Arizona class devices"
depends on MFD_ARIZONA
depends on SND_SOC
help
Support for the regulators found on Wolfson Arizona class
devices.
...
...
drivers/regulator/arizona-micsupp.c
View file @
45aae62d
...
...
@@ -21,6 +21,8 @@
#include <linux/regulator/machine.h>
#include <linux/gpio.h>
#include <linux/slab.h>
#include <linux/workqueue.h>
#include <sound/soc.h>
#include <linux/mfd/arizona/core.h>
#include <linux/mfd/arizona/pdata.h>
...
...
@@ -34,6 +36,8 @@ struct arizona_micsupp {
struct
regulator_consumer_supply
supply
;
struct
regulator_init_data
init_data
;
struct
work_struct
check_cp_work
;
};
static
int
arizona_micsupp_list_voltage
(
struct
regulator_dev
*
rdev
,
...
...
@@ -72,9 +76,73 @@ static int arizona_micsupp_map_voltage(struct regulator_dev *rdev,
return
selector
;
}
static
void
arizona_micsupp_check_cp
(
struct
work_struct
*
work
)
{
struct
arizona_micsupp
*
micsupp
=
container_of
(
work
,
struct
arizona_micsupp
,
check_cp_work
);
struct
snd_soc_dapm_context
*
dapm
=
micsupp
->
arizona
->
dapm
;
struct
arizona
*
arizona
=
micsupp
->
arizona
;
struct
regmap
*
regmap
=
arizona
->
regmap
;
unsigned
int
reg
;
int
ret
;
ret
=
regmap_read
(
regmap
,
ARIZONA_MIC_CHARGE_PUMP_1
,
&
reg
);
if
(
ret
!=
0
)
{
dev_err
(
arizona
->
dev
,
"Failed to read CP state: %d
\n
"
,
ret
);
return
;
}
if
(
dapm
)
{
if
((
reg
&
(
ARIZONA_CPMIC_ENA
|
ARIZONA_CPMIC_BYPASS
))
==
ARIZONA_CPMIC_ENA
)
snd_soc_dapm_force_enable_pin
(
dapm
,
"MICSUPP"
);
else
snd_soc_dapm_disable_pin
(
dapm
,
"MICSUPP"
);
snd_soc_dapm_sync
(
dapm
);
}
}
static
int
arizona_micsupp_enable
(
struct
regulator_dev
*
rdev
)
{
struct
arizona_micsupp
*
micsupp
=
rdev_get_drvdata
(
rdev
);
int
ret
;
ret
=
regulator_enable_regmap
(
rdev
);
if
(
ret
==
0
)
schedule_work
(
&
micsupp
->
check_cp_work
);
return
ret
;
}
static
int
arizona_micsupp_disable
(
struct
regulator_dev
*
rdev
)
{
struct
arizona_micsupp
*
micsupp
=
rdev_get_drvdata
(
rdev
);
int
ret
;
ret
=
regulator_disable_regmap
(
rdev
);
if
(
ret
==
0
)
schedule_work
(
&
micsupp
->
check_cp_work
);
return
ret
;
}
static
int
arizona_micsupp_set_bypass
(
struct
regulator_dev
*
rdev
,
bool
ena
)
{
struct
arizona_micsupp
*
micsupp
=
rdev_get_drvdata
(
rdev
);
int
ret
;
ret
=
regulator_set_bypass_regmap
(
rdev
,
ena
);
if
(
ret
==
0
)
schedule_work
(
&
micsupp
->
check_cp_work
);
return
ret
;
}
static
struct
regulator_ops
arizona_micsupp_ops
=
{
.
enable
=
regulator_enable_regmap
,
.
disable
=
regulator_disable_regmap
,
.
enable
=
arizona_micsupp_enable
,
.
disable
=
arizona_micsupp_disable
,
.
is_enabled
=
regulator_is_enabled_regmap
,
.
list_voltage
=
arizona_micsupp_list_voltage
,
...
...
@@ -84,7 +152,7 @@ static struct regulator_ops arizona_micsupp_ops = {
.
set_voltage_sel
=
regulator_set_voltage_sel_regmap
,
.
get_bypass
=
regulator_get_bypass_regmap
,
.
set_bypass
=
regulator_set_bypass_regmap
,
.
set_bypass
=
arizona_micsupp_set_bypass
,
};
static
const
struct
regulator_desc
arizona_micsupp
=
{
...
...
@@ -109,7 +177,8 @@ static const struct regulator_desc arizona_micsupp = {
static
const
struct
regulator_init_data
arizona_micsupp_default
=
{
.
constraints
=
{
.
valid_ops_mask
=
REGULATOR_CHANGE_STATUS
|
REGULATOR_CHANGE_VOLTAGE
,
REGULATOR_CHANGE_VOLTAGE
|
REGULATOR_CHANGE_BYPASS
,
.
min_uV
=
1700000
,
.
max_uV
=
3300000
,
},
...
...
@@ -131,6 +200,7 @@ static int arizona_micsupp_probe(struct platform_device *pdev)
}
micsupp
->
arizona
=
arizona
;
INIT_WORK
(
&
micsupp
->
check_cp_work
,
arizona_micsupp_check_cp
);
/*
* Since the chip usually supplies itself we provide some
...
...
sound/soc/codecs/wm5102.c
View file @
45aae62d
...
...
@@ -1152,6 +1152,8 @@ SND_SOC_DAPM_OUTPUT("SPKOUTRN"),
SND_SOC_DAPM_OUTPUT
(
"SPKOUTRP"
),
SND_SOC_DAPM_OUTPUT
(
"SPKDAT1L"
),
SND_SOC_DAPM_OUTPUT
(
"SPKDAT1R"
),
SND_SOC_DAPM_OUTPUT
(
"MICSUPP"
),
};
#define ARIZONA_MIXER_INPUT_ROUTES(name) \
...
...
@@ -1364,6 +1366,8 @@ static const struct snd_soc_dapm_route wm5102_dapm_routes[] = {
{
"AEC Loopback"
,
"SPKDAT1R"
,
"OUT5R"
},
{
"SPKDAT1L"
,
NULL
,
"OUT5L"
},
{
"SPKDAT1R"
,
NULL
,
"OUT5R"
},
{
"MICSUPP"
,
NULL
,
"SYSCLK"
},
};
static
int
wm5102_set_fll
(
struct
snd_soc_codec
*
codec
,
int
fll_id
,
int
source
,
...
...
sound/soc/codecs/wm5110.c
View file @
45aae62d
...
...
@@ -624,6 +624,8 @@ SND_SOC_DAPM_OUTPUT("SPKDAT1L"),
SND_SOC_DAPM_OUTPUT
(
"SPKDAT1R"
),
SND_SOC_DAPM_OUTPUT
(
"SPKDAT2L"
),
SND_SOC_DAPM_OUTPUT
(
"SPKDAT2R"
),
SND_SOC_DAPM_OUTPUT
(
"MICSUPP"
),
};
#define ARIZONA_MIXER_INPUT_ROUTES(name) \
...
...
@@ -832,6 +834,8 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
{
"SPKDAT2L"
,
NULL
,
"OUT6L"
},
{
"SPKDAT2R"
,
NULL
,
"OUT6R"
},
{
"MICSUPP"
,
NULL
,
"SYSCLK"
},
};
static
int
wm5110_set_fll
(
struct
snd_soc_codec
*
codec
,
int
fll_id
,
int
source
,
...
...
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