/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #ifndef __SDMMCIP_REG_HW_H #define __SDMMCIP_REG_HW_H #include "plat_types.h" #define SDMMCIP_REG_CTRL 0x000 #define SDMMCIP_REG_PWREN 0x004 #define SDMMCIP_REG_CLKDIV 0x008 #define SDMMCIP_REG_CLKSRC 0x00C #define SDMMCIP_REG_CLKENA 0x010 #define SDMMCIP_REG_TMOUT 0x014 #define SDMMCIP_REG_CTYPE 0x018 #define SDMMCIP_REG_BLKSIZ 0x01C #define SDMMCIP_REG_BYTCNT 0x020 #define SDMMCIP_REG_INTMASK 0x024 #define SDMMCIP_REG_CMDARG 0x028 #define SDMMCIP_REG_CMD 0x02C #define SDMMCIP_REG_RESP0 0x030 #define SDMMCIP_REG_RESP1 0x034 #define SDMMCIP_REG_RESP2 0x038 #define SDMMCIP_REG_RESP3 0x03C #define SDMMCIP_REG_MINTSTS 0x040 #define SDMMCIP_REG_RINTSTS 0x044 #define SDMMCIP_REG_STATUS 0x048 #define SDMMCIP_REG_FIFOTH 0x04C #define SDMMCIP_REG_CDETECT 0x050 #define SDMMCIP_REG_WRTPRT 0x054 #define SDMMCIP_REG_GPIO 0x058 #define SDMMCIP_REG_TCMCNT 0x05C #define SDMMCIP_REG_TBBCNT 0x060 #define SDMMCIP_REG_DEBNCE 0x064 #define SDMMCIP_REG_USRID 0x068 #define SDMMCIP_REG_VERID 0x06C #define SDMMCIP_REG_HCON 0x070 #define SDMMCIP_REG_UHS_REG 0x074 #define SDMMCIP_REG_RESET_CARD 0x078 #define SDMMCIP_REG_BMOD 0x080 #define SDMMCIP_REG_PLDMND 0x084 #define SDMMCIP_REG_DBADDR 0x088 #define SDMMCIP_REG_IDSTS 0x08C #define SDMMCIP_REG_IDINTEN 0x090 #define SDMMCIP_REG_DSCADDR 0x094 #define SDMMCIP_REG_BUFADDR 0x098 #define SDMMCIP_REG_DATA 0x200 /* Interrupt Mask register */ #define SDMMCIP_REG_INTMSK_ALL 0xffffffff #define SDMMCIP_REG_INTMSK_CD (1 << 0) #define SDMMCIP_REG_INTMSK_RE (1 << 1) #define SDMMCIP_REG_INTMSK_CDONE (1 << 2) #define SDMMCIP_REG_INTMSK_DTO (1 << 3) #define SDMMCIP_REG_INTMSK_TXDR (1 << 4) #define SDMMCIP_REG_INTMSK_RXDR (1 << 5) #define SDMMCIP_REG_INTMSK_DCRC (1 << 7) #define SDMMCIP_REG_INTMSK_RTO (1 << 8) #define SDMMCIP_REG_INTMSK_DRTO (1 << 9) #define SDMMCIP_REG_INTMSK_HTO (1 << 10) #define SDMMCIP_REG_INTMSK_FRUN (1 << 11) #define SDMMCIP_REG_INTMSK_HLE (1 << 12) #define SDMMCIP_REG_INTMSK_SBE (1 << 13) #define SDMMCIP_REG_INTMSK_ACD (1 << 14) #define SDMMCIP_REG_INTMSK_EBE (1 << 15) /* Raw interrupt Regsiter */ #define SDMMCIP_REG_DATA_ERR (SDMMCIP_REG_INTMSK_EBE | SDMMCIP_REG_INTMSK_SBE | SDMMCIP_REG_INTMSK_HLE |\ SDMMCIP_REG_INTMSK_FRUN | SDMMCIP_REG_INTMSK_EBE | SDMMCIP_REG_INTMSK_DCRC) #define SDMMCIP_REG_DATA_TOUT (SDMMCIP_REG_INTMSK_HTO | SDMMCIP_REG_INTMSK_DRTO) /* CTRL register */ #define SDMMCIP_REG_CTRL_RESET (1 << 0) #define SDMMCIP_REG_CTRL_FIFO_RESET (1 << 1) #define SDMMCIP_REG_CTRL_DMA_RESET (1 << 2) #define SDMMCIP_REG_INT_EN (1 << 4) #define SDMMCIP_REG_DMA_EN (1 << 5) #define SDMMCIP_REG_CTRL_SEND_AS_CCSD (1 << 10) #define SDMMCIP_REG_IDMAC_EN (1 << 25) #define SDMMCIP_REG_RESET_ALL (SDMMCIP_REG_CTRL_RESET | SDMMCIP_REG_CTRL_FIFO_RESET |\ SDMMCIP_REG_CTRL_DMA_RESET) /* CMD register */ #define SDMMCIP_REG_CMD_RESP_EXP (1 << 6) #define SDMMCIP_REG_CMD_RESP_LENGTH (1 << 7) #define SDMMCIP_REG_CMD_CHECK_CRC (1 << 8) #define SDMMCIP_REG_CMD_DATA_EXP (1 << 9) #define SDMMCIP_REG_CMD_RW (1 << 10) #define SDMMCIP_REG_CMD_SEND_STOP (1 << 12) #define SDMMCIP_REG_CMD_ABORT_STOP (1 << 14) #define SDMMCIP_REG_CMD_PRV_DAT_WAIT (1 << 13) #define SDMMCIP_REG_CMD_UPD_CLK (1 << 21) #define SDMMCIP_REG_CMD_USE_HOLD_REG (1 << 29) #define SDMMCIP_REG_CMD_START (1 << 31) /* CLKENA register */ #define SDMMCIP_REG_CLKEN_ENABLE (1 << 0) #define SDMMCIP_REG_CLKEN_LOW_PWR (1 << 16) /* Card-type registe */ #define SDMMCIP_REG_CTYPE_1BIT 0 #define SDMMCIP_REG_CTYPE_4BIT (1 << 0) #define SDMMCIP_REG_CTYPE_8BIT (1 << 16) /* Status Register */ #define SDMMCIP_REG_BUSY (1 << 9) #define SDMMCIP_REG_FIFO_FULL (1 << 3) #define SDMMCIP_REG_FIFO_EMPTY (1 << 2) #define SDMMCIP_REG_FIFO_COUNT_SHIFT (17) #define SDMMCIP_REG_FIFO_COUNT_MASK (0x1fff << SDMMCIP_REG_FIFO_COUNT_SHIFT) /* FIFOTH Register */ #define MSIZE(x) ((x) << 28) #define RX_WMARK(x) ((x) << 16) #define TX_WMARK(x) (x) #define RX_WMARK_SHIFT 16 #define RX_WMARK_MASK (0xfff << RX_WMARK_SHIFT) #define SDMMCIP_REG_IDMAC_OWN (1 << 31) #define SDMMCIP_REG_IDMAC_CH (1 << 4) #define SDMMCIP_REG_IDMAC_FS (1 << 3) #define SDMMCIP_REG_IDMAC_LD (1 << 2) /* Bus Mode Register */ #define SDMMCIP_REG_BMOD_IDMAC_RESET (1 << 0) #define SDMMCIP_REG_BMOD_IDMAC_FB (1 << 1) #define SDMMCIP_REG_BMOD_IDMAC_EN (1 << 7) /* UHS register */ #define SDMMCIP_REG_DDR_MODE (1 << 16) /* quirks */ #define SDMMCIP_REG_QUIRK_DISABLE_SMU (1 << 0) /* FIFO Register */ #define SDMMCIP_REG_FIFO_OFFSET 0x200 #endif /* __SDMMCIP_REG_HW_H */