diff --git a/libraries/AP_HAL_ChibiOS/hwdef/common/spi_hook.h b/libraries/AP_HAL_ChibiOS/hwdef/common/spi_hook.h index a1971ba5f6..124e93415f 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/common/spi_hook.h +++ b/libraries/AP_HAL_ChibiOS/hwdef/common/spi_hook.h @@ -9,6 +9,8 @@ extern "C" { #if HAL_USE_MMC_SPI == TRUE void spiStartHook(SPIDriver *spip, const SPIConfig *config); void spiStopHook(SPIDriver *spip); +void spiAcquireBusHook(SPIDriver *spip); +void spiReleaseBusHook(SPIDriver *spip); void spiSelectHook(SPIDriver *spip); void spiUnselectHook(SPIDriver *spip); void spiIgnoreHook(SPIDriver *spip,size_t n); diff --git a/libraries/AP_HAL_ChibiOS/sdcard.cpp b/libraries/AP_HAL_ChibiOS/sdcard.cpp index eaedca7214..32fc3b3dfc 100644 --- a/libraries/AP_HAL_ChibiOS/sdcard.cpp +++ b/libraries/AP_HAL_ChibiOS/sdcard.cpp @@ -213,6 +213,22 @@ void spiStopHook(SPIDriver *spip) { } +__RAMFUNC__ void spiAcquireBusHook(SPIDriver *spip) +{ + if (sdcard_running) { + ChibiOS::SPIDevice *devptr = static_cast(device.get()); + devptr->acquire_bus(true, true); + } +} + +__RAMFUNC__ void spiReleaseBusHook(SPIDriver *spip) +{ + if (sdcard_running) { + ChibiOS::SPIDevice *devptr = static_cast(device.get()); + devptr->acquire_bus(false, true); + } +} + __RAMFUNC__ void spiSelectHook(SPIDriver *spip) { if (sdcard_running) {