mirror of
https://github.com/hathach/tinyusb.git
synced 2025-03-29 01:20:19 +00:00
add osal mutex for spi
This commit is contained in:
parent
f5ebc1700f
commit
09ceaa6cf3
@ -194,7 +194,10 @@ typedef struct {
|
|||||||
|
|
||||||
hcd_ep_t ep[8][2];
|
hcd_ep_t ep[8][2];
|
||||||
|
|
||||||
OSAL_MUTEX_DEF(spi_mutex);
|
OSAL_MUTEX_DEF(spi_mutexdef);
|
||||||
|
#if OSAL_MUTEX_REQUIRED
|
||||||
|
osal_mutex_t spi_mutex;
|
||||||
|
#endif
|
||||||
} max2341_data_t;
|
} max2341_data_t;
|
||||||
|
|
||||||
static max2341_data_t _hcd_data;
|
static max2341_data_t _hcd_data;
|
||||||
@ -215,6 +218,7 @@ static void max3421_spi_lock(uint8_t rhport, bool in_isr) {
|
|||||||
// disable interrupt and mutex lock (for pre-emptive RTOS) if not in_isr
|
// disable interrupt and mutex lock (for pre-emptive RTOS) if not in_isr
|
||||||
if (!in_isr) {
|
if (!in_isr) {
|
||||||
tuh_max3421e_int_api(rhport, false);
|
tuh_max3421e_int_api(rhport, false);
|
||||||
|
(void) osal_mutex_lock(_hcd_data.spi_mutex, OSAL_TIMEOUT_WAIT_FOREVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
// assert CS
|
// assert CS
|
||||||
@ -228,6 +232,7 @@ static void max3421_spi_unlock(uint8_t rhport, bool in_isr) {
|
|||||||
// mutex unlock and re-enable interrupt
|
// mutex unlock and re-enable interrupt
|
||||||
if (!in_isr) {
|
if (!in_isr) {
|
||||||
tuh_max3421e_int_api(rhport, true);
|
tuh_max3421e_int_api(rhport, true);
|
||||||
|
(void) osal_mutex_unlock(_hcd_data.spi_mutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,12 +377,16 @@ tusb_speed_t handle_connect_irq(uint8_t rhport) {
|
|||||||
bool hcd_init(uint8_t rhport) {
|
bool hcd_init(uint8_t rhport) {
|
||||||
(void) rhport;
|
(void) rhport;
|
||||||
|
|
||||||
|
hcd_int_disable(rhport);
|
||||||
|
|
||||||
TU_LOG2_INT(sizeof(hcd_ep_t));
|
TU_LOG2_INT(sizeof(hcd_ep_t));
|
||||||
TU_LOG2_INT(sizeof(max2341_data_t));
|
TU_LOG2_INT(sizeof(max2341_data_t));
|
||||||
|
|
||||||
tu_memclr(&_hcd_data, sizeof(_hcd_data));
|
tu_memclr(&_hcd_data, sizeof(_hcd_data));
|
||||||
|
|
||||||
hcd_int_disable(rhport);
|
#if OSAL_MUTEX_REQUIRED
|
||||||
|
_hcd_data.spi_mutex = osal_mutex_create(&_hcd_data.spi_mutexdef);
|
||||||
|
#endif
|
||||||
|
|
||||||
// full duplex, interrupt negative edge
|
// full duplex, interrupt negative edge
|
||||||
reg_write(rhport, PINCTL_ADDR, PINCTL_FDUPSPI, false);
|
reg_write(rhport, PINCTL_ADDR, PINCTL_FDUPSPI, false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user