Commit ca336751 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'regulator-v3.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
 "A small set of driver fixes plus one larger core change which changes
  the way we check to see if we're using DT so that there aren't any
  races between deciding we're using DT and the regulator subsystem
  noticing.

  This makes the new support for substituting a dummy regulator and
  optional regulators work a lot better on DT systems since it ensures
  that we don't trigger probe deferral when we shouldn't which was
  causing bugs in clients"

* tag 'regulator-v3.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: pfuze100: allow misprogrammed ID
  regulator: pfuze100: Fix address of FABID
  regulator: as3722: set the correct current limit
  regulator: core: Check for DT every time we check full constraints
  regulator: core: Replace checks of have_full_constraints with a function
parents 599eefa0 334a8208
...@@ -590,8 +590,8 @@ static int as3722_sd016_set_current_limit(struct regulator_dev *rdev, ...@@ -590,8 +590,8 @@ static int as3722_sd016_set_current_limit(struct regulator_dev *rdev,
default: default:
return -EINVAL; return -EINVAL;
} }
ret <<= ffs(mask) - 1;
val = ret & mask; val = ret & mask;
val <<= ffs(mask) - 1;
return as3722_update_bits(as3722, reg, mask, val); return as3722_update_bits(as3722, reg, mask, val);
} }
......
...@@ -119,6 +119,11 @@ static const char *rdev_get_name(struct regulator_dev *rdev) ...@@ -119,6 +119,11 @@ static const char *rdev_get_name(struct regulator_dev *rdev)
return ""; return "";
} }
static bool have_full_constraints(void)
{
return has_full_constraints || of_have_populated_dt();
}
/** /**
* of_get_regulator - get a regulator device node based on supply name * of_get_regulator - get a regulator device node based on supply name
* @dev: Device pointer for the consumer (of regulator) device * @dev: Device pointer for the consumer (of regulator) device
...@@ -1340,7 +1345,7 @@ static struct regulator *_regulator_get(struct device *dev, const char *id, ...@@ -1340,7 +1345,7 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
* Assume that a regulator is physically present and enabled * Assume that a regulator is physically present and enabled
* even if it isn't hooked up and just provide a dummy. * even if it isn't hooked up and just provide a dummy.
*/ */
if (has_full_constraints && allow_dummy) { if (have_full_constraints() && allow_dummy) {
pr_warn("%s supply %s not found, using dummy regulator\n", pr_warn("%s supply %s not found, using dummy regulator\n",
devname, id); devname, id);
...@@ -3627,7 +3632,7 @@ int regulator_suspend_finish(void) ...@@ -3627,7 +3632,7 @@ int regulator_suspend_finish(void)
if (error) if (error)
ret = error; ret = error;
} else { } else {
if (!has_full_constraints) if (!have_full_constraints())
goto unlock; goto unlock;
if (!ops->disable) if (!ops->disable)
goto unlock; goto unlock;
...@@ -3825,7 +3830,7 @@ static int __init regulator_init_complete(void) ...@@ -3825,7 +3830,7 @@ static int __init regulator_init_complete(void)
if (!enabled) if (!enabled)
goto unlock; goto unlock;
if (has_full_constraints) { if (have_full_constraints()) {
/* We log since this may kill the system if it /* We log since this may kill the system if it
* goes wrong. */ * goes wrong. */
rdev_info(rdev, "disabling\n"); rdev_info(rdev, "disabling\n");
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
#define PFUZE100_DEVICEID 0x0 #define PFUZE100_DEVICEID 0x0
#define PFUZE100_REVID 0x3 #define PFUZE100_REVID 0x3
#define PFUZE100_FABID 0x3 #define PFUZE100_FABID 0x4
#define PFUZE100_SW1ABVOL 0x20 #define PFUZE100_SW1ABVOL 0x20
#define PFUZE100_SW1CVOL 0x2e #define PFUZE100_SW1CVOL 0x2e
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment