menu "Platform Selection"

    choice ADK_FROSTED_ARCH
        prompt "Architecture"
        default ADK_FROSTED_ARCH_LM3S

        config ADK_FROSTED_ARCH_LM3S
        bool "LM3S"
        help
            Enable support for Stellaris LM3S systems

        config ADK_FROSTED_ARCH_LPC17XX
        bool "LPC17XX"
        help
            Enable support for NXP LPC17xx systems

        config ADK_FROSTED_ARCH_STM32F4
        bool "STM32F4"
        help
            Enable support for ST STM32F4 systems

        config ADK_FROSTED_ARCH_STM32F7
        bool "STM32F7"
        help
            Enable support for ST STM32F7 systems
    endchoice

if ADK_FROSTED_ARCH_STM32F7

choice 
    prompt "MCU"
    default ADK_FROSTED_ARCH_STM32F746_NG

config ADK_FROSTED_ARCH_STM32F746_NG
    bool "STM32F746NG 1MB"
    select ADK_FROSTED_FLASH_SIZE_1MB
    select ADK_FROSTED_RAM_SIZE_320KB
    select ADK_FROSTED_ARCH_STM32F746

config ADK_FROSTED_ARCH_STM32F769_NI
    bool "STM32F769NI 2MB"
    select ADK_FROSTED_FLASH_SIZE_2MB
    select ADK_FROSTED_RAM_SIZE_368KB
    select ADK_FROSTED_ARCH_STM32F769

endchoice

endif

if ADK_FROSTED_ARCH_STM32F4

choice 
    prompt "MCU"
    default ADK_FROSTED_ARCH_STM32F407_XG

config ADK_FROSTED_ARCH_STM32F401_XB
    bool "STM32F401xB 128KB"
    select ADK_FROSTED_FLASH_SIZE_128KB
    select ADK_FROSTED_RAM_SIZE_64KB
    select ADK_FROSTED_ARCH_STM32F401
config ADK_FROSTED_ARCH_STM32F401_XC
    bool "STM32F401xC 256KB"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_64KB
    select ADK_FROSTED_ARCH_STM32F401
config ADK_FROSTED_ARCH_STM32F401_XD
    bool "STM32F401xD 384KB"
    select ADK_FROSTED_FLASH_SIZE_384KB
    select ADK_FROSTED_RAM_SIZE_96KB
    select ADK_FROSTED_ARCH_STM32F401
config ADK_FROSTED_ARCH_STM32F401_XE
    bool "STM32F401xE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_96KB
    select ADK_FROSTED_ARCH_STM32F401

config ADK_FROSTED_ARCH_STM32F405_XG
    bool "STM32F405xG 1MB"
    select ADK_FROSTED_FLASH_SIZE_1MB
    select ADK_FROSTED_RAM_SIZE_192KB
    select ADK_FROSTED_ARCH_STM32F405
config ADK_FROSTED_ARCH_STM32F405_XE
    bool "STM32F407xE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_192KB
    select ADK_FROSTED_ARCH_STM32F405

config ADK_FROSTED_ARCH_STM32F407_XG
    bool "STM32F407xG 1MB"
    select ADK_FROSTED_FLASH_SIZE_1MB
    select ADK_FROSTED_RAM_SIZE_192KB
    select ADK_FROSTED_ARCH_STM32F407
config ADK_FROSTED_ARCH_STM32F407_XE
    bool "STM32F407xE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_192KB
    select ADK_FROSTED_ARCH_STM32F407
    
config ADK_FROSTED_ARCH_STM32F411_XE
    bool "STM32F411xE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_128KB
    select ADK_FROSTED_ARCH_STM32F411
config ADK_FROSTED_ARCH_STM32F411_XC
    bool "STM32F411xC 256KB"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_128KB
    select ADK_FROSTED_ARCH_STM32F411

config ADK_FROSTED_ARCH_STM32F429_XE
    bool "STM32F429xE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_256KB
    select ADK_FROSTED_ARCH_STM32F429
config ADK_FROSTED_ARCH_STM32F429_XG
    bool "STM32F429xG 1MB"
    select ADK_FROSTED_FLASH_SIZE_1MB
    select ADK_FROSTED_RAM_SIZE_256KB
    select ADK_FROSTED_ARCH_STM32F429
config ADK_FROSTED_ARCH_STM32F429_XI
    bool "STM32F429xI 2MB"
    select ADK_FROSTED_FLASH_SIZE_2MB
    select ADK_FROSTED_RAM_SIZE_256KB
    select ADK_FROSTED_ARCH_STM32F429
