mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 23:34:47 +07:00
ARM: 8804/1: zImage: atags_to_fdt: add serial-number for ATAG_SERIAL
If the system passes an ATAG_SERIAL, convert that into a /serial-number node so that the system serial number will be passed through the FDT and be present under the kernel. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:
parent
7f97686715
commit
31d0b9f998
@ -98,6 +98,24 @@ static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
|
||||
setprop_string(fdt, "/chosen", "bootargs", cmdline);
|
||||
}
|
||||
|
||||
static void hex_str(char *out, uint32_t value)
|
||||
{
|
||||
uint32_t digit;
|
||||
int idx;
|
||||
|
||||
for (idx = 7; idx >= 0; idx--) {
|
||||
digit = value >> 28;
|
||||
value <<= 4;
|
||||
digit &= 0xf;
|
||||
if (digit < 10)
|
||||
digit += '0';
|
||||
else
|
||||
digit += 'A'-10;
|
||||
*out++ = digit;
|
||||
}
|
||||
*out = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert and fold provided ATAGs into the provided FDT.
|
||||
*
|
||||
@ -180,6 +198,11 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)
|
||||
initrd_start);
|
||||
setprop_cell(fdt, "/chosen", "linux,initrd-end",
|
||||
initrd_start + initrd_size);
|
||||
} else if (atag->hdr.tag == ATAG_SERIAL) {
|
||||
char serno[16+2];
|
||||
hex_str(serno, atag->u.serialnr.high);
|
||||
hex_str(serno+8, atag->u.serialnr.low);
|
||||
setprop_string(fdt, "/", "serial-number", serno);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user