diff --git a/drivers/hwinfo/CMakeLists.txt b/drivers/hwinfo/CMakeLists.txt index 30a15072489..099b1361221 100644 --- a/drivers/hwinfo/CMakeLists.txt +++ b/drivers/hwinfo/CMakeLists.txt @@ -13,4 +13,5 @@ zephyr_sources_ifdef(CONFIG_HWINFO_SAM4L hwinfo_sam4l.c) zephyr_sources_ifdef(CONFIG_HWINFO_SAM0 hwinfo_sam0.c) zephyr_sources_ifdef(CONFIG_HWINFO_LITEX hwinfo_litex.c) zephyr_sources_ifdef(CONFIG_HWINFO_PSOC6 hwinfo_psoc6.c) +zephyr_sources_ifdef(CONFIG_HWINFO_GECKO hwinfo_gecko.c) zephyr_sources_ifdef(CONFIG_HWINFO_SHELL hwinfo_shell.c) diff --git a/drivers/hwinfo/Kconfig b/drivers/hwinfo/Kconfig index 9089eb986d7..bbdc04e8cd7 100644 --- a/drivers/hwinfo/Kconfig +++ b/drivers/hwinfo/Kconfig @@ -100,4 +100,12 @@ config HWINFO_PSOC6 help Enable Cypress PSoC-6 hwinfo driver. +config HWINFO_GECKO + bool "GECKO hwinfo" + default y + depends on SOC_FAMILY_EXX32 + select HWINFO_HAS_DRIVER + help + Enable Silabs GECKO hwinfo driver. + endif diff --git a/drivers/hwinfo/hwinfo_gecko.c b/drivers/hwinfo/hwinfo_gecko.c new file mode 100644 index 00000000000..404b5d0c970 --- /dev/null +++ b/drivers/hwinfo/hwinfo_gecko.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 Sun Amar + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +ssize_t z_impl_hwinfo_get_device_id(uint8_t *buffer, size_t length) +{ + uint64_t unique_id = sys_cpu_to_be64(SYSTEM_GetUnique()); + + if (length > sizeof(unique_id)) { + length = sizeof(unique_id); + } + + memcpy(buffer, &unique_id, length); + + return length; +}