/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2016 MediaTek Inc.
 */

#ifndef __CCCI_DPMAIF_REG_V3_H__
#define __CCCI_DPMAIF_REG_V3_H__

#include <linux/io.h>

#include "ccci_dpmaif_reg_com.h"


/*Default DPMAIF DL common setting*/
#define DPMAIF_HW_CHK_BAT_NUM      62
#define DPMAIF_HW_CHK_FRG_NUM      DPMAIF_HW_CHK_BAT_NUM
#define DPMAIF_HW_CHK_PIT_NUM      (DPMAIF_HW_CHK_BAT_NUM*2)


#define DPMAIF_DL_BAT_ENTRY_SIZE  16384 /* <- 1024 <- 128 */

/* 2048*/ /* 256, 100pkts*2*10ms=2000*12B=>24k */
#define DPMAIF_DL_PIT_ENTRY_SIZE  (DPMAIF_DL_BAT_ENTRY_SIZE * 2)
#define DPMAIF_DL_PIT_BYTE_SIZE   16

/***********************************************************************
 *
 *  dpmaif_ul_pd_sram
 *
 ***********************************************************************/
#define NRL2_DPMAIF_AO_UL_MD_RDY_CNT_TH     (BASE_DPMAIF_PD_SRAM_UL + 0x00)
#define NRL2_DPMAIF_AO_ULQN_MAX_PKT_SZ      (BASE_DPMAIF_PD_SRAM_UL + 0x04)
#define NRL2_DPMAIF_AO_UL_CH_WEIGHT0        (BASE_DPMAIF_PD_SRAM_UL + 0x08)
#define NRL2_DPMAIF_AO_UL_CH_WEIGHT1        (BASE_DPMAIF_PD_SRAM_UL + 0x0C)
#define NRL2_DPMAIF_AO_UL_CHNL0_CON0        (BASE_DPMAIF_PD_SRAM_UL + 0x10)
#define NRL2_DPMAIF_AO_UL_CHNL0_CON1        (BASE_DPMAIF_PD_SRAM_UL + 0x14)
#define NRL2_DPMAIF_AO_UL_CHNL0_CON2        (BASE_DPMAIF_PD_SRAM_UL + 0x18)
#define NRL2_DPMAIF_AO_UL_CHNL1_CON0        (BASE_DPMAIF_PD_SRAM_UL + 0x20)
#define NRL2_DPMAIF_AO_UL_CHNL1_CON1        (BASE_DPMAIF_PD_SRAM_UL + 0x24)
#define NRL2_DPMAIF_AO_UL_CHNL1_CON2        (BASE_DPMAIF_PD_SRAM_UL + 0x28)
#define NRL2_DPMAIF_AO_UL_CHNL2_CON0        (BASE_DPMAIF_PD_SRAM_UL + 0x30)
#define NRL2_DPMAIF_AO_UL_CHNL2_CON1        (BASE_DPMAIF_PD_SRAM_UL + 0x34)
#define NRL2_DPMAIF_AO_UL_CHNL2_CON2        (BASE_DPMAIF_PD_SRAM_UL + 0x38)
#define NRL2_DPMAIF_AO_UL_CHNL3_CON0        (BASE_DPMAIF_PD_SRAM_UL + 0x40)
#define NRL2_DPMAIF_AO_UL_CHNL3_CON1        (BASE_DPMAIF_PD_SRAM_UL + 0x44)
#define NRL2_DPMAIF_AO_UL_CHNL3_CON2        (BASE_DPMAIF_PD_SRAM_UL + 0x48)
#define NRL2_DPMAIF_AO_UL_CHNL4_CON0        (BASE_DPMAIF_PD_SRAM_UL + 0x50)
#define NRL2_DPMAIF_AO_UL_CHNL4_CON1        (BASE_DPMAIF_PD_SRAM_UL + 0x54)
#define NRL2_DPMAIF_AO_UL_CHNL4_CON2        (BASE_DPMAIF_PD_SRAM_UL + 0x58)

