menu "TinyUSB MSC Example Configuration"

    orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps"

    choice EXAMPLE_STORAGE_MEDIA
        prompt "Storage Media Used"
        default EXAMPLE_STORAGE_MEDIA_SPIFLASH
        help
            Select the storage media that is exposed to USB host.

        config EXAMPLE_STORAGE_MEDIA_SPIFLASH
            bool "SPI FLASH"

        config EXAMPLE_STORAGE_MEDIA_SDMMC
            bool "SDMMC CARD"
            depends on IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32P4
    endchoice

    if EXAMPLE_STORAGE_MEDIA_SDMMC

        choice EXAMPLE_SDMMC_BUS_WIDTH
            prompt "SD/MMC bus width"
            default EXAMPLE_SDMMC_BUS_WIDTH_4
            help
                Select the bus width of SD or MMC interface.
                Note that even if 1 line mode is used, D3 pin of the SD card must
                have a pull-up resistor connected. Otherwise the card may enter
                SPI mode, the only way to recover from which is to cycle power to the card.

            config EXAMPLE_SDMMC_BUS_WIDTH_4
                bool "4 lines (D0 - D3)"

            config EXAMPLE_SDMMC_BUS_WIDTH_1
                bool "1 line (D0)"
        endchoice

        if SOC_SDMMC_USE_GPIO_MATRIX

            config EXAMPLE_PIN_CMD
                int "CMD GPIO number"
                range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
                default 35 if IDF_TARGET_ESP32S3
                default 44 if IDF_TARGET_ESP32P4

            config EXAMPLE_PIN_CLK
                int "CLK GPIO number"
                range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
                default 36 if IDF_TARGET_ESP32S3
                default 43 if IDF_TARGET_ESP32P4

            config EXAMPLE_PIN_D0
                int "D0 GPIO number"
                range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
                default 37 if IDF_TARGET_ESP32S3
                default 39 if IDF_TARGET_ESP32P4

            if EXAMPLE_SDMMC_BUS_WIDTH_4

                config EXAMPLE_PIN_D1
                    int "D1 GPIO number"
                    range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
                    default 38 if IDF_TARGET_ESP32S3
                    default 40 if IDF_TARGET_ESP32P4

                config EXAMPLE_PIN_D2
                    int "D2 GPIO number"
                    range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
                    default 33 if IDF_TARGET_ESP32S3
                    default 41 if IDF_TARGET_ESP32P4

                config EXAMPLE_PIN_D3
                    int "D3 GPIO number"
                    range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
                    default 34 if IDF_TARGET_ESP32S3
                    default 42 if IDF_TARGET_ESP32P4

            endif  # EXAMPLE_SDMMC_BUS_WIDTH_4

        endif  # SOC_SDMMC_USE_GPIO_MATRIX

        config EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
            depends on SOC_SDMMC_IO_POWER_EXTERNAL
            bool "SDMMC powered by internal LDO"
            default y
            help
                Enable when internal LDO of ESP32-P4 is used as a power supply for SD card. Specify the LDO IO.
                Disable when external power supply is used as a power supply for SD card.

        config EXAMPLE_SD_PWR_CTRL_LDO_IO_ID
            depends on SOC_SDMMC_IO_POWER_EXTERNAL && EXAMPLE_SD_PWR_CTRL_LDO_INTERNAL_IO
            int "LDO IO"
            default 4 if IDF_TARGET_ESP32P4
            help
                There are several IOs in ESP32-P4 which are in "SD card IO" power domain.
                Power has to be supplied to this power domain externally (from outside the chip) via one of the pins.
                Based on the schematic, specify the LDO IO pin.

    endif  # EXAMPLE_STORAGE_MEDIA_SDMMC

endmenu
