Lines Matching refs:dev_handle

329 SPI_MASTER_ATTR static inline void req_core(spi_bus_lock_dev_t *dev_handle)  in req_core()  argument
331 spi_bus_lock_t *lock = dev_handle->parent; in req_core()
336 if (dev_handle == lock->acquiring_dev){ in req_core()
343 uint32_t status = lock_status_fetch_set(lock, DEV_REQ_MASK(dev_handle)); in req_core()
344 if ((status & DEV_BG_MASK(dev_handle)) == 0) { in req_core()
348 uint32_t status = lock_status_fetch_set(lock, DEV_REQ_MASK(dev_handle)); in req_core()
356 SPI_MASTER_ISR_ATTR static inline bool acquire_core(spi_bus_lock_dev_t *dev_handle) in acquire_core() argument
358 spi_bus_lock_t* lock = dev_handle->parent; in acquire_core()
362 uint32_t status = lock_status_fetch_set(lock, dev_handle->mask & LOCK_MASK); in acquire_core()
368 lock->acquiring_dev = dev_handle; in acquire_core()
438 IRAM_ATTR static inline void acquire_end_core(spi_bus_lock_dev_t *dev_handle) in acquire_end_core() argument
440 spi_bus_lock_t* lock = dev_handle->parent; in acquire_end_core()
445 uint32_t status = lock_status_clear(lock, dev_handle->mask & LOCK_MASK); in acquire_end_core()
477 SPI_MASTER_ISR_ATTR static inline bool clear_pend_core(spi_bus_lock_dev_t *dev_handle) in clear_pend_core() argument
480 spi_bus_lock_t *lock = dev_handle->parent; in clear_pend_core()
481 uint32_t pend_mask = DEV_PEND_MASK(dev_handle); in clear_pend_core()
486 if (lock->acquiring_dev == dev_handle) { in clear_pend_core()
487 finished = ((status & DEV_REQ_MASK(dev_handle)) == 0); in clear_pend_core()
558 IRAM_ATTR static inline void dev_wait_prepare(spi_bus_lock_dev_t *dev_handle) in dev_wait_prepare() argument
560 xSemaphoreTake(dev_handle->semphr, 0); in dev_wait_prepare()
563 SPI_MASTER_ISR_ATTR static inline esp_err_t dev_wait(spi_bus_lock_dev_t *dev_handle, TickType_t wai… in dev_wait() argument
565 BaseType_t ret = xSemaphoreTake(dev_handle->semphr, wait); in dev_wait()
650 void spi_bus_lock_unregister_dev(spi_bus_lock_dev_handle_t dev_handle) in spi_bus_lock_unregister_dev() argument
652 int id = dev_lock_get_id(dev_handle); in spi_bus_lock_unregister_dev()
654 spi_bus_lock_t* lock = dev_handle->parent; in spi_bus_lock_unregister_dev()
655 BUS_LOCK_DEBUG_EXECUTE_CHECK(atomic_load(&lock->dev[id]) == (intptr_t)dev_handle); in spi_bus_lock_unregister_dev()
657 if (lock->last_dev == dev_handle) lock->last_dev = NULL; in spi_bus_lock_unregister_dev()
660 if (dev_handle->semphr) { in spi_bus_lock_unregister_dev()
661 vSemaphoreDelete(dev_handle->semphr); in spi_bus_lock_unregister_dev()
664 free(dev_handle); in spi_bus_lock_unregister_dev()
684 IRAM_ATTR int spi_bus_lock_get_dev_id(spi_bus_lock_dev_handle_t dev_handle) in spi_bus_lock_get_dev_id() argument
686 return (dev_handle? dev_lock_get_id(dev_handle): -1); in spi_bus_lock_get_dev_id()
690 IRAM_ATTR bool spi_bus_lock_touch(spi_bus_lock_dev_handle_t dev_handle) in spi_bus_lock_touch() argument
692 spi_bus_lock_dev_t* last_dev = dev_handle->parent->last_dev; in spi_bus_lock_touch()
693 dev_handle->parent->last_dev = dev_handle; in spi_bus_lock_touch()
694 if (last_dev != dev_handle) { in spi_bus_lock_touch()
697 last_dev_id, dev_lock_get_id(dev_handle)); in spi_bus_lock_touch()
699 return (dev_handle != last_dev); in spi_bus_lock_touch()
705 IRAM_ATTR esp_err_t spi_bus_lock_acquire_start(spi_bus_lock_dev_t *dev_handle, TickType_t wait) in spi_bus_lock_acquire_start() argument
709 spi_bus_lock_t* lock = dev_handle->parent; in spi_bus_lock_acquire_start()
712 dev_wait_prepare(dev_handle); in spi_bus_lock_acquire_start()
713 if (!acquire_core(dev_handle)) { in spi_bus_lock_acquire_start()
715 esp_err_t err = dev_wait(dev_handle, wait); in spi_bus_lock_acquire_start()
720 ESP_DRAM_LOGV(TAG, "dev %d acquired.", dev_lock_get_id(dev_handle)); in spi_bus_lock_acquire_start()
721 BUS_LOCK_DEBUG_EXECUTE_CHECK(lock->acquiring_dev == dev_handle); in spi_bus_lock_acquire_start()
726 BUS_LOCK_DEBUG_EXECUTE_CHECK((status & DEV_BG_MASK(dev_handle)) == 0); in spi_bus_lock_acquire_start()
731 IRAM_ATTR esp_err_t spi_bus_lock_acquire_end(spi_bus_lock_dev_t *dev_handle) in spi_bus_lock_acquire_end() argument
734 spi_bus_lock_t* lock = dev_handle->parent; in spi_bus_lock_acquire_end()
735 …ESP_RETURN_ON_FALSE_ISR(lock->acquiring_dev == dev_handle, ESP_ERR_INVALID_STATE, TAG, "Cannot rel… in spi_bus_lock_acquire_end()
737 acquire_end_core(dev_handle); in spi_bus_lock_acquire_end()
739 ESP_LOGV(TAG, "dev %d released.", dev_lock_get_id(dev_handle)); in spi_bus_lock_acquire_end()
761 SPI_MASTER_ATTR esp_err_t spi_bus_lock_bg_request(spi_bus_lock_dev_t *dev_handle) in spi_bus_lock_bg_request() argument
763 req_core(dev_handle); in spi_bus_lock_bg_request()
767 IRAM_ATTR esp_err_t spi_bus_lock_wait_bg_done(spi_bus_lock_dev_handle_t dev_handle, TickType_t wait) in spi_bus_lock_wait_bg_done() argument
769 spi_bus_lock_t *lock = dev_handle->parent; in spi_bus_lock_wait_bg_done()
771 …ESP_RETURN_ON_FALSE_ISR(lock->acquiring_dev == dev_handle, ESP_ERR_INVALID_STATE, TAG, "Cannot wai… in spi_bus_lock_wait_bg_done()
776 if (lock_status_fetch(lock) & DEV_BG_MASK(dev_handle)) { in spi_bus_lock_wait_bg_done()
778 dev_wait_prepare(dev_handle); in spi_bus_lock_wait_bg_done()
779 if (lock_status_fetch(lock) & DEV_BG_MASK(dev_handle)) { in spi_bus_lock_wait_bg_done()
781 esp_err_t err = dev_wait(dev_handle, wait); in spi_bus_lock_wait_bg_done()
788 BUS_LOCK_DEBUG_EXECUTE_CHECK((lock_status_fetch(lock) & DEV_BG_MASK(dev_handle)) == 0); in spi_bus_lock_wait_bg_done()
792 SPI_MASTER_ISR_ATTR bool spi_bus_lock_bg_clear_req(spi_bus_lock_dev_t *dev_handle) in spi_bus_lock_bg_clear_req() argument
794 bool finished = clear_pend_core(dev_handle); in spi_bus_lock_bg_clear_req()
795 ESP_EARLY_LOGV(TAG, "dev %d served from bg.", dev_lock_get_id(dev_handle)); in spi_bus_lock_bg_clear_req()