/* only for mt6985 */
#define NRL2_DPMAIF_AO_UL_CH0_STA_6985           (BASE_DPMAIF_PD_SRAM_UL + 0xE0) //used
#define NRL2_DPMAIF_AO_UL_CH1_STA_6985           (BASE_DPMAIF_PD_SRAM_UL + 0xE4) //no used
#define NRL2_DPMAIF_AO_UL_CH2_STA_6985           (BASE_DPMAIF_PD_SRAM_UL + 0xE8) //no used
#define NRL2_DPMAIF_AO_UL_CH3_STA_6985           (BASE_DPMAIF_PD_SRAM_UL + 0xEC) //used
#define NRL2_DPMAIF_AO_UL_CH4_STA_6985           (BASE_DPMAIF_PD_SRAM_UL + 0xF0) //no used
#define NRL2_DPMAIF_AO_UL_CH_WIDX01_6985         (BASE_DPMAIF_PD_SRAM_UL + 0xF4) //no used
#define NRL2_DPMAIF_AO_UL_CH_WIDX23_6985         (BASE_DPMAIF_PD_SRAM_UL + 0xF8) //no used
#define NRL2_DPMAIF_AO_UL_CH_WIDX4_6985          (BASE_DPMAIF_PD_SRAM_UL + 0xFC) //no used

#define NRL2_DPMAIF_AO_UL_CH0_STA           (BASE_DPMAIF_PD_SRAM_UL + 0x70)
#define NRL2_DPMAIF_AO_UL_CH1_STA           (BASE_DPMAIF_PD_SRAM_UL + 0x74)
#define NRL2_DPMAIF_AO_UL_CH2_STA           (BASE_DPMAIF_PD_SRAM_UL + 0x78)
#define NRL2_DPMAIF_AO_UL_CH3_STA           (BASE_DPMAIF_PD_SRAM_UL + 0x7C)
#define NRL2_DPMAIF_AO_UL_CH4_STA           (BASE_DPMAIF_PD_SRAM_UL + 0x80)
#define NRL2_DPMAIF_AO_UL_CH_WIDX01         (BASE_DPMAIF_PD_SRAM_UL + 0x84)
#define NRL2_DPMAIF_AO_UL_CH_WIDX23         (BASE_DPMAIF_PD_SRAM_UL + 0x88)
#define NRL2_DPMAIF_AO_UL_CH_WIDX4          (BASE_DPMAIF_PD_SRAM_UL + 0x8C)
/*************************************************************
 *#define NRL2_DPMAIF_AO_UL_CHNL0_STA0              (BASE_DPMAIF_PD_SRAM_UL + 0x60 )
 *#define NRL2_DPMAIF_AO_UL_CHNL1_STA0              (BASE_DPMAIF_PD_SRAM_UL + 0x64 )
 *#define NRL2_DPMAIF_AO_UL_CHNL2_STA0              (BASE_DPMAIF_PD_SRAM_UL + 0x68 )
 *#define NRL2_DPMAIF_AO_UL_CHNL3_STA0              (BASE_DPMAIF_PD_SRAM_UL + 0x6C )
 *#define NRL2_DPMAIF_AO_UL_CHNL4_STA0              (BASE_DPMAIF_PD_SRAM_UL + 0xDC )
 **************************************************************/


/***********************************************************************
 *
 *  dpmaif_dl_pd_sram
 *
 ***********************************************************************/
