# 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_SERIES_SAM3X
	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
