/* Copyright (c) 2019 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _QCN_SDIO_HWIO_ #define _QCN_SDIO_HWIO_ #define SDIO_QCN_DMA0_RX (0x0) #define SDIO_QCN_DMA0_RX_MASK (0xffffffff) #define SDIO_QCN_DMA0_RX_SHIFT (0) #define SDIO_QCN_DMA1_RX (0x4) #define SDIO_QCN_DMA1_RX_MASK (0xffffffff) #define SDIO_QCN_DMA1_RX_SHIFT (0) #define SDIO_QCN_DMA0_TX (0x8) #define SDIO_QCN_DMA0_TX_MASK (0xffffffff) #define SDIO_QCN_DMA0_TX_SHIFT (0) #define SDIO_QCN_DMA1_TX (0xC) #define SDIO_QCN_DMA1_TX_MASK (0xffffffff) #define SDIO_QCN_DMA1_TX_SHIFT (0) #define SDIO_QCN_MC_DMA0_RX_CH0 (0x10) #define SDIO_QCN_MC_DMA0_RX_CH0_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_RX_CH0_SHIFT (0) #define SDIO_QCN_MC_DMA0_RX_CH1 (0x14) #define SDIO_QCN_MC_DMA0_RX_CH1_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_RX_CH1_SHIFT (0) #define SDIO_QCN_MC_DMA0_RX_CH2 (0x18) #define SDIO_QCN_MC_DMA0_RX_CH2_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_RX_CH2_SHIFT (0) #define SDIO_QCN_MC_DMA0_RX_CH3 (0x1C) #define SDIO_QCN_MC_DMA0_RX_CH3_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_RX_CH3_SHIFT (0) #define SDIO_QCN_MC_DMA0_TX_CH0 (0x30) #define SDIO_QCN_MC_DMA0_TX_CH0_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_TX_CH0_SHIFT (0) #define SDIO_QCN_MC_DMA0_TX_CH1 (0x34) #define SDIO_QCN_MC_DMA0_TX_CH1_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_TX_CH1_SHIFT (0) #define SDIO_QCN_MC_DMA0_TX_CH2 (0x38) #define SDIO_QCN_MC_DMA0_TX_CH2_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_TX_CH2_SHIFT (0) #define SDIO_QCN_MC_DMA0_TX_CH3 (0x3C) #define SDIO_QCN_MC_DMA0_TX_CH3_MASK (0xffffffff) #define SDIO_QCN_MC_DMA0_TX_CH3_SHIFT (0) #define SDIO_QCN_MC_DMA1_RX_CH0 (0x50) #define SDIO_QCN_MC_DMA1_RX_CH0_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_RX_CH0_SHIFT (0) #define SDIO_QCN_MC_DMA1_RX_CH1 (0x54) #define SDIO_QCN_MC_DMA1_RX_CH1_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_RX_CH1_SHIFT (0) #define SDIO_QCN_MC_DMA1_RX_CH2 (0x58) #define SDIO_QCN_MC_DMA1_RX_CH2_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_RX_CH2_SHIFT (0) #define SDIO_QCN_MC_DMA1_RX_CH3 (0x5C) #define SDIO_QCN_MC_DMA1_RX_CH3_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_RX_CH3_SHIFT (0) #define SDIO_QCN_MC_DMA1_TX_CH0 (0x70) #define SDIO_QCN_MC_DMA1_TX_CH0_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_TX_CH0_SHIFT (0) #define SDIO_QCN_MC_DMA1_TX_CH1 (0x74) #define SDIO_QCN_MC_DMA1_TX_CH1_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_TX_CH1_SHIFT (0) #define SDIO_QCN_MC_DMA1_TX_CH2 (0x78) #define SDIO_QCN_MC_DMA1_TX_CH2_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_TX_CH2_SHIFT (0) #define SDIO_QCN_MC_DMA1_TX_CH3 (0x7C) #define SDIO_QCN_MC_DMA1_TX_CH3_MASK (0xffffffff) #define SDIO_QCN_MC_DMA1_TX_CH3_SHIFT (0) #define SDIO_QCN_CONFIG (0x100) #define SDIO_QCN_CONFIG_OOB_MASK (0x00000002) #define SDIO_QCN_CONFIG_OOB_SHIFT (1) #define SDIO_QCN_CONFIG_QE_MASK (0x00000001) #define SDIO_QCN_CONFIG_QE_SHIFT (0) #define SDIO_QCN_HRQ_PUSH (0x104) #define SDIO_QCN_HRQ_PUSH_UD_MASK (0xff000000) #define SDIO_QCN_HRQ_PUSH_UD_SHIFT (24) #define SDIO_QCN_HRQ_PUSH_BLK_MASK (0x00800000) #define SDIO_QCN_HRQ_PUSH_BLK_SHIFT (23) #define SDIO_QCN_HRQ_PUSH_TRANS_MASK (0x00400000) #define SDIO_QCN_HRQ_PUSH_TRANS_SHIFT (22) #define SDIO_QCN_HRQ_PUSH_BLK_CNT_MASK (0x00003ffe) #define SDIO_QCN_HRQ_PUSH_BLK_CNT_SHIFT (1) #define SDIO_QCN_HRQ_PUSH_DIR_MASK (0x00000001) #define SDIO_QCN_HRQ_PUSH_DIR_SHIFT (0) #define SDIO_QCN_HRQ_PUSH_UD1_MASK (0xffc00000) #define SDIO_QCN_HRQ_PUSH_UD1_SHIFT (22) #define SDIO_QCN_HRQ_PUSH_UD0_MASK (0x00003fff) #define SDIO_QCN_HRQ_PUSH_UD0_SHIFT (0) #define SDIO_QCN_CRQ_TX_PULL (0x108) #define SDIO_QCN_CRQ_TX_PULL_REQ_ID_MASK (0x3c) #define SDIO_QCN_CRQ_TX_PULL_REQ_ID_SHIFT (2) #define SDIO_QCN_CRQ_TX_PULL_CH_NUM_MASK (0x3) #define SDIO_QCN_CRQ_TX_PULL_CH_NUM_SHIFT (0) #define SDIO_QCN_CRQ_RX_PULL (0x108) #define SDIO_QCN_CRQ_RX_PULL_REQ_ID_MASK (0x7ffc) #define SDIO_QCN_CRQ_RX_PULL_REQ_ID_SHIFT (2) #define SDIO_QCN_CRQ_RX_PULL_CH_NUM_MASK (0x3) #define SDIO_QCN_CRQ_RX_PULL_CH_NUM_SHIFT (0) #define SDIO_QCN_IRQ_STATUS (0x10C) #define SDIO_QCN_IRQ_LOCAL_MASK (0x80) #define SDIO_QCN_IRQ_LOCAL_SHIFT (7) #define SDIO_QCN_IRQ_DAM_WACCESS_MASK (0x40) #define SDIO_QCN_IRQ_DAM_WACCESS_SHIFT (6) #define SDIO_QCN_IRQ_DAM_MISMATCH_MASK (0x20) #define SDIO_QCN_IRQ_DAM_MISMATCH_SHIFT (5) #define SDIO_QCN_IRQ_SYS_ERR_MASK (0x10) #define SDIO_QCN_IRQ_SYS_ERR_SHIFT (4) #define SDIO_QCN_IRQ_UNDERFLOW_MASK (0x8) #define SDIO_QCN_IRQ_UNDERFLOW_SHIFT (3) #define SDIO_QCN_IRQ_OVERFLOW_MASK (0x4) #define SDIO_QCN_IRQ_OVERFLOW_SHIFT (2) #define SDIO_QCN_IRQ_CH_MISMATCH_MASK (0x2) #define SDIO_QCN_IRQ_CH_MISMATCH_SHIFT (1) #define SDIO_QCN_IRQ_CRQ_READY_MASK (0x1) #define SDIO_QCN_IRQ_CRQ_READY_SHIFT (0) #define SDIO_QCN_IRQ_EN (0x110) #define SDIO_QCN_IRQ_EN_LOCAL_MASK (0x80) #define SDIO_QCN_IRQ_EN_LOCAL_SHIFT (7) #define SDIO_QCN_IRQ_EN_DAM_WACCESS_MASK (0x40) #define SDIO_QCN_IRQ_EN_DAM_WACCESS_SHIFT (6) #define SDIO_QCN_IRQ_EN_DAM_MISMATCH_MASK (0x20) #define SDIO_QCN_IRQ_EN_DAM_MISMATCH_SHIFT (5) #define SDIO_QCN_IRQ_EN_SYS_ERR_MASK (0x10) #define SDIO_QCN_IRQ_EN_SYS_ERR_SHIFT (4) #define SDIO_QCN_IRQ_EN_UNDERFLOW_MASK (0x8) #define SDIO_QCN_IRQ_EN_UNDERFLOW_SHIFT (3) #define SDIO_QCN_IRQ_EN_OVERFLOW_MASK (0x4) #define SDIO_QCN_IRQ_EN_OVERFLOW_SHIFT (2) #define SDIO_QCN_IRQ_EN_CH_MISMATCH_MASK (0x2) #define SDIO_QCN_IRQ_EN_CH_MISMATCH_SHIFT (1) #define SDIO_QCN_IRQ_EN_CRQ_READY_MASK (0x1) #define SDIO_QCN_IRQ_EN_CRQ_READY_SHIFT (0) #define SDIO_QCN_IRQ_CLR (0x114) #define SDIO_QCN_IRQ_CLR_LOCAL_MASK (0x80) #define SDIO_QCN_IRQ_CLR_LOCAL_SHIFT (7) #define SDIO_QCN_IRQ_CLR_DAM_WACCESS_MASK (0x40) #define SDIO_QCN_IRQ_CLR_DAM_WACCESS_SHIFT (6) #define SDIO_QCN_IRQ_CLR_DAM_MISMATCH_MASK (0x20) #define SDIO_QCN_IRQ_CLR_DAM_MISMATCH_SHIFT (5) #define SDIO_QCN_IRQ_CLR_SYS_ERR_MASK (0x10) #define SDIO_QCN_IRQ_CLR_SYS_ERR_SHIFT (4) #define SDIO_QCN_IRQ_CLR_UNDERFLOW_MASK (0x8) #define SDIO_QCN_IRQ_CLR_UNDERFLOW_SHIFT (3) #define SDIO_QCN_IRQ_CLR_OVERFLOW_MASK (0x4) #define SDIO_QCN_IRQ_CLR_OVERFLOW_SHIFT (2) #define SDIO_QCN_IRQ_CLR_CH_MISMATCH_MASK (0x2) #define SDIO_QCN_IRQ_CLR_CH_MISMATCH_SHIFT (1) #define SDIO_QCN_IRQ_CLR_CRQ_READY_MASK (0x1) #define SDIO_QCN_IRQ_CLR_CRQ_READY_SHIFT (0) #define SDIO_QCN_IRQ_FRC (0x11c) #define SDIO_QCN_IRQ_FRC_LOCAL_MASK (0x80) #define SDIO_QCN_IRQ_FRC_LOCAL_SHIFT (7) #define SDIO_QCN_IRQ_FRC_DAM_WACCESS_MASK (0x40) #define SDIO_QCN_IRQ_FRC_DAM_WACCESS_SHIFT (6) #define SDIO_QCN_IRQ_FRC_DAM_MISMATCH_MASK (0x20) #define SDIO_QCN_IRQ_FRC_DAM_MISMATCH_SHIFT (5) #define SDIO_QCN_IRQ_FRC_SYS_ERR_MASK (0x10) #define SDIO_QCN_IRQ_FRC_SYS_ERR_SHIFT (4) #define SDIO_QCN_IRQ_FRC_UNDERFLOW_MASK (0x8) #define SDIO_QCN_IRQ_FRC_UNDERFLOW_SHIFT (3) #define SDIO_QCN_IRQ_FRC_OVERFLOW_MASK (0x4) #define SDIO_QCN_IRQ_FRC_OVERFLOW_SHIFT (2) #define SDIO_QCN_IRQ_FRC_CH_MISMATCH_MASK (0x2) #define SDIO_QCN_IRQ_FRC_CH_MISMATCH_SHIFT (1) #define SDIO_QCN_IRQ_FRC_CRQ_READY_MASK (0x1) #define SDIO_QCN_IRQ_FRC_CRQ_READY_SHIFT (0) #define SDIO_QCN_HRQ_ACK_PULL (0x118) #define SDIO_QCN_HRQ_ACK_PULL_REQ_ID_MASK (0x3c0) #define SDIO_QCN_HRQ_ACK_PULL_REQ_ID_SHIFT (6) #define SDIO_QCN_HRQ_ACK_PULL_CH_NUM_MASK (0x3f) #define SDIO_QCN_HRQ_ACK_PULL_CH_NUM_SHIFT (0) #define SDIO_QCN_CRQ_PULL (0x118) #define SDIO_QCN_CRQ_PULL_UD_MASK (0xff000000) #define SDIO_QCN_CRQ_PULL_UD_SHIFT (24) #define SDIO_QCN_CRQ_PULL_BLK_MASK (0x00800000) #define SDIO_QCN_CRQ_PULL_BLK_SHIFT (23) #define SDIO_QCN_CRQ_PULL_TRANS_MASK (0x00400000) #define SDIO_QCN_CRQ_PULL_TRANS_SHIFT (22) #define SDIO_QCN_CRQ_PULL_BLK_CNT_MASK (0x0007ffc0) #define SDIO_QCN_CRQ_PULL_BLK_CNT_SHIFT (6) #define SDIO_QCN_CRQ_PULL_CH_NUM_MASK (0x3f) #define SDIO_QCN_CRQ_PULL_CH_NUM_SHIFT (0) #define SDIO_QCN_LOW_PWR (0x120) #define SDIO_QCN_LOW_PWR_GO_MASK (0x1) #define SDIO_QCN_LOW_PWR_GO_SHIFT (0) #define SDIO_QCN_HOST_TRANS_REG0 (0x124) #define SDIO_QCN_HOST_TRANS_REG0_MASK (0xffffffff) #define SDIO_QCN_HOST_TRANS_REG0_SHIFT (0) #define SDIO_QCN_HOST_TRANS_REG1 (0x128) #define SDIO_QCN_HOST_TRANS_REG1_MASK (0xffffffff) #define SDIO_QCN_HOST_TRANS_REG1_SHIFT (0) #define SDIO_QCN_HOST_TRANS_REG2 (0x12C) #define SDIO_QCN_HOST_TRANS_REG2_MASK (0xffffffff) #define SDIO_QCN_HOST_TRANS_REG2_SHIFT (0) #define SDIO_QCN_HOST_TRANS_REG3 (0x130) #define SDIO_QCN_HOST_TRANS_REG3_MASK (0xffffffff) #define SDIO_QCN_HOST_TRANS_REG3_SHIFT (0) #define SDIO_QCN_CLIENT_TRANS_REG0 (0x144) #define SDIO_QCN_CLIENT_TRANS_REG0_MASK (0xffffffff) #define SDIO_QCN_CLIENT_TRANS_REG0_SHIFT (0) #define SDIO_QCN_CLIENT_TRANS_REG1 (0x148) #define SDIO_QCN_CLIENT_TRANS_REG1_MASK (0xffffffff) #define SDIO_QCN_CLIENT_TRANS_REG1_SHIFT (0) #define SDIO_QCN_CLIENT_TRANS_REG2 (0x14C) #define SDIO_QCN_CLIENT_TRANS_REG2_MASK (0xffffffff) #define SDIO_QCN_CLIENT_TRANS_REG2_SHIFT (0) #define SDIO_QCN_CLIENT_TRANS_REG3 (0x150) #define SDIO_QCN_CLIENT_TRANS_REG3_MASK (0xffffffff) #define SDIO_QCN_CLIENT_TRANS_REG3_SHIFT (0) #define SDIO_QCN_LOCAL_INFO (0x00000164) #define SDIO_QCN_LOCAL_INFO_MASK (0xffffffff) #define SDIO_QCN_LOCAL_INFO_SHIFT (0) #define SDIO_QCN_SDIOC_CONFIG (0x200) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA1_DIR_BMSK (0x40000) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA1_DIR_SHFT (0x12) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA0_DIR_BMSK (0x20000) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA0_DIR_SHFT (0x11) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA_EN_BMSK (0x10000) #define SDIO_QCN_SDIOC_CONFIG_MC_DMA_EN_SHFT (0x10) #define SDIO_QCN_SDIOC_CONFIG_SW_CLK_EN_BMSK (0x80) #define SDIO_QCN_SDIOC_CONFIG_SW_CLK_EN_SHFT (0x7) #define SDIO_QCN_SDIOC_CONFIG_WR_HRQ_MEM_BMSK (0x40) #define SDIO_QCN_SDIOC_CONFIG_WR_HRQ_MEM_SHFT (0x6) #define SDIO_QCN_SDIOC_CONFIG_CLR_CRQ_PUSH_BMSK (0x20) #define SDIO_QCN_SDIOC_CONFIG_CLR_CRQ_PUSH_SHFT (0x5) #define SDIO_QCN_SDIOC_CONFIG_DIS_LEN_CHK_BMSK (0x10) #define SDIO_QCN_SDIOC_CONFIG_DIS_LEN_CHK_SHFT (0x4) #define SDIO_QCN_SDIOC_CONFIG_WRAP_ERROR_BMSK (0x8) #define SDIO_QCN_SDIOC_CONFIG_WRAP_ERROR_SHFT (0x3) #define SDIO_QCN_SDIOC_CONFIG_ADMA_64BIT_BMSK (0x4) #define SDIO_QCN_SDIOC_CONFIG_ADMA_64BIT_SHFT (0x2) #define SDIO_QCN_SDIOC_CONFIG_ADMA_INT_BMSK (0x2) #define SDIO_QCN_SDIOC_CONFIG_ADMA_INT_SHFT (0x1) #define SDIO_QCN_SDIOC_CONFIG_DMA_ENABLE_BMSK (0x1) #define SDIO_QCN_SDIOC_CONFIG_DMA_ENABLE_SHFT (0x0) #endif /* _QCN_SDIO_HWIO_ */