198{
201
205
207 if (rc < 0) {
208 goto err_spim_grab;
209 }
212 goto err_chrng;
213 }
215 if (rc < 0) {
216 goto err_spim_lock;
217 }
219 if ((drv) && (drv->
xfer)) {
220 rc = drv->
xfer(spim, cfgid, txd, rxb, size, to);
221 } else {
223 }
224 if (rc < 0) {
225 goto err_drv_xfer;
226 }
230
231err_drv_xfer:
233err_spim_lock:
234err_chrng:
236err_spim_grab:
237 return rc;
238}
xwer_t xwds_spim_put(struct xwds_spim *spim)
XWDS API:减少对象的引用计数
xwer_t xwds_spim_grab(struct xwds_spim *spim)
XWDS API:增加对象的引用计数
#define XWDS_VALIDATE(exp, errstr,...)
#define ECHRNG
Channel number out of range
#define EINVAL
Invalid argument
#define EFAULT
Bad address
#define ENOSYS
Function not implemented
static xwer_t xwos_mtx_lock_to(struct xwos_mtx *mtx, xwtm_t to)
XWOS API:限时等待上锁互斥锁
static xwer_t xwos_mtx_unlock(struct xwos_mtx *mtx)
XWOS API:解锁互斥锁
const struct xwds_driver * drv
xwer_t(* xfer)(struct xwds_spim *, xwid_t, const xwu8_t[], xwu8_t *, xwsz_t *, xwtm_t)
struct xwds_spim::@25 xfer