From 7a0d12e1c10bd877a6c39684eca3d4e7902a7c23 Mon Sep 17 00:00:00 2001 From: Juha Yrjola Date: Thu, 9 Feb 2006 12:55:08 +0200 Subject: [PATCH] ARM: OMAP: Add support for a procfs entry for component versions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Some bootloaders have the ability to send information about the various component versions (e.g. HW revision, bootloader version) through the ATAG mechanism. This patch implements a procfs entry for reading such information. Signed-off-by: Juha Yrjölä --- arch/arm/plat-omap/Kconfig | 8 ++++ arch/arm/plat-omap/Makefile | 1 + arch/arm/plat-omap/component-version.c | 65 ++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 arch/arm/plat-omap/component-version.c diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig index c42fdbffab9..28ca5ad4376 100644 --- a/arch/arm/plat-omap/Kconfig +++ b/arch/arm/plat-omap/Kconfig @@ -47,6 +47,14 @@ config OMAP_BOOT_REASON Say Y, if you want to have a procfs entry for reading the boot reason in user-space. +config OMAP_COMPONENT_VERSION + bool "Support for component version display" + depends on OMAP_BOOT_TAG && PROC_FS + default n + help + Say Y, if you want to have a procfs entry for reading component + versions (supplied by the bootloader) in user-space. + config OMAP_GPIO_SWITCH bool "GPIO switch support" depends on OMAP_BOOT_TAG diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index 58548616a0b..34ba8fdd9cc 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile @@ -19,6 +19,7 @@ obj-$(CONFIG_OMAP_STI) += sti/ obj-$(CONFIG_CPU_FREQ) += cpu-omap.o obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o obj-$(CONFIG_OMAP_BOOT_REASON) += bootreason.o +obj-$(CONFIG_OMAP_COMPONENT_VERSION) += component-version.o obj-$(CONFIG_OMAP_GPIO_SWITCH) += gpio-switch.o # DSP subsystem diff --git a/arch/arm/plat-omap/component-version.c b/arch/arm/plat-omap/component-version.c new file mode 100644 index 00000000000..a9fe63d5e72 --- /dev/null +++ b/arch/arm/plat-omap/component-version.c @@ -0,0 +1,65 @@ +/* + * linux/arch/arm/plat-omap/component-version.c + * + * Copyright (C) 2005 Nokia Corporation + * Written by Juha Yrjölä + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include + +static int component_version_read_proc(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + int len, i; + const struct omap_version_config *ver; + char *p; + + i = 0; + p = page; + while ((ver = omap_get_nr_config(OMAP_TAG_VERSION_STR, + struct omap_version_config, i)) != NULL) { + p += sprintf(p, "%-12s%s\n", ver->component, ver->version); + i++; + } + + len = (p - page) - off; + if (len < 0) + len = 0; + + *eof = (len <= count) ? 1 : 0; + *start = page + off; + + return len; +} + +static int __init component_version_init(void) +{ + if (omap_get_config(OMAP_TAG_VERSION_STR, struct omap_version_config) == NULL) + return -ENODEV; + if (!create_proc_read_entry("component_version", S_IRUGO, NULL, + component_version_read_proc, NULL)) + return -ENOMEM; + + return 0; +} + +static void __exit component_version_exit(void) +{ + remove_proc_entry("component_version", NULL); +} + +late_initcall(component_version_init); +module_exit(component_version_exit); + +MODULE_AUTHOR("Juha Yrjölä "); +MODULE_DESCRIPTION("Component version driver"); +MODULE_LICENSE("GPL"); -- 2.41.1