config ADK_FROSTED_ARCH_STM32F446_ZE
    bool "STM32F446ZE 512KB"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_128KB
    select ADK_FROSTED_ARCH_STM32F446
endchoice

endif

if ADK_FROSTED_ARCH_LPC17XX

choice 
    prompt "MCU"
    default ADK_FROSTED_ARCH_LPC1768
config ADK_FROSTED_ARCH_LPC1763
    bool "LPC1763"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_32KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1764
    bool "LPC1764"
    select ADK_FROSTED_FLASH_SIZE_128KB
    select ADK_FROSTED_RAM_SIZE_16KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1765
    bool "LPC1765"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_32KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1766
    bool "LPC1766"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_32KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1767
    bool "LPC1767"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_32KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1768
    bool "LPC1768"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_32KB
    select ADK_FROSTED_CLK_100MHZ
config ADK_FROSTED_ARCH_LPC1769
    bool "LPC1769"
    select ADK_FROSTED_FLASH_SIZE_512KB
    select ADK_FROSTED_RAM_SIZE_32KB
endchoice

endif

if ADK_FROSTED_ARCH_LM3S

choice 
    prompt "MCU"
    default ADK_FROSTED_LM3S6965
config ADK_FROSTED_ARCH_LM3S6965
    bool "LM3S6965"
    select ADK_FROSTED_FLASH_SIZE_256KB
    select ADK_FROSTED_RAM_SIZE_64KB
config ADK_FROSTED_ARCH_LM3SVIRT
    bool "LM3S-VIRTUAL"
    select ADK_FROSTED_FLASH_SIZE_1MB
    select ADK_FROSTED_RAM_SIZE_256KB
endchoice

