162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci *
362306a36Sopenharmony_ci * Copyright (c) 2021, MediaTek Inc.
462306a36Sopenharmony_ci * Copyright (c) 2021-2022, Intel Corporation.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Authors:
762306a36Sopenharmony_ci *  Haijun Liu <haijun.liu@mediatek.com>
862306a36Sopenharmony_ci *  Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * Contributors:
1162306a36Sopenharmony_ci *  Amir Hanania <amir.hanania@intel.com>
1262306a36Sopenharmony_ci *  Andy Shevchenko <andriy.shevchenko@linux.intel.com>
1362306a36Sopenharmony_ci *  Eliot Lee <eliot.lee@intel.com>
1462306a36Sopenharmony_ci *  Moises Veleta <moises.veleta@intel.com>
1562306a36Sopenharmony_ci *  Ricardo Martinez <ricardo.martinez@linux.intel.com>
1662306a36Sopenharmony_ci *  Sreehari Kancharla <sreehari.kancharla@intel.com>
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#ifndef __T7XX_REG_H__
2062306a36Sopenharmony_ci#define __T7XX_REG_H__
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#include <linux/bits.h>
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/* Device base address offset */
2562306a36Sopenharmony_ci#define MHCCIF_RC_DEV_BASE			0x10024000
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci#define REG_RC2EP_SW_BSY			0x04
2862306a36Sopenharmony_ci#define REG_RC2EP_SW_INT_START			0x08
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci#define REG_RC2EP_SW_TCHNUM			0x0c
3162306a36Sopenharmony_ci#define H2D_CH_EXCEPTION_ACK			1
3262306a36Sopenharmony_ci#define H2D_CH_EXCEPTION_CLEARQ_ACK		2
3362306a36Sopenharmony_ci#define H2D_CH_DS_LOCK				3
3462306a36Sopenharmony_ci/* Channels 4-8 are reserved */
3562306a36Sopenharmony_ci#define H2D_CH_SUSPEND_REQ			9
3662306a36Sopenharmony_ci#define H2D_CH_RESUME_REQ			10
3762306a36Sopenharmony_ci#define H2D_CH_SUSPEND_REQ_AP			11
3862306a36Sopenharmony_ci#define H2D_CH_RESUME_REQ_AP			12
3962306a36Sopenharmony_ci#define H2D_CH_DEVICE_RESET			13
4062306a36Sopenharmony_ci#define H2D_CH_DRM_DISABLE_AP			14
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#define REG_EP2RC_SW_INT_STS			0x10
4362306a36Sopenharmony_ci#define REG_EP2RC_SW_INT_ACK			0x14
4462306a36Sopenharmony_ci#define REG_EP2RC_SW_INT_EAP_MASK		0x20
4562306a36Sopenharmony_ci#define REG_EP2RC_SW_INT_EAP_MASK_SET		0x30
4662306a36Sopenharmony_ci#define REG_EP2RC_SW_INT_EAP_MASK_CLR		0x40
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci#define D2H_INT_DS_LOCK_ACK			BIT(0)
4962306a36Sopenharmony_ci#define D2H_INT_EXCEPTION_INIT			BIT(1)
5062306a36Sopenharmony_ci#define D2H_INT_EXCEPTION_INIT_DONE		BIT(2)
5162306a36Sopenharmony_ci#define D2H_INT_EXCEPTION_CLEARQ_DONE		BIT(3)
5262306a36Sopenharmony_ci#define D2H_INT_EXCEPTION_ALLQ_RESET		BIT(4)
5362306a36Sopenharmony_ci#define D2H_INT_PORT_ENUM			BIT(5)
5462306a36Sopenharmony_ci/* Bits 6-10 are reserved */
5562306a36Sopenharmony_ci#define D2H_INT_SUSPEND_ACK			BIT(11)
5662306a36Sopenharmony_ci#define D2H_INT_RESUME_ACK			BIT(12)
5762306a36Sopenharmony_ci#define D2H_INT_SUSPEND_ACK_AP			BIT(13)
5862306a36Sopenharmony_ci#define D2H_INT_RESUME_ACK_AP			BIT(14)
5962306a36Sopenharmony_ci#define D2H_INT_ASYNC_AP_HK			BIT(15)
6062306a36Sopenharmony_ci#define D2H_INT_ASYNC_MD_HK			BIT(16)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci/* Register base */
6362306a36Sopenharmony_ci#define INFRACFG_AO_DEV_CHIP			0x10001000
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci/* ATR setting */
6662306a36Sopenharmony_ci#define T7XX_PCIE_REG_TRSL_ADDR_CHIP		0x10000000
6762306a36Sopenharmony_ci#define T7XX_PCIE_REG_SIZE_CHIP			0x00400000
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci/* Reset Generic Unit (RGU) */
7062306a36Sopenharmony_ci#define TOPRGU_CH_PCIE_IRQ_STA			0x1000790c
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#define ATR_PORT_OFFSET				0x100
7362306a36Sopenharmony_ci#define ATR_TABLE_OFFSET			0x20
7462306a36Sopenharmony_ci#define ATR_TABLE_NUM_PER_ATR			8
7562306a36Sopenharmony_ci#define ATR_TRANSPARENT_SIZE			0x3f
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci/* PCIE_MAC_IREG Register Definition */
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci#define ISTAT_HST_CTRL				0x01ac
8062306a36Sopenharmony_ci#define ISTAT_HST_CTRL_DIS			BIT(0)
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci#define T7XX_PCIE_MISC_CTRL			0x0348
8362306a36Sopenharmony_ci#define T7XX_PCIE_MISC_MAC_SLEEP_DIS		BIT(7)
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci#define T7XX_PCIE_CFG_MSIX			0x03ec
8662306a36Sopenharmony_ci#define ATR_PCIE_WIN0_T0_ATR_PARAM_SRC_ADDR	0x0600
8762306a36Sopenharmony_ci#define ATR_PCIE_WIN0_T0_TRSL_ADDR		0x0608
8862306a36Sopenharmony_ci#define ATR_PCIE_WIN0_T0_TRSL_PARAM		0x0610
8962306a36Sopenharmony_ci#define ATR_PCIE_WIN0_ADDR_ALGMT		GENMASK_ULL(63, 12)
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci#define ATR_SRC_ADDR_INVALID			0x007f
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci#define T7XX_PCIE_PM_RESUME_STATE		0x0d0c
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_cienum t7xx_pm_resume_state {
9662306a36Sopenharmony_ci	PM_RESUME_REG_STATE_L3,
9762306a36Sopenharmony_ci	PM_RESUME_REG_STATE_L1,
9862306a36Sopenharmony_ci	PM_RESUME_REG_STATE_INIT,
9962306a36Sopenharmony_ci	PM_RESUME_REG_STATE_EXP,
10062306a36Sopenharmony_ci	PM_RESUME_REG_STATE_L2,
10162306a36Sopenharmony_ci	PM_RESUME_REG_STATE_L2_EXP,
10262306a36Sopenharmony_ci};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci#define T7XX_PCIE_MISC_DEV_STATUS		0x0d1c
10562306a36Sopenharmony_ci#define MISC_STAGE_MASK				GENMASK(2, 0)
10662306a36Sopenharmony_ci#define MISC_RESET_TYPE_PLDR			BIT(26)
10762306a36Sopenharmony_ci#define MISC_RESET_TYPE_FLDR			BIT(27)
10862306a36Sopenharmony_ci#define LINUX_STAGE				4
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define T7XX_PCIE_RESOURCE_STATUS		0x0d28
11162306a36Sopenharmony_ci#define T7XX_PCIE_RESOURCE_STS_MSK		GENMASK(4, 0)
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci#define DISABLE_ASPM_LOWPWR			0x0e50
11462306a36Sopenharmony_ci#define ENABLE_ASPM_LOWPWR			0x0e54
11562306a36Sopenharmony_ci#define T7XX_L1_BIT(i)				BIT((i) * 4 + 1)
11662306a36Sopenharmony_ci#define T7XX_L1_1_BIT(i)			BIT((i) * 4 + 2)
11762306a36Sopenharmony_ci#define T7XX_L1_2_BIT(i)			BIT((i) * 4 + 3)
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci#define MSIX_ISTAT_HST_GRP0_0			0x0f00
12062306a36Sopenharmony_ci#define IMASK_HOST_MSIX_SET_GRP0_0		0x3000
12162306a36Sopenharmony_ci#define IMASK_HOST_MSIX_CLR_GRP0_0		0x3080
12262306a36Sopenharmony_ci#define EXT_INT_START				24
12362306a36Sopenharmony_ci#define EXT_INT_NUM				8
12462306a36Sopenharmony_ci#define MSIX_MSK_SET_ALL			GENMASK(31, 24)
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_cienum t7xx_int {
12762306a36Sopenharmony_ci	DPMAIF_INT,
12862306a36Sopenharmony_ci	CLDMA0_INT,
12962306a36Sopenharmony_ci	CLDMA1_INT,
13062306a36Sopenharmony_ci	CLDMA2_INT,
13162306a36Sopenharmony_ci	MHCCIF_INT,
13262306a36Sopenharmony_ci	DPMAIF2_INT,
13362306a36Sopenharmony_ci	SAP_RGU_INT,
13462306a36Sopenharmony_ci	CLDMA3_INT,
13562306a36Sopenharmony_ci};
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci/* DPMA definitions */
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci#define DPMAIF_PD_BASE				0x1022d000
14062306a36Sopenharmony_ci#define BASE_DPMAIF_UL				DPMAIF_PD_BASE
14162306a36Sopenharmony_ci#define BASE_DPMAIF_DL				(DPMAIF_PD_BASE + 0x100)
14262306a36Sopenharmony_ci#define BASE_DPMAIF_AP_MISC			(DPMAIF_PD_BASE + 0x400)
14362306a36Sopenharmony_ci#define BASE_DPMAIF_MMW_HPC			(DPMAIF_PD_BASE + 0x600)
14462306a36Sopenharmony_ci#define BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX		(DPMAIF_PD_BASE + 0x900)
14562306a36Sopenharmony_ci#define BASE_DPMAIF_PD_SRAM_DL			(DPMAIF_PD_BASE + 0xc00)
14662306a36Sopenharmony_ci#define BASE_DPMAIF_PD_SRAM_UL			(DPMAIF_PD_BASE + 0xd00)
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci#define DPMAIF_AO_BASE				0x10014000
14962306a36Sopenharmony_ci#define BASE_DPMAIF_AO_UL			DPMAIF_AO_BASE
15062306a36Sopenharmony_ci#define BASE_DPMAIF_AO_DL			(DPMAIF_AO_BASE + 0x400)
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci#define DPMAIF_UL_ADD_DESC			(BASE_DPMAIF_UL + 0x00)
15362306a36Sopenharmony_ci#define DPMAIF_UL_CHK_BUSY			(BASE_DPMAIF_UL + 0x88)
15462306a36Sopenharmony_ci#define DPMAIF_UL_RESERVE_AO_RW			(BASE_DPMAIF_UL + 0xac)
15562306a36Sopenharmony_ci#define DPMAIF_UL_ADD_DESC_CH0			(BASE_DPMAIF_UL + 0xb0)
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT			(BASE_DPMAIF_DL + 0x00)
15862306a36Sopenharmony_ci#define DPMAIF_DL_BAT_ADD			(BASE_DPMAIF_DL + 0x04)
15962306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_CON0			(BASE_DPMAIF_DL + 0x08)
16062306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_CON1			(BASE_DPMAIF_DL + 0x0c)
16162306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_CON2			(BASE_DPMAIF_DL + 0x10)
16262306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_CON3			(BASE_DPMAIF_DL + 0x50)
16362306a36Sopenharmony_ci#define DPMAIF_DL_CHK_BUSY			(BASE_DPMAIF_DL + 0xb4)
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci#define DPMAIF_AP_L2TISAR0			(BASE_DPMAIF_AP_MISC + 0x00)
16662306a36Sopenharmony_ci#define DPMAIF_AP_APDL_L2TISAR0			(BASE_DPMAIF_AP_MISC + 0x50)
16762306a36Sopenharmony_ci#define DPMAIF_AP_IP_BUSY			(BASE_DPMAIF_AP_MISC + 0x60)
16862306a36Sopenharmony_ci#define DPMAIF_AP_CG_EN				(BASE_DPMAIF_AP_MISC + 0x68)
16962306a36Sopenharmony_ci#define DPMAIF_AP_OVERWRITE_CFG			(BASE_DPMAIF_AP_MISC + 0x90)
17062306a36Sopenharmony_ci#define DPMAIF_AP_MEM_CLR			(BASE_DPMAIF_AP_MISC + 0x94)
17162306a36Sopenharmony_ci#define DPMAIF_AP_ALL_L2TISAR0_MASK		GENMASK(31, 0)
17262306a36Sopenharmony_ci#define DPMAIF_AP_APDL_ALL_L2TISAR0_MASK	GENMASK(31, 0)
17362306a36Sopenharmony_ci#define DPMAIF_AP_IP_BUSY_MASK			GENMASK(31, 0)
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci#define DPMAIF_AO_UL_INIT_SET			(BASE_DPMAIF_AO_UL + 0x0)
17662306a36Sopenharmony_ci#define DPMAIF_AO_UL_CHNL_ARB0			(BASE_DPMAIF_AO_UL + 0x1c)
17762306a36Sopenharmony_ci#define DPMAIF_AO_UL_AP_L2TIMR0			(BASE_DPMAIF_AO_UL + 0x80)
17862306a36Sopenharmony_ci#define DPMAIF_AO_UL_AP_L2TIMCR0		(BASE_DPMAIF_AO_UL + 0x84)
17962306a36Sopenharmony_ci#define DPMAIF_AO_UL_AP_L2TIMSR0		(BASE_DPMAIF_AO_UL + 0x88)
18062306a36Sopenharmony_ci#define DPMAIF_AO_UL_AP_L1TIMR0			(BASE_DPMAIF_AO_UL + 0x8c)
18162306a36Sopenharmony_ci#define DPMAIF_AO_UL_APDL_L2TIMR0		(BASE_DPMAIF_AO_UL + 0x90)
18262306a36Sopenharmony_ci#define DPMAIF_AO_UL_APDL_L2TIMCR0		(BASE_DPMAIF_AO_UL + 0x94)
18362306a36Sopenharmony_ci#define DPMAIF_AO_UL_APDL_L2TIMSR0		(BASE_DPMAIF_AO_UL + 0x98)
18462306a36Sopenharmony_ci#define DPMAIF_AO_AP_DLUL_IP_BUSY_MASK		(BASE_DPMAIF_AO_UL + 0x9c)
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci#define DPMAIF_AO_UL_CHNL0_CON0			(BASE_DPMAIF_PD_SRAM_UL + 0x10)
18762306a36Sopenharmony_ci#define DPMAIF_AO_UL_CHNL0_CON1			(BASE_DPMAIF_PD_SRAM_UL + 0x14)
18862306a36Sopenharmony_ci#define DPMAIF_AO_UL_CHNL0_CON2			(BASE_DPMAIF_PD_SRAM_UL + 0x18)
18962306a36Sopenharmony_ci#define DPMAIF_AO_UL_CH0_STA			(BASE_DPMAIF_PD_SRAM_UL + 0x70)
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci#define DPMAIF_AO_DL_INIT_SET			(BASE_DPMAIF_AO_DL + 0x00)
19262306a36Sopenharmony_ci#define DPMAIF_AO_DL_IRQ_MASK			(BASE_DPMAIF_AO_DL + 0x0c)
19362306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQPIT_INIT_CON5		(BASE_DPMAIF_AO_DL + 0x28)
19462306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQPIT_TRIG_THRES		(BASE_DPMAIF_AO_DL + 0x34)
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci#define DPMAIF_AO_DL_PKTINFO_CON0		(BASE_DPMAIF_PD_SRAM_DL + 0x00)
19762306a36Sopenharmony_ci#define DPMAIF_AO_DL_PKTINFO_CON1		(BASE_DPMAIF_PD_SRAM_DL + 0x04)
19862306a36Sopenharmony_ci#define DPMAIF_AO_DL_PKTINFO_CON2		(BASE_DPMAIF_PD_SRAM_DL + 0x08)
19962306a36Sopenharmony_ci#define DPMAIF_AO_DL_RDY_CHK_THRES		(BASE_DPMAIF_PD_SRAM_DL + 0x0c)
20062306a36Sopenharmony_ci#define DPMAIF_AO_DL_RDY_CHK_FRG_THRES		(BASE_DPMAIF_PD_SRAM_DL + 0x10)
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQ_AGG_CFG		(BASE_DPMAIF_PD_SRAM_DL + 0x20)
20362306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQPIT_TIMEOUT0		(BASE_DPMAIF_PD_SRAM_DL + 0x24)
20462306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQPIT_TIMEOUT1		(BASE_DPMAIF_PD_SRAM_DL + 0x28)
20562306a36Sopenharmony_ci#define DPMAIF_AO_DL_HPC_CNTL			(BASE_DPMAIF_PD_SRAM_DL + 0x38)
20662306a36Sopenharmony_ci#define DPMAIF_AO_DL_PIT_SEQ_END		(BASE_DPMAIF_PD_SRAM_DL + 0x40)
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci#define DPMAIF_AO_DL_BAT_RD_IDX			(BASE_DPMAIF_PD_SRAM_DL + 0xd8)
20962306a36Sopenharmony_ci#define DPMAIF_AO_DL_BAT_WR_IDX			(BASE_DPMAIF_PD_SRAM_DL + 0xdc)
21062306a36Sopenharmony_ci#define DPMAIF_AO_DL_PIT_RD_IDX			(BASE_DPMAIF_PD_SRAM_DL + 0xec)
21162306a36Sopenharmony_ci#define DPMAIF_AO_DL_PIT_WR_IDX			(BASE_DPMAIF_PD_SRAM_DL + 0x60)
21262306a36Sopenharmony_ci#define DPMAIF_AO_DL_FRGBAT_RD_IDX		(BASE_DPMAIF_PD_SRAM_DL + 0x78)
21362306a36Sopenharmony_ci#define DPMAIF_AO_DL_DLQ_WR_IDX			(BASE_DPMAIF_PD_SRAM_DL + 0xa4)
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci#define DPMAIF_HPC_INTR_MASK			(BASE_DPMAIF_MMW_HPC + 0x0f4)
21662306a36Sopenharmony_ci#define DPMA_HPC_ALL_INT_MASK			GENMASK(15, 0)
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci#define DPMAIF_HPC_DLQ_PATH_MODE		3
21962306a36Sopenharmony_ci#define DPMAIF_HPC_ADD_MODE_DF			0
22062306a36Sopenharmony_ci#define DPMAIF_HPC_TOTAL_NUM			8
22162306a36Sopenharmony_ci#define DPMAIF_HPC_MAX_TOTAL_NUM		8
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT			(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x00)
22462306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_ADD			(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x10)
22562306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON0		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x14)
22662306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON1		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x18)
22762306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON2		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x1c)
22862306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON3		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x20)
22962306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON4		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x24)
23062306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON5		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x28)
23162306a36Sopenharmony_ci#define DPMAIF_DL_DLQPIT_INIT_CON6		(BASE_DPMAIF_DL_DLQ_REMOVEAO_IDX + 0x2c)
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci#define DPMAIF_ULQSAR_n(q)			(DPMAIF_AO_UL_CHNL0_CON0 + 0x10 * (q))
23462306a36Sopenharmony_ci#define DPMAIF_UL_DRBSIZE_ADDRH_n(q)		(DPMAIF_AO_UL_CHNL0_CON1 + 0x10 * (q))
23562306a36Sopenharmony_ci#define DPMAIF_UL_DRB_ADDRH_n(q)		(DPMAIF_AO_UL_CHNL0_CON2 + 0x10 * (q))
23662306a36Sopenharmony_ci#define DPMAIF_ULQ_STA0_n(q)			(DPMAIF_AO_UL_CH0_STA + 0x04 * (q))
23762306a36Sopenharmony_ci#define DPMAIF_ULQ_ADD_DESC_CH_n(q)		(DPMAIF_UL_ADD_DESC_CH0 + 0x04 * (q))
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci#define DPMAIF_UL_DRB_RIDX_MSK			GENMASK(31, 16)
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci#define DPMAIF_AP_RGU_ASSERT			0x10001150
24262306a36Sopenharmony_ci#define DPMAIF_AP_RGU_DEASSERT			0x10001154
24362306a36Sopenharmony_ci#define DPMAIF_AP_RST_BIT			BIT(2)
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci#define DPMAIF_AP_AO_RGU_ASSERT			0x10001140
24662306a36Sopenharmony_ci#define DPMAIF_AP_AO_RGU_DEASSERT		0x10001144
24762306a36Sopenharmony_ci#define DPMAIF_AP_AO_RST_BIT			BIT(6)
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci/* DPMAIF init/restore */
25062306a36Sopenharmony_ci#define DPMAIF_UL_ADD_NOT_READY			BIT(31)
25162306a36Sopenharmony_ci#define DPMAIF_UL_ADD_UPDATE			BIT(31)
25262306a36Sopenharmony_ci#define DPMAIF_UL_ADD_COUNT_MASK		GENMASK(15, 0)
25362306a36Sopenharmony_ci#define DPMAIF_UL_ALL_QUE_ARB_EN		GENMASK(11, 8)
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci#define DPMAIF_DL_ADD_UPDATE			BIT(31)
25662306a36Sopenharmony_ci#define DPMAIF_DL_ADD_NOT_READY			BIT(31)
25762306a36Sopenharmony_ci#define DPMAIF_DL_FRG_ADD_UPDATE		BIT(16)
25862306a36Sopenharmony_ci#define DPMAIF_DL_ADD_COUNT_MASK		GENMASK(15, 0)
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_ALLSET		BIT(0)
26162306a36Sopenharmony_ci#define DPMAIF_DL_BAT_FRG_INIT			BIT(16)
26262306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_EN			BIT(31)
26362306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_NOT_READY		BIT(31)
26462306a36Sopenharmony_ci#define DPMAIF_DL_BAT_INIT_ONLY_ENABLE_BIT	0
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci#define DPMAIF_DL_PIT_INIT_ALLSET		BIT(0)
26762306a36Sopenharmony_ci#define DPMAIF_DL_PIT_INIT_EN			BIT(31)
26862306a36Sopenharmony_ci#define DPMAIF_DL_PIT_INIT_NOT_READY		BIT(31)
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci#define DPMAIF_BAT_REMAIN_SZ_BASE		16
27162306a36Sopenharmony_ci#define DPMAIF_BAT_BUFFER_SZ_BASE		128
27262306a36Sopenharmony_ci#define DPMAIF_FRG_BUFFER_SZ_BASE		128
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci#define DLQ_PIT_IDX_SIZE			0x20
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci#define DPMAIF_PIT_SIZE_MSK			GENMASK(17, 0)
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci#define DPMAIF_PIT_REM_CNT_MSK			GENMASK(17, 0)
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci#define DPMAIF_BAT_EN_MSK			BIT(16)
28162306a36Sopenharmony_ci#define DPMAIF_FRG_EN_MSK			BIT(28)
28262306a36Sopenharmony_ci#define DPMAIF_BAT_SIZE_MSK			GENMASK(15, 0)
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci#define DPMAIF_BAT_BID_MAXCNT_MSK		GENMASK(31, 16)
28562306a36Sopenharmony_ci#define DPMAIF_BAT_REMAIN_MINSZ_MSK		GENMASK(15, 8)
28662306a36Sopenharmony_ci#define DPMAIF_PIT_CHK_NUM_MSK			GENMASK(31, 24)
28762306a36Sopenharmony_ci#define DPMAIF_BAT_BUF_SZ_MSK			GENMASK(16, 8)
28862306a36Sopenharmony_ci#define DPMAIF_FRG_BUF_SZ_MSK			GENMASK(16, 8)
28962306a36Sopenharmony_ci#define DPMAIF_BAT_RSV_LEN_MSK			GENMASK(7, 0)
29062306a36Sopenharmony_ci#define DPMAIF_PKT_ALIGN_MSK			GENMASK(23, 22)
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci#define DPMAIF_BAT_CHECK_THRES_MSK		GENMASK(21, 16)
29362306a36Sopenharmony_ci#define DPMAIF_FRG_CHECK_THRES_MSK		GENMASK(7, 0)
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_ci#define DPMAIF_PKT_ALIGN_EN			BIT(23)
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci#define DPMAIF_DRB_SIZE_MSK			GENMASK(15, 0)
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci#define DPMAIF_DL_RD_WR_IDX_MSK			GENMASK(17, 0)
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ci/* DPMAIF_UL_CHK_BUSY */
30262306a36Sopenharmony_ci#define DPMAIF_UL_IDLE_STS			BIT(11)
30362306a36Sopenharmony_ci/* DPMAIF_DL_CHK_BUSY */
30462306a36Sopenharmony_ci#define DPMAIF_DL_IDLE_STS			BIT(23)
30562306a36Sopenharmony_ci/* DPMAIF_AO_DL_RDY_CHK_THRES */
30662306a36Sopenharmony_ci#define DPMAIF_DL_PKT_CHECKSUM_EN		BIT(31)
30762306a36Sopenharmony_ci#define DPMAIF_PORT_MODE_PCIE			BIT(30)
30862306a36Sopenharmony_ci#define DPMAIF_DL_BURST_PIT_EN			BIT(13)
30962306a36Sopenharmony_ci/* DPMAIF_DL_BAT_INIT_CON1 */
31062306a36Sopenharmony_ci#define DPMAIF_DL_BAT_CACHE_PRI			BIT(22)
31162306a36Sopenharmony_ci/* DPMAIF_AP_MEM_CLR */
31262306a36Sopenharmony_ci#define DPMAIF_MEM_CLR				BIT(0)
31362306a36Sopenharmony_ci/* DPMAIF_AP_OVERWRITE_CFG */
31462306a36Sopenharmony_ci#define DPMAIF_SRAM_SYNC			BIT(0)
31562306a36Sopenharmony_ci/* DPMAIF_AO_UL_INIT_SET */
31662306a36Sopenharmony_ci#define DPMAIF_UL_INIT_DONE			BIT(0)
31762306a36Sopenharmony_ci/* DPMAIF_AO_DL_INIT_SET */
31862306a36Sopenharmony_ci#define DPMAIF_DL_INIT_DONE			BIT(0)
31962306a36Sopenharmony_ci/* DPMAIF_AO_DL_PIT_SEQ_END */
32062306a36Sopenharmony_ci#define DPMAIF_DL_PIT_SEQ_MSK			GENMASK(7, 0)
32162306a36Sopenharmony_ci/* DPMAIF_UL_RESERVE_AO_RW */
32262306a36Sopenharmony_ci#define DPMAIF_PCIE_MODE_SET_VALUE		0x55
32362306a36Sopenharmony_ci/* DPMAIF_AP_CG_EN */
32462306a36Sopenharmony_ci#define DPMAIF_CG_EN				0x7f
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ci#define DPMAIF_UDL_IP_BUSY			BIT(0)
32762306a36Sopenharmony_ci#define DPMAIF_DL_INT_DLQ0_QDONE		BIT(8)
32862306a36Sopenharmony_ci#define DPMAIF_DL_INT_DLQ1_QDONE		BIT(9)
32962306a36Sopenharmony_ci#define DPMAIF_DL_INT_DLQ0_PITCNT_LEN		BIT(10)
33062306a36Sopenharmony_ci#define DPMAIF_DL_INT_DLQ1_PITCNT_LEN		BIT(11)
33162306a36Sopenharmony_ci#define DPMAIF_DL_INT_Q2TOQ1			BIT(24)
33262306a36Sopenharmony_ci#define DPMAIF_DL_INT_Q2APTOP			BIT(25)
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci#define DPMAIF_DLQ_LOW_TIMEOUT_THRES_MKS	GENMASK(15, 0)
33562306a36Sopenharmony_ci#define DPMAIF_DLQ_HIGH_TIMEOUT_THRES_MSK	GENMASK(31, 16)
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci/* DPMAIF DLQ HW configure */
33862306a36Sopenharmony_ci#define DPMAIF_AGG_MAX_LEN_DF			65535
33962306a36Sopenharmony_ci#define DPMAIF_AGG_TBL_ENT_NUM_DF		50
34062306a36Sopenharmony_ci#define DPMAIF_HASH_PRIME_DF			13
34162306a36Sopenharmony_ci#define DPMAIF_MID_TIMEOUT_THRES_DF		100
34262306a36Sopenharmony_ci#define DPMAIF_DLQ_TIMEOUT_THRES_DF		100
34362306a36Sopenharmony_ci#define DPMAIF_DLQ_PRS_THRES_DF			10
34462306a36Sopenharmony_ci#define DPMAIF_DLQ_HASH_BIT_CHOOSE_DF		0
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci#define DPMAIF_DLQPIT_EN_MSK			BIT(20)
34762306a36Sopenharmony_ci#define DPMAIF_DLQPIT_CHAN_OFS			16
34862306a36Sopenharmony_ci#define DPMAIF_ADD_DLQ_PIT_CHAN_OFS		20
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ci#endif /* __T7XX_REG_H__ */
351