From 0cc4c42f0af716bc5a363ad699160926e91a4d35 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 8 Sep 2021 13:50:20 +0100 Subject: [acpi] Allow for extraction of a MAC address from the DSDT/SSDT Some vendors provide a "system MAC address" within the DSDT/SSDT, to be used to override the MAC address for a USB docking station. A full implementation would require an ACPI bytecode interpreter, since at least one OEM allows the MAC address to be constructed by executable ACPI bytecode (rather than a fixed data structure). We instead attempt to extract a plausible-looking "_AUXMAC_#.....#" string that appears shortly after an "AMAC" or "MACA" signature. This should work for most implementations encountered in practice. Debugged-by: Andreas Hammarskjöld Signed-off-by: Michael Brown --- src/include/ipxe/acpimac.h | 14 ++++++++++++++ src/include/ipxe/errfile.h | 1 + 2 files changed, 15 insertions(+) create mode 100644 src/include/ipxe/acpimac.h (limited to 'src/include') diff --git a/src/include/ipxe/acpimac.h b/src/include/ipxe/acpimac.h new file mode 100644 index 000000000..de673eb28 --- /dev/null +++ b/src/include/ipxe/acpimac.h @@ -0,0 +1,14 @@ +#ifndef _IPXE_ACPIMAC_H +#define _IPXE_ACPIMAC_H + +/** @file + * + * ACPI MAC address + * + */ + +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +extern int acpi_mac ( uint8_t *hw_addr ); + +#endif /* _IPXE_ACPIMAC_H */ diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h index cf5757874..23e406b62 100644 --- a/src/include/ipxe/errfile.h +++ b/src/include/ipxe/errfile.h @@ -77,6 +77,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define ERRFILE_fdt ( ERRFILE_CORE | 0x00250000 ) #define ERRFILE_dma ( ERRFILE_CORE | 0x00260000 ) #define ERRFILE_cachedhcp ( ERRFILE_CORE | 0x00270000 ) +#define ERRFILE_acpimac ( ERRFILE_CORE | 0x00280000 ) #define ERRFILE_eisa ( ERRFILE_DRIVER | 0x00000000 ) #define ERRFILE_isa ( ERRFILE_DRIVER | 0x00010000 ) -- cgit v1.2.3-55-g7522