All of lore.kernel.org
 help / color / mirror / Atom feed
From: ahaslam@baylibre.com
To: gregkh@linuxfoundation.org, johan@kernel.org, robh+dt@kernel.org,
	nsekhar@ti.com, stern@rowland.harvard.edu, khilman@baylibre.com,
	sshtylyov@ru.mvista.com, david@lechnology.com,
	manjunath.goudar@linaro.org, broonie@kernel.org,
	abailon@baylibre.com
Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Axel Haslam <ahaslam@baylibre.com>
Subject: [PATCH/RFT v2 09/17] regulator: fixed: Add over current event
Date: Mon, 24 Oct 2016 18:46:26 +0200	[thread overview]
Message-ID: <20161024164634.4330-10-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam@baylibre.com>

From: Axel Haslam <ahaslam@baylibre.com>

Some regulator supplies have an over-current pin that is
activated when the hw detects an over current condition.
When this happens, the hardware enters a current limited
mode.

Extend the fixed regulator driver with the ability
to handle irq's from the over-current pin and report
an over current event to the consumers via a regulator
notifier. Also, add device tree bindings to allow to
pass a gpio for over current monitoring.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
---
 .../bindings/regulator/fixed-regulator.txt         |  4 ++
 drivers/regulator/fixed.c                          | 64 ++++++++++++++++++++++
 include/linux/regulator/consumer.h                 |  5 ++
 include/linux/regulator/fixed.h                    |  3 +
 4 files changed, 76 insertions(+)

diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
index 4fae41d..d20bf67 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
@@ -11,6 +11,8 @@ If this property is missing, the default assumed is Active low.
 - gpio-open-drain: GPIO is open drain type.
   If this property is missing then default assumption is false.
 -vin-supply: Input supply name.
+- oc-gpio: Input gpio that signals an over current condition
+- oc-active-high: The polarity of the over current pin is high
 
 Any property defined as part of the core regulator
 binding, defined in regulator.txt, can also be used.
@@ -26,9 +28,11 @@ Example:
 		regulator-min-microvolt = <1800000>;
 		regulator-max-microvolt = <1800000>;
 		gpio = <&gpio1 16 0>;
+		oc-gpio = <&gpio1 18 0>;
 		startup-delay-us = <70000>;
 		enable-active-high;
 		regulator-boot-on;
 		gpio-open-drain;
+		oc-active-high;
 		vin-supply = <&parent_reg>;
 	};
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 988a747..e7964bb 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -30,10 +30,14 @@
 #include <linux/of_gpio.h>
 #include <linux/regulator/of_regulator.h>
 #include <linux/regulator/machine.h>
