162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (c) 2022 HiSilicon Limited. */ 362306a36Sopenharmony_ci#ifndef QM_COMMON_H 462306a36Sopenharmony_ci#define QM_COMMON_H 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#define QM_DBG_READ_LEN 256 762306a36Sopenharmony_ci 862306a36Sopenharmony_cistruct qm_cqe { 962306a36Sopenharmony_ci __le32 rsvd0; 1062306a36Sopenharmony_ci __le16 cmd_id; 1162306a36Sopenharmony_ci __le16 rsvd1; 1262306a36Sopenharmony_ci __le16 sq_head; 1362306a36Sopenharmony_ci __le16 sq_num; 1462306a36Sopenharmony_ci __le16 rsvd2; 1562306a36Sopenharmony_ci __le16 w7; 1662306a36Sopenharmony_ci}; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct qm_eqe { 1962306a36Sopenharmony_ci __le32 dw0; 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct qm_aeqe { 2362306a36Sopenharmony_ci __le32 dw0; 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistruct qm_sqc { 2762306a36Sopenharmony_ci __le16 head; 2862306a36Sopenharmony_ci __le16 tail; 2962306a36Sopenharmony_ci __le32 base_l; 3062306a36Sopenharmony_ci __le32 base_h; 3162306a36Sopenharmony_ci __le32 dw3; 3262306a36Sopenharmony_ci __le16 w8; 3362306a36Sopenharmony_ci __le16 rsvd0; 3462306a36Sopenharmony_ci __le16 pasid; 3562306a36Sopenharmony_ci __le16 w11; 3662306a36Sopenharmony_ci __le16 cq_num; 3762306a36Sopenharmony_ci __le16 w13; 3862306a36Sopenharmony_ci __le32 rsvd1; 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistruct qm_cqc { 4262306a36Sopenharmony_ci __le16 head; 4362306a36Sopenharmony_ci __le16 tail; 4462306a36Sopenharmony_ci __le32 base_l; 4562306a36Sopenharmony_ci __le32 base_h; 4662306a36Sopenharmony_ci __le32 dw3; 4762306a36Sopenharmony_ci __le16 w8; 4862306a36Sopenharmony_ci __le16 rsvd0; 4962306a36Sopenharmony_ci __le16 pasid; 5062306a36Sopenharmony_ci __le16 w11; 5162306a36Sopenharmony_ci __le32 dw6; 5262306a36Sopenharmony_ci __le32 rsvd1; 5362306a36Sopenharmony_ci}; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_cistruct qm_eqc { 5662306a36Sopenharmony_ci __le16 head; 5762306a36Sopenharmony_ci __le16 tail; 5862306a36Sopenharmony_ci __le32 base_l; 5962306a36Sopenharmony_ci __le32 base_h; 6062306a36Sopenharmony_ci __le32 dw3; 6162306a36Sopenharmony_ci __le32 rsvd[2]; 6262306a36Sopenharmony_ci __le32 dw6; 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct qm_aeqc { 6662306a36Sopenharmony_ci __le16 head; 6762306a36Sopenharmony_ci __le16 tail; 6862306a36Sopenharmony_ci __le32 base_l; 6962306a36Sopenharmony_ci __le32 base_h; 7062306a36Sopenharmony_ci __le32 dw3; 7162306a36Sopenharmony_ci __le32 rsvd[2]; 7262306a36Sopenharmony_ci __le32 dw6; 7362306a36Sopenharmony_ci}; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistatic const char * const qm_s[] = { 7662306a36Sopenharmony_ci "init", "start", "close", "stop", 7762306a36Sopenharmony_ci}; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_civoid *hisi_qm_ctx_alloc(struct hisi_qm *qm, size_t ctx_size, 8062306a36Sopenharmony_ci dma_addr_t *dma_addr); 8162306a36Sopenharmony_civoid hisi_qm_ctx_free(struct hisi_qm *qm, size_t ctx_size, 8262306a36Sopenharmony_ci const void *ctx_addr, dma_addr_t *dma_addr); 8362306a36Sopenharmony_civoid hisi_qm_show_last_dfx_regs(struct hisi_qm *qm); 8462306a36Sopenharmony_civoid hisi_qm_set_algqos_init(struct hisi_qm *qm); 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci#endif 87