svn commit: r245079 - in head/sys/arm: arm include
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Sat Jan 5 23:08:11 UTC 2013
Author: gonzo
Date: Sat Jan 5 23:08:10 2013
New Revision: 245079
URL: http://svnweb.freebsd.org/changeset/base/245079
Log:
Add hw.board.serial and hw.board.revision for exporting board-specific info
Modified:
head/sys/arm/arm/machdep.c
head/sys/arm/include/machdep.h
Modified: head/sys/arm/arm/machdep.c
==============================================================================
--- head/sys/arm/arm/machdep.c Sat Jan 5 22:56:16 2013 (r245078)
+++ head/sys/arm/arm/machdep.c Sat Jan 5 23:08:10 2013 (r245079)
@@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$");
#include <sys/ptrace.h>
#include <sys/signalvar.h>
#include <sys/syscallsubr.h>
+#include <sys/sysctl.h>
#include <sys/sysent.h>
#include <sys/sysproto.h>
#include <sys/uio.h>
@@ -162,8 +163,6 @@ const struct pmap_devmap *pmap_devmap_bo
uint32_t board_id;
struct arm_lbabi_tag *atag_list;
-uint32_t revision;
-uint64_t serial;
char linux_command_line[LBABI_MAX_COMMAND_LINE + 1];
char atags[LBABI_MAX_COMMAND_LINE * 2];
uint32_t memstart[LBABI_MAX_BANKS];
@@ -171,6 +170,31 @@ uint32_t memsize[LBABI_MAX_BANKS];
uint32_t membanks;
#endif
+static uint32_t board_revision;
+/* hex representation of uint64_t */
+static char board_serial[32];
+
+SYSCTL_NODE(_hw, OID_AUTO, board, CTLFLAG_RD, 0, "Board attributes");
+SYSCTL_UINT(_hw_board, OID_AUTO, revision, CTLFLAG_RD,
+ &board_revision, 0, "Board revision");
+SYSCTL_STRING(_hw_board, OID_AUTO, serial, CTLFLAG_RD,
+ board_serial, 0, "Board serial");
+
+void
+board_set_serial(uint64_t serial)
+{
+
+ snprintf(board_serial, sizeof(board_serial)-1,
+ "%016jx", serial);
+}
+
+void
+board_set_revision(uint32_t revision)
+{
+
+ board_revision = revision;
+}
+
void
sendsig(catcher, ksi, mask)
sig_t catcher;
@@ -849,6 +873,8 @@ vm_offset_t
linux_parse_boot_param(struct arm_boot_params *abp)
{
struct arm_lbabi_tag *walker;
+ uint32_t revision;
+ uint64_t serial;
/*
* Linux boot ABI: r0 = 0, r1 is the board type (!= 0) and r2
@@ -883,9 +909,11 @@ linux_parse_boot_param(struct arm_boot_p
case ATAG_SERIAL:
serial = walker->u.tag_sn.low |
((uint64_t)walker->u.tag_sn.high << 32);
+ board_set_serial(serial);
break;
case ATAG_REVISION:
revision = walker->u.tag_rev.rev;
+ board_set_revision(revision);
break;
case ATAG_CMDLINE:
/* XXX open question: Parse this for boothowto? */
Modified: head/sys/arm/include/machdep.h
==============================================================================
--- head/sys/arm/include/machdep.h Sat Jan 5 22:56:16 2013 (r245078)
+++ head/sys/arm/include/machdep.h Sat Jan 5 23:08:10 2013 (r245079)
@@ -37,6 +37,10 @@ void initarm_gpio_init(void);
void initarm_late_init(void);
int platform_devmap_init(void);
+/* Board-specific attributes */
+void board_set_serial(uint64_t);
+void board_set_revision(uint32_t);
+
/* Needs to be initialised by platform_devmap_init */
extern const struct pmap_devmap *pmap_devmap_bootstrap_table;
More information about the svn-src-all
mailing list