XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
chip.h
浏览该文件的文档.
1
21#ifndef __xwcd_ds_soc_chip_h__
22#define __xwcd_ds_soc_chip_h__
23
24#include <xwcd/ds/standard.h>
25#include <xwcd/ds/device.h>
26
33#if defined(XWCDCFG_ds_SOC_EIRQ_ROISRT) && (1 == XWCDCFG_ds_SOC_EIRQ_ROISRT)
34# define __xwds_soc_eirq_tbl_qualifier const
35#else
36# define __xwds_soc_eirq_tbl_qualifier
37#endif
38
39#if defined(XWCDCFG_ds_SOC_DMA_ROCBT) && (1 == XWCDCFG_ds_SOC_DMA_ROCBT)
40# define __xwds_soc_dma_tbl_qualifier const
41#else
42# define __xwds_soc_dma_tbl_qualifier
43#endif
44
45struct xwds_soc;
46struct xwds_dma_cfg;
47
53 xwer_t (* get_reset_reason)(struct xwds_soc * /*soc*/,
54 xwu64_t * /*reason*/);
55 xwer_t (* get_wkup_source)(struct xwds_soc * /*soc*/,
56 xwu64_t * /*source*/);
57#if defined(XWCDCFG_ds_SOC_CLK) && (1 == XWCDCFG_ds_SOC_CLK)
58 xwer_t (* clk_req)(struct xwds_soc * /*soc*/,
59 xwid_t /*id*/);
60 xwer_t (* clk_rls)(struct xwds_soc * /*soc*/,
61 xwid_t /*id*/);
62 xwer_t (* clk_getfqcy)(struct xwds_soc * /*soc*/,
63 xwid_t /*id*/,
64 xwu32_t * /*buf*/,
65 xwsz_t * /*num*/);
66#endif
67
68#if defined(XWCDCFG_ds_SOC_PWR) && (1 == XWCDCFG_ds_SOC_PWR)
69 xwer_t (* pwr_req)(struct xwds_soc * /*soc*/,
70 xwid_t /*id*/);
71 xwer_t (* pwr_rls)(struct xwds_soc * /*soc*/,
72 xwid_t /*id*/);
73 xwer_t (* pwr_getvltg)(struct xwds_soc * /*soc*/,
74 xwid_t /*id*/,
75 xwu32_t * /*buf*/,
76 xwsz_t * /*num*/);
77#endif
78
79#if defined(XWCDCFG_ds_SOC_GPIO) && (1 == XWCDCFG_ds_SOC_GPIO)
80 xwer_t (* gpio_req)(struct xwds_soc * /*soc*/,
81 xwid_t /*port*/,
82 xwsq_t /*pinmask*/);
83 xwer_t (* gpio_rls)(struct xwds_soc * /*soc*/,
84 xwid_t /*port*/,
85 xwid_t /*pinmask*/);
86 xwer_t (* gpio_cfg)(struct xwds_soc * /*soc*/,
87 xwid_t /*port*/,
88 xwsq_t /*pinmask*/,
89 void * /*cfg*/);
90 xwer_t (* gpio_set)(struct xwds_soc * /*soc*/,
91 xwid_t /*port*/,
92 xwsq_t /*pinmask*/);
93 xwer_t (* gpio_reset)(struct xwds_soc * /*soc*/,
94 xwid_t /*port*/,
95 xwsq_t /*pinmask*/);
96 xwer_t (* gpio_toggle)(struct xwds_soc * /*soc*/,
97 xwid_t /*port*/,
98 xwsq_t /*pinmask*/);
100 xwid_t /*port*/,
101 xwsq_t /*pinmask*/,
102 xwsq_t /*out*/);
103 xwer_t (* gpio_read_output)(struct xwds_soc * /*soc*/,
104 xwid_t /*port*/,
105 xwsq_t /*pinmask*/,
106 xwsq_t * /*outbuf*/);
107 xwer_t (* gpio_input)(struct xwds_soc * /*soc*/,
108 xwid_t /*port*/,
109 xwsq_t /*pinmask*/,
110 xwsq_t * /*inbuf*/);
111#endif
112
113#if defined(XWCDCFG_ds_SOC_EIRQ) && (1 == XWCDCFG_ds_SOC_EIRQ)
114 xwer_t (* eirq_req)(struct xwds_soc * /*soc*/,
115 xwid_t /*port*/, xwsq_t /*pinmask*/,
116 xwid_t /*eiid*/, xwsq_t /*eiflag*/);
117 xwer_t (* eirq_rls)(struct xwds_soc * /*soc*/,
118 xwid_t /*port*/, xwsq_t /*pinmask*/,
119 xwid_t /*eiid*/);
120#endif
121
122#if defined(XWCDCFG_ds_SOC_DMA) && (1 == XWCDCFG_ds_SOC_DMA)
123 xwer_t (* dma_req)(struct xwds_soc * /*soc*/,
124 xwid_t /*ch*/);
125 xwer_t (* dma_rls)(struct xwds_soc * /*soc*/,
126 xwid_t /*ch*/);
127 xwer_t (* dma_cfg)(struct xwds_soc * /*soc*/,
128 xwid_t /*ch*/,
129 void * /*cfg*/);
130 xwer_t (* dma_enable)(struct xwds_soc * /*soc*/,
131 xwid_t /*ch*/);
132 xwer_t (* dma_disable)(struct xwds_soc * /*soc*/,
133 xwid_t /*ch*/);
134 xwer_t (* dma_start)(struct xwds_soc * /*soc*/,
135 xwid_t /*ch*/);
136 xwer_t (* dma_stop)(struct xwds_soc * /*soc*/,
137 xwid_t /*ch*/);
138#endif
139};
140
144typedef void * xwds_eirq_arg_t;
145
149typedef void (* xwds_eirq_f)(struct xwds_soc *, xwid_t, xwds_eirq_arg_t);
150
154typedef void * xwds_dma_cbarg_t;
155
159typedef void (* xwds_dma_f)(struct xwds_soc * /* soc */,
160 xwid_t /* ch */,
161 xwu32_t /* rc */,
162 xwds_dma_cbarg_t /* arg */);
163
167struct xwds_soc {
170 /* attributes */
171 const void * xwccfg;
172#if (defined(XWCDCFG_ds_SOC_GPIO) && (1 == XWCDCFG_ds_SOC_GPIO))
173 struct {
174 void * cfg;
179#endif
180#if (defined(XWCDCFG_ds_SOC_CLK) && (1 == XWCDCFG_ds_SOC_CLK))
181 struct {
182 xwsz_t num;
183 } clk;
184#endif
185#if (defined(XWCDCFG_ds_SOC_PWR) && (1 == XWCDCFG_ds_SOC_PWR))
186 struct {
187 xwsz_t num;
188 } pwr;
189#endif
190#if (defined(XWCDCFG_ds_SOC_EIRQ) && (1 == XWCDCFG_ds_SOC_EIRQ))
191 struct {
196#endif
197#if (defined(XWCDCFG_ds_SOC_DMA) && (1 == XWCDCFG_ds_SOC_DMA))
198 struct {
199 xwsz_t ch_num;
200 void * ccfg;
203 } dma;
204#endif
205};
206
211void xwds_soc_construct(struct xwds_soc * soc);
212
217void xwds_soc_destruct(struct xwds_soc * soc);
218
223xwer_t xwds_soc_grab(struct xwds_soc * soc);
224
229xwer_t xwds_soc_put(struct xwds_soc * soc);
230
236xwer_t xwds_soc_get_reset_reason(struct xwds_soc * soc, xwu64_t * reason);
237
243xwer_t xwds_soc_get_wkup_source(struct xwds_soc * soc, xwu64_t * source);
244
249#endif /* xwcd/ds/soc/chip.h */
xwer_t xwds_dma_cfg(struct xwds_soc *soc, xwid_t ch, void *cfg, xwds_dma_f cb, xwds_dma_cbarg_t arg)
XWDS API:配置DMA的通道
Definition dma.c:77
玄武设备栈:设备基类
void xwds_soc_destruct(struct xwds_soc *soc)
XWDS API:SOC对象的析构函数
Definition chip.c:65
xwer_t xwds_soc_get_wkup_source(struct xwds_soc *soc, xwu64_t *source)
XWDS API:获取唤醒源
Definition chip.c:107
void(* xwds_eirq_f)(struct xwds_soc *, xwid_t, xwds_eirq_arg_t)
外部中断函数
Definition chip.h:149
xwer_t xwds_soc_grab(struct xwds_soc *soc)
XWDS API:增加对象的引用计数
Definition chip.c:71
void * xwds_dma_cbarg_t
DMA完成回调函数参数
Definition chip.h:154
void(* xwds_dma_f)(struct xwds_soc *, xwid_t, xwu32_t, xwds_dma_cbarg_t)
DMA完成回调函数类型
Definition chip.h:159
xwer_t xwds_soc_put(struct xwds_soc *soc)
XWDS API:减少对象的引用计数
Definition chip.c:77
void xwds_soc_construct(struct xwds_soc *soc)
XWDS API:SOC构造函数
Definition chip.c:58
xwer_t xwds_soc_get_reset_reason(struct xwds_soc *soc, xwu64_t *reason)
XWDS API:获取复位原因
Definition chip.c:83
#define __xwds_soc_dma_tbl_qualifier
Definition chip.h:42
#define __xwds_soc_eirq_tbl_qualifier
Definition chip.h:36
void * xwds_eirq_arg_t
外部中断函数参数
Definition chip.h:144
signed long xwer_t
Definition type.h:554
unsigned long xwid_t
Definition type.h:481
__xwcc_atomic xwsq_t atomic_xwsq_t
Definition type.h:448
unsigned long xwsz_t
Definition type.h:339
unsigned long xwsq_t
Definition type.h:445
uint64_t xwu64_t
Definition type.h:303
uint32_t xwu32_t
Definition type.h:266
设备(所有设备的基类)
Definition device.h:127
基本驱动函数表(所有设备驱动的基类)
Definition device.h:113
BSP中需要提供的SOC设备驱动函数表
Definition chip.h:51
xwer_t(* gpio_output)(struct xwds_soc *, xwid_t, xwsq_t, xwsq_t)
Definition chip.h:99
xwer_t(* gpio_req)(struct xwds_soc *, xwid_t, xwsq_t)
Definition chip.h:80
xwer_t(* gpio_rls)(struct xwds_soc *, xwid_t, xwid_t)
Definition chip.h:83
xwer_t(* get_reset_reason)(struct xwds_soc *, xwu64_t *)
Definition chip.h:53
struct xwds_driver base
Definition chip.h:52
xwer_t(* get_wkup_source)(struct xwds_soc *, xwu64_t *)
Definition chip.h:55
xwer_t(* eirq_rls)(struct xwds_soc *, xwid_t, xwsq_t, xwid_t)
Definition chip.h:117
xwer_t(* gpio_toggle)(struct xwds_soc *, xwid_t, xwsq_t)
Definition chip.h:96
xwer_t(* gpio_read_output)(struct xwds_soc *, xwid_t, xwsq_t, xwsq_t *)
Definition chip.h:103
xwer_t(* gpio_cfg)(struct xwds_soc *, xwid_t, xwsq_t, void *)
Definition chip.h:86
xwer_t(* gpio_set)(struct xwds_soc *, xwid_t, xwsq_t)
Definition chip.h:90
xwer_t(* gpio_input)(struct xwds_soc *, xwid_t, xwsq_t, xwsq_t *)
Definition chip.h:107
xwer_t(* eirq_req)(struct xwds_soc *, xwid_t, xwsq_t, xwid_t, xwsq_t)
Definition chip.h:114
xwer_t(* gpio_reset)(struct xwds_soc *, xwid_t, xwsq_t)
Definition chip.h:93
SOC设备
Definition chip.h:167
xwsz_t num
Definition chip.h:194
xwsz_t port_num
Definition chip.h:176
struct xwds_device dev
Definition chip.h:168
struct xwds_soc::@23 gpio
void * cfg
Definition chip.h:174
const void * xwccfg
Definition chip.h:171
xwds_eirq_arg_t * isrargs
Definition chip.h:193
xwds_eirq_f * isrs
Definition chip.h:192
xwsz_t pin_num
Definition chip.h:177
struct xwds_soc::@24 eirq
atomic_xwsq_t * pins
Definition chip.h:175
玄武设备栈:顶级头文件