#define NRL2_DPMAIF_AO_DL_PKTINFO_CON0          (BASE_DPMAIF_PD_SRAM_DL + 0x00)
#define NRL2_DPMAIF_AO_DL_PKTINFO_CON1          (BASE_DPMAIF_PD_SRAM_DL + 0x04)
#define NRL2_DPMAIF_AO_DL_PKTINFO_CON2          (BASE_DPMAIF_PD_SRAM_DL + 0x08)
#define NRL2_DPMAIF_AO_DL_RDY_CHK_FRG_THRES     (BASE_DPMAIF_PD_SRAM_DL + 0x10)
#define NRL2_DPMAIF_AO_DL_REORDER_BITMAP_CACHE  (BASE_DPMAIF_PD_SRAM_DL + 0x14)
#define NRL2_DPMAIF_AO_DL_REORDER_CACHE         (BASE_DPMAIF_PD_SRAM_DL + 0x18)
#define NRL2_DPMAIF_AO_DL_REORDER_THRES         (BASE_DPMAIF_PD_SRAM_DL + 0x1C)

#define NRL2_DPMAIF_AO_DL_LRO_AGG_CFG           (BASE_DPMAIF_PD_SRAM_DL + 0x20)
#define NRL2_DPMAIF_AO_DL_LROPIT_TIMEOUT0       (BASE_DPMAIF_PD_SRAM_DL + 0x24)
#define NRL2_DPMAIF_AO_DL_LROPIT_TIMEOUT1       (BASE_DPMAIF_PD_SRAM_DL + 0x28)
#define NRL2_DPMAIF_AO_DL_LROPIT_TIMEOUT2       (BASE_DPMAIF_PD_SRAM_DL + 0x2C)
#define NRL2_DPMAIF_AO_DL_LROPIT_TIMEOUT3       (BASE_DPMAIF_PD_SRAM_DL + 0x30)
#define NRL2_DPMAIF_AO_DL_LROPIT_TIMEOUT4       (BASE_DPMAIF_PD_SRAM_DL + 0x34)
#define NRL2_DPMAIF_AO_DL_HPC_CNTL              (BASE_DPMAIF_PD_SRAM_DL + 0x38)
#define NRL2_DPMAIF_AO_DL_PIT_SEQ_END           (BASE_DPMAIF_PD_SRAM_DL + 0x40)

#define NRL2_DPMAIF_AO_DL_BAT_STA0              (BASE_DPMAIF_PD_SRAM_DL + 0xD0)
#define NRL2_DPMAIF_AO_DL_BAT_STA1              (BASE_DPMAIF_PD_SRAM_DL + 0xD4)
#define NRL2_DPMAIF_AO_DL_BAT_STA2              (BASE_DPMAIF_PD_SRAM_DL + 0xD8)
#define NRL2_DPMAIF_AO_DL_BAT_STA3              (BASE_DPMAIF_PD_SRAM_DL + 0xDC)
#define NRL2_DPMAIF_AO_DL_BAT_STA4              (BASE_DPMAIF_PD_SRAM_DL + 0xE0)
#define NRL2_DPMAIF_AO_DL_PIT_STA0              (BASE_DPMAIF_PD_SRAM_DL + 0xE4)
#define NRL2_DPMAIF_AO_DL_PIT_STA1              (BASE_DPMAIF_PD_SRAM_DL + 0xE8)
#define NRL2_DPMAIF_AO_DL_PIT_STA2              (BASE_DPMAIF_PD_SRAM_DL + 0xEC)
#define NRL2_DPMAIF_AO_DL_PIT_STA3              (BASE_DPMAIF_PD_SRAM_DL + 0x60)
#define NRL2_DPMAIF_AO_DL_PIT_STA4              (BASE_DPMAIF_PD_SRAM_DL + 0x64)
#define NRL2_DPMAIF_AO_DL_PIT_STA5              (BASE_DPMAIF_PD_SRAM_DL + 0x68)
#define NRL2_DPMAIF_AO_DL_PIT_STA6              (BASE_DPMAIF_PD_SRAM_DL + 0x6C)
#define NRL2_DPMAIF_AO_DL_FRGBAT_STA0           (BASE_DPMAIF_PD_SRAM_DL + 0x70)
#define NRL2_DPMAIF_AO_DL_FRGBAT_STA1           (BASE_DPMAIF_PD_SRAM_DL + 0x74)
#define NRL2_DPMAIF_AO_DL_FRGBAT_STA2           (BASE_DPMAIF_PD_SRAM_DL + 0x78)
#define NRL2_DPMAIF_AO_DL_FRGBAT_STA3           (BASE_DPMAIF_PD_SRAM_DL + 0x7C)
#define NRL2_DPMAIF_AO_DL_FRGBAT_STA4           (BASE_DPMAIF_PD_SRAM_DL + 0x80)


/**********************************************************************
 *
 *
 *	Common define for DPMAIF driver
 *
 *
 ***********************************************************************/
/*DPMAIF PD UL/AO UL CONFIG*/
#define DPMAIF_PD_UL_ADD_DESC             NRL2_DPMAIF_UL_ADD_DESC
#define DPMAIF_PD_UL_RESTORE_RIDX         NRL2_DPMAIF_UL_RESTORE_RIDX

#define DPMAIF_PD_UL_MD_RDY_CNT_TH        NRL2_DPMAIF_AO_UL_MD_RDY_CNT_TH
#define DPMAIF_PD_UL_CHNL_ARB0            NRL2_DPMAIF_AO_UL_CHNL_ARB0
#define DPMAIF_PD_UL_CHNL_ARB1            NRL2_DPMAIF_UL_CHNL_ARB1

#define DPMAIF_PD_UL_CHNL0_CON0           NRL2_DPMAIF_AO_UL_CHNL0_CON0
#define DPMAIF_PD_UL_CHNL0_CON1           NRL2_DPMAIF_AO_UL_CHNL0_CON1
#define DPMAIF_PD_UL_CHNL0_CON2           NRL2_DPMAIF_AO_UL_CHNL0_CON2

#define DPMAIF_PD_UL_CHNL1_CON0           NRL2_DPMAIF_AO_UL_CHNL1_CON0
#define DPMAIF_PD_UL_CHNL1_CON1           NRL2_DPMAIF_AO_UL_CHNL1_CON1

#define DPMAIF_PD_UL_CHNL2_CON0           NRL2_DPMAIF_AO_UL_CHNL2_CON0
#define DPMAIF_PD_UL_CHNL2_CON1           NRL2_DPMAIF_AO_UL_CHNL2_CON1

#define DPMAIF_PD_UL_CHNL3_CON0           NRL2_DPMAIF_AO_UL_CHNL3_CON0
#define DPMAIF_PD_UL_CHNL3_CON1           NRL2_DPMAIF_AO_UL_CHNL3_CON1

#define DPMAIF_PD_UL_CACHE_CON0           NRL2_DPMAIF_UL_CACHE_CON0
#define DPMAIF_PD_UL_ADD_DESC_CH          NRL2_DPMAIF_UL_ADD_DESC_CH0
#define DPMAIF_PD_UL_ADD_DESC_CH0         NRL2_DPMAIF_UL_ADD_DESC_CH0
#define DPMAIF_PD_UL_ADD_DESC_CH1         NRL2_DPMAIF_UL_ADD_DESC_CH1
#define DPMAIF_PD_UL_ADD_DESC_CH2         NRL2_DPMAIF_UL_ADD_DESC_CH2
#define DPMAIF_PD_UL_ADD_DESC_CH3         NRL2_DPMAIF_UL_ADD_DESC_CH3
#define DPMAIF_PD_UL_ADD_DESC_CH4         NRL2_DPMAIF_UL_ADD_DESC_CH4

#define DPMAIF_PD_UL_CH_WIDX01            NRL2_DPMAIF_AO_UL_CH_WIDX01
#define DPMAIF_PD_UL_CH_WIDX23            NRL2_DPMAIF_AO_UL_CH_WIDX23
#define DPMAIF_PD_ULQN_MAX_PKT_SZ         NRL2_DPMAIF_AO_ULQN_MAX_PKT_SZ

#define DPMAIF_PD_UL_DBG_STA0             NRL2_DPMAIF_UL_DBG_STA0
#define DPMAIF_PD_UL_DBG_STA1             NRL2_DPMAIF_UL_DBG_STA1
#define DPMAIF_PD_UL_DBG_STA2             NRL2_DPMAIF_UL_DBG_STA2
#define DPMAIF_PD_UL_DBG_STA3             NRL2_DPMAIF_UL_DBG_STA3
#define DPMAIF_PD_UL_DBG_STA4             NRL2_DPMAIF_UL_DBG_STA4
#define DPMAIF_PD_UL_DBG_STA5             NRL2_DPMAIF_UL_DBG_STA5
#define DPMAIF_PD_UL_DBG_STA6             NRL2_DPMAIF_UL_DBG_STA6
#define DPMAIF_PD_UL_DBG_STA7             NRL2_DPMAIF_UL_DBG_STA7
#define DPMAIF_PD_UL_DBG_STA8             NRL2_DPMAIF_UL_DBG_STA8
#define DPMAIF_PD_UL_DBG_STA9             NRL2_DPMAIF_UL_DBG_STA9

/*DPMAIF PD DL CONFIG*/


#define DPMAIF_PD_DL_PIT_ADD              NRL2_DPMAIF_DL_PIT_ADD


#define DPMAIF_PD_DL_PIT_INIT_CON4        NRL2_DPMAIF_DL_PIT_INIT_CON4
#define DPMAIF_PD_DL_PIT_INIT_CON5        NRL2_DPMAIF_DL_PIT_INIT_CON5
#define DPMAIF_PD_DL_MISC_CON0            NRL2_DPMAIF_DL_MISC_CON0
#define DPMAIF_PD_DL_STA8                 NRL2_DPMAIF_DL_STA8
#define DPMAIF_PD_DL_STA13                NRL2_DPMAIF_DL_STA13
#define DPMAIF_PD_DL_STA14                NRL2_DPMAIF_DL_STA14
#define DPMAIF_PD_DL_DBG_STA0             NRL2_DPMAIF_DL_DBG_STA0
#define DPMAIF_PD_DL_DBG_STA1             NRL2_DPMAIF_DL_DBG_STA1
#define DPMAIF_PD_DL_DBG_STA7             NRL2_DPMAIF_DL_DBG_STA7

#define DPMAIF_PD_DL_STA0                 NRL2_DPMAIF_DL_STA0
#define DPMAIF_PD_DL_DBG_STA14            NRL2_DPMAIF_DL_DBG_STA14

/*DPMAIF PD AP MSIC/AO UL MISC CONFIG*/


#define DPMAIF_PD_AP_L1TISAR0             NRL2_DPMAIF_AP_MISC_AP_L1TISAR0
#define DPMAIF_PD_AP_L1TIMR0              NRL2_DPMAIF_AP_MISC_AP_L1TIMR0


#define DPMAIF_PD_BUS_CONFIG0             NRL2_DPMAIF_AP_MISC_BUS_CONFIG0
#define DPMAIF_PD_TOP_AP_CFG              NRL2_DPMAIF_AP_MISC_TOP_AP_CFG
#define DPMAIF_PD_BUS_STATUS0             NRL2_DPMAIF_AP_MISC_EMI_BUS_STATUS0
#define DPMAIF_PD_AP_DMA_ERR_STA          NRL2_DPMAIF_AP_MISC_AP_DMA_ERR_STA


#define DPMAIF_PD_AP_CG_EN                NRL2_DPMAIF_AP_MISC_CG_EN
#define DPMAIF_PD_AP_CODA_VER             NRL2_DPMAIF_AP_MISC_CODA_VER

/*DPMAIF AO UL CONFIG*/
#define DPMAIF_AO_UL_CHNL0_STA            NRL2_DPMAIF_AO_UL_CH0_STA
#define DPMAIF_AO_UL_CHNL1_STA            NRL2_DPMAIF_AO_UL_CH1_STA
#define DPMAIF_AO_UL_CHNL2_STA            NRL2_DPMAIF_AO_UL_CH2_STA
#define DPMAIF_AO_UL_CHNL3_STA            NRL2_DPMAIF_AO_UL_CH3_STA

/* only for mt6985 */
#define DPMAIF_AO_UL_CHNL0_STA_6985            NRL2_DPMAIF_AO_UL_CH0_STA_6985
#define DPMAIF_AO_UL_CHNL1_STA_6985            NRL2_DPMAIF_AO_UL_CH1_STA_6985
#define DPMAIF_AO_UL_CHNL2_STA_6985            NRL2_DPMAIF_AO_UL_CH2_STA_6985
#define DPMAIF_AO_UL_CHNL3_STA_6985            NRL2_DPMAIF_AO_UL_CH3_STA_6985

#define DPMAIF_AO_UL_CH_WEIGHT1           NRL2_DPMAIF_AO_UL_CH_WEIGHT1

/*DPMAIF AO DL CONFIG*/
#define DPMAIF_AO_DL_PKTINFO_CONO         NRL2_DPMAIF_AO_DL_PKTINFO_CON0
#define DPMAIF_AO_DL_PKTINFO_CON1         NRL2_DPMAIF_AO_DL_PKTINFO_CON1
#define DPMAIF_AO_DL_PKTINFO_CON2         NRL2_DPMAIF_AO_DL_PKTINFO_CON2

#define DPMAIF_AO_DL_BAT_STA0             NRL2_DPMAIF_AO_DL_BAT_STA0
#define DPMAIF_AO_DL_BAT_STA1             NRL2_DPMAIF_AO_DL_BAT_STA1
#define DPMAIF_AO_DL_BAT_STA2             NRL2_DPMAIF_AO_DL_BAT_STA2
#define DPMAIF_AO_DL_BAT_STA3             NRL2_DPMAIF_AO_DL_BAT_STA3
#define DPMAIF_AO_DL_PIT_STA0             NRL2_DPMAIF_AO_DL_PIT_STA0
#define DPMAIF_AO_DL_PIT_STA1             NRL2_DPMAIF_AO_DL_PIT_STA1
#define DPMAIF_AO_DL_PIT_STA2             NRL2_DPMAIF_AO_DL_PIT_STA2
#define DPMAIF_AO_DL_PIT_STA3             NRL2_DPMAIF_AO_DL_PIT_STA3
#define DPMAIF_AO_DL_PIT_STA4             NRL2_DPMAIF_AO_DL_PIT_STA4
#define DPMAIF_AO_DL_RDY_CHK_FRG_THRES    NRL2_DPMAIF_AO_DL_RDY_CHK_FRG_THRES
#define DPMAIF_AO_DL_FRGBAT_STA2          NRL2_DPMAIF_AO_DL_FRGBAT_STA2

#define DPMAIF_AO_DL_FRG_CHK_THRES        NRL2_DPMAIF_AO_DL_RDY_CHK_FRG_THRES
#define DPMAIF_AO_DL_FRG_STA0             NRL2_DPMAIF_AO_DL_FRGBAT_STA0
#define DPMAIF_AO_DL_FRG_STA1             NRL2_DPMAIF_AO_DL_FRGBAT_STA1
#define DPMAIF_AO_DL_FRG_STA2             NRL2_DPMAIF_AO_DL_FRGBAT_STA2

#define DPMAIF_AO_DL_REORDER_THRES        NRL2_DPMAIF_AO_DL_REORDER_THRES



#define DPMAIF_AXI_MAS_SECURE             NRL2_DPMAIF_AXI_MAS_SECURE
#define DPMAIF_AP_MISC_APB_DBG_SRAM       NRL2_DPMAIF_AP_MISC_APB_DBG_SRAM

