Commit 7a0d12e1 authored by Juha Yrjola's avatar Juha Yrjola

ARM: OMAP: Add support for a procfs entry for component versions

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: default avatarJuha Yrjölä <juha.yrjola@nokia.com>
parent e21ff927
......@@ -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
......
......@@ -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
......
/*
* linux/arch/arm/plat-omap/component-version.c
*
* Copyright (C) 2005 Nokia Corporation
* Written by Juha Yrjl <juha.yrjola@nokia.com>
*
* 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 <linux/init.h>
#include <linux/module.h>
#include <linux/err.h>
#include <linux/proc_fs.h>
#include <asm/arch/board.h>
#include <asm/arch/board-nokia.h>
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 Yrjl <juha.yrjola@nokia.com>");
MODULE_DESCRIPTION("Component version driver");
MODULE_LICENSE("GPL");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment