From 5b8d904a9b36d607aa82b95e43c571516dae4f5f Mon Sep 17 00:00:00 2001 From: Armando Date: Tue, 14 Nov 2023 15:01:08 +0800 Subject: [PATCH] refactor(sdmmc): dependency inversion to sdmmc component --- components/driver/CMakeLists.txt | 2 +- .../esp_driver_sd_common/CMakeLists.txt | 6 ------ components/esp_driver_sd_common/README.md | 10 --------- components/esp_driver_sdmmc/CMakeLists.txt | 4 ++-- .../include/driver/sdmmc_defs.h | 2 +- .../include/driver/sdmmc_host.h | 2 +- .../include/driver/sdmmc_types.h | 2 +- components/fatfs/CMakeLists.txt | 2 +- components/fatfs/diskio/diskio_sdmmc.h | 2 +- components/fatfs/vfs/esp_vfs_fat.h | 3 +-- components/fatfs/vfs/vfs_fat_sdmmc.c | 2 +- components/sdmmc/CMakeLists.txt | 1 - .../include/sd_protocol_defs.h} | 21 +++++++++++++++++-- .../include/sd_protocol_types.h} | 21 +++++++++++++++++-- components/sdmmc/include/sdmmc_cmd.h | 2 +- components/sdmmc/sdmmc_common.h | 4 ++-- examples/storage/.build-test-rules.yml | 3 --- 17 files changed, 51 insertions(+), 38 deletions(-) delete mode 100644 components/esp_driver_sd_common/CMakeLists.txt delete mode 100644 components/esp_driver_sd_common/README.md rename components/{esp_driver_sd_common/include/driver/esp_sd_defs.h => sdmmc/include/sd_protocol_defs.h} (96%) rename components/{esp_driver_sd_common/include/driver/esp_sd_types.h => sdmmc/include/sd_protocol_types.h} (92%) diff --git a/components/driver/CMakeLists.txt b/components/driver/CMakeLists.txt index 79f6e5618e..c777810282 100644 --- a/components/driver/CMakeLists.txt +++ b/components/driver/CMakeLists.txt @@ -192,7 +192,7 @@ else() # for backward compatibility, the driver component needs to # have a public dependency on other "esp_driver_foo" components esp_driver_gpio esp_driver_pcnt esp_driver_gptimer esp_driver_spi esp_driver_mcpwm - esp_driver_sd_common esp_driver_sdmmc + esp_driver_sdmmc LDFRAGMENTS ${ldfragments} ) endif() diff --git a/components/esp_driver_sd_common/CMakeLists.txt b/components/esp_driver_sd_common/CMakeLists.txt deleted file mode 100644 index 716a559327..0000000000 --- a/components/esp_driver_sd_common/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -set(srcs) -set(public_include "include") - -idf_component_register(SRCS ${srcs} - INCLUDE_DIRS ${public_include} - ) diff --git a/components/esp_driver_sd_common/README.md b/components/esp_driver_sd_common/README.md deleted file mode 100644 index cbf8cb5d4f..0000000000 --- a/components/esp_driver_sd_common/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Common Component for SD Related Drivers - -This component contains driver layer common files: -- `esp_sd_defs.h` -- `esp_sd_types.h` - -These files will be used by SD related drivers, including: - -- `esp_driver_sdmmc` -- `esp_driver_sdspi` diff --git a/components/esp_driver_sdmmc/CMakeLists.txt b/components/esp_driver_sdmmc/CMakeLists.txt index 037840b0fa..afca512530 100644 --- a/components/esp_driver_sdmmc/CMakeLists.txt +++ b/components/esp_driver_sdmmc/CMakeLists.txt @@ -10,6 +10,6 @@ endif() idf_component_register(SRCS ${srcs} INCLUDE_DIRS ${public_include} - REQUIRES - PRIV_REQUIRES esp_timer esp_pm esp_mm esp_driver_gpio esp_driver_sd_common + REQUIRES sdmmc esp_driver_gpio + PRIV_REQUIRES esp_timer esp_pm esp_mm ) diff --git a/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h b/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h index 8c7522d877..5e2f32b502 100644 --- a/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_defs.h @@ -6,4 +6,4 @@ #pragma once -#include "driver/esp_sd_defs.h" +#include "sd_protocol_defs.h" diff --git a/components/esp_driver_sdmmc/include/driver/sdmmc_host.h b/components/esp_driver_sdmmc/include/driver/sdmmc_host.h index fc5911b76c..3a4de21bca 100644 --- a/components/esp_driver_sdmmc/include/driver/sdmmc_host.h +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_host.h @@ -12,7 +12,7 @@ #include #include #include "esp_err.h" -#include "sdmmc_types.h" +#include "driver/sdmmc_types.h" #include "driver/sdmmc_default_configs.h" #include "driver/gpio.h" diff --git a/components/esp_driver_sdmmc/include/driver/sdmmc_types.h b/components/esp_driver_sdmmc/include/driver/sdmmc_types.h index e75c3d4974..cc832d8a2b 100644 --- a/components/esp_driver_sdmmc/include/driver/sdmmc_types.h +++ b/components/esp_driver_sdmmc/include/driver/sdmmc_types.h @@ -6,4 +6,4 @@ #pragma once -#include "driver/esp_sd_types.h" +#include "sd_protocol_types.h" diff --git a/components/fatfs/CMakeLists.txt b/components/fatfs/CMakeLists.txt index e9ae1f8874..4e36c1b50a 100644 --- a/components/fatfs/CMakeLists.txt +++ b/components/fatfs/CMakeLists.txt @@ -22,7 +22,7 @@ else() list(APPEND include_dirs "vfs") - list(APPEND requires "sdmmc") + list(APPEND requires "sdmmc" "driver") # `driver` will be replaced with `esp_driver_sdspi` list(APPEND priv_requires "vfs" "esp_driver_gpio") endif() diff --git a/components/fatfs/diskio/diskio_sdmmc.h b/components/fatfs/diskio/diskio_sdmmc.h index 2ba4c2d9be..d6c881ae58 100644 --- a/components/fatfs/diskio/diskio_sdmmc.h +++ b/components/fatfs/diskio/diskio_sdmmc.h @@ -7,7 +7,7 @@ #pragma once #include "sdmmc_cmd.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #ifdef __cplusplus extern "C" { diff --git a/components/fatfs/vfs/esp_vfs_fat.h b/components/fatfs/vfs/esp_vfs_fat.h index 3e7b165b4e..983dc8d6b7 100644 --- a/components/fatfs/vfs/esp_vfs_fat.h +++ b/components/fatfs/vfs/esp_vfs_fat.h @@ -7,8 +7,7 @@ #pragma once #include #include "esp_err.h" -#include "driver/gpio.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #include "driver/sdspi_host.h" #include "ff.h" #include "wear_levelling.h" diff --git a/components/fatfs/vfs/vfs_fat_sdmmc.c b/components/fatfs/vfs/vfs_fat_sdmmc.c index 1a5ac2150b..976025ca05 100644 --- a/components/fatfs/vfs/vfs_fat_sdmmc.c +++ b/components/fatfs/vfs/vfs_fat_sdmmc.c @@ -15,7 +15,7 @@ #include "diskio_impl.h" #include "diskio_sdmmc.h" #include "soc/soc_caps.h" -#include "driver/sdmmc_defs.h" +#include "sd_protocol_defs.h" #if SOC_SDMMC_HOST_SUPPORTED #include "driver/sdmmc_host.h" diff --git a/components/sdmmc/CMakeLists.txt b/components/sdmmc/CMakeLists.txt index 0b65cf19b5..243b26c4d6 100644 --- a/components/sdmmc/CMakeLists.txt +++ b/components/sdmmc/CMakeLists.txt @@ -11,5 +11,4 @@ idf_component_register(SRCS "sdmmc_cmd.c" "sdmmc_mmc.c" "sdmmc_sd.c" INCLUDE_DIRS include - REQUIRES driver PRIV_REQUIRES soc esp_timer) diff --git a/components/esp_driver_sd_common/include/driver/esp_sd_defs.h b/components/sdmmc/include/sd_protocol_defs.h similarity index 96% rename from components/esp_driver_sd_common/include/driver/esp_sd_defs.h rename to components/sdmmc/include/sd_protocol_defs.h index d063606492..a1b6a8ec02 100644 --- a/components/esp_driver_sd_common/include/driver/esp_sd_defs.h +++ b/components/sdmmc/include/sd_protocol_defs.h @@ -1,7 +1,24 @@ /* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2006 Uwe Stuehler * - * SPDX-License-Identifier: Apache-2.0 + * SPDX-License-Identifier: ISC + * + * SPDX-FileContributor: 2016-2023 Espressif Systems (Shanghai) CO LTD + */ +/* + * Copyright (c) 2006 Uwe Stuehler + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #pragma once diff --git a/components/esp_driver_sd_common/include/driver/esp_sd_types.h b/components/sdmmc/include/sd_protocol_types.h similarity index 92% rename from components/esp_driver_sd_common/include/driver/esp_sd_types.h rename to components/sdmmc/include/sd_protocol_types.h index 54a85cc8a7..61af3f8037 100644 --- a/components/esp_driver_sd_common/include/driver/esp_sd_types.h +++ b/components/sdmmc/include/sd_protocol_types.h @@ -1,7 +1,24 @@ /* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2006 Uwe Stuehler * - * SPDX-License-Identifier: Apache-2.0 + * SPDX-License-Identifier: ISC + * + * SPDX-FileContributor: 2016-2023 Espressif Systems (Shanghai) CO LTD + */ +/* + * Copyright (c) 2006 Uwe Stuehler + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #pragma once diff --git a/components/sdmmc/include/sdmmc_cmd.h b/components/sdmmc/include/sdmmc_cmd.h index 3b15682655..96889fbf99 100644 --- a/components/sdmmc/include/sdmmc_cmd.h +++ b/components/sdmmc/include/sdmmc_cmd.h @@ -8,7 +8,7 @@ #include #include "esp_err.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_types.h" #ifdef __cplusplus extern "C" { diff --git a/components/sdmmc/sdmmc_common.h b/components/sdmmc/sdmmc_common.h index ac4923a037..f48f2cf0cc 100644 --- a/components/sdmmc/sdmmc_common.h +++ b/components/sdmmc/sdmmc_common.h @@ -21,8 +21,8 @@ #include "esp_heap_caps.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" -#include "driver/sdmmc_defs.h" -#include "driver/sdmmc_types.h" +#include "sd_protocol_defs.h" +#include "sd_protocol_types.h" #include "sdmmc_cmd.h" #include "sys/param.h" #include "soc/soc_memory_layout.h" diff --git a/examples/storage/.build-test-rules.yml b/examples/storage/.build-test-rules.yml index 020b10f468..7455aa8ca1 100644 --- a/examples/storage/.build-test-rules.yml +++ b/examples/storage/.build-test-rules.yml @@ -15,7 +15,6 @@ examples/storage/emmc: - fatfs - vfs - esp_driver_sdmmc - - esp_driver_sd_common enable: - if: IDF_TARGET == "esp32s3" reason: only support on esp32s3 @@ -110,7 +109,6 @@ examples/storage/perf_benchmark: - wear_levelling - esp_partition - esp_driver_sdmmc - - esp_driver_sd_common disable: - if: IDF_TARGET == "esp32p4" and CONFIG_NAME in ["sdmmc_1line", "sdmmc_4line", "sdspi_1line"] temporary: true @@ -125,7 +123,6 @@ examples/storage/sd_card/sdmmc: - vfs - sdmmc - esp_driver_sdmmc - - esp_driver_sd_common disable: - if: SOC_SDMMC_HOST_SUPPORTED != 1 disable_test: