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 <johann.fischer@nordicsemi.no>
This commit is contained in:
Johann Fischer 2021-02-24 00:41:46 +01:00 committed by Carles Cufí
commit 03101e75d8
15 changed files with 175 additions and 151 deletions

View file

@ -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)

View file

@ -111,4 +111,6 @@ source "drivers/pm_cpu_ops/Kconfig"
source "drivers/misc/Kconfig"
source "drivers/disk/Kconfig"
endmenu

View file

@ -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)

15
drivers/disk/Kconfig Normal file
View file

@ -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

View file

@ -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

29
drivers/disk/Kconfig.ram Normal file
View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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