# HW Info driver configuration options

# Copyright (c) 2019 Alexander Wachter
# SPDX-License-Identifier: Apache-2.0

menuconfig HWINFO
	bool "Hardware Information driver"
	help
	  Enable hwinfo driver.

if HWINFO

module = HWINFO
module-str = HWINFO
source "subsys/logging/Kconfig.template.log_config"

config HWINFO_SHELL
	bool "HWINFO Shell"
	default y
	depends on SHELL
	help
	  Enable hwinfo Shell for testing.

config HWINFO_STM32
	bool "STM32 hwinfo"
	default y
	depends on SOC_FAMILY_STM32
	help
	  Enable STM32 hwinfo driver.

config HWINFO_NRF
	bool "NRF device ID"
	default y
	depends on SOC_FAMILY_NRF
	help
	  Enable Nordic NRF hwinfo driver.

config HWINFO_MCUX_RCM
	bool "NXP kinetis reset cause"
	default y
	depends on HAS_MCUX_RCM
	help
	  Enable NXP kinetis mcux RCM hwinfo driver.

config HWINFO_MCUX_SIM
	bool "NXP kinetis SIM device ID"
	default y
	depends on HAS_MCUX_SIM
	help
	  Enable NXP kinetis mcux SIM hwinfo driver.

config HWINFO_MCUX_SRC
	bool "NXP SRC reset cause"
	default y
	depends on HAS_MCUX_SRC
	help
	  Enable NXP i.MX mcux SRC hwinfo driver.

config HWINFO_MCUX_SYSCON
	bool "NXP LPC device ID"
	default y
	depends on HAS_MCUX_SYSCON && !SOC_SERIES_LPC54XXX
	help
	  Enable NXP LPC mcux hwinfo driver.

config HWINFO_IMXRT
	bool "NXP i.mx RT device ID"
	default y
	depends on SOC_SERIES_IMX_RT
	help
	  Enable NXP i.mx RT hwinfo driver.

config HWINFO_RPI_PICO
	bool "Raspberry Pi Pico hwinfo driver"
	default y
	depends on SOC_SERIES_RP2XXX
	select PICOSDK_USE_FLASH
	help
	  Enable Raspberry Pi Pico hwinfo driver.

config HWINFO_SAM_RSTC
	bool "Atmel SAM reset cause"
	default y
	depends on SOC_SERIES_SAM4S || SOC_SERIES_SAME70 || \
		   SOC_SERIES_SAMV71
	help
	  Enable Atmel SAM reset cause hwinfo driver.

config HWINFO_SAM
	bool "Atmel SAM device ID"
	default y
	depends on SOC_FAMILY_SAM && !SOC_SERIES_SAM4L
	help
	  Enable Atmel SAM device ID hwinfo driver.

config HWINFO_SAM4L
	bool "Atmel SAM4L device ID"
	default y
	depends on SOC_SERIES_SAM4L
	help
	  Enable Atmel SAM4L hwinfo driver.

config HWINFO_SAM0
	bool "Atmel SAM0 device ID"
	default y
	depends on SOC_FAMILY_SAM0
	help
	  Enable Atmel SAM0 hwinfo driver.

config HWINFO_ESP32
	bool "ESP32 device ID"
	default y
	depends on SOC_ESP32
	help
	  Enable ESP32 hwinfo driver.

config HWINFO_LITEX
	bool "LiteX device ID"
	default y
	depends on SOC_RISCV32_LITEX_VEXRISCV
	help
	  Enable LiteX hwinfo driver

config HWINFO_PSOC6
	bool "Cypress PSoC-6 unique device ID"
	default y
	depends on SOC_FAMILY_PSOC6
	help
	  Enable Cypress PSoC-6 hwinfo driver.

config HWINFO_GECKO
	bool "GECKO hwinfo"
	default y
	depends on SOC_FAMILY_EXX32 && !SOC_SERIES_EFR32MG21
	select SOC_GECKO_RMU
	help
	  Enable Silabs GECKO hwinfo driver.

endif
