#ifndef __REALTEK_RTSX_CHIP_H
#define __REALTEK_RTSX_CHIP_H
#include "rtsx.h"
#define SUPPORT_CPRM
#define SUPPORT_OCP
#define SUPPORT_SDIO_ASPM
#define SUPPORT_MAGIC_GATE
#define SUPPORT_MSXC
#define SUPPORT_SD_LOCK
#define HW_AUTO_SWITCH_SD_BUS
#define HW_INT_WRITE_CLR
#ifdef SUPPORT_MAGIC_GATE
#define MG_SET_ICV_SLOW
#define MS_SAMPLE_INT_ERR
#define READ_BYTES_WAIT_INT
#endif
#ifdef SUPPORT_MSXC
#define XC_POWERCLASS
#define SUPPORT_PCGL_1P18
#endif
#ifndef LED_AUTO_BLINK
#define REGULAR_BLINK
#endif
#define LED_BLINK_SPEED …
#define LED_TOGGLE_INTERVAL …
#define GPIO_TOGGLE_THRESHOLD …
#define LED_GPIO …
#define POLLING_INTERVAL …
#define TRACE_ITEM_CNT …
#ifndef STATUS_SUCCESS
#define STATUS_SUCCESS …
#endif
#ifndef STATUS_FAIL
#define STATUS_FAIL …
#endif
#ifndef STATUS_TIMEDOUT
#define STATUS_TIMEDOUT …
#endif
#ifndef STATUS_NOMEM
#define STATUS_NOMEM …
#endif
#ifndef STATUS_READ_FAIL
#define STATUS_READ_FAIL …
#endif
#ifndef STATUS_WRITE_FAIL
#define STATUS_WRITE_FAIL …
#endif
#ifndef STATUS_ERROR
#define STATUS_ERROR …
#endif
#define PM_S1 …
#define PM_S3 …
#define TRANSPORT_GOOD …
#define TRANSPORT_FAILED …
#define TRANSPORT_NO_SENSE …
#define TRANSPORT_ERROR …
#define STOP_MEDIUM …
#define MAKE_MEDIUM_READY …
#define UNLOAD_MEDIUM …
#define LOAD_MEDIUM …
#define QULIFIRE …
#define AENC_FNC …
#define TRML_IOP …
#define REL_ADR …
#define WBUS_32 …
#define WBUS_16 …
#define SYNC …
#define LINKED …
#define CMD_QUE …
#define SFT_RE …
#define VEN_ID_LEN …
#define PRDCT_ID_LEN …
#define PRDCT_REV_LEN …
#define RTSX_FLIDX_TRANS_ACTIVE …
#define RTSX_FLIDX_ABORTING …
#define RTSX_FLIDX_DISCONNECTING …
#define ABORTING_OR_DISCONNECTING …
#define RTSX_FLIDX_RESETTING …
#define RTSX_FLIDX_TIMED_OUT …
#define DRCT_ACCESS_DEV …
#define RMB_DISC …
#define ANSI_SCSI2 …
#define SCSI …
#define WRITE_PROTECTED_MEDIA …
#define ILI …
#define NO_SENSE …
#define RECOVER_ERR …
#define NOT_READY …
#define MEDIA_ERR …
#define HARDWARE_ERR …
#define ILGAL_REQ …
#define UNIT_ATTENTION …
#define DAT_PRTCT …
#define BLNC_CHK …
#define CPY_ABRT …
#define ABRT_CMD …
#define EQUAL …
#define VLM_OVRFLW …
#define MISCMP …
#define READ_ERR …
#define WRITE_ERR …
#define FIRST_RESET …
#define USED_EXIST …
#define SENSE_VALID …
#define SENSE_INVALID …
#define CUR_ERR …
#define DEF_ERR …
#define SNSKEYINFO_LEN …
#define SKSV …
#define CDB_ILLEGAL …
#define DAT_ILLEGAL …
#define BPV …
#define BIT_ILLEGAL0 …
#define BIT_ILLEGAL1 …
#define BIT_ILLEGAL2 …
#define BIT_ILLEGAL3 …
#define BIT_ILLEGAL4 …
#define BIT_ILLEGAL5 …
#define BIT_ILLEGAL6 …
#define BIT_ILLEGAL7 …
#define ASC_NO_INFO …
#define ASC_MISCMP …
#define ASC_INVLD_CDB …
#define ASC_INVLD_PARA …
#define ASC_LU_NOT_READY …
#define ASC_WRITE_ERR …
#define ASC_READ_ERR …
#define ASC_LOAD_EJCT_ERR …
#define ASC_MEDIA_NOT_PRESENT …
#define ASC_MEDIA_CHANGED …
#define ASC_MEDIA_IN_PROCESS …
#define ASC_WRITE_PROTECT …
#define ASC_LUN_NOT_SUPPORTED …
#define ASCQ_NO_INFO …
#define ASCQ_MEDIA_IN_PROCESS …
#define ASCQ_MISCMP …
#define ASCQ_INVLD_CDB …
#define ASCQ_INVLD_PARA …
#define ASCQ_LU_NOT_READY …
#define ASCQ_WRITE_ERR …
#define ASCQ_READ_ERR …
#define ASCQ_LOAD_EJCT_ERR …
#define ASCQ_WRITE_PROTECT …
struct sense_data_t { … };
#define RTSX_HCBAR …
#define RTSX_HCBCTLR …
#define RTSX_HDBAR …
#define RTSX_HDBCTLR …
#define RTSX_HAIMR …
#define RTSX_BIPR …
#define RTSX_BIER …
#define STOP_CMD …
#define SDMA_MODE …
#define ADMA_MODE …
#define STOP_DMA …
#define TRIG_DMA …
#define CMD_DONE_INT …
#define DATA_DONE_INT …
#define TRANS_OK_INT …
#define TRANS_FAIL_INT …
#define XD_INT …
#define MS_INT …
#define SD_INT …
#define GPIO0_INT …
#define OC_INT …
#define SD_WRITE_PROTECT …
#define XD_EXIST …
#define MS_EXIST …
#define SD_EXIST …
#define DELINK_INT …
#define MS_OC_INT …
#define SD_OC_INT …
#define CARD_INT …
#define NEED_COMPLETE_INT …
#define RTSX_INT …
#define CARD_EXIST …
#define CMD_DONE_INT_EN …
#define DATA_DONE_INT_EN …
#define TRANS_OK_INT_EN …
#define TRANS_FAIL_INT_EN …
#define XD_INT_EN …
#define MS_INT_EN …
#define SD_INT_EN …
#define GPIO0_INT_EN …
#define OC_INT_EN …
#define DELINK_INT_EN …
#define MS_OC_INT_EN …
#define SD_OC_INT_EN …
#define READ_REG_CMD …
#define WRITE_REG_CMD …
#define CHECK_REG_CMD …
#define HOST_TO_DEVICE …
#define DEVICE_TO_HOST …
#define RTSX_RESV_BUF_LEN …
#define HOST_CMDS_BUF_LEN …
#define HOST_SG_TBL_BUF_LEN …
#define SD_NR …
#define MS_NR …
#define XD_NR …
#define SPI_NR …
#define SD_CARD …
#define MS_CARD …
#define XD_CARD …
#define SPI_CARD …
#define MAX_ALLOWED_LUN_CNT …
#define XD_FREE_TABLE_CNT …
#define MS_FREE_TABLE_CNT …
#define SET_BIT(data, idx) …
#define CLR_BIT(data, idx) …
#define CHK_BIT(data, idx) …
#define RTSX_SG_INT …
#define RTSX_SG_END …
#define RTSX_SG_VALID …
#define RTSX_SG_NO_OP …
#define RTSX_SG_TRANS_DATA …
#define RTSX_SG_LINK_DESC …
struct rtsx_chip;
card_rw_func;
enum card_clock { … };
enum RTSX_STAT { … };
enum IC_VER { … };
#define MAX_RESET_CNT …
#define MAX_DEFECTIVE_BLOCK …
struct zone_entry { … };
#define TYPE_SD …
#define TYPE_MMC …
#define SD_HS …
#define SD_SDR50 …
#define SD_DDR50 …
#define SD_SDR104 …
#define SD_HCXC …
#define MMC_26M …
#define MMC_52M …
#define MMC_4BIT …
#define MMC_8BIT …
#define MMC_SECTOR_MODE …
#define MMC_DDR52 …
#define CHK_SD(sd_card) …
#define CHK_SD_HS(sd_card) …
#define CHK_SD_SDR50(sd_card) …
#define CHK_SD_DDR50(sd_card) …
#define CHK_SD_SDR104(sd_card) …
#define CHK_SD_HCXC(sd_card) …
#define CHK_SD_HC(sd_card) …
#define CHK_SD_XC(sd_card) …
#define CHK_SD30_SPEED(sd_card) …
#define SET_SD(sd_card) …
#define SET_SD_HS(sd_card) …
#define SET_SD_SDR50(sd_card) …
#define SET_SD_DDR50(sd_card) …
#define SET_SD_SDR104(sd_card) …
#define SET_SD_HCXC(sd_card) …
#define CLR_SD_HS(sd_card) …
#define CLR_SD_SDR50(sd_card) …
#define CLR_SD_DDR50(sd_card) …
#define CLR_SD_SDR104(sd_card) …
#define CLR_SD_HCXC(sd_card) …
#define CHK_MMC(sd_card) …
#define CHK_MMC_26M(sd_card) …
#define CHK_MMC_52M(sd_card) …
#define CHK_MMC_4BIT(sd_card) …
#define CHK_MMC_8BIT(sd_card) …
#define CHK_MMC_SECTOR_MODE(sd_card) …
#define CHK_MMC_DDR52(sd_card) …
#define SET_MMC(sd_card) …
#define SET_MMC_26M(sd_card) …
#define SET_MMC_52M(sd_card) …
#define SET_MMC_4BIT(sd_card) …
#define SET_MMC_8BIT(sd_card) …
#define SET_MMC_SECTOR_MODE(sd_card) …
#define SET_MMC_DDR52(sd_card) …
#define CLR_MMC_26M(sd_card) …
#define CLR_MMC_52M(sd_card) …
#define CLR_MMC_4BIT(sd_card) …
#define CLR_MMC_8BIT(sd_card) …
#define CLR_MMC_SECTOR_MODE(sd_card) …
#define CLR_MMC_DDR52(sd_card) …
#define CHK_MMC_HS(sd_card) …
#define CLR_MMC_HS(sd_card) …
#define SD_SUPPORT_CLASS_TEN …
#define SD_SUPPORT_1V8 …
#define SD_SET_CLASS_TEN(sd_card) …
#define SD_CHK_CLASS_TEN(sd_card) …
#define SD_CLR_CLASS_TEN(sd_card) …
#define SD_SET_1V8(sd_card) …
#define SD_CHK_1V8(sd_card) …
#define SD_CLR_1V8(sd_card) …
struct sd_info { … };
struct xd_delay_write_tag { … };
struct xd_info { … };
#define MODE_512_SEQ …
#define MODE_2K_SEQ …
#define TYPE_MS …
#define TYPE_MSPRO …
#define MS_4BIT …
#define MS_8BIT …
#define MS_HG …
#define MS_XC …
#define HG8BIT …
#define CHK_MSPRO(ms_card) …
#define CHK_HG8BIT(ms_card) …
#define CHK_MSXC(ms_card) …
#define CHK_MSHG(ms_card) …
#define CHK_MS8BIT(ms_card) …
#define CHK_MS4BIT(ms_card) …
struct ms_delay_write_tag { … };
struct ms_info { … };
struct spi_info { … };
#define DEFAULT_SINGLE …
#define SD_MS_2LUN …
#define SD_MS_1LUN …
#define LAST_LUN_MODE …
#define QFN …
#define LQFP …
#define SD_PUSH_POINT_CTL_MASK …
#define SD_PUSH_POINT_DELAY …
#define SD_PUSH_POINT_AUTO …
#define SD_SAMPLE_POINT_CTL_MASK …
#define SD_SAMPLE_POINT_DELAY …
#define SD_SAMPLE_POINT_AUTO …
#define SD_DDR_TX_PHASE_SET_BY_USER …
#define MMC_DDR_TX_PHASE_SET_BY_USER …
#define SUPPORT_MMC_DDR_MODE …
#define RESET_MMC_FIRST …
#define SEQ_START_CRITERIA …
#define POWER_CLASS_2_EN …
#define POWER_CLASS_1_EN …
#define MAX_SHOW_CNT …
#define MAX_RESET_CNT …
#define SDIO_EXIST …
#define SDIO_IGNORED …
#define CHK_SDIO_EXIST(chip) …
#define SET_SDIO_EXIST(chip) …
#define CLR_SDIO_EXIST(chip) …
#define CHK_SDIO_IGNORED(chip) …
#define SET_SDIO_IGNORED(chip) …
#define CLR_SDIO_IGNORED(chip) …
struct rtsx_chip { … };
static inline struct device *rtsx_dev(const struct rtsx_chip *chip)
{ … }
#define rtsx_set_stat(chip, stat) …
#define rtsx_get_stat(chip) …
#define rtsx_chk_stat(chip, stat) …
#define RTSX_SET_DELINK(chip) …
#define RTSX_CLR_DELINK(chip) …
#define RTSX_TST_DELINK(chip) …
#define CHECK_PID(chip, pid) …
#define CHECK_BARO_PKG(chip, pkg) …
#define CHECK_LUN_MODE(chip, mode) …
#define SSC_PDCTL …
#define OC_PDCTL …
int rtsx_force_power_on(struct rtsx_chip *chip, u8 ctl);
int rtsx_force_power_down(struct rtsx_chip *chip, u8 ctl);
void rtsx_enable_card_int(struct rtsx_chip *chip);
void rtsx_enable_bus_int(struct rtsx_chip *chip);
void rtsx_disable_bus_int(struct rtsx_chip *chip);
int rtsx_reset_chip(struct rtsx_chip *chip);
int rtsx_init_chip(struct rtsx_chip *chip);
void rtsx_release_chip(struct rtsx_chip *chip);
void rtsx_polling_func(struct rtsx_chip *chip);
void rtsx_stop_cmd(struct rtsx_chip *chip, int card);
int rtsx_write_register(struct rtsx_chip *chip, u16 addr, u8 mask, u8 data);
int rtsx_read_register(struct rtsx_chip *chip, u16 addr, u8 *data);
int rtsx_write_cfg_dw(struct rtsx_chip *chip,
u8 func_no, u16 addr, u32 mask, u32 val);
int rtsx_read_cfg_dw(struct rtsx_chip *chip, u8 func_no, u16 addr, u32 *val);
int rtsx_write_cfg_seq(struct rtsx_chip *chip,
u8 func, u16 addr, u8 *buf, int len);
int rtsx_read_cfg_seq(struct rtsx_chip *chip,
u8 func, u16 addr, u8 *buf, int len);
int rtsx_write_phy_register(struct rtsx_chip *chip, u8 addr, u16 val);
int rtsx_read_phy_register(struct rtsx_chip *chip, u8 addr, u16 *val);
int rtsx_read_efuse(struct rtsx_chip *chip, u8 addr, u8 *val);
int rtsx_write_efuse(struct rtsx_chip *chip, u8 addr, u8 val);
int rtsx_clr_phy_reg_bit(struct rtsx_chip *chip, u8 reg, u8 bit);
int rtsx_set_phy_reg_bit(struct rtsx_chip *chip, u8 reg, u8 bit);
void rtsx_enter_ss(struct rtsx_chip *chip);
void rtsx_exit_ss(struct rtsx_chip *chip);
int rtsx_pre_handle_interrupt(struct rtsx_chip *chip);
void rtsx_enter_L1(struct rtsx_chip *chip);
void rtsx_exit_L1(struct rtsx_chip *chip);
void rtsx_do_before_power_down(struct rtsx_chip *chip, int pm_stat);
void rtsx_enable_aspm(struct rtsx_chip *chip);
void rtsx_disable_aspm(struct rtsx_chip *chip);
int rtsx_read_ppbuf(struct rtsx_chip *chip, u8 *buf, int buf_len);
int rtsx_write_ppbuf(struct rtsx_chip *chip, u8 *buf, int buf_len);
int rtsx_check_chip_exist(struct rtsx_chip *chip);
#endif