endif

    config ADK_FROSTED_FLASH_SIZE_2MB
            bool
    config ADK_FROSTED_FLASH_SIZE_1MB
            bool
    config ADK_FROSTED_FLASH_SIZE_512KB
            bool
    config ADK_FROSTED_FLASH_SIZE_384KB
            bool
    config ADK_FROSTED_FLASH_SIZE_256KB
            bool
    config ADK_FROSTED_FLASH_SIZE_128KB
            bool

    config ADK_FROSTED_RAM_SIZE_368KB
            bool
    config ADK_FROSTED_RAM_SIZE_320KB
            bool
    config ADK_FROSTED_RAM_SIZE_256KB
            bool
    config ADK_FROSTED_RAM_SIZE_192KB
            bool
    config ADK_FROSTED_RAM_SIZE_128KB
            bool
    config ADK_FROSTED_RAM_SIZE_96KB
            bool
    config ADK_FROSTED_RAM_SIZE_64KB
            bool
    config ADK_FROSTED_RAM_SIZE_32KB
            bool
    config ADK_FROSTED_RAM_SIZE_16KB
            bool

    config ADK_FROSTED_ARCH_STM32F401
        bool
    config ADK_FROSTED_ARCH_STM32F405
        bool
    config ADK_FROSTED_ARCH_STM32F407
        bool
    config ADK_FROSTED_ARCH_STM32F411
        bool
    config ADK_FROSTED_ARCH_STM32F429
        bool
    config ADK_FROSTED_ARCH_STM32F446
        bool
    config ADK_FROSTED_ARCH_STM32F746
        bool
    config ADK_FROSTED_ARCH_STM32F769
        bool

    config ADK_FROSTED_DEVSTM32DMA
        bool

    #Temp hack to allow '407 & '411 clock setups to coexist
    choice
        prompt "Clock Speed"
        config ADK_FROSTED_CLK_48MHZ
            bool "48MHz"
            depends on (ADK_FROSTED_ARCH_STM32F401  || ADK_FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F429)
        config ADK_FROSTED_CLK_84MHZ
            bool "84MHz"
            depends on (ADK_FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F429)
        config ADK_FROSTED_CLK_100MHZ
            bool "100MHz"
            depends on ADK_FROSTED_ARCH_LPC17XX
        config ADK_FROSTED_CLK_120MHZ
            bool "120MHz"
            depends on (ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_LPC1769)
        config ADK_FROSTED_CLK_168MHZ
            bool "168MHz"
            depends on (ADK_FROSTED_ARCH_STM32F407 ||  ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_STM32F429)
        config ADK_FROSTED_CLK_180MHZ
            bool "180MHz"
            depends on (ADK_FROSTED_ARCH_STM32F446)
        config ADK_FROSTED_CLK_216MHZ
            bool "216MHZ"
            depends on (ADK_FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769)
    endchoice

    choice
        prompt "Board"
    config ADK_FROSTED_MACH_STM32F746Discovery
        bool "STM32F746 Discovery"
        depends on (ADK_FROSTED_ARCH_STM32F746)
    config ADK_FROSTED_MACH_STM32F769Discovery
        bool "STM32F769 Discovery"
        depends on (ADK_FROSTED_ARCH_STM32F769)
    config ADK_FROSTED_MACH_STM32F746Nucleo144
        bool "STM32F746 Nucleo-144"
        depends on (ADK_FROSTED_ARCH_STM32F746)
    config ADK_FROSTED_MACH_STM32F407Discovery
        bool "STM32F407Discovery"
        depends on (ADK_FROSTED_ARCH_STM32F407)
    config ADK_FROSTED_MACH_STM32F405Pyboard
        bool "STM32F405 PyBoard (micropython)"
        depends on (ADK_FROSTED_ARCH_STM32F405)
    config ADK_FROSTED_MACH_STM32F4x1Discovery
        bool "STM32F4x1Discovery"
        depends on (   ADK_FROSTED_ARCH_STM32F401 ||ADK_FROSTED_ARCH_STM32F411)
    config ADK_FROSTED_MACH_STM32F429Discovery
        bool "STM32F429Discovery"
        depends on (ADK_FROSTED_ARCH_STM32F429)
    config ADK_FROSTED_MACH_STM32F446Nucleo
        bool "STM32F446 Nucleo"
        depends on (ADK_FROSTED_ARCH_STM32F446)

    config ADK_FROSTED_MACH_LPC1768MBED
        bool "LPC1768MBED"
        depends on ADK_FROSTED_ARCH_LPC1768
    config ADK_FROSTED_MACH_SEEEDPRO
        bool "SEEEDPRO"
        depends on ADK_FROSTED_ARCH_LPC1768
    config ADK_FROSTED_MACH_LPC1679XPRESSO
        bool "LPC1679XPRESSO"
        depends on ADK_FROSTED_ARCH_LPC1769
    config ADK_FROSTED_MACH_LM3S6965EVB
        bool "lm3s6965evb"
        depends on ADK_FROSTED_ARCH_LM3S6965
    config ADK_FROSTED_MACH_LM3SVIRT
        bool "lm3s-qemu"
        depends on ADK_FROSTED_ARCH_LM3SVIRT

    endchoice

    config ADK_FROSTED_STM32F7_SDRAM
    depends on ADK_FROSTED_ARCH_STM32F7
    bool "Enable external SDRAM"
    default y

    config ADK_FROSTED_STM32F4_SDRAM
    depends on ADK_FROSTED_ARCH_STM32F4
    bool "Enable external SDRAM"
    default n

endmenu


menu "Kernel Configuration"

config ADK_FROSTED_KFLASHMEM_SIZE
    int "Kernel Flash size (KB)"
    default 64

config ADK_FROSTED_KRAMMEM_SIZE
    int "Kernel RAM size (KB)"
    default 64

choice
prompt "Tasks Stack Size"
default ADK_FROSTED_TASK_STACK_SIZE_2K

   config ADK_FROSTED_TASK_STACK_SIZE_1K
   bool "Tiny stack (1024 Bytes)"

   config ADK_FROSTED_TASK_STACK_SIZE_2K
   bool "Small stack (2048 Bytes)"

   config ADK_FROSTED_TASK_STACK_SIZE_4K
   bool "Big stack (4096 Bytes)"

   config ADK_FROSTED_TASK_STACK_SIZE_8K
   bool "Huge stack (8192 Bytes)"
endchoice

config ADK_FROSTED_MPU
bool "Run-time Memory Protection"
default y

config ADK_FROSTED_PTHREADS
bool "POSIX Threads (pthreads)"
default y

config ADK_FROSTED_SIGNALS
bool "Process Signals"
default y

config ADK_FROSTED_PIPE
bool "Pipe"
default y

config ADK_FROSTED_SOCK_UNIX
bool "UNIX Sockets for IPC"
default n


endmenu



menu "Debugging options"

config ADK_FROSTED_KLOG
    bool "Enable kernel logging"
    default y

config ADK_FROSTED_KLOG_SIZE
    depends on ADK_FROSTED_KLOG
    int "Kernel log buffer size"
    default 256

config ADK_FROSTED_MEMFAULT_DBG
    bool "Enable extended segfault debug"
    default y

