// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef HW_SDMMC_H_
#define HW_SDMMC_H_

#include <ddk/device.h>
#include <zircon/compiler.h>

__BEGIN_CDECLS

//
// Common SD/MMC defines
//
#define SDHC_BLOCK_SIZE 512

#define SDMMC_RESP_LEN_EMPTY     (1 << 0)
#define SDMMC_RESP_LEN_136       (1 << 1)
#define SDMMC_RESP_LEN_48        (1 << 2)
#define SDMMC_RESP_LEN_48B       (1 << 3)
#define SDMMC_RESP_CRC_CHECK     (1 << 4)
#define SDMMC_RESP_CMD_IDX_CHECK (1 << 5)
#define SDMMC_RESP_DATA_PRESENT  (1 << 6)

#define SDMMC_CMD_TYPE_NORMAL    (1 << 7)
#define SDMMC_CMD_TYPE_SUSPEND   (1 << 8)
#define SDMMC_CMD_TYPE_RESUME    (1 << 9)
#define SDMMC_CMD_TYPE_ABORT     (1 << 10)

#define SDMMC_CMD_DMA_EN         (1 << 11)
#define SDMMC_CMD_BLKCNT_EN      (1 << 12)
#define SDMMC_CMD_AUTO12         (1 << 13)
#define SDMMC_CMD_AUTO23         (1 << 14)
#define SDMMC_CMD_READ           (1 << 15)
#define SDMMC_CMD_MULTI_BLK      (1 << 16)

#define SDMMC_RESP_NONE (0x0)
#define SDMMC_RESP_R1   (SDMMC_RESP_LEN_48 | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R1b  (SDMMC_RESP_LEN_48B | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R2   (SDMMC_RESP_LEN_136 | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R3   (SDMMC_RESP_LEN_48)
#define SDMMC_RESP_R4   (SDMMC_RESP_LEN_48)
#define SDMMC_RESP_R5   (SDMMC_RESP_LEN_48 | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R5b  (SDMMC_RESP_LEN_48B | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R6   (SDMMC_RESP_LEN_48 | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)
#define SDMMC_RESP_R7   (SDMMC_RESP_LEN_48 | SDMMC_RESP_CMD_IDX_CHECK | SDMMC_RESP_CRC_CHECK)

// Common SD/MMC commands
#define SDMMC_GO_IDLE_STATE_FLAGS           SDMMC_RESP_NONE
#define SDMMC_ALL_SEND_CID_FLAGS            SDMMC_RESP_R2
#define SDMMC_SEND_CSD_FLAGS                SDMMC_RESP_R2
#define SDMMC_STOP_TRANSMISSION_FLAGS       SDMMC_RESP_R1b | SDMMC_CMD_TYPE_ABORT
#define SDMMC_SEND_STATUS_FLAGS             SDMMC_RESP_R1
#define SDMMC_READ_BLOCK_FLAGS              SDMMC_RESP_R1 | \
                                            SDMMC_RESP_DATA_PRESENT | SDMMC_CMD_READ
#define SDMMC_READ_MULTIPLE_BLOCK_FLAGS     SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT | \
                                            SDMMC_CMD_READ | SDMMC_CMD_MULTI_BLK | \
                                            SDMMC_CMD_BLKCNT_EN
#define SDMMC_WRITE_BLOCK_FLAGS             SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT
#define SDMMC_WRITE_MULTIPLE_BLOCK_FLAGS    SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT | \
                                            SDMMC_CMD_MULTI_BLK | SDMMC_CMD_BLKCNT_EN
#define SDMMC_LOCK_UNLOCK_FLAGS             SDMMC_RESP_R1
#define SDMMC_APP_CMD_FLAGS                 SDMMC_RESP_R1
#define SDMMC_GEN_CMD_FLAGS                 SDMMC_RESP_R1 | SD_CMD_ISDATA

// SD Commands
#define SD_SEND_RELATIVE_ADDR_FLAGS         SDMMC_RESP_R6
#define SD_SWITCH_FUNC_FLAGS                SDMMC_RESP_R1
#define SD_SELECT_CARD_FLAGS                SDMMC_RESP_R1b
#define SD_SEND_IF_COND_FLAGS               SDMMC_RESP_R7
#define SD_VOLTAGE_SWITCH_FLAGS             SDMMC_RESP_R1
#define SD_APP_SEND_SCR_FLAGS               SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT | \
                                            SDMMC_CMD_READ
#define SD_APP_SET_BUS_WIDTH_FLAGS          SDMMC_RESP_R1
#define SD_APP_SEND_OP_COND_FLAGS           SDMMC_RESP_R3

// MMC Commands
#define MMC_SEND_OP_COND_FLAGS              SDMMC_RESP_R3
#define MMC_SET_RELATIVE_ADDR_FLAGS         SDMMC_RESP_R1
#define MMC_SWITCH_FLAGS                    SDMMC_RESP_R1b
#define MMC_SELECT_CARD_FLAGS               SDMMC_RESP_R1
#define MMC_SEND_EXT_CSD_FLAGS              SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT | \
                                            SDMMC_CMD_READ
#define MMC_SEND_TUNING_BLOCK_FLAGS         SDMMC_RESP_R1 | SDMMC_RESP_DATA_PRESENT | \
                                            SDMMC_CMD_READ
