aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--includes/devices.h2
-rw-r--r--modules/devices.c17
-rw-r--r--modules/devices/devicetree.c43
4 files changed, 63 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf29a960..aa146e8c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -124,6 +124,7 @@ set(MODULE_devices_SOURCES
modules/devices/battery.c
modules/devices/devmemory.c
modules/devices/dmi.c
+ modules/devices/devicetree.c
modules/devices/inputdevices.c
modules/devices/pci.c
modules/devices/printers.c
diff --git a/includes/devices.h b/includes/devices.h
index e0876a03..602024b0 100644
--- a/includes/devices.h
+++ b/includes/devices.h
@@ -90,4 +90,6 @@ extern gchar *dmi_info;
extern gchar *spd_info;
#endif
+extern gchar *dtree_info;
+
#endif /* __DEVICES_H__ */
diff --git a/modules/devices.c b/modules/devices.c
index 9bed002d..5966b07a 100644
--- a/modules/devices.c
+++ b/modules/devices.c
@@ -51,6 +51,7 @@ gchar *callback_usb();
gchar *callback_dmi();
gchar *callback_spd();
#endif
+gchar *callback_dtree();
gchar *callback_device_resources();
void scan_processors(gboolean reload);
@@ -66,6 +67,7 @@ void scan_usb(gboolean reload);
void scan_dmi(gboolean reload);
void scan_spd(gboolean reload);
#endif
+void scan_dtree(gboolean reload);
void scan_device_resources(gboolean reload);
gboolean root_required_for_resources(void);
@@ -82,6 +84,7 @@ enum {
ENTRY_SENSORS,
ENTRY_INPUT,
ENTRY_STORAGE,
+ ENTRY_DTREE,
ENTRY_DMI,
ENTRY_SPD,
ENTRY_RESOURCES
@@ -100,6 +103,8 @@ static ModuleEntry entries[] = {
#if defined(ARCH_x86) || defined(ARCH_x86_64)
[ENTRY_DMI] = {N_("DMI"), "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE},
[ENTRY_SPD] = {N_("Memory SPD"), "memory.png", callback_spd, scan_spd, MODULE_FLAG_NONE},
+#else
+ [ENTRY_DTREE] = {N_("Device Tree"), "devices.png", callback_dtree, scan_dtree, MODULE_FLAG_NONE},
#endif /* x86 or x86_64 */
[ENTRY_RESOURCES] = {N_("Resources"), "resources.png", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE},
{NULL}
@@ -377,6 +382,13 @@ void scan_spd(gboolean reload)
}
#endif
+void scan_dtree(gboolean reload)
+{
+ SCAN_START();
+ __scan_dtree();
+ SCAN_END();
+}
+
void scan_processors(gboolean reload)
{
SCAN_START();
@@ -462,6 +474,11 @@ gchar *callback_spd()
}
#endif
+gchar *callback_dtree()
+{
+ return g_strdup(dtree_info);
+}
+
gchar *callback_memory()
{
return g_strdup_printf("[Memory]\n"
diff --git a/modules/devices/devicetree.c b/modules/devices/devicetree.c
new file mode 100644
index 00000000..77b2e359
--- /dev/null
+++ b/modules/devices/devicetree.c
@@ -0,0 +1,43 @@
+/*
+ * HardInfo - Displays System Information
+ * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org>
+ *
+ * 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, version 2.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+/*
+ * Device Tree support
+ */
+#include <unistd.h>
+#include <sys/types.h>
+#include "devices.h"
+
+gchar *dtree_info = NULL;
+
+static void add_to_moreinfo(const char *group, const char *key, char *value)
+{
+ char *new_key = g_strconcat("DTREE:", group, ":", key, NULL);
+ moreinfo_add_with_prefix("DEV", new_key, g_strdup(g_strstrip(value)));
+}
+
+void __scan_dtree()
+{
+ char *model = NULL;
+ g_file_get_contents("/proc/device-tree/model", &model, NULL, NULL);
+
+ dtree_info = g_strdup_printf(
+ "[%s]\n"
+ "%s=%s\n",
+ _("Device Tree"),
+ _("Model"), model);
+}