config ADK_FROSTED_HARDFAULT_DBG
    bool "Enable extended hardfault debug"
    default n

config ADK_FROSTED_STRACE
    bool "Enable syscall tracer"
    default n

endmenu


menu "Filesystems"
       config ADK_FROSTED_SYSFS
       bool "SysFS (/sys)"
       default y

       config ADK_FROSTED_MEMFS
       bool "MemFS"
       default y

       config ADK_FROSTED_XIPFS
       bool "Xip FS"
       default y

       config ADK_FROSTED_FATFS
       bool "Fat FS"
       default n

       config ADK_FROSTED_FAT32
       depends on ADK_FROSTED_FATFS
       bool "Fat32 support"
       default n

       config ADK_FROSTED_FAT16
       depends on ADK_FROSTED_FATFS
       bool "Fat16 support"
       default y

endmenu

menu "Networking"
       config ADK_FROSTED_SOCK_INET
       bool "TCP/IP Socket support"
       default n
       config ADK_FROSTED_TCPIP_MEMPOOL_YN
       bool "Separate memory pool for TCP/IP stack"
       default n
       if ADK_FROSTED_TCPIP_MEMPOOL_YN
        config ADK_FROSTED_TCPIP_MEMPOOL
        string "TCP/IP pool base address"
        default "0x10000000"
       endif
       choice ADK_FROSTED_NET_STACK
        prompt "TCP/IP stack selection"
        default ADK_FROSTED_PICOTCP
        depends on ADK_FROSTED_SOCK_INET

        config ADK_FROSTED_PICOTCP
        bool "Built-in PicoTCP"
       endchoice

if ADK_FROSTED_PICOTCP 

menu "picoTCP configuration"

config ADK_FROSTED_CONFIG_PICOTCP_IPV4
    bool "Support for IP version 4"
    default y

config ADK_FROSTED_CONFIG_PICOTCP_IPV6
    bool "Support for IP version 6"
    default n

config ADK_FROSTED_CONFIG_PICOTCP_TCP
    bool "Support for TCP"
    default y

config ADK_FROSTED_CONFIG_PICOTCP_UDP
    bool "Support for UDP"
    default y

config ADK_FROSTED_CONFIG_PICOTCP_DNS
    bool "Support for DNS client"
    default y

config ADK_FROSTED_CONFIG_PICOTCP_MCAST
    bool "Support for Multicast"
    default n

config ADK_FROSTED_CONFIG_PICOTCP_NAT
    bool "Support for NAT"
    default n

config ADK_FROSTED_CONFIG_PICOTCP_IPFILTER
    bool "Support for IP Filter"
    default n

config ADK_FROSTED_CONFIG_PICOTCP_LOOP
    bool "Support for loopback device"
    default y

config ADK_FROSTED_CONFIG_PICOTCP_DEBUG
    bool "Activate debugging symbols"
    default n

endmenu
endif

endmenu