/*DPMAIF PD MD MISC CONFIG: 0x1022C000 */
#define DPMAIF_PD_MD_IP_BUSY              NRL2_DPMAIF_PD_MD_IP_BUSY
#define DPMAIF_PD_MD_IP_BUSY_MASK         NRL2_DPMAIF_PD_MD_IP_BUSY_MASK

#define NRL2_DPMAIF_AXI_MAS_SECURE       (BASE_DPMAIF_DL_AO_CFG + 0x60)
#define NRL2_DPMAIF_PD_MD_IP_BUSY        (BASE_DPMAIF_PD_MD_MISC + 0x0000)
#define NRL2_DPMAIF_PD_MD_IP_BUSY_MASK   (BASE_DPMAIF_PD_MD_MISC + 0x0040)


#define DPMAIF_DL_IDLE_STS             (1 << 23)

#define DPMAIF_UL_STS_CUR_SHIFT        (11)
#define DPMAIF_UL_IDLE_STS_MSK         (0x01)
#define DPMAIF_UL_IDLE_STS             (0x01)


#define DPMAIF_PIT_SIZE_MSK            0x3FFFF
#define DPMAIF_DL_PIT_WRIDX_MSK        0x3FFFF


#define DPMAIF_UL_DRBSIZE_ADDRH_n(q_num)    \
	((DPMAIF_PD_UL_CHNL0_CON1) + (0x10 * (q_num)))

#define DPMAIF_ULQSAR_n(q_num)      \
	((DPMAIF_PD_UL_CHNL0_CON0) + (0x10 * (q_num)))

#define DPMAIF_ULQ_STA0_n(q_num)     \
	((NRL2_DPMAIF_AO_UL_CH0_STA) + (0x04 * (q_num)))

#define DPMAIF_ULQ_STA0_6985_n(q_num)     \
		((NRL2_DPMAIF_AO_UL_CH0_STA_6985) + (0x04 * (q_num)))

/* === tx interrupt mask === */
#define UL_INT_EMPTY_OFFSET         5
#define UL_INT_MD_NOTRDY_OFFSET     10
#define UL_INT_PWR_NOTRDY_OFFSET    15
#define UL_INT_LEN_ERR_OFFSET       20

#define DPMAIF_UL_INT_DONE(q_num)            (1 << (q_num+UL_INT_DONE_OFFSET))
#define DPMAIF_UL_INT_EMPTY(q_num)           (1 << (q_num+UL_INT_EMPTY_OFFSET))
#define DPMAIF_UL_INT_MD_NOTRDY(q_num)       (1 << (q_num+UL_INT_MD_NOTRDY_OFFSET))
#define DPMAIF_UL_INT_PWR_NOTRDY(q_num)      (1 << (q_num+UL_INT_PWR_NOTRDY_OFFSET))
#define DPMAIF_UL_INT_LEN_ERR(q_num)         (1 << (q_num+UL_INT_LEN_ERR_OFFSET))

#define DPMAIF_UL_INT_QDONE_MSK              (0xF << UL_INT_DONE_OFFSET)
#define DPMAIF_UL_INT_EMPTY_MSK              (0x1F << UL_INT_EMPTY_OFFSET)
#define DPMAIF_UL_INT_MD_NOTREADY_MSK        (0x1F << UL_INT_MD_NOTRDY_OFFSET)
#define DPMAIF_UL_INT_MD_PWR_NOTREADY_MSK    (0x1F << UL_INT_PWR_NOTRDY_OFFSET)
#define DPMAIF_UL_INT_ERR_MSK                (0x1F << UL_INT_LEN_ERR_OFFSET)

#define AP_UL_L2INTR_ERR_En_Msk \
	(DPMAIF_UL_INT_ERR_MSK | DPMAIF_UL_INT_MD_NOTREADY_MSK | \
	DPMAIF_UL_INT_MD_PWR_NOTREADY_MSK)

