11#ifndef __SDRV_CAM_OS_DEF_H__
12#define __SDRV_CAM_OS_DEF_H__
29#include "armv7-r/atomic.h"
30#include "armv7-r/cache.h"
31#include "armv7-r/irq.h"
33#include "event_groups.h"
44#define osFlagsWaitAny 0x00000000U
45#define osFlagsWaitAll 0x00000001U
46#define osFlagsNoClear 0x00000002U
47#define MAX_BITS_EVENT_GROUPS 24U
48#define EVENT_FLAGS_INVALID_BITS (~((1UL << MAX_BITS_EVENT_GROUPS) - 1U))
50#define csi_err(x...) ssdk_printf(SSDK_ERR, x)
51#define csi_warn(x...) ssdk_printf(SSDK_WARNING, x)
52#define csi_info(x...) ssdk_printf(SSDK_NOTICE, x)
53#define csi_debug(x...) ssdk_printf(SSDK_DEBUG, x)
55#define cam_err(x...) ssdk_printf(SSDK_ERR, x)
56#define cam_info(x...) ssdk_printf(SSDK_NOTICE, x)
57#define cam_debug(x...) ssdk_printf(SSDK_DEBUG, x)
59#define sensor_err(x...) ssdk_printf(SSDK_ERR, x)
60#define sensor_info(x...) ssdk_printf(SSDK_NOTICE, x)
61#define sensor_debug(x...) ssdk_printf(SSDK_DEBUG, x)
63#define deser_crit(x...) ssdk_printf(SSDK_CRIT, x)
64#define deser_err(x...) ssdk_printf(SSDK_ERR, x)
65#define deser_info(x...) ssdk_printf(SSDK_NOTICE, x)
66#define deser_debug(x...) ssdk_printf(SSDK_DEBUG, x)
68#define HAL_LOGE(x...) ssdk_printf(SSDK_ERR, x)
69#define HAL_LOGI(x...) ssdk_printf(SSDK_NOTICE, x)
70#define HAL_LOGD(x...) ssdk_printf(SSDK_DEBUG, x)
91#define CSI_COMPLETE_EVENT_FLAG 1u
101 return readl(base + addr);
106 writel(val, base + addr);
112 max = max / 2 + min / 2;
120#define mdelay(ms) vTaskDelay(ms)
121#define udelay(us) vTaskDelay((us + 999) / 1000)
130 if (arch_in_irq_mode()) {
135 state = xTaskGetSchedulerState();
137 if (state != taskSCHEDULER_NOT_STARTED) {
139 if (arch_irq_is_masked()) {
152 EventGroupHandle_t hEventGroup;
156#if (configSUPPORT_DYNAMIC_ALLOCATION == 1)
157 hEventGroup = xEventGroupCreate();
167#ifndef USE_FreeRTOS_HEAP_1
169 vEventGroupDelete(com->
event);
183 EventGroupHandle_t hEventGroup = (EventGroupHandle_t)com->
event;
196 rflags = xEventGroupWaitBits(hEventGroup, (EventBits_t)flags, exit_clr,
197 wait_all, (TickType_t)timeout);
198 if ((flags & rflags) == 0U) {
213 EventGroupHandle_t hEventGroup = (EventGroupHandle_t)com->
event;
216 if ((hEventGroup ==
NULL) ||
220#if (configUSE_OS2_EVENTFLAGS_FROM_ISR == 0)
228 if (xEventGroupSetBitsFromISR(hEventGroup,
234 portYIELD_FROM_ISR(yield);
246#define spin_lock_init(a) (*a = NULL)
248#define spin_lock_irqsave(spinlock, flags) \
250 irq_state_t state = arch_irq_save(); \
254#define spin_unlock_irqrestore(spinlock, flags) \
256 irq_state_t state = (irq_state_t)flags; \
257 arch_irq_restore(state); \
261static inline void gpio_set(
void *dev,
unsigned int pin,
bool level)
283inline static int i2c_write(
void *adap, uint8_t addr, uint8_t *buf,
int count)
295inline static int i2c_read(
void *adap, uint8_t addr, uint8_t *buf,
int count)
308 int regc, uint8_t *buf,
int bufc)
331 return xQueueCreateMutex(queueQUEUE_TYPE_MUTEX);
344 xQueueTakeMutexRecursive(p, t);
350 xQueueGiveMutexRecursive(p);
Interrupt interface hearder file.
static osMutexId_t osMutexNew(void *p)
Definition: sdrv-cam-os-def.h:328
static void gpio_set(void *dev, unsigned int pin, bool level)
Definition: sdrv-cam-os-def.h:261
static void usleep_range(uint32_t min, uint32_t max)
Definition: sdrv-cam-os-def.h:110
static uint32_t reg_read(reg_addr_t base, uint32_t addr)
Definition: sdrv-cam-os-def.h:99
static int wait_completion_timeout(completion_t *com, uint32_t timeout)
Definition: sdrv-cam-os-def.h:177
static void wait_idle_and_set_busy(void *ctrl)
Definition: sdrv-cam-os-def.h:269
#define EVENT_FLAGS_INVALID_BITS
Definition: sdrv-cam-os-def.h:48
static void completion_init(completion_t *com)
Definition: sdrv-cam-os-def.h:149
static uint32_t IRQ_Context(void)
Definition: sdrv-cam-os-def.h:123
static void osMutexRelease(void *p)
Definition: sdrv-cam-os-def.h:347
void * spinlock_t
Definition: sdrv-cam-os-def.h:245
static void completion_destroy(completion_t *com)
Definition: sdrv-cam-os-def.h:164
osStatus_t
Definition: sdrv-cam-os-def.h:72
@ osErrorISR
Not allowed in ISR context: the function cannot be called from interrupt service routines.
Definition: sdrv-cam-os-def.h:79
@ osStatusReserved
Prevents enum down-size compiler optimization.
Definition: sdrv-cam-os-def.h:80
@ osErrorResource
Resource not available.
Definition: sdrv-cam-os-def.h:76
@ osErrorTimeout
Operation not completed within the timeout period.
Definition: sdrv-cam-os-def.h:75
@ osOK
Operation completed successfully.
Definition: sdrv-cam-os-def.h:73
@ osError
Unspecified RTOS error: run-time error but no other error message fits.
Definition: sdrv-cam-os-def.h:74
@ osErrorParameter
Parameter error.
Definition: sdrv-cam-os-def.h:77
@ osErrorNoMemory
System is out of memory: it was impossible to allocate or reserve memory for the operation.
Definition: sdrv-cam-os-def.h:78
static int i2c_read(void *adap, uint8_t addr, uint8_t *buf, int count)
Definition: sdrv-cam-os-def.h:295
static void osMutexDelete(void *p)
Definition: sdrv-cam-os-def.h:334
static int i2c_write(void *adap, uint8_t addr, uint8_t *buf, int count)
Definition: sdrv-cam-os-def.h:283
static void reg_write(reg_addr_t base, uint32_t addr, uint32_t val)
Definition: sdrv-cam-os-def.h:104
QueueHandle_t osMutexId_t
Definition: sdrv-cam-os-def.h:327
static void completion_done(completion_t *com)
Definition: sdrv-cam-os-def.h:210
static int i2c_write_read(void *adap, uint8_t addr, uint8_t *reg, int regc, uint8_t *buf, int bufc)
Definition: sdrv-cam-os-def.h:307
paddr_t reg_addr_t
Definition: sdrv-cam-os-def.h:84
void * osEventFlagsId_t
Definition: sdrv-cam-os-def.h:93
static void osMutexAcquire(void *p, int t)
Definition: sdrv-cam-os-def.h:340
#define CSI_COMPLETE_EVENT_FLAG
Definition: sdrv-cam-os-def.h:91
paddr_t dma_addr_t
Definition: sdrv-cam-os-def.h:88
#define NULL
Definition: sdrv_crypto_utility.h:21
SemiDrive GPIO driver header file.
status_t sdrv_gpio_set_pin_direction(uint32_t pin_index, gpio_direction_e dir)
Config gpio direction.
status_t sdrv_gpio_set_pin_output_level(uint32_t pin_index, bool level)
Config gpio output level.
@ GPIO_DIR_OUT
Definition: sdrv_gpio.h:32
SemiDrive I2C driver header file.
@ SDRV_I2CDRV_TRANS_OK
Definition: sdrv_i2c.h:21
status_t sdrv_i2c_read(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *rbuf, uint16_t rlen, uint32_t timeout, bool need_stop)
Read data from slave device use poll blocking format.
status_t sdrv_i2c_get_trans_stat(sdrv_i2c_t *ctrl)
Get transfer stat(only applicable for master).
sdrv_i2cdrv_bus_stat_t sdrv_i2c_get_bus_stat(sdrv_i2c_t *ctrl)
Get bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2...
status_t sdrv_i2c_write(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *wbuf, uint16_t wlen, uint32_t timeout, bool need_stop)
Write data to slave device use poll blocking format.
sdrv_i2cdrv_bus_stat_t
i2c bus stat(only applicable for master mode)
Definition: sdrv_i2c.h:60
@ SDRV_I2CDRV_BUS_BUSY
Definition: sdrv_i2c.h:62
@ SDRV_I2CDRV_BUS_IDLE
Definition: sdrv_i2c.h:61
status_t sdrv_i2c_set_bus_stat(sdrv_i2c_t *ctrl, sdrv_i2cdrv_bus_stat_t bus_stat)
Set bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2...
Definition: sdrv-cam-baremetal-def.h:88
osEventFlagsId_t event
Definition: sdrv-cam-baremetal-def.h:89