+#include <linux/interrupt.h>
 
 struct fixed_voltage_data {
 	struct regulator_desc desc;
 	struct regulator_dev *dev;
+	int oc_gpio;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 };
 
 
@@ -82,6 +86,14 @@ struct fixed_voltage_data {
 	if ((config->gpio < 0) && (config->gpio != -ENOENT))
 		return ERR_PTR(config->gpio);
 
+	config->oc_gpio = of_get_named_gpio(np, "oc-gpio", 0);
+	if (config->oc_gpio >= 0)
+		config->has_oc_gpio = true;
+	else if (config->oc_gpio != -ENOENT)
+		return ERR_PTR(config->oc_gpio);
+
+	config->oc_high = of_property_read_bool(np, "oc-active-high");
+
 	of_property_read_u32(np, "startup-delay-us", &config->startup_delay);
 
 	config->enable_high = of_property_read_bool(np, "enable-active-high");
@@ -94,7 +106,34 @@ struct fixed_voltage_data {
 	return config;
 }
 
+static irqreturn_t reg_fixed_overcurrent_irq(int irq, void *data)
+{
+	struct fixed_voltage_data *drvdata = data;
+
+	regulator_notifier_call_chain(drvdata->dev,
+			REGULATOR_EVENT_OVER_CURRENT, NULL);
+
+	return IRQ_HANDLED;
+}
+
+static unsigned int reg_fixed_get_mode(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *drvdata = rdev_get_drvdata(rdev);
+	unsigned int ret = REGULATOR_MODE_NORMAL;
+	int oc_value;
+
+	if (!drvdata->has_oc_gpio)
+		return ret;
+
+	oc_value = gpio_get_value(drvdata->oc_gpio);
+	if ((oc_value && drvdata->oc_high) || (!oc_value && !drvdata->oc_high))
+		ret = REGULATOR_MODE_OVERCURRENT;
+
+	return ret;
+}
+
 static struct regulator_ops fixed_voltage_ops = {
+	.get_mode = reg_fixed_get_mode,
 };
 
 static int reg_fixed_voltage_probe(struct platform_device *pdev)
@@ -175,6 +214,31 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
 	cfg.driver_data = drvdata;
 	cfg.of_node = pdev->dev.of_node;
 
+	if (config->has_oc_gpio && gpio_is_valid(config->oc_gpio)) {
+		ret = devm_gpio_request_one(&pdev->dev,
+					config->oc_gpio,
+					GPIOF_DIR_IN, "oc_gpio");
+		if (ret) {
+			pr_err("Failed to request gpio: %d\n", ret);
+			return ret;
+		}
+
+		ret = devm_request_threaded_irq(&pdev->dev,
+				gpio_to_irq(config->oc_gpio), NULL,
+				reg_fixed_overcurrent_irq,
+				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
+				IRQF_ONESHOT,
+				"over_current", drvdata);
+		if (ret) {
+			pr_err("Failed to request irq: %d\n", ret);
+			return ret;
+		}
+
+		drvdata->oc_gpio = config->oc_gpio;
+		drvdata->oc_high = config->oc_high;
+		drvdata->has_oc_gpio = config->has_oc_gpio;
+	}
+
 	drvdata->dev = devm_regulator_register(&pdev->dev, &drvdata->desc,
 					       &cfg);
 	if (IS_ERR(drvdata->dev)) {
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index 6921082..9269217 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -74,6 +74,10 @@
  *             the most noisy and may not be able to handle fast load
  *             switching.
  *
+ * OVERCURRENT Regulator has detected an overcurrent condition, and
+ *             may be limiting the supply output.
+ *
+ *
  * NOTE: Most regulators will only support a subset of these modes. Some
  * will only just support NORMAL.
  *
@@ -84,6 +88,7 @@
 #define REGULATOR_MODE_NORMAL			0x2
 #define REGULATOR_MODE_IDLE			0x4
 #define REGULATOR_MODE_STANDBY			0x8
+#define REGULATOR_MODE_OVERCURRENT		0x10
 
 /*
  * Regulator notifier events.
diff --git a/include/linux/regulator/fixed.h b/include/linux/regulator/fixed.h
index 48918be..79357be 100644
--- a/include/linux/regulator/fixed.h
+++ b/include/linux/regulator/fixed.h
@@ -50,10 +50,13 @@ struct fixed_voltage_config {
 	const char *input_supply;
 	int microvolts;
 	int gpio;
+	int oc_gpio;
 	unsigned startup_delay;
 	unsigned gpio_is_open_drain:1;
 	unsigned enable_high:1;
 	unsigned enabled_at_boot:1;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 	struct regulator_init_data *init_data;
 };
 
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: ahaslam-rdvid1DuHRBWk0Htik3J/w@public.gmane.org
To: gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
	johan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	nsekhar-l0cyMroinI0@public.gmane.org,
	stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org,
	khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org,
	sshtylyov-hkdhdckH98+B+jHODAdFcQ@public.gmane.org,
	david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org,
	manjunath.goudar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	abailon-rdvid1DuHRBWk0Htik3J/w@public.gmane.org
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	Axel Haslam <ahaslam-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
Subject: [PATCH/RFT v2 09/17] regulator: fixed: Add over current event
Date: Mon, 24 Oct 2016 18:46:26 +0200	[thread overview]
Message-ID: <20161024164634.4330-10-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>

From: Axel Haslam <ahaslam-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>

Some regulator supplies have an over-current pin that is
activated when the hw detects an over current condition.
When this happens, the hardware enters a current limited
mode.

Extend the fixed regulator driver with the ability
to handle irq's from the over-current pin and report
an over current event to the consumers via a regulator
notifier. Also, add device tree bindings to allow to
pass a gpio for over current monitoring.

Signed-off-by: Axel Haslam <ahaslam-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>
---
 .../bindings/regulator/fixed-regulator.txt         |  4 ++
 drivers/regulator/fixed.c                          | 64 ++++++++++++++++++++++
 include/linux/regulator/consumer.h                 |  5 ++
 include/linux/regulator/fixed.h                    |  3 +
 4 files changed, 76 insertions(+)

diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
index 4fae41d..d20bf67 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
@@ -11,6 +11,8 @@ If this property is missing, the default assumed is Active low.
 - gpio-open-drain: GPIO is open drain type.
   If this property is missing then default assumption is false.
 -vin-supply: Input supply name.
+- oc-gpio: Input gpio that signals an over current condition
+- oc-active-high: The polarity of the over current pin is high
 
 Any property defined as part of the core regulator
 binding, defined in regulator.txt, can also be used.
@@ -26,9 +28,11 @@ Example:
 		regulator-min-microvolt = <1800000>;
 		regulator-max-microvolt = <1800000>;
 		gpio = <&gpio1 16 0>;
+		oc-gpio = <&gpio1 18 0>;
 		startup-delay-us = <70000>;
 		enable-active-high;
 		regulator-boot-on;
 		gpio-open-drain;
+		oc-active-high;
 		vin-supply = <&parent_reg>;
 	};
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 988a747..e7964bb 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -30,10 +30,14 @@
 #include <linux/of_gpio.h>
 #include <linux/regulator/of_regulator.h>
 #include <linux/regulator/machine.h>
+#include <linux/interrupt.h>
 
 struct fixed_voltage_data {
 	struct regulator_desc desc;
 	struct regulator_dev *dev;
+	int oc_gpio;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 };
 
 
@@ -82,6 +86,14 @@ struct fixed_voltage_data {
 	if ((config->gpio < 0) && (config->gpio != -ENOENT))
 		return ERR_PTR(config->gpio);
 
+	config->oc_gpio = of_get_named_gpio(np, "oc-gpio", 0);
+	if (config->oc_gpio >= 0)
+		config->has_oc_gpio = true;
+	else if (config->oc_gpio != -ENOENT)
+		return ERR_PTR(config->oc_gpio);
+
+	config->oc_high = of_property_read_bool(np, "oc-active-high");
+
 	of_property_read_u32(np, "startup-delay-us", &config->startup_delay);
 
 	config->enable_high = of_property_read_bool(np, "enable-active-high");
@@ -94,7 +106,34 @@ struct fixed_voltage_data {
 	return config;
 }
 
+static irqreturn_t reg_fixed_overcurrent_irq(int irq, void *data)
+{
+	struct fixed_voltage_data *drvdata = data;
+
+	regulator_notifier_call_chain(drvdata->dev,
+			REGULATOR_EVENT_OVER_CURRENT, NULL);
+
+	return IRQ_HANDLED;
+}
+
+static unsigned int reg_fixed_get_mode(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *drvdata = rdev_get_drvdata(rdev);
+	unsigned int ret = REGULATOR_MODE_NORMAL;
+	int oc_value;
+
+	if (!drvdata->has_oc_gpio)
+		return ret;
+
+	oc_value = gpio_get_value(drvdata->oc_gpio);
+	if ((oc_value && drvdata->oc_high) || (!oc_value && !drvdata->oc_high))
+		ret = REGULATOR_MODE_OVERCURRENT;
+
+	return ret;
+}
+
 static struct regulator_ops fixed_voltage_ops = {
+	.get_mode = reg_fixed_get_mode,
 };
 
 static int reg_fixed_voltage_probe(struct platform_device *pdev)
@@ -175,6 +214,31 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
 	cfg.driver_data = drvdata;
 	cfg.of_node = pdev->dev.of_node;
 
+	if (config->has_oc_gpio && gpio_is_valid(config->oc_gpio)) {
+		ret = devm_gpio_request_one(&pdev->dev,
+					config->oc_gpio,
+					GPIOF_DIR_IN, "oc_gpio");
+		if (ret) {
+			pr_err("Failed to request gpio: %d\n", ret);
+			return ret;
+		}
+
+		ret = devm_request_threaded_irq(&pdev->dev,
+				gpio_to_irq(config->oc_gpio), NULL,
+				reg_fixed_overcurrent_irq,
+				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
+				IRQF_ONESHOT,
+				"over_current", drvdata);
+		if (ret) {
+			pr_err("Failed to request irq: %d\n", ret);
+			return ret;
+		}
+
+		drvdata->oc_gpio = config->oc_gpio;
+		drvdata->oc_high = config->oc_high;
+		drvdata->has_oc_gpio = config->has_oc_gpio;
+	}
+
 	drvdata->dev = devm_regulator_register(&pdev->dev, &drvdata->desc,
 					       &cfg);
 	if (IS_ERR(drvdata->dev)) {
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index 6921082..9269217 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -74,6 +74,10 @@
  *             the most noisy and may not be able to handle fast load
  *             switching.
  *
+ * OVERCURRENT Regulator has detected an overcurrent condition, and
+ *             may be limiting the supply output.
+ *
+ *
  * NOTE: Most regulators will only support a subset of these modes. Some
  * will only just support NORMAL.
  *
@@ -84,6 +88,7 @@
 #define REGULATOR_MODE_NORMAL			0x2
 #define REGULATOR_MODE_IDLE			0x4
 #define REGULATOR_MODE_STANDBY			0x8
+#define REGULATOR_MODE_OVERCURRENT		0x10
 
 /*
  * Regulator notifier events.
diff --git a/include/linux/regulator/fixed.h b/include/linux/regulator/fixed.h
index 48918be..79357be 100644
--- a/include/linux/regulator/fixed.h
+++ b/include/linux/regulator/fixed.h
@@ -50,10 +50,13 @@ struct fixed_voltage_config {
 	const char *input_supply;
 	int microvolts;
 	int gpio;
+	int oc_gpio;
 	unsigned startup_delay;
 	unsigned gpio_is_open_drain:1;
 	unsigned enable_high:1;
 	unsigned enabled_at_boot:1;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 	struct regulator_init_data *init_data;
 };
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: ahaslam@baylibre.com (ahaslam at baylibre.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH/RFT v2 09/17] regulator: fixed: Add over current event
Date: Mon, 24 Oct 2016 18:46:26 +0200	[thread overview]
Message-ID: <20161024164634.4330-10-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam@baylibre.com>

From: Axel Haslam <ahaslam@baylibre.com>

Some regulator supplies have an over-current pin that is
activated when the hw detects an over current condition.
When this happens, the hardware enters a current limited
mode.

Extend the fixed regulator driver with the ability
to handle irq's from the over-current pin and report
an over current event to the consumers via a regulator
notifier. Also, add device tree bindings to allow to
pass a gpio for over current monitoring.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
---
 .../bindings/regulator/fixed-regulator.txt         |  4 ++
 drivers/regulator/fixed.c                          | 64 ++++++++++++++++++++++
 include/linux/regulator/consumer.h                 |  5 ++
 include/linux/regulator/fixed.h                    |  3 +
 4 files changed, 76 insertions(+)

diff --git a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
index 4fae41d..d20bf67 100644
--- a/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/fixed-regulator.txt
@@ -11,6 +11,8 @@ If this property is missing, the default assumed is Active low.
 - gpio-open-drain: GPIO is open drain type.
   If this property is missing then default assumption is false.
 -vin-supply: Input supply name.
+- oc-gpio: Input gpio that signals an over current condition
+- oc-active-high: The polarity of the over current pin is high
 
 Any property defined as part of the core regulator
 binding, defined in regulator.txt, can also be used.
@@ -26,9 +28,11 @@ Example:
 		regulator-min-microvolt = <1800000>;
 		regulator-max-microvolt = <1800000>;
 		gpio = <&gpio1 16 0>;
+		oc-gpio = <&gpio1 18 0>;
 		startup-delay-us = <70000>;
 		enable-active-high;
 		regulator-boot-on;
 		gpio-open-drain;
+		oc-active-high;
 		vin-supply = <&parent_reg>;
 	};
diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c
index 988a747..e7964bb 100644
--- a/drivers/regulator/fixed.c
+++ b/drivers/regulator/fixed.c
@@ -30,10 +30,14 @@
 #include <linux/of_gpio.h>
 #include <linux/regulator/of_regulator.h>
 #include <linux/regulator/machine.h>
+#include <linux/interrupt.h>
 
 struct fixed_voltage_data {
 	struct regulator_desc desc;
 	struct regulator_dev *dev;
+	int oc_gpio;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 };
 
 
@@ -82,6 +86,14 @@ struct fixed_voltage_data {
 	if ((config->gpio < 0) && (config->gpio != -ENOENT))
 		return ERR_PTR(config->gpio);
 
+	config->oc_gpio = of_get_named_gpio(np, "oc-gpio", 0);
+	if (config->oc_gpio >= 0)
+		config->has_oc_gpio = true;
+	else if (config->oc_gpio != -ENOENT)
+		return ERR_PTR(config->oc_gpio);
+
+	config->oc_high = of_property_read_bool(np, "oc-active-high");
+
 	of_property_read_u32(np, "startup-delay-us", &config->startup_delay);
 
 	config->enable_high = of_property_read_bool(np, "enable-active-high");
@@ -94,7 +106,34 @@ struct fixed_voltage_data {
 	return config;
 }
 
+static irqreturn_t reg_fixed_overcurrent_irq(int irq, void *data)
+{
+	struct fixed_voltage_data *drvdata = data;
+
+	regulator_notifier_call_chain(drvdata->dev,
+			REGULATOR_EVENT_OVER_CURRENT, NULL);
+
+	return IRQ_HANDLED;
+}
+
+static unsigned int reg_fixed_get_mode(struct regulator_dev *rdev)
+{
+	struct fixed_voltage_data *drvdata = rdev_get_drvdata(rdev);
+	unsigned int ret = REGULATOR_MODE_NORMAL;
+	int oc_value;
+
+	if (!drvdata->has_oc_gpio)
+		return ret;
+
+	oc_value = gpio_get_value(drvdata->oc_gpio);
+	if ((oc_value && drvdata->oc_high) || (!oc_value && !drvdata->oc_high))
+		ret = REGULATOR_MODE_OVERCURRENT;
+
+	return ret;
+}
+
 static struct regulator_ops fixed_voltage_ops = {
+	.get_mode = reg_fixed_get_mode,
 };
 
 static int reg_fixed_voltage_probe(struct platform_device *pdev)
@@ -175,6 +214,31 @@ static int reg_fixed_voltage_probe(struct platform_device *pdev)
 	cfg.driver_data = drvdata;
 	cfg.of_node = pdev->dev.of_node;
 
+	if (config->has_oc_gpio && gpio_is_valid(config->oc_gpio)) {
+		ret = devm_gpio_request_one(&pdev->dev,
+					config->oc_gpio,
+					GPIOF_DIR_IN, "oc_gpio");
+		if (ret) {
+			pr_err("Failed to request gpio: %d\n", ret);
+			return ret;
+		}
+
+		ret = devm_request_threaded_irq(&pdev->dev,
+				gpio_to_irq(config->oc_gpio), NULL,
+				reg_fixed_overcurrent_irq,
+				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
+				IRQF_ONESHOT,
+				"over_current", drvdata);
+		if (ret) {
+			pr_err("Failed to request irq: %d\n", ret);
+			return ret;
+		}
+
+		drvdata->oc_gpio = config->oc_gpio;
+		drvdata->oc_high = config->oc_high;
+		drvdata->has_oc_gpio = config->has_oc_gpio;
+	}
+
 	drvdata->dev = devm_regulator_register(&pdev->dev, &drvdata->desc,
 					       &cfg);
 	if (IS_ERR(drvdata->dev)) {
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index 6921082..9269217 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -74,6 +74,10 @@
  *             the most noisy and may not be able to handle fast load
  *             switching.
  *
+ * OVERCURRENT Regulator has detected an overcurrent condition, and
+ *             may be limiting the supply output.
+ *
+ *
  * NOTE: Most regulators will only support a subset of these modes. Some
  * will only just support NORMAL.
  *
@@ -84,6 +88,7 @@
 #define REGULATOR_MODE_NORMAL			0x2
 #define REGULATOR_MODE_IDLE			0x4
 #define REGULATOR_MODE_STANDBY			0x8
+#define REGULATOR_MODE_OVERCURRENT		0x10
 
 /*
  * Regulator notifier events.
diff --git a/include/linux/regulator/fixed.h b/include/linux/regulator/fixed.h
index 48918be..79357be 100644
--- a/include/linux/regulator/fixed.h
+++ b/include/linux/regulator/fixed.h
@@ -50,10 +50,13 @@ struct fixed_voltage_config {
 	const char *input_supply;
 	int microvolts;
 	int gpio;
+	int oc_gpio;
 	unsigned startup_delay;
 	unsigned gpio_is_open_drain:1;
 	unsigned enable_high:1;
 	unsigned enabled_at_boot:1;
+	unsigned has_oc_gpio:1;
+	unsigned oc_high:1;
 	struct regulator_init_data *init_data;
 };
 
-- 
1.9.1

  parent reply	other threads:[~2016-10-24 16:48 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 16:46 [PATCH/RFT v2 00/17] Add DT support for ohci-da8xx ahaslam
2016-10-24 16:46 ` ahaslam at baylibre.com
2016-10-24 16:46 ` [PATCH/RFT v2 01/17] ARM: davinci: da8xx: add usb phy clocks ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46 ` [PATCH/RFT v2 02/17] ARM: davinci: da8xx: Add CFGCHIP syscon platform declaration ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  8:10   ` Sekhar Nori
2016-10-25  8:10     ` Sekhar Nori
2016-10-25  8:10     ` Sekhar Nori
2016-10-25  9:37     ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25 10:17       ` Sekhar Nori
2016-10-25 10:17         ` Sekhar Nori
2016-10-25 10:17         ` Sekhar Nori
2016-10-25 15:53         ` David Lechner
2016-10-25 15:53           ` David Lechner
2016-10-25 15:53           ` David Lechner
2016-10-26  8:56           ` Sekhar Nori
2016-10-26  8:56             ` Sekhar Nori
2016-10-26  8:56             ` Sekhar Nori
2016-10-24 16:46 ` [PATCH/RFT v2 03/17] ARM: davinci: da8xx: Add USB PHY " ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  9:18   ` Sekhar Nori
2016-10-25  9:18     ` Sekhar Nori
2016-10-25  9:18     ` Sekhar Nori
2016-10-25  9:37     ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 04/17] ARM: DTS: da850: Add cfgchip syscon node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-24 16:46 ` [PATCH/RFT v2 05/17] ARM: DTS: da850: Add usb phy node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-24 16:46 ` [PATCH/RFT v2 06/17] ARM: davinci: da8xx: Fix some redefined symbol warnings ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25 10:03   ` Sekhar Nori
2016-10-25 10:03     ` Sekhar Nori
2016-10-25 10:03     ` Sekhar Nori
2016-10-25 12:14     ` Alexandre Bailon
2016-10-25 12:14       ` Alexandre Bailon
2016-10-25 12:14       ` Alexandre Bailon
2016-10-24 16:46 ` [PATCH/RFT v2 07/17] ARM: davinci: da8xx: Enable the usb20 "per" clk on phy_clk_enable ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-25  2:53   ` David Lechner
2016-10-25  2:53     ` David Lechner
2016-10-25 10:01     ` Axel Haslam
2016-10-25 10:01       ` Axel Haslam
2016-10-25 10:12   ` Sekhar Nori
2016-10-25 10:12     ` Sekhar Nori
2016-10-25 10:12     ` Sekhar Nori
2016-10-25 16:05     ` David Lechner
2016-10-25 16:05       ` David Lechner
2016-10-25 16:05       ` David Lechner
2016-10-26  9:30       ` Sekhar Nori
2016-10-26  9:30         ` Sekhar Nori
2016-10-26  9:30         ` Sekhar Nori
2016-10-24 16:46 ` [PATCH/RFT v2 08/17] ARM: davinci: hawk: add full constraints for ohci plat boot ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-25 10:28   ` Sekhar Nori
2016-10-25 10:28     ` Sekhar Nori
2016-10-25 10:28     ` Sekhar Nori
2016-10-25 10:31     ` Axel Haslam
2016-10-25 10:31       ` Axel Haslam
2016-10-25 10:31       ` Axel Haslam
2016-10-24 16:46 ` ahaslam [this message]
2016-10-24 16:46   ` [PATCH/RFT v2 09/17] regulator: fixed: Add over current event ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 17:43   ` Mark Brown
2016-10-24 17:43     ` Mark Brown
2016-10-24 17:43     ` Mark Brown
2016-10-24 17:53     ` Axel Haslam
2016-10-24 17:53       ` Axel Haslam
2016-10-24 17:53   ` Mark Brown
2016-10-24 17:53     ` Mark Brown
2016-10-24 17:53     ` Mark Brown
2016-10-24 18:11     ` Axel Haslam
2016-10-24 18:11       ` Axel Haslam
2016-10-24 18:11       ` Axel Haslam
2016-10-24 18:19       ` Mark Brown
2016-10-24 18:19         ` Mark Brown
2016-10-25 12:55         ` Axel Haslam
2016-10-25 12:55           ` Axel Haslam
2016-10-25 14:33           ` Mark Brown
2016-10-25 14:33             ` Mark Brown
2016-10-25 14:57             ` Axel Haslam
2016-10-25 14:57               ` Axel Haslam
2016-10-25 15:07               ` Axel Haslam
2016-10-25 15:07                 ` Axel Haslam
2016-10-30 20:42   ` Rob Herring
2016-10-30 20:42     ` Rob Herring
2016-10-24 16:46 ` [PATCH/RFT v2 10/17] USB: da8xx: use flag instead of bitmask for over current change ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 16:46 ` [PATCH/RFT v2 11/17] USB: OHCI: make ohci-da8xx a separate driver ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  0:38   ` David Lechner
2016-10-25  0:38     ` David Lechner
2016-10-25  0:38     ` David Lechner
2016-10-25  7:39     ` Axel Haslam
2016-10-25  7:39       ` Axel Haslam
2016-10-25  7:39       ` Axel Haslam
2016-10-25 16:12       ` David Lechner
2016-10-25 16:12         ` David Lechner
2016-10-25 16:12         ` David Lechner
2016-10-25 16:21         ` Axel Haslam
2016-10-25 16:21           ` Axel Haslam
2016-10-25 16:21           ` Axel Haslam
2016-10-25 16:24           ` David Lechner
2016-10-25 16:24             ` David Lechner
2016-10-25 16:24             ` David Lechner
2016-10-24 16:46 ` [PATCH/RFT v2 12/17] USB: ochi-da8xx: Use a regulator for vbus/overcurrent ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:39   ` David Lechner
2016-10-25  1:39     ` David Lechner
2016-10-25  1:39     ` David Lechner
2016-10-25  8:24     ` Axel Haslam
2016-10-25  8:24       ` Axel Haslam
2016-10-25  8:24       ` Axel Haslam
2016-10-25 16:53       ` David Lechner
2016-10-25 16:53         ` David Lechner
2016-10-25 16:53         ` David Lechner
2016-10-25 17:32         ` Axel Haslam
2016-10-25 17:32           ` Axel Haslam
2016-10-25 10:43   ` Sekhar Nori
2016-10-25 10:43     ` Sekhar Nori
2016-10-25 10:43     ` Sekhar Nori
2016-10-25 10:52     ` Axel Haslam
2016-10-25 10:52       ` Axel Haslam
2016-10-25 10:52       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 13/17] USB: da8xx: use ohci priv data instead of globals ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:12   ` David Lechner
2016-10-25  1:12     ` David Lechner
2016-10-25  1:12     ` David Lechner
2016-10-25  9:56     ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 14/17] ARM: davinci: register the usb20_phy clock on the DT file ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 16:46 ` [PATCH/RFT v2 15/17] usb: host: ohci-da8xx: Add devicetree bindings documentation ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:02   ` David Lechner
2016-10-25  1:02     ` David Lechner
2016-10-25  1:02     ` David Lechner
2016-10-25  9:56     ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 16/17] USB: ohci-da8xx: Allow probing from DT ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  0:53   ` David Lechner
2016-10-25  0:53     ` David Lechner
2016-10-25  0:53     ` David Lechner
2016-10-25  8:10     ` Axel Haslam
2016-10-25  8:10       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 17/17] ARM: dts: da850: add usb device node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-25  0:48   ` David Lechner
2016-10-25  0:48     ` David Lechner
2016-10-25  0:48     ` David Lechner
2016-10-25  8:03     ` Axel Haslam
2016-10-25  8:03       ` Axel Haslam
2016-10-25  8:03       ` Axel Haslam
2016-10-25 10:55 ` [PATCH/RFT v2 00/17] Add DT support for ohci-da8xx Sekhar Nori
2016-10-25 10:55   ` Sekhar Nori
2016-10-25 10:55   ` Sekhar Nori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161024164634.4330-10-ahaslam@baylibre.com \
    --to=ahaslam@baylibre.com \
    --cc=abailon@baylibre.com \
    --cc=broonie@kernel.org \
    --cc=david@lechnology.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=khilman@baylibre.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=manjunath.goudar@linaro.org \
    --cc=nsekhar@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=sshtylyov@ru.mvista.com \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.