#ifndef __FSL_QBMAN_PORTAL_H
#define __FSL_QBMAN_PORTAL_H
#include <soc/fsl/dpaa2-fd.h>
#define QMAN_REV_4000 …
#define QMAN_REV_4100 …
#define QMAN_REV_4101 …
#define QMAN_REV_5000 …
#define QMAN_REV_MASK …
struct dpaa2_dq;
struct qbman_swp;
struct qbman_swp_desc { … };
#define QBMAN_SWP_INTERRUPT_EQRI …
#define QBMAN_SWP_INTERRUPT_EQDI …
#define QBMAN_SWP_INTERRUPT_DQRI …
#define QBMAN_SWP_INTERRUPT_RCRI …
#define QBMAN_SWP_INTERRUPT_RCDI …
#define QBMAN_SWP_INTERRUPT_VDCI …
struct qbman_pull_desc { … };
enum qbman_pull_type_e { … };
#define QBMAN_RESULT_MASK …
#define QBMAN_RESULT_DQ …
#define QBMAN_RESULT_FQRN …
#define QBMAN_RESULT_FQRNI …
#define QBMAN_RESULT_FQPN …
#define QBMAN_RESULT_FQDAN …
#define QBMAN_RESULT_CDAN …
#define QBMAN_RESULT_CSCN_MEM …
#define QBMAN_RESULT_CGCU …
#define QBMAN_RESULT_BPSCN …
#define QBMAN_RESULT_CSCN_WQ …
#define QBMAN_FQ_SCHEDULE …
#define QBMAN_FQ_FORCE …
#define QBMAN_FQ_XON …
#define QBMAN_FQ_XOFF …
struct qbman_eq_desc { … };
struct qbman_eq_desc_with_fd { … };
struct qbman_release_desc { … };
#define QBMAN_MC_RSLT_OK …
#define CODE_CDAN_WE_EN …
#define CODE_CDAN_WE_CTX …
struct qbman_swp { … };
extern
int (*qbman_swp_enqueue_ptr)(struct qbman_swp *s,
const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd);
extern
int (*qbman_swp_enqueue_multiple_ptr)(struct qbman_swp *s,
const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd,
uint32_t *flags,
int num_frames);
extern
int (*qbman_swp_enqueue_multiple_desc_ptr)(struct qbman_swp *s,
const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd,
int num_frames);
extern
int (*qbman_swp_pull_ptr)(struct qbman_swp *s, struct qbman_pull_desc *d);
extern
const struct dpaa2_dq *(*qbman_swp_dqrr_next_ptr)(struct qbman_swp *s);
extern
int (*qbman_swp_release_ptr)(struct qbman_swp *s,
const struct qbman_release_desc *d,
const u64 *buffers,
unsigned int num_buffers);
struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d);
void qbman_swp_finish(struct qbman_swp *p);
u32 qbman_swp_interrupt_read_status(struct qbman_swp *p);
void qbman_swp_interrupt_clear_status(struct qbman_swp *p, u32 mask);
u32 qbman_swp_interrupt_get_trigger(struct qbman_swp *p);
void qbman_swp_interrupt_set_trigger(struct qbman_swp *p, u32 mask);
int qbman_swp_interrupt_get_inhibit(struct qbman_swp *p);
void qbman_swp_interrupt_set_inhibit(struct qbman_swp *p, int inhibit);
void qbman_swp_push_get(struct qbman_swp *p, u8 channel_idx, int *enabled);
void qbman_swp_push_set(struct qbman_swp *p, u8 channel_idx, int enable);
void qbman_pull_desc_clear(struct qbman_pull_desc *d);
void qbman_pull_desc_set_storage(struct qbman_pull_desc *d,
struct dpaa2_dq *storage,
dma_addr_t storage_phys,
int stash);
void qbman_pull_desc_set_numframes(struct qbman_pull_desc *d, u8 numframes);
void qbman_pull_desc_set_fq(struct qbman_pull_desc *d, u32 fqid);
void qbman_pull_desc_set_wq(struct qbman_pull_desc *d, u32 wqid,
enum qbman_pull_type_e dct);
void qbman_pull_desc_set_channel(struct qbman_pull_desc *d, u32 chid,
enum qbman_pull_type_e dct);
void qbman_swp_dqrr_consume(struct qbman_swp *s, const struct dpaa2_dq *dq);
int qbman_result_has_new_result(struct qbman_swp *p, const struct dpaa2_dq *dq);
void qbman_eq_desc_clear(struct qbman_eq_desc *d);
void qbman_eq_desc_set_no_orp(struct qbman_eq_desc *d, int respond_success);
void qbman_eq_desc_set_token(struct qbman_eq_desc *d, u8 token);
void qbman_eq_desc_set_fq(struct qbman_eq_desc *d, u32 fqid);
void qbman_eq_desc_set_qd(struct qbman_eq_desc *d, u32 qdid,
u32 qd_bin, u32 qd_prio);
void qbman_release_desc_clear(struct qbman_release_desc *d);
void qbman_release_desc_set_bpid(struct qbman_release_desc *d, u16 bpid);
void qbman_release_desc_set_rcdi(struct qbman_release_desc *d, int enable);
int qbman_swp_acquire(struct qbman_swp *s, u16 bpid, u64 *buffers,
unsigned int num_buffers);
int qbman_swp_alt_fq_state(struct qbman_swp *s, u32 fqid,
u8 alt_fq_verb);
int qbman_swp_CDAN_set(struct qbman_swp *s, u16 channelid,
u8 we_mask, u8 cdan_en,
u64 ctx);
void *qbman_swp_mc_start(struct qbman_swp *p);
void qbman_swp_mc_submit(struct qbman_swp *p, void *cmd, u8 cmd_verb);
void *qbman_swp_mc_result(struct qbman_swp *p);
static inline int
qbman_swp_enqueue(struct qbman_swp *s, const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd)
{ … }
static inline int
qbman_swp_enqueue_multiple(struct qbman_swp *s,
const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd,
uint32_t *flags,
int num_frames)
{ … }
static inline int
qbman_swp_enqueue_multiple_desc(struct qbman_swp *s,
const struct qbman_eq_desc *d,
const struct dpaa2_fd *fd,
int num_frames)
{ … }
static inline int qbman_result_is_DQ(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_SCN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_FQDAN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_CDAN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_CSCN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_BPSCN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_CGCU(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_FQRN(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_FQRNI(const struct dpaa2_dq *dq)
{ … }
static inline int qbman_result_is_FQPN(const struct dpaa2_dq *dq)
{ … }
static inline u8 qbman_result_SCN_state(const struct dpaa2_dq *scn)
{ … }
#define SCN_RID_MASK …
static inline u32 qbman_result_SCN_rid(const struct dpaa2_dq *scn)
{ … }
static inline u64 qbman_result_SCN_ctx(const struct dpaa2_dq *scn)
{ … }
static inline int qbman_swp_fq_schedule(struct qbman_swp *s, u32 fqid)
{ … }
static inline int qbman_swp_fq_force(struct qbman_swp *s, u32 fqid)
{ … }
static inline int qbman_swp_fq_xon(struct qbman_swp *s, u32 fqid)
{ … }
static inline int qbman_swp_fq_xoff(struct qbman_swp *s, u32 fqid)
{ … }
static inline int qbman_swp_CDAN_set_context(struct qbman_swp *s, u16 channelid,
u64 ctx)
{ … }
static inline int qbman_swp_CDAN_enable(struct qbman_swp *s, u16 channelid)
{ … }
static inline int qbman_swp_CDAN_disable(struct qbman_swp *s, u16 channelid)
{ … }
static inline int qbman_swp_CDAN_set_context_enable(struct qbman_swp *s,
u16 channelid,
u64 ctx)
{ … }
static inline void *qbman_swp_mc_complete(struct qbman_swp *swp, void *cmd,
u8 cmd_verb)
{ … }
struct qbman_fq_query_np_rslt { … };
int qbman_fq_query_state(struct qbman_swp *s, u32 fqid,
struct qbman_fq_query_np_rslt *r);
u32 qbman_fq_state_frame_count(const struct qbman_fq_query_np_rslt *r);
u32 qbman_fq_state_byte_count(const struct qbman_fq_query_np_rslt *r);
struct qbman_bp_query_rslt { … };
int qbman_bp_query(struct qbman_swp *s, u16 bpid,
struct qbman_bp_query_rslt *r);
u32 qbman_bp_info_num_free_bufs(struct qbman_bp_query_rslt *a);
static inline int qbman_swp_release(struct qbman_swp *s,
const struct qbman_release_desc *d,
const u64 *buffers,
unsigned int num_buffers)
{ … }
static inline int qbman_swp_pull(struct qbman_swp *s,
struct qbman_pull_desc *d)
{ … }
static inline const struct dpaa2_dq *qbman_swp_dqrr_next(struct qbman_swp *s)
{ … }
int qbman_swp_set_irq_coalescing(struct qbman_swp *p, u32 irq_threshold,
u32 irq_holdoff);
void qbman_swp_get_irq_coalescing(struct qbman_swp *p, u32 *irq_threshold,
u32 *irq_holdoff);
#endif