# Kconfig - Pinmux Dev configuration options

#
# Copyright (c) 2016 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

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
       default "pmux_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_FRDM_K64F
       bool "Enable the pinmux dev driver for Freescale FRDM K64F"
       depends on PINMUX_DEV && SOC_FSL_FRDM_K64F
       help
       Enables the pinmux dev driver for Freescale FRDM K64F.
       default n

config PINMUX_DEV_GALILEO
       bool "Enable pinmux dev driver for Galileo"
       depends on PINMUX_DEV && BOARD_GALILEO
       help
       Enables the pinmux dev driver for the Galileo board.
       default n

config PINMUX_DEV_QUARK_MCU
       bool "Enable the generic pinmux dev driver for Quark MCUs"
       depends on PINMUX_DEV && (SOC_QUARK_D2000 || SOC_QUARK_SE)
       help
       Enables the pinmux dev driver for Quark family of microcontrollers, currently,
       Quark D2000 and Quark SE.
       default n

config PINMUX_DEV_QMSI
       bool "Enable QMSI pinmux dev driver"
       depends on PINMUX_DEV && QMSI_DRIVERS
       help
       Enables the pinmux dev driver for QMSI supported platforms.
       default n

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