This patch puts the EP93xx chip revision and unique ID into /proc/cpuinfo. This is necessary to be able to set a unique MAC address for DHCP purposes by adding a line to /etc/network/interfaces: # Generate a unique locally-assigned MAC address from the CPU serial number pre-up ifconfig eth0 hw ether `sed -n 's/^Serial.* 000000/02/p' /proc/cpuinfo` It uses the chip revision reading code in the ep93xx-chip-revision patch. Really, this is wrong, since /proc/cpuinfo should report the revision and serial number of the ARM920T processor, while these are the rev and serial of the EP93xx SoC. In a future kernel (>2.6.34) there may be a new file /proc/socinfo for this information. -martinwguy 14 May 2010 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -54,6 +54,12 @@ #include #include +#if defined(CONFIG_ARCH_EP93XX) +#include +#include +#include +#endif + #if defined(CONFIG_DEPRECATED_PARAM_STRUCT) #include "compat.h" #endif @@ -1087,9 +1093,16 @@ static int c_show(struct seq_file *m, vo seq_puts(m, "\n"); seq_printf(m, "Hardware\t: %s\n", machine_name); +#if defined(CONFIG_ARCH_EP93XX) + seq_printf(m, "Revision\t: %04x\n", + ep93xx_chip_revision()); + seq_printf(m, "Serial\t\t: %016x\n", + *((unsigned int *)EP93XX_SECURITY_UNIQID)); +#else seq_printf(m, "Revision\t: %04x\n", system_rev); seq_printf(m, "Serial\t\t: %08x%08x\n", system_serial_high, system_serial_low); +#endif return 0; } --- a/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h +++ b/arch/arm/mach-ep93xx/include/mach/ep93xx-regs.h @@ -97,6 +97,8 @@ #define EP93XX_I2S_BASE EP93XX_APB_IOMEM(0x00020000) #define EP93XX_SECURITY_BASE EP93XX_APB_IOMEM(0x00030000) +#define EP93XX_SECURITY_REG(x) (EP93XX_SECURITY_BASE + (x)) +#define EP93XX_SECURITY_UNIQID EP93XX_SECURITY_REG(0x2440) #define EP93XX_GPIO_PHYS_BASE EP93XX_APB_PHYS(0x00040000) #define EP93XX_GPIO_BASE EP93XX_APB_IOMEM(0x00040000)