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
aef393da
Commit
aef393da
authored
Oct 24, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'regulator/topic/optional' into regulator-next
parents
88c260a1
4040394e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
49 deletions
+15
-49
drivers/regulator/Kconfig
drivers/regulator/Kconfig
+0
-10
drivers/regulator/core.c
drivers/regulator/core.c
+15
-34
include/linux/regulator/machine.h
include/linux/regulator/machine.h
+0
-5
No files found.
drivers/regulator/Kconfig
View file @
aef393da
...
...
@@ -28,16 +28,6 @@ config REGULATOR_DEBUG
help
Say yes here to enable debugging support.
config REGULATOR_DUMMY
bool "Provide a dummy regulator if regulator lookups fail"
help
If this option is enabled then when a regulator lookup fails
and the board has not specified that it has provided full
constraints the regulator core will provide an always
enabled dummy regulator, allowing consumer drivers to continue.
A warning will be generated when this substitution is done.
config REGULATOR_FIXED_VOLTAGE
tristate "Fixed voltage regulator support"
help
...
...
drivers/regulator/core.c
View file @
aef393da
...
...
@@ -55,7 +55,6 @@ static LIST_HEAD(regulator_map_list);
static
LIST_HEAD
(
regulator_ena_gpio_list
);
static
LIST_HEAD
(
regulator_supply_alias_list
);
static
bool
has_full_constraints
;
static
bool
board_wants_dummy_regulator
;
static
struct
dentry
*
debugfs_root
;
...
...
@@ -1303,12 +1302,12 @@ static struct regulator_dev *regulator_dev_lookup(struct device *dev,
/* Internal regulator request function */
static
struct
regulator
*
_regulator_get
(
struct
device
*
dev
,
const
char
*
id
,
bool
exclusive
)
bool
exclusive
,
bool
allow_dummy
)
{
struct
regulator_dev
*
rdev
;
struct
regulator
*
regulator
=
ERR_PTR
(
-
EPROBE_DEFER
);
const
char
*
devname
=
NULL
;
int
ret
=
0
;
int
ret
=
-
EPROBE_DEFER
;
if
(
id
==
NULL
)
{
pr_err
(
"get() with no identifier
\n
"
);
...
...
@@ -1324,34 +1323,32 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
if
(
rdev
)
goto
found
;
regulator
=
ERR_PTR
(
ret
);
/*
* If we have return value from dev_lookup fail, we do not expect to
* succeed, so, quit with appropriate error value
*/
if
(
ret
)
{
regulator
=
ERR_PTR
(
ret
);
if
(
ret
&&
ret
!=
-
ENODEV
)
{
goto
out
;
}
if
(
board_wants_dummy_regulator
)
{
rdev
=
dummy_regulator_rdev
;
goto
found
;
}
#ifdef CONFIG_REGULATOR_DUMMY
if
(
!
devname
)
devname
=
"deviceless"
;
/* If the board didn't flag that it was fully constrained then
* substitute in a dummy regulator so consumers can continue.
/*
* Assume that a regulator is physically present and enabled
* even if it isn't hooked up and just provide a dummy.
*/
if
(
!
has_full_constraints
)
{
if
(
has_full_constraints
&&
allow_dummy
)
{
pr_warn
(
"%s supply %s not found, using dummy regulator
\n
"
,
devname
,
id
);
rdev
=
dummy_regulator_rdev
;
goto
found
;
}
else
{
dev_err
(
dev
,
"dummy supplies not allowed
\n
"
);
}
#endif
mutex_unlock
(
&
regulator_list_mutex
);
return
regulator
;
...
...
@@ -1409,7 +1406,7 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
*/
struct
regulator
*
regulator_get
(
struct
device
*
dev
,
const
char
*
id
)
{
return
_regulator_get
(
dev
,
id
,
false
);
return
_regulator_get
(
dev
,
id
,
false
,
true
);
}
EXPORT_SYMBOL_GPL
(
regulator_get
);
...
...
@@ -1436,7 +1433,7 @@ EXPORT_SYMBOL_GPL(regulator_get);
*/
struct
regulator
*
regulator_get_exclusive
(
struct
device
*
dev
,
const
char
*
id
)
{
return
_regulator_get
(
dev
,
id
,
true
);
return
_regulator_get
(
dev
,
id
,
true
,
false
);
}
EXPORT_SYMBOL_GPL
(
regulator_get_exclusive
);
...
...
@@ -1465,7 +1462,7 @@ EXPORT_SYMBOL_GPL(regulator_get_exclusive);
*/
struct
regulator
*
regulator_get_optional
(
struct
device
*
dev
,
const
char
*
id
)
{
return
_regulator_get
(
dev
,
id
,
0
);
return
_regulator_get
(
dev
,
id
,
false
,
false
);
}
EXPORT_SYMBOL_GPL
(
regulator_get_optional
);
...
...
@@ -3663,22 +3660,6 @@ void regulator_has_full_constraints(void)
}
EXPORT_SYMBOL_GPL
(
regulator_has_full_constraints
);
/**
* regulator_use_dummy_regulator - Provide a dummy regulator when none is found
*
* Calling this function will cause the regulator API to provide a
* dummy regulator to consumers if no physical regulator is found,
* allowing most consumers to proceed as though a regulator were
* configured. This allows systems such as those with software
* controllable regulators for the CPU core only to be brought up more
* readily.
*/
void
regulator_use_dummy_regulator
(
void
)
{
board_wants_dummy_regulator
=
true
;
}
EXPORT_SYMBOL_GPL
(
regulator_use_dummy_regulator
);
/**
* rdev_get_drvdata - get rdev regulator driver data
* @rdev: regulator
...
...
include/linux/regulator/machine.h
View file @
aef393da
...
...
@@ -195,15 +195,10 @@ int regulator_suspend_finish(void);
#ifdef CONFIG_REGULATOR
void
regulator_has_full_constraints
(
void
);
void
regulator_use_dummy_regulator
(
void
);
#else
static
inline
void
regulator_has_full_constraints
(
void
)
{
}
static
inline
void
regulator_use_dummy_regulator
(
void
)
{
}
#endif
#endif
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