|
@@ -33,6 +33,7 @@ static DEFINE_MUTEX(regulator_list_mutex);
|
|
|
static LIST_HEAD(regulator_list);
|
|
|
static LIST_HEAD(regulator_map_list);
|
|
|
static int has_full_constraints;
|
|
|
+static bool board_wants_dummy_regulator;
|
|
|
|
|
|
/*
|
|
|
* struct regulator_map
|
|
@@ -1108,6 +1109,11 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (board_wants_dummy_regulator) {
|
|
|
+ rdev = dummy_regulator_rdev;
|
|
|
+ goto found;
|
|
|
+ }
|
|
|
+
|
|
|
#ifdef CONFIG_REGULATOR_DUMMY
|
|
|
if (!devname)
|
|
|
devname = "deviceless";
|
|
@@ -2462,6 +2468,22 @@ 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
|