menu "Device Drivers"
       config ADK_FROSTED_DEVNULL
       bool "Support for /dev/null and /dev/zero"
       default y

       menuconfig ADK_FROSTED_DEVUART
       bool "Generic UART driver"
       default y

       if ADK_FROSTED_DEVUART

            config ADK_FROSTED_USART_0
            bool "USART 0"
            depends on (FROSTED_ARCH_LM3S6965 || ADK_FROSTED_ARCH_LM3SVIRT)

            config ADK_FROSTED_USART_1
            bool "USART 1"
            depends on (FROSTED_ARCH_LM3S6965 || ADK_FROSTED_ARCH_LM3SVIRT || \
                        ADK_FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_STM32F407  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446 || \
                        ADK_FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769)

            config ADK_FROSTED_USART_2
            bool "USART 2"
            depends on (FROSTED_ARCH_LM3S6965 || ADK_FROSTED_ARCH_LM3SVIRT || \
                        ADK_FROSTED_ARCH_STM32F401 || ADK_FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_STM32F429  || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F446 || \
                        ADK_FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769 )

            config ADK_FROSTED_USART_3
            bool "USART 3"
            depends on (FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769 )

            config ADK_FROSTED_USART_6
            bool "USART 6"
            depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405 || ADK_FROSTED_ARCH_STM32F446 || \
                        ADK_FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769 )

            config ADK_FROSTED_UART_0
            bool "UART 0"
            depends on ADK_FROSTED_ARCH_LPC17XX

            config ADK_FROSTED_UART_1
            bool "UART 1"
            depends on ADK_FROSTED_ARCH_LPC17XX

            config ADK_FROSTED_UART_2
            bool "UART 2"
            depends on ADK_FROSTED_ARCH_LPC17XX

            config ADK_FROSTED_UART_3
            bool "UART 3"
            depends on ADK_FROSTED_ARCH_LPC17XX

       endif

       config ADK_FROSTED_DEVF4DSP
       bool "STM32F4 Sound driver"
       depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446)
       select ADK_FROSTED_DEVSTM32DMA
       default n
    
       config ADK_FROSTED_DEVSTM32USB
       bool
       
       menuconfig ADK_FROSTED_DEVSTM32USBFS
       bool "Support for Full Speed USB OTG"
       depends on (!ADK_FROSTED_DEVSTM32USBHFS) && (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446 || \
                   ADK_FROSTED_ARCH_STM32F746)
       default n
       select ADK_FROSTED_DEVSTM32USB
       if ADK_FROSTED_DEVSTM32USBFS
          choice
            prompt "USB FS OTG mode"
            default ADK_FROSTED_USBFS_GUEST
            config ADK_FROSTED_USBFS_HOST
            bool "Host mode"

            config ADK_FROSTED_USBFS_GUEST
            bool "Device mode"

          endchoice
       endif

       menuconfig ADK_FROSTED_DEVSTM32USBHS
       bool "Support for High Speed USB OTG"
       depends on (FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769)
       select ADK_FROSTED_DEVSTM32USB
       default n
       if ADK_FROSTED_DEVSTM32USBHS
          choice
            prompt "USB HS OTG mode"
            default ADK_FROSTED_USBHS_GUEST
            config ADK_FROSTED_USBHS_HOST
            bool "Host mode"

            config ADK_FROSTED_USBHS_GUEST
            bool "Device mode"

          endchoice

        endif

      config ADK_FROSTED_DEV_USB_ETH
      depends on ADK_FROSTED_PICOTCP && ( (FROSTED_DEVSTM32USBHS && ADK_FROSTED_USBHS_GUEST) || (FROSTED_DEVSTM32USBFS && ADK_FROSTED_USBFS_GUEST) )
      select ADK_FROSTED_DEVSTM32USB
      bool "Ethernet over USB (CDC-ECM)"
      default n

      if ADK_FROSTED_DEV_USB_ETH
      config ADK_FROSTED_USB_DEFAULT_IP
      string "Default (boot-up) address for usb0"
      default 192.168.6.150

      config ADK_FROSTED_USB_DEFAULT_NM
      string "Default (boot-up) netmask for usb0"
      default 255.255.255.0

      config ADK_FROSTED_USB_DEFAULT_GW
      string "Default (boot-up) gateway for usb0"
      default 192.168.6.1
      endif


       config ADK_FROSTED_DEVTIM
       bool "System CPU timer on TIM2"
       depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446 || ADK_FROSTED_ARCH_STM32F746)
       default n

       config ADK_FROSTED_DEVADC
       bool "Generic ADC driver"
       depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446)
       select ADK_FROSTED_DEVSTM32DMA
       default n


       config ADK_FROSTED_DEVF4ETH
       bool "STM32F4 Ethernet driver"
       depends on ((FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446) && ADK_FROSTED_PICOTCP)
       default n

       config ADK_FROSTED_DEVF7ETH
       bool "STM32F7 Ethernet driver"
       depends on ((FROSTED_ARCH_STM32F746 || ADK_FROSTED_ARCH_STM32F769) && ADK_FROSTED_PICOTCP)
       default n

       config ADK_FROSTED_DEVLM3SETH
       bool "LM3S Ethernet driver"
       depends on ((FROSTED_ARCH_LM3S) && ADK_FROSTED_PICOTCP)
       default n

       if ADK_FROSTED_DEVF4ETH || ADK_FROSTED_DEVF7ETH || ADK_FROSTED_DEVLM3SETH
               config ADK_FROSTED_ETH_DEFAULT_IP
               string "Default (boot-up) address for eth0"
               default 192.168.2.150

               config ADK_FROSTED_ETH_DEFAULT_NM
               string "Default (boot-up) netmask for eth0"
               default 255.255.255.0

               config ADK_FROSTED_ETH_DEFAULT_GW
               string "Default (boot-up) gateway for eth0"
               default 192.168.2.1

       endif

       config ADK_FROSTED_DEVSTM32SDIO
       bool "STM32F4 SD I/O driver"
       depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F7|| ADK_FROSTED_ARCH_STM32F446)
       default n

       menuconfig ADK_FROSTED_DEVSTM32I2C
       bool "STM32 I2C driver"
       depends on (FROSTED_ARCH_STM32F401 ||FROSTED_ARCH_STM32F411 || ADK_FROSTED_ARCH_STM32F407 || ADK_FROSTED_ARCH_STM32F405  || ADK_FROSTED_ARCH_STM32F429 || ADK_FROSTED_ARCH_STM32F446 || ADK_FROSTED_ARCH_STM32F746)
       select ADK_FROSTED_DEVSTM32DMA
       default n


           if ADK_FROSTED_DEVSTM32I2C
                config ADK_FROSTED_I2C1
                bool "I2C 1"
                default n
                config ADK_FROSTED_I2C2
                bool "I2C 2"
                default n
                config ADK_FROSTED_I2C3
                bool "I2C 3"
                default y
           endif

           config ADK_FROSTED_DEVCS43L22
           tristate "CS43L22 driver (Stereo DAC)"
           depends on (FROSTED_DEVSTM32I2C)
           default n


           config ADK_FROSTED_DEVLSM303DLHC
           tristate "LSM303DLHC driver (Accelerometer & Magnetometer)"
           depends on (FROSTED_DEVSTM32I2C)
           default n
           
           config ADK_FROSTED_DEVMCCOG21
           tristate "MCCOG21 driver (2-lines B/W display)"
           depends on (FROSTED_DEVSTM32I2C)
           default n
           
           config ADK_FROSTED_DEVFT5336
           tristate "FT5336 driver (Touchscreen STM32F746)"
           depends on (FROSTED_DEVSTM32I2C)
           default n

           config ADK_FROSTED_DEVSTMPE811
           tristate "STMPE811 driver (Touchscreen)"
           depends on (FROSTED_DEVSTM32I2C)
           default n



       menuconfig ADK_FROSTED_DEVSPI
           bool "Generic SPI driver"
           depends on (FROSTED_ARCH_STM32F4 || ADK_FROSTED_ARCH_STM32F7)
           select ADK_FROSTED_DEVSTM32DMA
           default n

           if ADK_FROSTED_DEVSPI
                config ADK_FROSTED_SPI_1
                bool "SPI 1"

                config ADK_FROSTED_SPI_5
                bool "SPI 5"

           endif

           config ADK_FROSTED_DEVLIS3DSH
           tristate "LIS3DSH driver (3-Axis Accelerometer)"
           depends on (FROSTED_DEVSPI)
           default n

           config ADK_FROSTED_DEVILI9341
           tristate "ILI9341 driver (LCD Controller)"
           depends on (FROSTED_DEVSPI)
           default n

           config ADK_FROSTED_DEVL3GD20
           tristate "L3GD20 driver (Gyro)"
           depends on (FROSTED_DEVSPI)
           default n

       config ADK_FROSTED_DEV_RANDOM
       depends on (FROSTED_ARCH_STM32F4 || ADK_FROSTED_ARCH_STM32F7)
       bool "STM32F2/F4/F7 Random devices"
       default n

       if ADK_FROSTED_DEV_RANDOM
          choice
            prompt "Random device selection"
            config ADK_FROSTED_DEVRNG
            bool "Hardware TRNG driver"

            config ADK_FROSTED_DEVFRAND
            bool "Fortuna PRNG device"
          endchoice
       endif

       menuconfig ADK_FROSTED_DEVFRAMEBUFFER
           depends on (FROSTED_ARCH_STM32F7 || ADK_FROSTED_ARCH_STM32F4)
           bool "STM32 Framebuffer driver"
           default n

       config ADK_FROSTED_DEVFBCON
           depends on ADK_FROSTED_DEVFRAMEBUFFER
           bool "Console on Framebuffer via /dev/fbcon"
           default n

       config ADK_FROSTED_DEVF7DISCOLTDC
           depends on ADK_FROSTED_DEVFRAMEBUFFER
           bool "F746 Discovery LTDC"
           default n

endmenu

menu "Power Management"
    if ADK_FROSTED_DEVTIM
        config ADK_FROSTED_LOWPOWER
        bool "Enable low-power optimizations"
        default n
        config ADK_FROSTED_TICKLESS
        bool "Disable systick in between process switches (untested)"
        default n
    endif
    if !ADK_FROSTED_DEVTIM
        comment "Power Management requires CPU Timer support"
    endif
endmenu