// Common SD/MMC commands
#define SDMMC_GO_IDLE_STATE           0
#define SDMMC_ALL_SEND_CID            2
#define SDMMC_SEND_CSD                9
#define SDMMC_STOP_TRANSMISSION       12
#define SDMMC_SEND_STATUS             13
#define SDMMC_READ_BLOCK              17
#define SDMMC_READ_MULTIPLE_BLOCK     18
#define SDMMC_WRITE_BLOCK             24
#define SDMMC_WRITE_MULTIPLE_BLOCK    25
#define SDMMC_LOCK_UNLOCK             42
#define SDMMC_APP_CMD                 55
#define SDMMC_GEN_CMD                 56

// SD Commands
#define SD_SEND_RELATIVE_ADDR         3
#define SD_SWITCH_FUNC                6
#define SD_SELECT_CARD                7
#define SD_SEND_IF_COND               8
#define SD_VOLTAGE_SWITCH             11
#define SD_APP_SEND_SCR               51
#define SD_SEND_TUNING_BLOCK          19

#define SD_APP_SET_BUS_WIDTH          6
#define SD_APP_SEND_OP_COND           41

// MMC Commands
#define MMC_SEND_OP_COND              1
#define MMC_SET_RELATIVE_ADDR         3
#define MMC_SWITCH                    6
#define MMC_SELECT_CARD               7
#define MMC_SEND_EXT_CSD              8
#define MMC_SEND_TUNING_BLOCK         21

// CID fields (SD/MMC)
#define MMC_CID_SPEC_VRSN_40    3
#define MMC_CID_PRODUCT_NAME_START    7
#define MMC_CID_REVISION              6
#define MMC_CID_SERIAL                2

// CSD fields (SD/MMC)
#define MMC_CSD_SPEC_VERSION          15
#define MMC_CSD_SIZE_START            7

// OCR fields (MMC)
#define MMC_OCR_BUSY            (1 << 31)

// EXT_CSD fields (MMC)
#define MMC_EXT_CSD_BUS_WIDTH   183
#define MMC_EXT_CSD_BUS_WIDTH_8_DDR 6
#define MMC_EXT_CSD_BUS_WIDTH_4_DDR 5
#define MMC_EXT_CSD_BUS_WIDTH_8     2
#define MMC_EXT_CSD_BUS_WIDTH_4     1
#define MMC_EXT_CSD_BUS_WIDTH_1     0

#define MMC_EXT_CSD_HS_TIMING   185
#define MMC_EXT_CSD_HS_TIMING_LEGACY    0
#define MMC_EXT_CSD_HS_TIMING_HS        1
#define MMC_EXT_CSD_HS_TIMING_HS200     2
#define MMC_EXT_CSD_HS_TIMING_HS400     3

#define MMC_EXT_CSD_DEVICE_TYPE 196

// Device register (CMD13 response) fields (SD/MMC)
#define MMC_STATUS_ADDR_OUT_OF_RANGE    (1 << 31)
#define MMC_STATUS_ADDR_MISALIGN        (1 << 30)
#define MMC_STATUS_BLOCK_LEN_ERR        (1 << 29)
#define MMC_STATUS_ERASE_SEQ_ERR        (1 << 28)
#define MMC_STATUS_ERASE_PARAM          (1 << 27)
#define MMC_STATUS_WP_VIOLATION         (1 << 26)
#define MMC_STATUS_DEVICE_LOCKED        (1 << 25)
#define MMC_STATUS_LOCK_UNLOCK_FAILED   (1 << 24)
#define MMC_STATUS_COM_CRC_ERR          (1 << 23)
#define MMC_STATUS_ILLEGAL_COMMAND      (1 << 22)
#define MMC_STATUS_DEVICE_ECC_FAILED    (1 << 21)
#define MMC_STATUS_CC_ERR               (1 << 20)
#define MMC_STATUS_ERR                  (1 << 19)
#define MMC_STATUS_CXD_OVERWRITE        (1 << 16)
#define MMC_STATUS_WP_ERASE_SKIP        (1 << 15)
#define MMC_STATUS_ERASE_RESET          (1 << 13)
#define MMC_STATUS_CURRENT_STATE_MASK   (0xf << 9)
#define MMC_STATUS_CURRENT_STATE(resp)  ((resp) & MMC_STATUS_CURRENT_STATE_MASK)
/* eMMC4.5 Spec, Section 6.13, page 140: CURRENT_STATE Field:
 * 0 = Idle 1 = Ready 2 = Ident 3 = Stby command. 4 = Tran 5 = Data
 * 6 = Rcv 7 = Prg 8 = Dis 9 = Btst 10 = Slp 11–15 = reserved
 */
#define MMC_STATUS_CURRENT_STATE_TRAN   (0x4 << 9)
#define MMC_STATUS_CURRENT_STATE_DATA   (0x5 << 9)
#define MMC_STATUS_CURRENT_STATE_RECV   (0x6 << 9)
#define MMC_STATUS_READY_FOR_DATA       (1 << 8)
#define MMC_STATUS_SWITCH_ERR           (1 << 7)
#define MMC_STATUS_EXCEPTION_EVENT      (1 << 6)
#define MMC_STATUS_APP_CMD              (1 << 5)

__END_CDECLS

#endif  // HW_SDMMC_H_
