|
@@ -336,6 +336,17 @@ static int power_supply_match_device_by_name(struct device *dev, const void *dat
|
|
|
return strcmp(psy->desc->name, name) == 0;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * power_supply_get_by_name() - Search for a power supply and returns its ref
|
|
|
+ * @name: Power supply name to fetch
|
|
|
+ *
|
|
|
+ * If power supply was found, it increases reference count for the
|
|
|
+ * internal power supply's device. The user should power_supply_put()
|
|
|
+ * after usage.
|
|
|
+ *
|
|
|
+ * Return: On success returns a reference to a power supply with
|
|
|
+ * matching name equals to @name, a NULL otherwise.
|
|
|
+ */
|
|
|
struct power_supply *power_supply_get_by_name(const char *name)
|
|
|
{
|
|
|
struct device *dev = class_find_device(power_supply_class, NULL, name,
|
|
@@ -345,12 +356,39 @@ struct power_supply *power_supply_get_by_name(const char *name)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(power_supply_get_by_name);
|
|
|
|
|
|
+/**
|
|
|
+ * power_supply_put() - Drop reference obtained with power_supply_get_by_name
|
|
|
+ * @psy: Reference to put
|
|
|
+ *
|
|
|
+ * The reference to power supply should be put before unregistering
|
|
|
+ * the power supply.
|
|
|
+ */
|
|
|
+void power_supply_put(struct power_supply *psy)
|
|
|
+{
|
|
|
+ might_sleep();
|
|
|
+
|
|
|
+ put_device(&psy->dev);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(power_supply_put);
|
|
|
+
|
|
|
#ifdef CONFIG_OF
|
|
|
static int power_supply_match_device_node(struct device *dev, const void *data)
|
|
|
{
|
|
|
return dev->parent && dev->parent->of_node == data;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * power_supply_get_by_phandle() - Search for a power supply and returns its ref
|
|
|
+ * @np: Pointer to device node holding phandle property
|
|
|
+ * @phandle_name: Name of property holding a power supply name
|
|
|
+ *
|
|
|
+ * If power supply was found, it increases reference count for the
|
|
|
+ * internal power supply's device. The user should power_supply_put()
|
|
|
+ * after usage.
|
|
|
+ *
|
|
|
+ * Return: On success returns a reference to a power supply with
|
|
|
+ * matching name equals to value under @property, NULL or ERR_PTR otherwise.
|
|
|
+ */
|
|
|
struct power_supply *power_supply_get_by_phandle(struct device_node *np,
|
|
|
const char *property)
|
|
|
{
|