From 03101e75d8c9bd78731c94a629e98bb46a346fcb Mon Sep 17 00:00:00 2001 From: Johann Fischer Date: Wed, 24 Feb 2021 00:41:46 +0100 Subject: [PATCH] disk: move disk and sdmmc controller drivers to drivers/disk The files disk_access_usdhc.c, disk_access_spi_sdhc.c, disk_access_stm32_sdmmc.c, disk_access_ram.c and disk_access_flash.c are actually drivers for block devices and SD/MMC controllers. This patch moves this drivers to drivers/disk and reworks the configuration so that the drivers are selected when the corresponding node is enabled. Signed-off-by: Johann Fischer --- drivers/CMakeLists.txt | 1 + drivers/Kconfig | 2 + drivers/disk/CMakeLists.txt | 8 + drivers/disk/Kconfig | 15 ++ drivers/disk/Kconfig.flash | 61 ++++++++ drivers/disk/Kconfig.ram | 29 ++++ drivers/disk/Kconfig.sdmmc | 58 +++++++ .../disk/flashdisk.c | 0 .../disk/ramdisk.c | 0 .../disk/sdmmc_sdhc.h | 0 .../disk/sdmmc_spi.c | 0 .../disk/sdmmc_stm32.c | 0 .../disk/usdhc.c | 0 subsys/disk/CMakeLists.txt | 5 - subsys/disk/Kconfig | 147 +----------------- 15 files changed, 175 insertions(+), 151 deletions(-) create mode 100644 drivers/disk/CMakeLists.txt create mode 100644 drivers/disk/Kconfig create mode 100644 drivers/disk/Kconfig.flash create mode 100644 drivers/disk/Kconfig.ram create mode 100644 drivers/disk/Kconfig.sdmmc rename subsys/disk/disk_access_flash.c => drivers/disk/flashdisk.c (100%) rename subsys/disk/disk_access_ram.c => drivers/disk/ramdisk.c (100%) rename subsys/disk/disk_access_sdhc.h => drivers/disk/sdmmc_sdhc.h (100%) rename subsys/disk/disk_access_spi_sdhc.c => drivers/disk/sdmmc_spi.c (100%) rename subsys/disk/disk_access_stm32_sdmmc.c => drivers/disk/sdmmc_stm32.c (100%) rename subsys/disk/disk_access_usdhc.c => drivers/disk/usdhc.c (100%) diff --git a/drivers/CMakeLists.txt b/drivers/CMakeLists.txt index ec925601afd..b974cfef230 100644 --- a/drivers/CMakeLists.txt +++ b/drivers/CMakeLists.txt @@ -6,6 +6,7 @@ add_subdirectory(console) add_subdirectory(interrupt_controller) add_subdirectory(misc) add_subdirectory(pcie) +add_subdirectory(disk) add_subdirectory_ifdef(CONFIG_ADC adc) add_subdirectory_ifdef(CONFIG_CLOCK_CONTROL clock_control) diff --git a/drivers/Kconfig b/drivers/Kconfig index 027fd131436..a762c13c1f6 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -111,4 +111,6 @@ source "drivers/pm_cpu_ops/Kconfig" source "drivers/misc/Kconfig" +source "drivers/disk/Kconfig" + endmenu diff --git a/drivers/disk/CMakeLists.txt b/drivers/disk/CMakeLists.txt new file mode 100644 index 00000000000..c6dfeb75050 --- /dev/null +++ b/drivers/disk/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2021 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +zephyr_sources_ifdef(CONFIG_DISK_DRIVER_RAM ramdisk.c) +zephyr_sources_ifdef(CONFIG_DISK_DRIVER_FLASH flashdisk.c) +zephyr_sources_ifdef(CONFIG_SDMMC_OVER_SPI sdmmc_spi.c) +zephyr_sources_ifdef(CONFIG_SDMMC_USDHC usdhc.c) +zephyr_sources_ifdef(CONFIG_SDMMC_STM32 sdmmc_stm32.c) diff --git a/drivers/disk/Kconfig b/drivers/disk/Kconfig new file mode 100644 index 00000000000..5defa596a13 --- /dev/null +++ b/drivers/disk/Kconfig @@ -0,0 +1,15 @@ +# Copyright (c) 2021 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +menuconfig DISK_DRIVERS + bool "Disk Drivers" + help + Disk Driver configuration + +if DISK_DRIVERS + +source "drivers/disk/Kconfig.ram" +source "drivers/disk/Kconfig.flash" +source "drivers/disk/Kconfig.sdmmc" + +endif # DISK_DRIVERS diff --git a/drivers/disk/Kconfig.flash b/drivers/disk/Kconfig.flash new file mode 100644 index 00000000000..0400ed87bd5 --- /dev/null +++ b/drivers/disk/Kconfig.flash @@ -0,0 +1,61 @@ +# Copyright (c) 2016 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +config DISK_DRIVER_FLASH + bool "Flash" + select FLASH + help + Flash device is used for the file system. + +if DISK_DRIVER_FLASH + +config DISK_FLASH_VOLUME_NAME + string "Flash mount point or drive name" + default "NAND" + help + Disk name as per file system naming guidelines. + +config DISK_FLASH_DEV_NAME + string "Flash device name to be used as storage backend" + +config DISK_FLASH_START + hex "Flash device start address in hex" + help + This is start address of the flash to be used as storage backend. + +config DISK_FLASH_MAX_RW_SIZE + int "Flash device max read-write size in decimal" + help + This is the maximum number of bytes that the + flash_write API can accept per invocation. + API. + +config DISK_FLASH_ERASE_ALIGNMENT + hex "Flash device erase alignment in hex" + help + This is the start address alignment required by + the flash component. + +config DISK_ERASE_BLOCK_SIZE + hex "Flash device erasable block size in hex" + help + This is typically the minimum block size that + is erased at one time in flash storage. + Typically it is equal to the flash memory page size. + +config DISK_FLASH_SECTOR_SIZE + int "Flash device sector size" + default 512 + help + This is the file system sector size in bytes. + +config DISK_VOLUME_SIZE + hex "Flash device volume size in hex" + help + This is the file system volume size in bytes. + +module = FLASHDISK +module-str = flashdisk +source "subsys/logging/Kconfig.template.log_config" + +endif # DISK_DRIVER_FLASH diff --git a/drivers/disk/Kconfig.ram b/drivers/disk/Kconfig.ram new file mode 100644 index 00000000000..b662c41fa3a --- /dev/null +++ b/drivers/disk/Kconfig.ram @@ -0,0 +1,29 @@ +# Copyright (c) 2016 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +config DISK_DRIVER_RAM + bool "RAM Disk" + help + RAM buffer used to emulate storage disk. + This option can be used to test the file + system. + +if DISK_DRIVER_RAM + +config DISK_RAM_VOLUME_SIZE + int "RAM Disk size in kilobytes" + default 96 + help + Size of the RAM Disk. + +config DISK_RAM_VOLUME_NAME + string "RAM Disk mount point or drive name" + default "RAM" + help + Disk name as per file system naming guidelines. + +module = RAMDISK +module-str = ramdisk +source "subsys/logging/Kconfig.template.log_config" + +endif # DISK_DRIVER_RAM diff --git a/drivers/disk/Kconfig.sdmmc b/drivers/disk/Kconfig.sdmmc new file mode 100644 index 00000000000..26faa7b67ff --- /dev/null +++ b/drivers/disk/Kconfig.sdmmc @@ -0,0 +1,58 @@ +# Copyright (c) 2016 Intel Corporation +# Copyright (c) 2021 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +DT_COMPAT_ZEPHYR_MMC_SPI_SLOT := zephyr,mmc-spi-slot +DT_COMPAT_NXP_USDHC := nxp,imx-usdhc +DT_COMPAT_ST_STM32_SDMMC := st,stm32-sdmmc + +config DISK_DRIVER_SDMMC + bool "SDMMC card driver" + help + SDMMC card driver. + +if DISK_DRIVER_SDMMC + +config SDMMC_INIT_PRIORITY + int "Init priority" + default 90 + help + SDMMC controller driver initialization priority. + +config SDMMC_VOLUME_NAME + string "SDMMC Disk mount point or drive name" + default "SD" if FAT_FILESYSTEM_ELM + default "SDMMC" + help + Disk name as per file system naming guidelines. + +config SDMMC_OVER_SPI + bool "SDHC access over SPI" + select SPI + default $(dt_compat_enabled,$(DT_COMPAT_ZEPHYR_MMC_SPI_SLOT)) + help + File system on a SDHC card accessed over SPI. + +config SDMMC_USDHC + bool "NXP i.MXRT USDHC driver" + depends on (HAS_MCUX_USDHC1 || HAS_MCUX_USDHC2) + default $(dt_compat_enabled,$(DT_COMPAT_NXP_USDHC)) + help + File system on a SDHC card accessed over + NXP USDHC. + +config SDMMC_STM32 + bool "STM32 SDMMC driver" + depends on HAS_STM32CUBE + select USE_STM32_HAL_SD + select USE_STM32_HAL_SD_EX if SOC_SERIES_STM32L4X + select USE_STM32_LL_SDMMC + default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_SDMMC)) + help + File system on sdmmc accessed through stm32 sdmmc. + +module = SDMMC +module-str = sdmmc +source "subsys/logging/Kconfig.template.log_config" + +endif # DISK_DRIVER_SDMMC diff --git a/subsys/disk/disk_access_flash.c b/drivers/disk/flashdisk.c similarity index 100% rename from subsys/disk/disk_access_flash.c rename to drivers/disk/flashdisk.c diff --git a/subsys/disk/disk_access_ram.c b/drivers/disk/ramdisk.c similarity index 100% rename from subsys/disk/disk_access_ram.c rename to drivers/disk/ramdisk.c diff --git a/subsys/disk/disk_access_sdhc.h b/drivers/disk/sdmmc_sdhc.h similarity index 100% rename from subsys/disk/disk_access_sdhc.h rename to drivers/disk/sdmmc_sdhc.h diff --git a/subsys/disk/disk_access_spi_sdhc.c b/drivers/disk/sdmmc_spi.c similarity index 100% rename from subsys/disk/disk_access_spi_sdhc.c rename to drivers/disk/sdmmc_spi.c diff --git a/subsys/disk/disk_access_stm32_sdmmc.c b/drivers/disk/sdmmc_stm32.c similarity index 100% rename from subsys/disk/disk_access_stm32_sdmmc.c rename to drivers/disk/sdmmc_stm32.c diff --git a/subsys/disk/disk_access_usdhc.c b/drivers/disk/usdhc.c similarity index 100% rename from subsys/disk/disk_access_usdhc.c rename to drivers/disk/usdhc.c diff --git a/subsys/disk/CMakeLists.txt b/subsys/disk/CMakeLists.txt index f0ac7462564..55e5ce01eee 100644 --- a/subsys/disk/CMakeLists.txt +++ b/subsys/disk/CMakeLists.txt @@ -1,8 +1,3 @@ # SPDX-License-Identifier: Apache-2.0 zephyr_sources_ifdef(CONFIG_DISK_ACCESS disk_access.c) -zephyr_sources_ifdef(CONFIG_DISK_ACCESS_FLASH disk_access_flash.c) -zephyr_sources_ifdef(CONFIG_DISK_ACCESS_RAM disk_access_ram.c) -zephyr_sources_ifdef(CONFIG_DISK_ACCESS_SPI_SDHC disk_access_spi_sdhc.c) -zephyr_sources_ifdef(CONFIG_DISK_ACCESS_STM32_SDMMC disk_access_stm32_sdmmc.c) -zephyr_sources_ifdef(CONFIG_DISK_ACCESS_USDHC disk_access_usdhc.c) diff --git a/subsys/disk/Kconfig b/subsys/disk/Kconfig index a84afa8e39a..b466e84022d 100644 --- a/subsys/disk/Kconfig +++ b/subsys/disk/Kconfig @@ -1,10 +1,9 @@ # Copyright (c) 2016 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -DT_COMPAT_ST_STM32_SDMMC := st,stm32-sdmmc - menuconfig DISK_ACCESS bool "Disk Interface" + select DISK_DRIVERS help Enable disk access over a supported media backend like FLASH or RAM @@ -14,148 +13,4 @@ module = DISK module-str = disk source "subsys/logging/Kconfig.template.log_config" -config DISK_ACCESS_RAM - bool "RAM Disk" - help - RAM buffer used to emulate storage disk. - This option can be used to test the file - system. - -if DISK_ACCESS_RAM - -config DISK_RAM_VOLUME_SIZE - int "RAM Disk size in kilobytes" - default 96 - help - Size of the RAM Disk. - -config DISK_RAM_VOLUME_NAME - string "RAM Disk mount point or drive name" - default "RAM" - help - Disk name as per file system naming guidelines. - -endif # DISK_ACCESS_RAM - -config DISK_ACCESS_FLASH - bool "Flash" - select FLASH - help - Flash device is used for the file system. - -if DISK_ACCESS_FLASH - -config DISK_FLASH_VOLUME_NAME - string "Flash mount point or drive name" - default "NAND" - help - Disk name as per file system naming guidelines. - -config DISK_FLASH_DEV_NAME - string "Flash device name to be used as storage backend" - -config DISK_FLASH_START - hex "Flash device start address in hex" - help - This is start address of the flash to be used as storage backend. - -config DISK_FLASH_MAX_RW_SIZE - int "Flash device max read-write size in decimal" - help - This is the maximum number of bytes that the - flash_write API can accept per invocation. - API. - -config DISK_FLASH_ERASE_ALIGNMENT - hex "Flash device erase alignment in hex" - help - This is the start address alignment required by - the flash component. - -config DISK_ERASE_BLOCK_SIZE - hex "Flash device erasable block size in hex" - help - This is typically the minimum block size that - is erased at one time in flash storage. - Typically it is equal to the flash memory page size. - -config DISK_FLASH_SECTOR_SIZE - int "Flash device sector size" - default 512 - help - This is the file system sector size in bytes. - -config DISK_VOLUME_SIZE - hex "Flash device volume size in hex" - help - This is the file system volume size in bytes. - -endif # DISK_ACCESS_FLASH - -config DISK_ACCESS_SDHC - bool "SDHC card access" - select FLASH - help - File system on a SDHC card. - -if DISK_ACCESS_SDHC - -config DISK_ACCESS_SPI_SDHC - bool "SDHC access over SPI" - depends on SPI - help - File system on a SDHC card accessed over SPI. - -config DISK_ACCESS_USDHC - bool "NXP i.MXRT USDHC driver" - depends on (HAS_MCUX_USDHC1 || HAS_MCUX_USDHC2) - help - File system on a SDHC card accessed over - NXP USDHC. - -if DISK_ACCESS_USDHC - -config DISK_ACCESS_USDHC1 - bool "NXP i.MXRT USDHC instance 1" - depends on HAS_MCUX_USDHC1 - help - File system on a SDHC card accessed over - USDHC instance 1. - -config DISK_ACCESS_USDHC2 - bool "NXP i.MXRT USDHC instance 2" - depends on HAS_MCUX_USDHC2 - help - File system on a SDHC card accessed over - USDHC instance 2. - -endif # DISK_ACCESS_USDHC - -config DISK_SDHC_VOLUME_NAME - string "SDHC Disk mount point or drive name" - default "SD" if FAT_FILESYSTEM_ELM - default "SDHC" - help - Disk name as per file system naming guidelines. - -endif # DISK_ACCESS_SDHC - -config DISK_ACCESS_STM32_SDMMC - bool "STM32 SDMMC driver" - depends on HAS_STM32CUBE - select USE_STM32_HAL_SD - select USE_STM32_HAL_SD_EX if SOC_SERIES_STM32L4X - select USE_STM32_LL_SDMMC - default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_SDMMC)) - help - File system on sdmmc accessed through stm32 sdmmc. - -config DISK_STM32_SDMMC_VOLUME_NAME - string "SDMMC Disk mount point or drive name" - depends on DISK_ACCESS_STM32_SDMMC - default "SD" if FAT_FILESYSTEM_ELM - default "SDMMC" - help - Disk name as per file system naming guidelines. - endif # DISK_ACCESS