Driver improvements (#535)
- New drivers: - SD SPI - spi_peripheral - touch_placeholder - display_placeholder - Devicetree compiler: - Implement phandle-arrays - Implement device addresses - Add placeholder drivers to all devices with a SPI display - SPI driver: add `cs-pins` and set them to high on driver start - FileSystem: add `file_system_set_owner()` and `file_system_get_owner()` - File locking is now checking if the related `FileSystem` is part of a shared SPI bus - Add `device_get_child_count()` - SDMMC driver: Remove default of `slot` value - Fix for Crowpanel Basic 3.5" display (add delay to booting) - Fix for LilyGO T-HMI SD card mounting (delayed mounting by disabling it initially in the dts)
This commit is contained in:
committed by
GitHub
parent
e50659a3fb
commit
599fa46766
@@ -3,11 +3,12 @@
|
||||
#include <soc/soc_caps.h>
|
||||
|
||||
#include <Tactility/hal/usb/Usb.h>
|
||||
#include <Tactility/hal/sdcard/SpiSdCardDevice.h>
|
||||
#include <Tactility/hal/usb/UsbTusb.h>
|
||||
|
||||
#include <Tactility/Logger.h>
|
||||
#include <tactility/drivers/esp32_sdmmc.h>
|
||||
#include <tactility/device.h>
|
||||
#include <tactility/driver.h>
|
||||
#include <tactility/drivers/esp32_sdcard.h>
|
||||
|
||||
namespace tt::hal::usb {
|
||||
|
||||
@@ -24,41 +25,23 @@ static Mode currentMode = Mode::Default;
|
||||
static RTC_NOINIT_ATTR BootModeData bootModeData;
|
||||
|
||||
sdmmc_card_t* getCard() {
|
||||
sdmmc_card_t* sdcard = nullptr;
|
||||
sdmmc_card_t* card = nullptr;
|
||||
|
||||
// Find old HAL SD card device:
|
||||
auto sdcards = findDevices<sdcard::SpiSdCardDevice>(Device::Type::SdCard);
|
||||
for (auto& device : sdcards) {
|
||||
auto sdcard_device= std::static_pointer_cast<sdcard::SpiSdCardDevice>(device);
|
||||
if (sdcard_device != nullptr && sdcard_device->isMounted() && sdcard_device->getCard() != nullptr) {
|
||||
sdcard = sdcard_device->getCard();
|
||||
break;
|
||||
}
|
||||
}
|
||||
device_for_each(&card, [](auto* device, void* context) {
|
||||
auto* driver = device_get_driver(device);
|
||||
if (driver == nullptr) return true;
|
||||
if (!driver_is_compatible(driver, "espressif,esp32-sdspi") &&
|
||||
!driver_is_compatible(driver, "espressif,esp32-sdmmc")) return true;
|
||||
auto** out = static_cast<sdmmc_card_t**>(context);
|
||||
*out = esp32_sdcard_get_card(device);
|
||||
return *out == nullptr;
|
||||
});
|
||||
|
||||
#if SOC_SDMMC_HOST_SUPPORTED
|
||||
// Find ESP32 SDMMC device:
|
||||
if (sdcard == nullptr) {
|
||||
device_for_each(&sdcard, [](auto* device, void* context) {
|
||||
if (device_is_ready(device) && device_is_compatible(device, "espressif,esp32-sdmmc")) {
|
||||
auto** sdcard = static_cast<sdmmc_card_t**>(context);
|
||||
auto* sdmmc_card = esp32_sdmmc_get_card(device);
|
||||
if (sdmmc_card) {
|
||||
*sdcard = sdmmc_card;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
#endif
|
||||
|
||||
if (sdcard == nullptr) {
|
||||
if (card == nullptr) {
|
||||
LOGGER.warn("Couldn't find a mounted SD card");
|
||||
}
|
||||
|
||||
return sdcard;
|
||||
return card;
|
||||
}
|
||||
|
||||
static bool canStartNewMode() {
|
||||
|
||||
Reference in New Issue
Block a user