From 02a9de904a026db36da673488a2b0c42f1c23bad Mon Sep 17 00:00:00 2001 From: "Michael (XIAO Xufeng)" Date: Mon, 19 Sep 2022 14:23:37 +0800 Subject: [PATCH 1/2] essl: move from esp-idf component to extra component --- .gitlab/CODEOWNERS | 1 - components/driver/test/CMakeLists.txt | 5 +- .../test/esp_serial_slave_link/CMakeLists.txt | 11 + .../driver/test/esp_serial_slave_link/LICENSE | 202 ++++++++++++++++++ .../test/esp_serial_slave_link/README.md | 16 ++ .../test}/esp_serial_slave_link/essl.c | 18 +- .../esp_serial_slave_link/essl_internal.h | 19 +- .../test}/esp_serial_slave_link/essl_sdio.c | 2 +- .../test}/esp_serial_slave_link/essl_spi.c | 2 +- .../include/esp_serial_slave_link/essl.h | 18 +- .../include/esp_serial_slave_link/essl_sdio.h | 18 +- .../include/esp_serial_slave_link/essl_spi.h | 18 +- .../include/essl_spi/esp32c2_defs.h | 30 +++ .../include/essl_spi/esp32c3_defs.h | 29 +++ .../include/essl_spi/esp32s2_defs.h | 29 +++ .../include/essl_spi/esp32s3_defs.h | 29 +++ components/driver/test/test_sdio.c | 10 +- .../esp_serial_slave_link/CMakeLists.txt | 11 - docs/doxygen/Doxyfile | 6 +- .../release-5.x/removed-components.rst | 1 + .../i2s/i2s_codec/i2s_es8311/README.md | 2 +- examples/peripherals/sdio/README.md | 14 +- .../peripherals/sdio/host/main/app_main.c | 3 + .../sdio/host/main/idf_component.yml | 3 + .../spi_slave_hd/append_mode/README.md | 11 + .../append_mode/master/main/app_main.c | 2 + .../append_mode/master/main/idf_component.yml | 3 + .../append_mode/slave/main/app_main.c | 1 - .../seg_master/main/idf_component.yml | 3 + 29 files changed, 425 insertions(+), 92 deletions(-) create mode 100644 components/driver/test/esp_serial_slave_link/CMakeLists.txt create mode 100644 components/driver/test/esp_serial_slave_link/LICENSE create mode 100644 components/driver/test/esp_serial_slave_link/README.md rename components/{ => driver/test}/esp_serial_slave_link/essl.c (91%) rename components/{ => driver/test}/esp_serial_slave_link/essl_internal.h (69%) rename components/{ => driver/test}/esp_serial_slave_link/essl_sdio.c (99%) rename components/{ => driver/test}/esp_serial_slave_link/essl_spi.c (99%) rename components/{ => driver/test}/esp_serial_slave_link/include/esp_serial_slave_link/essl.h (93%) rename components/{ => driver/test}/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h (93%) rename components/{ => driver/test}/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h (96%) create mode 100644 components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c2_defs.h create mode 100644 components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c3_defs.h create mode 100644 components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s2_defs.h create mode 100644 components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s3_defs.h delete mode 100644 components/esp_serial_slave_link/CMakeLists.txt create mode 100644 examples/peripherals/sdio/host/main/idf_component.yml create mode 100644 examples/peripherals/spi_slave_hd/append_mode/master/main/idf_component.yml create mode 100644 examples/peripherals/spi_slave_hd/segment_mode/seg_master/main/idf_component.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 21af3d87db36..46154a806aa4 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -97,7 +97,6 @@ /components/esp_psram/ @esp-idf-codeowners/peripherals @esp-idf-codeowners/system /components/esp_ringbuf/ @esp-idf-codeowners/system /components/esp_rom/ @esp-idf-codeowners/system @esp-idf-codeowners/bluetooth @esp-idf-codeowners/wifi -/components/esp_serial_slave_link/ @esp-idf-codeowners/peripherals /components/esp_system/ @esp-idf-codeowners/system /components/esp_timer/ @esp-idf-codeowners/system /components/esp-tls/ @esp-idf-codeowners/app-utilities diff --git a/components/driver/test/CMakeLists.txt b/components/driver/test/CMakeLists.txt index ae79c8d8546e..f609fd6ca1ea 100644 --- a/components/driver/test/CMakeLists.txt +++ b/components/driver/test/CMakeLists.txt @@ -1,5 +1,8 @@ idf_component_register(SRC_DIRS . param_test dac_dma_test PRIV_INCLUDE_DIRS include param_test/include - PRIV_REQUIRES cmock test_utils driver nvs_flash esp_serial_slave_link + PRIV_REQUIRES cmock test_utils driver nvs_flash esp_timer esp_adc esp_event esp_wifi) target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") + +# A local copy of idf-extra-components esp_serial_slave_link, for stabilities of the SDIO test +add_subdirectory(esp_serial_slave_link) diff --git a/components/driver/test/esp_serial_slave_link/CMakeLists.txt b/components/driver/test/esp_serial_slave_link/CMakeLists.txt new file mode 100644 index 000000000000..40ffefb5d9d8 --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/CMakeLists.txt @@ -0,0 +1,11 @@ +set(srcs "essl.c" "essl_sdio.c" "essl_spi.c") +set(include "include") +set(priv_include "." "include/esp_serial_slave_link") +set(priv_req idf::sdmmc idf::driver) + +add_prefix(srcs "${CMAKE_CURRENT_LIST_DIR}/" "${srcs}") + +target_sources(${COMPONENT_LIB} PRIVATE "${srcs}") +target_include_directories(${COMPONENT_LIB} PUBLIC ${include}) +target_include_directories(${COMPONENT_LIB} PRIVATE ${priv_include}) +target_link_libraries(${COMPONENT_LIB} PRIVATE ${priv_req}) diff --git a/components/driver/test/esp_serial_slave_link/LICENSE b/components/driver/test/esp_serial_slave_link/LICENSE new file mode 100644 index 000000000000..d64569567334 --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/components/driver/test/esp_serial_slave_link/README.md b/components/driver/test/esp_serial_slave_link/README.md new file mode 100644 index 000000000000..f3b1e69ee75b --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/README.md @@ -0,0 +1,16 @@ +# Espressif Serial Slave Link (ESSL) component + +This component used to reside in [esp-idf](https://github.com/espressif/esp-idf) project as its component. + +It's used on the HOST, to communicate with ESP chips as SLAVE via SDIO/SPI slave HD mode. + +The port layer (`essl_sdio.c/essl_spi.c`) are currently only written to run on ESP chips in master mode, but you may also modify them to work on more platforms. + +See more documentation: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_serial_slave_link.html + +But it's going to be an idf-extra-component, and should be pulled-in by an idf_component.yml (See `examples/peripherals/sdio/host/main/idf_component.yml`). + +This folder is here for two purposes: + +1. Fix a version for tests, to make them stable and not affected by external factors such as network, changes in idf-extra-components, etc. +2. Build Programming Guide from ESP-IDF before ESSL actually have a place to put the documents. diff --git a/components/esp_serial_slave_link/essl.c b/components/driver/test/esp_serial_slave_link/essl.c similarity index 91% rename from components/esp_serial_slave_link/essl.c rename to components/driver/test/esp_serial_slave_link/essl.c index cfbe459f82e0..15944c205bba 100644 --- a/components/esp_serial_slave_link/essl.c +++ b/components/driver/test/esp_serial_slave_link/essl.c @@ -1,16 +1,8 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "essl.h" #include "essl_internal.h" diff --git a/components/esp_serial_slave_link/essl_internal.h b/components/driver/test/esp_serial_slave_link/essl_internal.h similarity index 69% rename from components/esp_serial_slave_link/essl_internal.h rename to components/driver/test/esp_serial_slave_link/essl_internal.h index 0070e53212d4..4c5c859e418c 100644 --- a/components/esp_serial_slave_link/essl_internal.h +++ b/components/driver/test/esp_serial_slave_link/essl_internal.h @@ -1,18 +1,11 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once + #include #include diff --git a/components/esp_serial_slave_link/essl_sdio.c b/components/driver/test/esp_serial_slave_link/essl_sdio.c similarity index 99% rename from components/esp_serial_slave_link/essl_sdio.c rename to components/driver/test/esp_serial_slave_link/essl_sdio.c index 31f70313dfcd..20c327897827 100644 --- a/components/esp_serial_slave_link/essl_sdio.c +++ b/components/driver/test/esp_serial_slave_link/essl_sdio.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ diff --git a/components/esp_serial_slave_link/essl_spi.c b/components/driver/test/esp_serial_slave_link/essl_spi.c similarity index 99% rename from components/esp_serial_slave_link/essl_spi.c rename to components/driver/test/esp_serial_slave_link/essl_spi.c index 00f933e34d91..93ddba0e7885 100644 --- a/components/esp_serial_slave_link/essl_spi.c +++ b/components/driver/test/esp_serial_slave_link/essl_spi.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ diff --git a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl.h b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl.h similarity index 93% rename from components/esp_serial_slave_link/include/esp_serial_slave_link/essl.h rename to components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl.h index f03274a4013c..fca5e37aeba7 100644 --- a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl.h +++ b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl.h @@ -1,16 +1,8 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once diff --git a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h similarity index 93% rename from components/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h rename to components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h index c98ae0344f2b..8d9b7194c829 100644 --- a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h +++ b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h @@ -1,16 +1,8 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ // ESP SDIO slave link used by the ESP host to communicate with ESP SDIO slave. diff --git a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h similarity index 96% rename from components/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h rename to components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h index 22721d17ecec..21e9a9259391 100644 --- a/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h +++ b/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h @@ -1,16 +1,8 @@ -// Copyright 2010-2020 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #pragma once diff --git a/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c2_defs.h b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c2_defs.h new file mode 100644 index 000000000000..0ef200019408 --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c2_defs.h @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + + +#pragma once + +// NOTE: From the view of master +#define CMD_HD_WRBUF_REG 0x01 +#define CMD_HD_RDBUF_REG 0x02 +#define CMD_HD_WRDMA_REG 0x03 +#define CMD_HD_RDDMA_REG 0x04 + +#define CMD_HD_ONEBIT_MODE 0x00 +#define CMD_HD_DOUT_MODE 0x10 +#define CMD_HD_QOUT_MODE 0x20 +#define CMD_HD_DIO_MODE 0x50 +#define CMD_HD_QIO_MODE 0xA0 + +#define CMD_HD_SEG_END_REG 0x05 +#define CMD_HD_EN_QPI_REG 0x06 +#define CMD_HD_WR_END_REG 0x07 +#define CMD_HD_INT0_REG 0x08 +#define CMD_HD_INT1_REG 0x09 +#define CMD_HD_INT2_REG 0x0A +#define CMD_HD_EX_QPI_REG 0xDD + +#define SPI_SLAVE_HD_BUFFER_SIZE 64 diff --git a/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c3_defs.h b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c3_defs.h new file mode 100644 index 000000000000..a237137121df --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32c3_defs.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +// NOTE: From the view of master +#define CMD_HD_WRBUF_REG 0x01 +#define CMD_HD_RDBUF_REG 0x02 +#define CMD_HD_WRDMA_REG 0x03 +#define CMD_HD_RDDMA_REG 0x04 + +#define CMD_HD_ONEBIT_MODE 0x00 +#define CMD_HD_DOUT_MODE 0x10 +#define CMD_HD_QOUT_MODE 0x20 +#define CMD_HD_DIO_MODE 0x50 +#define CMD_HD_QIO_MODE 0xA0 + +#define CMD_HD_SEG_END_REG 0x05 +#define CMD_HD_EN_QPI_REG 0x06 +#define CMD_HD_WR_END_REG 0x07 +#define CMD_HD_INT0_REG 0x08 +#define CMD_HD_INT1_REG 0x09 +#define CMD_HD_INT2_REG 0x0A +#define CMD_HD_EX_QPI_REG 0xDD + +#define SPI_SLAVE_HD_BUFFER_SIZE 64 diff --git a/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s2_defs.h b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s2_defs.h new file mode 100644 index 000000000000..d5f872f8a9f0 --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s2_defs.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +// NOTE: From the view of master +#define CMD_HD_WRBUF_REG 0x01 +#define CMD_HD_RDBUF_REG 0x02 +#define CMD_HD_WRDMA_REG 0x03 +#define CMD_HD_RDDMA_REG 0x04 + +#define CMD_HD_ONEBIT_MODE 0x00 +#define CMD_HD_DOUT_MODE 0x10 +#define CMD_HD_QOUT_MODE 0x20 +#define CMD_HD_DIO_MODE 0x50 +#define CMD_HD_QIO_MODE 0xA0 + +#define CMD_HD_SEG_END_REG 0x05 +#define CMD_HD_EN_QPI_REG 0x06 +#define CMD_HD_WR_END_REG 0x07 +#define CMD_HD_INT0_REG 0x08 +#define CMD_HD_INT1_REG 0x09 +#define CMD_HD_INT2_REG 0x0A +#define CMD_HD_EX_QPI_REG 0xDD + +#define SPI_SLAVE_HD_BUFFER_SIZE 72 diff --git a/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s3_defs.h b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s3_defs.h new file mode 100644 index 000000000000..a237137121df --- /dev/null +++ b/components/driver/test/esp_serial_slave_link/include/essl_spi/esp32s3_defs.h @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +// NOTE: From the view of master +#define CMD_HD_WRBUF_REG 0x01 +#define CMD_HD_RDBUF_REG 0x02 +#define CMD_HD_WRDMA_REG 0x03 +#define CMD_HD_RDDMA_REG 0x04 + +#define CMD_HD_ONEBIT_MODE 0x00 +#define CMD_HD_DOUT_MODE 0x10 +#define CMD_HD_QOUT_MODE 0x20 +#define CMD_HD_DIO_MODE 0x50 +#define CMD_HD_QIO_MODE 0xA0 + +#define CMD_HD_SEG_END_REG 0x05 +#define CMD_HD_EN_QPI_REG 0x06 +#define CMD_HD_WR_END_REG 0x07 +#define CMD_HD_INT0_REG 0x08 +#define CMD_HD_INT1_REG 0x09 +#define CMD_HD_INT2_REG 0x0A +#define CMD_HD_EX_QPI_REG 0xDD + +#define SPI_SLAVE_HD_BUFFER_SIZE 64 diff --git a/components/driver/test/test_sdio.c b/components/driver/test/test_sdio.c index 3e02bf7c1833..669331dcdeda 100644 --- a/components/driver/test/test_sdio.c +++ b/components/driver/test/test_sdio.c @@ -5,15 +5,19 @@ */ #include "unity.h" -#include "esp_serial_slave_link/essl_sdio.h" -#include "driver/sdspi_host.h" #include "test_utils.h" #include "param_test.h" #include "esp_log.h" #include "esp_timer.h" -#include "driver/spi_common.h" #include "soc/soc_caps.h" #include "ccomp_timer.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "driver/spi_common.h" +#include "driver/sdspi_host.h" +#include "esp_serial_slave_link/essl_sdio.h" +#include "sdmmc_cmd.h" #if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S3) diff --git a/components/esp_serial_slave_link/CMakeLists.txt b/components/esp_serial_slave_link/CMakeLists.txt deleted file mode 100644 index 5375d478eee1..000000000000 --- a/components/esp_serial_slave_link/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -idf_component_register(SRCS "essl.c" - "essl_sdio.c" - "essl_spi.c" - INCLUDE_DIRS "include" - REQUIRES "sdmmc" - "driver" - PRIV_INCLUDE_DIRS "." - "include/esp_serial_slave_link" -) - -target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 6ef69491fc0d..d8ebc4ab5e5c 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -80,6 +80,9 @@ INPUT = \ $(PROJECT_PATH)/components/driver/include/driver/touch_sensor_common.h \ $(PROJECT_PATH)/components/driver/include/driver/twai.h \ $(PROJECT_PATH)/components/driver/include/driver/uart.h \ + $(PROJECT_PATH)/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl.h \ + $(PROJECT_PATH)/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h \ + $(PROJECT_PATH)/components/driver/test/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h \ $(PROJECT_PATH)/components/efuse/$(IDF_TARGET)/include/esp_efuse_chip.h \ $(PROJECT_PATH)/components/efuse/include/esp_efuse.h \ $(PROJECT_PATH)/components/esp_adc/include/esp_adc/adc_cali_scheme.h \ @@ -127,9 +130,6 @@ INPUT = \ $(PROJECT_PATH)/components/esp_pm/include/esp_pm.h \ $(PROJECT_PATH)/components/esp_ringbuf/include/freertos/ringbuf.h \ $(PROJECT_PATH)/components/esp_rom/include/esp_rom_sys.h \ - $(PROJECT_PATH)/components/esp_serial_slave_link/include/esp_serial_slave_link/essl.h \ - $(PROJECT_PATH)/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_sdio.h \ - $(PROJECT_PATH)/components/esp_serial_slave_link/include/esp_serial_slave_link/essl_spi.h \ $(PROJECT_PATH)/components/esp_system/include/esp_expression_with_stack.h \ $(PROJECT_PATH)/components/esp_system/include/esp_freertos_hooks.h \ $(PROJECT_PATH)/components/esp_system/include/esp_system.h \ diff --git a/docs/en/migration-guides/release-5.x/removed-components.rst b/docs/en/migration-guides/release-5.x/removed-components.rst index a33aef190429..20af737f8a6e 100644 --- a/docs/en/migration-guides/release-5.x/removed-components.rst +++ b/docs/en/migration-guides/release-5.x/removed-components.rst @@ -23,6 +23,7 @@ Following components are removed from ESP-IDF and moved to `IDF Component Regist * `esp-cryptoauthlib `_ * `qrcode `_ * `tjpgd `_ +* `esp_serial_slave_link `_ .. note:: Please note that http parser functionality which was previously part of ``nghttp`` component is now part of :component:`http_parser ` component. diff --git a/examples/peripherals/i2s/i2s_codec/i2s_es8311/README.md b/examples/peripherals/i2s/i2s_codec/i2s_es8311/README.md index f10fbe715475..9caaf6a1ec58 100644 --- a/examples/peripherals/i2s/i2s_codec/i2s_es8311/README.md +++ b/examples/peripherals/i2s/i2s_codec/i2s_es8311/README.md @@ -65,7 +65,7 @@ The component can be installed by esp component manager. Since this example alre idf.py add-dependency espressif/es8311==0.0.2-alpha ``` -If the dependency is added, you can check `idf_component.yml` for more detail. When building this example or other project with managed component in it, the component manager will search the component online and download it under the `managed_componets` folder. +If the dependency is added, you can check `idf_component.yml` for more detail. When building this example or other projects with managed components, the component manager will search for the required components online and download them into the `managed_componets` folder. ### Configure the Project diff --git a/examples/peripherals/sdio/README.md b/examples/peripherals/sdio/README.md index 162c6963e414..845dd9a1bd47 100644 --- a/examples/peripherals/sdio/README.md +++ b/examples/peripherals/sdio/README.md @@ -104,8 +104,14 @@ and ``api_reference/peripherals/sd_pullup_requirements`` to see more descriptions about pullups and MTDI requirements and solutions of official modules and devkits. -## About `esp_serial_slave_link` component used in this example +## About `esp_serial_slave_link` component used in the host example -`esp_serial_slave_link` component in the IDF is used to communicate to a ESP slave device. -When the `esp_serial_slave_link` device is initialized with an `essl_sdio_config_t` structure, -the `esp_serial_slave_link` can be used to communicate with an ESP32 SDIO slave. +The host example is based on [esp_serial_slave_link component](https://components.espressif.com/components/espressif/esp_serial_slave_link), which is used to communicate to a ESP slave device. + +The component can be installed by esp component manager. Since this example already installed it, no need to re-installed it again, but if you want to install this component in your own project, you can input the following command: + +``` +idf.py add-dependency espressif/esp_serial_slave_link +``` + +If the dependency is added, you can check `idf_component.yml` for more detail. When building this example or other projects with managed components, the component manager will search for the required components online and download them into the `managed_componets` folder. diff --git a/examples/peripherals/sdio/host/main/app_main.c b/examples/peripherals/sdio/host/main/app_main.c index 0ff49aec61db..c8e213c421fc 100644 --- a/examples/peripherals/sdio/host/main/app_main.c +++ b/examples/peripherals/sdio/host/main/app_main.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -24,6 +25,8 @@ #include "sdkconfig.h" #include "driver/sdmmc_host.h" #include "driver/sdspi_host.h" +#include "sdmmc_cmd.h" + #define TIMEOUT_MAX UINT32_MAX diff --git a/examples/peripherals/sdio/host/main/idf_component.yml b/examples/peripherals/sdio/host/main/idf_component.yml new file mode 100644 index 000000000000..0816ab2f9113 --- /dev/null +++ b/examples/peripherals/sdio/host/main/idf_component.yml @@ -0,0 +1,3 @@ +dependencies: + idf: ">=5.0" + espressif/esp_serial_slave_link: ">=1.0.0" diff --git a/examples/peripherals/spi_slave_hd/append_mode/README.md b/examples/peripherals/spi_slave_hd/append_mode/README.md index 8580aeca8657..d28b9f27aa1b 100644 --- a/examples/peripherals/spi_slave_hd/append_mode/README.md +++ b/examples/peripherals/spi_slave_hd/append_mode/README.md @@ -31,6 +31,17 @@ This example requires 2 targets. Here we use 2 ESP32S2 DevKits to act as the SPI Feel free to modify the pin setting defined on the top of the ``app_main.c``. +### Dependency + +The master example is based on [esp_serial_slave_link component](https://components.espressif.com/components/espressif/esp_serial_slave_link), which is used to communicate to a ESP slave device. + +The component can be installed by esp component manager. Since this example already installed it, no need to re-installed it again, but if you want to install this component in your own project, you can input the following command: +``` +idf.py add-dependency espressif/esp_serial_slave_link +``` + +If the dependency is added, you can check `idf_component.yml` for more detail. When building this example or other projects with managed components, the component manager will search for the required components online and download them into the `managed_componets` folder. + ### Configure the project * Set the target of the build (where `{IDF_TARGET}` stands for the target chip such as `esp32s2`). diff --git a/examples/peripherals/spi_slave_hd/append_mode/master/main/app_main.c b/examples/peripherals/spi_slave_hd/append_mode/master/main/app_main.c index 58c0b6ccec94..855d7cc9fd51 100644 --- a/examples/peripherals/spi_slave_hd/append_mode/master/main/app_main.c +++ b/examples/peripherals/spi_slave_hd/append_mode/master/main/app_main.c @@ -8,6 +8,8 @@ */ #include "esp_log.h" #include "esp_err.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" #include "driver/spi_common.h" #include "driver/spi_master.h" #include "esp_serial_slave_link/essl.h" diff --git a/examples/peripherals/spi_slave_hd/append_mode/master/main/idf_component.yml b/examples/peripherals/spi_slave_hd/append_mode/master/main/idf_component.yml new file mode 100644 index 000000000000..0816ab2f9113 --- /dev/null +++ b/examples/peripherals/spi_slave_hd/append_mode/master/main/idf_component.yml @@ -0,0 +1,3 @@ +dependencies: + idf: ">=5.0" + espressif/esp_serial_slave_link: ">=1.0.0" diff --git a/examples/peripherals/spi_slave_hd/append_mode/slave/main/app_main.c b/examples/peripherals/spi_slave_hd/append_mode/slave/main/app_main.c index 672fd283f691..9e6d1ef57833 100644 --- a/examples/peripherals/spi_slave_hd/append_mode/slave/main/app_main.c +++ b/examples/peripherals/spi_slave_hd/append_mode/slave/main/app_main.c @@ -14,7 +14,6 @@ #include "freertos/task.h" #include "freertos/semphr.h" #include "driver/spi_slave_hd.h" -#include "esp_serial_slave_link/essl_spi.h" #define GPIO_MOSI 11 #define GPIO_MISO 13 diff --git a/examples/peripherals/spi_slave_hd/segment_mode/seg_master/main/idf_component.yml b/examples/peripherals/spi_slave_hd/segment_mode/seg_master/main/idf_component.yml new file mode 100644 index 000000000000..0816ab2f9113 --- /dev/null +++ b/examples/peripherals/spi_slave_hd/segment_mode/seg_master/main/idf_component.yml @@ -0,0 +1,3 @@ +dependencies: + idf: ">=5.0" + espressif/esp_serial_slave_link: ">=1.0.0" From f21f0ac3a650886c240314fa9919c5e4cdbc990a Mon Sep 17 00:00:00 2001 From: "Michael (XIAO Xufeng)" Date: Mon, 1 Aug 2022 19:47:30 +0800 Subject: [PATCH 2/2] sdio/example: fixed the essl return type issue --- examples/peripherals/sdio/host/main/app_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/peripherals/sdio/host/main/app_main.c b/examples/peripherals/sdio/host/main/app_main.c index c8e213c421fc..055b52e4fedc 100644 --- a/examples/peripherals/sdio/host/main/app_main.c +++ b/examples/peripherals/sdio/host/main/app_main.c @@ -414,8 +414,8 @@ void job_fifo(essl_handle_t handle) const int wait_ms = 50; int length = packet_len[i]; ret = essl_send_packet(handle, send_buffer + pointer, length, wait_ms); - if (ret == ESP_ERR_TIMEOUT) { - ESP_LOGD(TAG, "several packets are expected to timeout."); + if (ret == ESP_ERR_TIMEOUT || ret == ESP_ERR_NOT_FOUND) { + ESP_LOGD(TAG, "slave not ready to receive packet %d", i); // And there are several packets expected to timeout. } else { ESP_ERROR_CHECK(ret); ESP_LOGI(TAG, "send packet length: %d", length);