/* DPMAIF_UL_INT_EMPTY_MSK | */
#define AP_UL_L2INTR_En_Msk    (AP_UL_L2INTR_ERR_En_Msk | DPMAIF_UL_INT_QDONE_MSK)


#define DPMAIF_DL_INT_LRO0_QDONE_MSK         (0x01 << 8)
#define DPMAIF_DL_INT_LRO1_QDONE_MSK         (0x01 << 9)

#define DP_DL_INT_LRO0_PITCNT_LEN_ERR        (0x01 << 8)
#define DP_DL_INT_LRO1_PITCNT_LEN_ERR        (0x01 << 9)
#define DP_DL_INT_HPC_ENT_TYPE_ERR           (0x01 << 10)

#define DP_DL_INT_LRO0_PITCNT_LEN_MSK        (0x01 << 10)
#define DP_DL_INT_LRO1_PITCNT_LEN_MSK        (0x01 << 11)

#define DPMAIF_DL_INT_Q2TOQ1_MSK             (0x01 << 24)
#define DPMAIF_DL_INT_Q2APTOP_MSK            (0x01 << 25)
#define DPMAIF_DL_INT_Q2PCIETOP_MSK          (0x01 << 30)

#define DPMAIF_HPC_LRO_PATH_MODE0       0
#define DPMAIF_HPC_LRO_PATH_MODE1       1
#define DPMAIF_HPC_LRO_PATH_MODE2       2
#define DPMAIF_HPC_LRO_PATH_MODE3       3

/* disable 2RXQ, and only isr from rxq0 are allowed */
#define DPMAIF_HPC_LRO_PATH_DF          DPMAIF_HPC_LRO_PATH_MODE2
/* enable 2RXQ, and isr from rxq0/rxq1 are allowed */
//#define DPMAIF_HPC_LRO_PATH_DF          DPMAIF_HPC_LRO_PATH_MODE3

#define DPMAIF_HPC_ADD_MODE_DF          0
#define DPMAIF_HPC_TOTAL_NUM            8
#define DPMAIF_HPC_MAX_TOTAL_NUM        8
#define DPMAIF_AGG_MAX_LEN_DF           65535
#define DPMAIF_AGG_TBL_ENT_NUM_DF       50
#define DPMAIF_HASH_BIT_CHS_DF          0
#define DPMAIF_HASH_PRIME_DF            13
#define DPMAIF_MID_TIMEOUT_THRES_DF     100
#define DPMAIF_LRO_TIMEOUT_THRES_DF     100
#define DPMAIF_LRO_PRS_THRES_DF         10
#define DPMAIF_LRO_HASH_BIT_CHOOSE_DF   0

#define DPMAIF_LROPIT_EN_MSK            0x100000
#define DPMAIF_LROPIT_CHAN_OFS          16
#define DPMAIF_ADD_LRO_PIT_CHAN_OFS     (1 << 20)
#define DPMAIF_LRO_PIT0_CHK_NUM_OFS     8
#define DPMAIF_LRO_PIT1_CHK_NUM_OFS     20
#define DPMAIF_LRO_PIT0_CHK_NUM_MASK    0xFF00
#define DPMAIF_LRO_PIT1_CHK_NUM_MASK    0xFF00000

#define AP_DL_L2INTR_LRO_En_Msk \
	(AP_DL_L2INTR_ERR_En_Msk | \
	DPMAIF_DL_INT_LRO0_QDONE_MSK | DPMAIF_DL_INT_LRO1_QDONE_MSK)

/* dl&ul mask check */
#define AP_DL_L2INTR_Msk_Check ((~AP_DL_L2INTR_En_Msk)&0x1FFF)
#define AP_UL_L2INTR_Msk_Check ((~AP_UL_L2INTR_En_Msk)&0x1FFF)

#endif /* __CCCI_DPMAIF_REG_V1_H__ */
