[PATCH 07/13] regulator: regulator test harness

Previous thread: [PATCH 0/13] Updated V4 - Regulator Framework by Liam Girdwood on Friday, May 2, 2008 - 8:40 am. (12 messages)

Next thread: [PATCH 02/13] regulator: regulator driver interface by Liam Girdwood on Friday, May 2, 2008 - 8:41 am. (1 message)
From: Liam Girdwood
Date: Friday, May 2, 2008 - 8:43 am

This provides a virtual regulator test harness which exposes a sysfs
interface for setting power requirements for test purposes only.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
---
 drivers/regulator/virtual.c |  252 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 252 insertions(+), 0 deletions(-)
 create mode 100644 drivers/regulator/virtual.c

diff --git a/drivers/regulator/virtual.c b/drivers/regulator/virtual.c
new file mode 100644
index 0000000..83065bd
--- /dev/null
+++ b/drivers/regulator/virtual.c
@@ -0,0 +1,252 @@
+/*
+ * reg-virtual-consumer.c
+ *
+ * Copyright 2008 Wolfson Microelectronics PLC.
+ *
+ * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ */
+
+#include <linux/err.h>
+#include <linux/mutex.h>
+#include <linux/platform_device.h>
+#include <linux/regulator/regulator.h>
+
+struct virtual_consumer_data {
+	struct mutex lock;
+	struct regulator *regulator;
+	int enabled;
+	int min_uV;
+	int max_uV;
+	unsigned int mode;
+};
+
+static void update_constraints(struct virtual_consumer_data *data)
+{
+	int ret;
+
+	if (data->min_uV && data->max_uV
+	    && data->min_uV <= data->max_uV) {
+		ret = regulator_set_voltage(data->regulator,
+					    data->min_uV, data->max_uV);
+		if (ret != 0) {
+			printk(KERN_ERR "regulator_set_voltage() failed: %d\n",
+			       ret);
+			return;
+		}
+	}
+
+	if (data->min_uV && data->max_uV && !data->enabled) {
+		ret = regulator_enable(data->regulator);
+		if (ret == 0)
+			data->enabled = 1;
+		else
+			printk(KERN_ERR "regulator_enable() failed: %d\n",
+				ret);
+	}
+
+	if (!(data->min_uV && data->max_uV) && data->enabled) {
+		ret ...
Previous thread: [PATCH 0/13] Updated V4 - Regulator Framework by Liam Girdwood on Friday, May 2, 2008 - 8:40 am. (12 messages)

Next thread: [PATCH 02/13] regulator: regulator driver interface by Liam Girdwood on Friday, May 2, 2008 - 8:41 am. (1 message)