diff options
Diffstat (limited to 'platforms/avr/hardware_id.c')
-rw-r--r-- | platforms/avr/hardware_id.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/platforms/avr/hardware_id.c b/platforms/avr/hardware_id.c new file mode 100644 index 0000000000..b61f0d92df --- /dev/null +++ b/platforms/avr/hardware_id.c @@ -0,0 +1,19 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +// For some reason this bit is undocumented for some AVR parts and not defined in their avr-libc IO headers +// See https://stackoverflow.com/questions/12350914/how-to-read-atmega-32-signature-row +#ifndef SIGRD +# define SIGRD 5 +#endif // SIGRD + +#include <avr/boot.h> +#include "hardware_id.h" + +hardware_id_t get_hardware_id(void) { + hardware_id_t id = {0}; + for (uint8_t i = 0; i < 10; i += 1) { + ((uint8_t*)&id)[i] = boot_signature_byte_get(i + 0x0E); + } + return id; +} |