Add kernel drivers for SPI and UART and make locking APIs more consistent (#489)
- Add kernel support for SPI driver - Add kernel support for UART driver - Implemented ESP32 UART kernel driver - Update existing UART-related code in Tactility to use new kernel driver - Remove UART from tt::hal::Configuration - Remove tt_hal_uart functionality but keep functions for now - Update devicetrees for UART changes - Kernel mutex and recursive mutex: improved locking API design - Other kernel improvements - Added device_exists_of_type() and device_find_by_name()
This commit is contained in:
committed by
GitHub
parent
7e24105d0c
commit
74127a5f6c
@@ -293,8 +293,8 @@ void device_lock(struct Device* device) {
|
||||
mutex_lock(&device->internal->mutex);
|
||||
}
|
||||
|
||||
bool device_try_lock(struct Device* device) {
|
||||
return mutex_try_lock(&device->internal->mutex);
|
||||
bool device_try_lock(struct Device* device, TickType_t timeout) {
|
||||
return mutex_try_lock(&device->internal->mutex, timeout);
|
||||
}
|
||||
|
||||
void device_unlock(struct Device* device) {
|
||||
@@ -338,4 +338,31 @@ void device_for_each_of_type(const DeviceType* type, void* callbackContext, bool
|
||||
ledger_unlock();
|
||||
}
|
||||
|
||||
bool device_exists_of_type(const DeviceType* type) {
|
||||
bool found = false;
|
||||
ledger_lock();
|
||||
for (auto* device : ledger.devices) {
|
||||
auto* driver = device->internal->driver;
|
||||
if (driver != nullptr && driver->device_type == type) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ledger_unlock();
|
||||
return found;
|
||||
}
|
||||
|
||||
Device* device_find_by_name(const char* name) {
|
||||
Device* found = nullptr;
|
||||
ledger_lock();
|
||||
for (auto* device : ledger.devices) {
|
||||
if (device->name != nullptr && std::strcmp(device->name, name) == 0) {
|
||||
found = device;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ledger_unlock();
|
||||
return found;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
Reference in New Issue
Block a user