# Kconfig - Pinmux Dev configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

config PINMUX_DEV
	bool "Configure pinmux for early board testing"
	depends on PINMUX
	default n
	help
	Enables the use of the pinmux_set and pinmux_get functions for early
	prototyping on new hardware.  WARNING: When using these options, it
	is possible to permanently damage the hardware.

config PINMUX_DEV_NAME
	string "Configure pinmux for early board testing"
	depends on PINMUX_DEV
	default "PINMUX_DEV"
	help
	The name of the pinmux dev driver.

config PINMUX_DEV_ATMEL_SAM3X
	bool "Enable pinmux dev driver for Atmel SAM3X boards"
	depends on PINMUX_DEV && SOC_ATMEL_SAM3X8E
	help
	Enables the pinmux dev driver for boards based on the
	Atmel SAM3X family of microcontrollers.
	default n

config PINMUX_DEV_K64
	bool "Enable the pinmux dev driver for Freescale K64"
	depends on PINMUX_DEV && SOC_MK64F12
	help
	Enables the pinmux dev driver for Freescale K64.
	default n

config PINMUX_DEV_STM32
	bool "Enable pinmux dev driver for the ST STM32 family."
	depends on PINMUX_DEV && SOC_FAMILY_STM32
	help
	Enables the STM32 pinmux dev driver.
	default n

config PINMUX_DEV_ARM_V2M_BEETLE
	bool "Enable pinmux dev driver for ARM V2M Beetle boards"
	depends on PINMUX_DEV && SOC_SERIES_BEETLE
	help
	Enables the pinmux dev driver for boards based on the
	ARM Beetle SoC MCUs.
	default n
