pinebuds/platform/hal/reg_sdmmcip.h
2022-08-15 17:20:27 +08:00

149 lines
5.4 KiB
C

/***************************************************************************
*
* 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 */