Bouffalo SDK  1.0
Bouffalolab Software Development Kit
bflb_core.h
Go to the documentation of this file.
1 #ifndef _BFLB_CORE_H
2 #define _BFLB_CORE_H
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdbool.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <sys/errno.h>
10 #include <risc-v/csr.h>
11 #include <risc-v/riscv_arch.h>
12 #include <compiler/compiler_gcc.h>
13 #include <compiler/compiler_ld.h>
14 // #include "bflb_list.h"
15 #include "bflb_common.h"
16 #include "bflb_mtimer.h"
17 #include "bflb_irq.h"
18 #include "bflb_l1c.h"
19 
28 #if !defined(BL602) && !defined(BL702) && !defined(BL702L) && \
29  !defined(BL616) && !defined(BL606P) && !defined(BL808) && !defined(BL628)
30 #error please define a supported chip
31 #endif
32 
33 #ifdef CONFIG_PARAM_ASSERT
34 #define ASSERT_PARAM(expr) ((expr) ? (void)0 : assert_func(__FILE__, __LINE__, __FUNCTION__, #expr))
35 void assert_func(uint8_t *file, uint32_t line, uint8_t *function, uint8_t *string);
36 #else
37 #define ASSERT_PARAM(expr) ((void)0U)
38 #endif
39 
40 #if defined(BL702)
41 #define BFLB_PSRAM_BASE 0x26000000
42 #elif defined(BL616)
43 #define BFLB_PSRAM_BASE 0xA8000000
44 #elif defined(BL808)
45 #define BFLB_PSRAM_BASE 0x50000000
46 #elif defined(BL606P)
47 #define BFLB_PSRAM_BASE 0x54000000
48 #endif
49 
50 #define BFLB_DEVICE_TYPE_ADC 0
51 #define BFLB_DEVICE_TYPE_DAC 1
52 #define BFLB_DEVICE_TYPE_AUDIOADC 2
53 #define BFLB_DEVICE_TYPE_AUDIODAC 3
54 #define BFLB_DEVICE_TYPE_GPIO 4
55 #define BFLB_DEVICE_TYPE_UART 5
56 #define BFLB_DEVICE_TYPE_SPI 6
57 #define BFLB_DEVICE_TYPE_I2C 7
58 #define BFLB_DEVICE_TYPE_DMA 8
59 #define BFLB_DEVICE_TYPE_I2S 9
60 #define BFLB_DEVICE_TYPE_IR 10
61 #define BFLB_DEVICE_TYPE_TIMER 11
62 #define BFLB_DEVICE_TYPE_PWM 12
63 #define BFLB_DEVICE_TYPE_CAMERA 14
64 #define BFLB_DEVICE_TYPE_FLASH 15
65 #define BFLB_DEVICE_TYPE_QSPI 16
66 #define BFLB_DEVICE_TYPE_SDH 17
67 #define BFLB_DEVICE_TYPE_SDU 18
68 #define BFLB_DEVICE_TYPE_ETH 19
69 #define BFLB_DEVICE_TYPE_RTC 20
70 #define BFLB_DEVICE_TYPE_CRC 21
71 #define BFLB_DEVICE_TYPE_RNG 22
72 #define BFLB_DEVICE_TYPE_MIPI 23
73 #define BFLB_DEVICE_TYPE_DPI 24
74 #define BFLB_DEVICE_TYPE_DSI 25
75 #define BFLB_DEVICE_TYPE_CSI 26
76 #define BFLB_DEVICE_TYPE_USB 27
77 #define BFLB_DEVICE_TYPE_AES 28
78 #define BFLB_DEVICE_TYPE_SHA 29
79 #define BFLB_DEVICE_TYPE_MD5 30
80 #define BFLB_DEVICE_TYPE_TRNG 31
81 #define BFLB_DEVICE_TYPE_PKA 32
82 #define BFLB_DEVICE_TYPE_CKS 33
83 #define BFLB_DEVICE_TYPE_MJPEG 34
84 #define BFLB_DEVICE_TYPE_KYS 35
85 #define BFLB_DEVICE_TYPE_DBI 36
86 #define BFLB_DEVICE_TYPE_WDT 37
87 #define BFLB_DEVICE_TYPE_EF_CTRL 38
88 #define BFLB_DEVICE_TYPE_SDIO2 39
89 #define BFLB_DEVICE_TYPE_SDIO3 40
90 #define BFLB_DEVICE_TYPE_PLFMDMA 41
91 #define BFLB_DEVICE_TYPE_WO 42
92 
93 struct bflb_device_s {
94  const char *name;
95  uint32_t reg_base;
96  uint8_t irq_num;
97  uint8_t idx;
98  uint8_t sub_idx;
99  uint8_t dev_type;
100  void *user_data;
101 };
102 
103 #ifdef __cplusplus
104 extern "C" {
105 #endif
106 
113 struct bflb_device_s *bflb_device_get_by_name(const char *name);
114 
122 struct bflb_device_s *bflb_device_get_by_id(uint8_t type, uint8_t idx);
123 
130 void bflb_device_set_userdata(struct bflb_device_s *device, void *user_data);
131 
132 #ifdef __cplusplus
133 }
134 #endif
135 
144 #endif
uint8_t irq_num
Definition: bflb_core.h:96
uint8_t dev_type
Definition: bflb_core.h:99
const char * name
Definition: bflb_core.h:94
void bflb_device_set_userdata(struct bflb_device_s *device, void *user_data)
Set user data into device handle.
struct bflb_device_s * bflb_device_get_by_name(const char *name)
Get device handle by name.
uint8_t idx
Definition: bflb_core.h:97
struct bflb_device_s * bflb_device_get_by_id(uint8_t type, uint8_t idx)
Get device handle by type and index.
void * user_data
Definition: bflb_core.h:100
uint8_t sub_idx
Definition: bflb_core.h:98
uint32_t reg_base
Definition: bflb_core.h:95