[powerdebug,3/7] read the gpio directory structure

Message ID 1314280027-7547-3-git-send-email-daniel.lezcano@linaro.org
State Accepted
Headers show

Commit Message

Daniel Lezcano Aug. 25, 2011, 1:47 p.m.
Read the gpio directory structure where we will read the different
data we are interested in.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
---
 Makefile |    2 +-
 gpio.c   |  103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 gpio.h   |   17 ++++++++++
 3 files changed, 121 insertions(+), 1 deletions(-)
 create mode 100644 gpio.c
 create mode 100644 gpio.h

Patch

diff --git a/Makefile b/Makefile
index 8d41b24..2da9d67 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@  MANDIR=/usr/share/man/man8
 CFLAGS?=-O1 -g -Wall -Wshadow
 CC?=gcc
 
-OBJS = powerdebug.o sensor.o clocks.o regulator.o \
+OBJS = powerdebug.o sensor.o clocks.o regulator.o gpio.o \
 	display.o tree.o utils.o mainloop.o
 
 default: powerdebug
diff --git a/gpio.c b/gpio.c
new file mode 100644
index 0000000..fc60d00
--- /dev/null
+++ b/gpio.c
@@ -0,0 +1,103 @@ 
+/*******************************************************************************
+ * Copyright (C) 2010, Linaro Limited.
+ *
+ * This file is part of PowerDebug.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Daniel Lezcano <daniel.lezcano@linaro.org> (IBM Corporation)
+ *       - initial API and implementation
+ *******************************************************************************/
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#include <stdio.h>
+#undef _GNU_SOURCE
+#endif
+#include <mntent.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+
+#include "powerdebug.h"
+#include "display.h"
+#include "tree.h"
+#include "utils.h"
+
+#define SYSFS_GPIO "/sys/class/gpio"
+
+static struct tree *gpio_tree = NULL;
+
+static int gpio_display(bool refresh)
+{
+	return 0;
+}
+
+static int gpio_select(void)
+{
+	return 0;
+}
+
+static int gpio_find(const char *name)
+{
+	return 0;
+}
+
+static int gpio_selectf(void)
+{
+	return 0;
+}
+
+static struct display_ops gpio_ops = {
+	.display = gpio_display,
+	.select  = gpio_select,
+	.find    = gpio_find,
+	.selectf = gpio_selectf,
+};
+
+static inline int read_gpio_cb(struct tree *t, void *data)
+{
+	return 0;
+}
+
+static int read_gpio_info(struct tree *tree)
+{
+	return 0;
+}
+
+static int fill_gpio_cb(struct tree *t, void *data)
+{
+	return 0;
+}
+
+static int fill_gpio_tree(void)
+{
+	return 0;
+}
+
+int gpio_dump(void)
+{
+	return 0;
+}
+
+/*
+ * Initialize the gpio framework
+ */
+int gpio_init(void)
+{
+	gpio_tree = tree_load(SYSFS_GPIO, NULL, false);
+	if (!gpio_tree)
+		return -1;
+
+	if (fill_gpio_tree())
+		return -1;
+
+	return display_register(GPIO, &gpio_ops);
+}
diff --git a/gpio.h b/gpio.h
new file mode 100644
index 0000000..38f035f
--- /dev/null
+++ b/gpio.h
@@ -0,0 +1,17 @@ 
+/*******************************************************************************
+ * Copyright (C) 2010, Linaro Limited.
+ *
+ * This file is part of PowerDebug.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Daniel Lezcano <daniel.lezcano@linaro.org> (IBM Corporation)
+ *       - initial API and implementation
+ *******************************************************************************/
+
+extern int gpio_init(void);
+extern int gpio_dump(void);