/** @file * * Copyright (c) 2017, Andrei Warkentin * Copyright (c) Microsoft Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include #ifndef __BCM2836_SDHOST_H__ #define __BCM2836_SDHOST_H__ #define SDHOST_OFFSET 0x00202000 #define SDHOST_BASE_ADDRESS (BCM2836_SOC_REGISTERS + SDHOST_OFFSET) #define SDHOST_LENGTH 0x00000100 #define SDHOST_REG(X) (SDHOST_BASE_ADDRESS + (X)) #define SDHOST_CMD SDHOST_REG(0x0) #define SDHOST_ARG SDHOST_REG(0x4) #define SDHOST_TOUT SDHOST_REG(0x8) #define SDHOST_CDIV SDHOST_REG(0xC) #define SDHOST_RSP0 SDHOST_REG(0x10) // [31:0] #define SDHOST_RSP1 SDHOST_REG(0x14) // [63:32] #define SDHOST_RSP2 SDHOST_REG(0x18) // [95:64] #define SDHOST_RSP3 SDHOST_REG(0x1C) // [127:96] #define SDHOST_HSTS SDHOST_REG(0x20) #define SDHOST_VDD SDHOST_REG(0x30) #define SDHOST_EDM SDHOST_REG(0x34) #define SDHOST_HCFG SDHOST_REG(0x38) #define SDHOST_HBCT SDHOST_REG(0x3C) #define SDHOST_DATA SDHOST_REG(0x40) #define SDHOST_HBLC SDHOST_REG(0x50) // // CMD // #define SDHOST_CMD_READ_CMD BIT6 #define SDHOST_CMD_WRITE_CMD BIT7 #define SDHOST_CMD_RESPONSE_CMD_LONG_RESP BIT9 #define SDHOST_CMD_RESPONSE_CMD_NO_RESP BIT10 #define SDHOST_CMD_BUSY_CMD BIT11 #define SDHOST_CMD_FAIL_FLAG BIT14 #define SDHOST_CMD_NEW_FLAG BIT15 // // VDD // #define SDHOST_VDD_POWER_ON BIT0 // // HSTS // #define SDHOST_HSTS_CLEAR 0x7F8 #define SDHOST_HSTS_BLOCK_IRPT BIT9 #define SDHOST_HSTS_REW_TIME_OUT BIT7 #define SDHOST_HSTS_CMD_TIME_OUT BIT6 #define SDHOST_HSTS_CRC16_ERROR BIT5 #define SDHOST_HSTS_CRC7_ERROR BIT4 #define SDHOST_HSTS_FIFO_ERROR BIT3 #define SDHOST_HSTS_DATA_FLAG BIT0 #define SDHOST_HSTS_TIMOUT_ERROR (SDHOST_HSTS_CMD_TIME_OUT | SDHOST_HSTS_REW_TIME_OUT) #define SDHOST_HSTS_TRANSFER_ERROR (SDHOST_HSTS_FIFO_ERROR | SDHOST_HSTS_CRC7_ERROR | SDHOST_HSTS_CRC16_ERROR) #define SDHOST_HSTS_ERROR (SDHOST_HSTS_TIMOUT_ERROR | SDHOST_HSTS_TRANSFER_ERROR) // // HCFG // #define SDHOST_HCFG_SLOW_CARD BIT3 #define SDHOST_HCFG_WIDE_EXT_BUS BIT2 #define SDHOST_HCFG_WIDE_INT_BUS BIT1 #define SDHOST_HCFG_DATA_IRPT_EN BIT4 #define SDHOST_HCFG_BLOCK_IRPT_EN BIT8 #define SDHOST_HCFG_BUSY_IRPT_EN BIT10 // // EDM // #define SDHOST_EDM_FIFO_CLEAR BIT21 #define SDHOST_EDM_WRITE_THRESHOLD_SHIFT 9 #define SDHOST_EDM_READ_THRESHOLD_SHIFT 14 #define SDHOST_EDM_THRESHOLD_MASK 0x1F #define SDHOST_EDM_READ_THRESHOLD(X) ((X) << SDHOST_EDM_READ_THRESHOLD_SHIFT) #define SDHOST_EDM_WRITE_THRESHOLD(X) ((X) << SDHOST_EDM_WRITE_THRESHOLD_SHIFT) #define CMD8_SD_ARG (0x0UL << 12 | BIT8 | 0xCEUL << 0) #define CMD8_MMC_ARG (0) #endif /*__BCM2836_SDHOST_H__ */