# 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

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

config HWINFO_STM32
	bool "STM32 hwinfo"
	default y
	depends on SOC_FAMILY_STM32
	select USE_STM32_LL_UTILS
	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_SIM
	bool "NXP kinetis device ID"
	default y
	depends on HAS_MCUX_SIM
	help
	  Enable NXP kinetis 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_SAM
	bool "Atmel SAM device ID"
	default y
	depends on SOC_FAMILY_SAM
	help
	  Enable Atmel SAM 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
endif
