Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 80f9f9a

Browse filesBrowse files
stickbreakerme-no-dev
authored andcommitted
fix removeApbChangeCallback() error in spiStopBus() (espressif#3675)
* fix removeApbChangeCallback() error in spiStopBus() spiStartBus() was using spiStopBus() to init the hardware, one of spiStopBus() functions is to unregister the runtime CPU clock speed change callback. But, spiStartBus() only wanted to init the hardware. This patch separates the hardware init into a standalone function spiInitBus() that both spiStartBus() and spiStopBus() call. * Update esp32-hal-spi.c capitalization problem
1 parent b50a175 commit 80f9f9a
Copy full SHA for 80f9f9a

File tree

1 file changed

+18
-11
lines changed
Filter options

1 file changed

+18
-11
lines changed

‎cores/esp32/esp32-hal-spi.c

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-spi.c
+18-11Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -384,12 +384,8 @@ static void _on_apb_change(void * arg, apb_change_ev_t ev_type, uint32_t old_apb
384384
}
385385
}
386386

387-
void spiStopBus(spi_t * spi)
387+
static void spiInitBus(spi_t * spi)
388388
{
389-
if(!spi) {
390-
return;
391-
}
392-
SPI_MUTEX_LOCK();
393389
spi->dev->slave.trans_done = 0;
394390
spi->dev->slave.slave_mode = 0;
395391
spi->dev->pin.val = 0;
@@ -399,8 +395,19 @@ void spiStopBus(spi_t * spi)
399395
spi->dev->ctrl1.val = 0;
400396
spi->dev->ctrl2.val = 0;
401397
spi->dev->clock.val = 0;
402-
SPI_MUTEX_UNLOCK();
398+
}
399+
400+
void spiStopBus(spi_t * spi)
401+
{
402+
if(!spi) {
403+
return;
404+
}
405+
403406
removeApbChangeCallback(spi, _on_apb_change);
407+
408+
SPI_MUTEX_LOCK();
409+
spiInitBus(spi);
410+
SPI_MUTEX_UNLOCK();
404411
}
405412

406413
spi_t * spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_t bitOrder)
@@ -431,12 +438,8 @@ spi_t * spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_
431438
DPORT_CLEAR_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_SPI_RST_1);
432439
}
433440

434-
spiStopBus(spi);
435-
spiSetDataMode(spi, dataMode);
436-
spiSetBitOrder(spi, bitOrder);
437-
spiSetClockDiv(spi, clockDiv);
438-
439441
SPI_MUTEX_LOCK();
442+
spiInitBus(spi);
440443
spi->dev->user.usr_mosi = 1;
441444
spi->dev->user.usr_miso = 1;
442445
spi->dev->user.doutdin = 1;
@@ -447,6 +450,10 @@ spi_t * spiStartBus(uint8_t spi_num, uint32_t clockDiv, uint8_t dataMode, uint8_
447450
}
448451
SPI_MUTEX_UNLOCK();
449452

453+
spiSetDataMode(spi, dataMode);
454+
spiSetBitOrder(spi, bitOrder);
455+
spiSetClockDiv(spi, clockDiv);
456+
450457
addApbChangeCallback(spi, _on_apb_change);
451458
return spi;
452459
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.