Re: [PATCH 02/10] mfd: rtsx: place register address and values togather

Lee Jones
2015-01-18T12:36:05Z

On Thu, 15 Jan 2015, micky_ching@realsil.com.cn wrote:

> From: Micky Ching <micky_ching@realsil.com.cn>
>
> It is more readable to place register address and values define
> togather. The values define add two leading space indicate belong
> to the register address defined above.
>
> Signed-off-by: Micky Ching <micky_ching@realsil.com.cn>
> ---
> include/linux/mfd/rtsx_pci.h | 836 +++++++++++++++++++------------------------
> 1 file changed, 369 insertions(+), 467 deletions(-)

As you wish.

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
> index a9c2a14..e81f2bb 100644
> --- a/include/linux/mfd/rtsx_pci.h
> +++ b/include/linux/mfd/rtsx_pci.h
> @@ -28,74 +28,72 @@
>
> #define MAX_RW_REG_CNT 1024
>
> -/* PCI Operation Register Address */
> #define RTSX_HCBAR 0x00
> #define RTSX_HCBCTLR 0x04
> +#define STOP_CMD (0x01 << 28)
> +#define READ_REG_CMD 0
> +#define WRITE_REG_CMD 1
> +#define CHECK_REG_CMD 2
> +
> #define RTSX_HDBAR 0x08
> +#define SG_INT 0x04
> +#define SG_END 0x02
> +#define SG_VALID 0x01
> +#define SG_NO_OP 0x00
> +#define SG_TRANS_DATA (0x02 << 4)
> +#define SG_LINK_DESC (0x03 << 4)
> #define RTSX_HDBCTLR 0x0C
> +#define SDMA_MODE 0x00
> +#define ADMA_MODE (0x02 << 26)
> +#define STOP_DMA (0x01 << 28)
> +#define TRIG_DMA (0x01 << 31)
> +
> #define RTSX_HAIMR 0x10
> -#define RTSX_BIPR 0x14
> -#define RTSX_BIER 0x18
> +#define HAIMR_TRANS_START (0x01 << 31)
> +#define HAIMR_READ 0x00
> +#define HAIMR_WRITE (0x01 << 30)
> +#define HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ)
> +#define HAIMR_WRITE_START (HAIMR_TRANS_START | HAIMR_WRITE)
> +#define HAIMR_TRANS_END (HAIMR_TRANS_START)
>
> -/* Host command buffer control register */
> -#define STOP_CMD (0x01 << 28)
> -
> -/* Host data buffer control register */
> -#define SDMA_MODE 0x00
> -#define ADMA_MODE (0x02 << 26)
> -#define STOP_DMA (0x01 << 28)
> -#define TRIG_DMA (0x01 << 31)
> -
> -/* Host access internal memory register */
> -#define HAIMR_TRANS_START (0x01 << 31)
> -#define HAIMR_READ 0x00
> -#define HAIMR_WRITE (0x01 << 30)
> -#define HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ)
> -#define HAIMR_WRITE_START (HAIMR_TRANS_START | HAIMR_WRITE)
> -#define HAIMR_TRANS_END (HAIMR_TRANS_START)
> -
> -/* Bus interrupt pending register */
> -#define CMD_DONE_INT (1 << 31)
> -#define DATA_DONE_INT (1 << 30)
> -#define TRANS_OK_INT (1 << 29)
> -#define TRANS_FAIL_INT (1 << 28)
> -#define XD_INT (1 << 27)
> -#define MS_INT (1 << 26)
> -#define SD_INT (1 << 25)
> -#define GPIO0_INT (1 << 24)
> -#define OC_INT (1 << 23)
> -#define SD_WRITE_PROTECT (1 << 19)
> -#define XD_EXIST (1 << 18)
> -#define MS_EXIST (1 << 17)
> -#define SD_EXIST (1 << 16)
> -#define DELINK_INT GPIO0_INT
> -#define MS_OC_INT (1 << 23)
> -#define SD_OC_INT (1 << 22)
> +#define RTSX_BIPR 0x14
> +#define CMD_DONE_INT (1 << 31)
> +#define DATA_DONE_INT (1 << 30)
> +#define TRANS_OK_INT (1 << 29)
> +#define TRANS_FAIL_INT (1 << 28)
> +#define XD_INT (1 << 27)
> +#define MS_INT (1 << 26)
> +#define SD_INT (1 << 25)
> +#define GPIO0_INT (1 << 24)
> +#define OC_INT (1 << 23)
> +#define SD_WRITE_PROTECT (1 << 19)
> +#define XD_EXIST (1 << 18)
> +#define MS_EXIST (1 << 17)
> +#define SD_EXIST (1 << 16)
> +#define DELINK_INT GPIO0_INT
> +#define MS_OC_INT (1 << 23)
> +#define SD_OC_INT (1 << 22)
>
> #define CARD_INT (XD_INT | MS_INT | SD_INT)
> #define NEED_COMPLETE_INT (DATA_DONE_INT | TRANS_OK_INT | TRANS_FAIL_INT)
> #define RTSX_INT (CMD_DONE_INT | NEED_COMPLETE_INT | \
> CARD_INT | GPIO0_INT | OC_INT)
> -
> #define CARD_EXIST (XD_EXIST | MS_EXIST | SD_EXIST)
>
> -/* Bus interrupt enable register */
> -#define CMD_DONE_INT_EN (1 << 31)
> -#define DATA_DONE_INT_EN (1 << 30)
> -#define TRANS_OK_INT_EN (1 << 29)
> -#define TRANS_FAIL_INT_EN (1 << 28)
> -#define XD_INT_EN (1 << 27)
> -#define MS_INT_EN (1 << 26)
> -#define SD_INT_EN (1 << 25)
> -#define GPIO0_INT_EN (1 << 24)
> -#define OC_INT_EN (1 << 23)
> -#define DELINK_INT_EN GPIO0_INT_EN
> -#define MS_OC_INT_EN (1 << 23)
> -#define SD_OC_INT_EN (1 << 22)
> -
> -#define READ_REG_CMD 0
> -#define WRITE_REG_CMD 1
> -#define CHECK_REG_CMD 2
> +#define RTSX_BIER 0x18
> +#define CMD_DONE_INT_EN (1 << 31)
> +#define DATA_DONE_INT_EN (1 << 30)
> +#define TRANS_OK_INT_EN (1 << 29)
> +#define TRANS_FAIL_INT_EN (1 << 28)
> +#define XD_INT_EN (1 << 27)
> +#define MS_INT_EN (1 << 26)
> +#define SD_INT_EN (1 << 25)
> +#define GPIO0_INT_EN (1 << 24)
> +#define OC_INT_EN (1 << 23)
> +#define DELINK_INT_EN GPIO0_INT_EN
> +#define MS_OC_INT_EN (1 << 23)
> +#define SD_OC_INT_EN (1 << 22)
> +
>
> /*
> * macros for easy use
> @@ -125,423 +123,68 @@
> #define rtsx_pci_write_config_dword(pcr, where, val) \
> pci_write_config_dword((pcr)->pci, where, val)
>
> -#define STATE_TRANS_NONE 0
> -#define STATE_TRANS_CMD 1
> -#define STATE_TRANS_BUF 2
> -#define STATE_TRANS_SG 3
> -
> -#define TRANS_NOT_READY 0
> -#define TRANS_RESULT_OK 1
> -#define TRANS_RESULT_FAIL 2
> -#define TRANS_NO_DEVICE 3
> -
> -#define RTSX_RESV_BUF_LEN 4096
> -#define HOST_CMDS_BUF_LEN 1024
> -#define HOST_SG_TBL_BUF_LEN (RTSX_RESV_BUF_LEN - HOST_CMDS_BUF_LEN)
> -#define HOST_SG_TBL_ITEMS (HOST_SG_TBL_BUF_LEN / 8)
> -#define MAX_SG_ITEM_LEN 0x80000
> -
> -#define HOST_TO_DEVICE 0
> -#define DEVICE_TO_HOST 1
> -
> -#define RTSX_PHASE_MAX 32
> -#define RX_TUNING_CNT 3
> -
> -/* SG descriptor */
> -#define SG_INT 0x04
> -#define SG_END 0x02
> -#define SG_VALID 0x01
> -
> -#define SG_NO_OP 0x00
> -#define SG_TRANS_DATA (0x02 << 4)
> -#define SG_LINK_DESC (0x03 << 4)
> -
> -/* Output voltage */
> -#define OUTPUT_3V3 0
> -#define OUTPUT_1V8 1
> -
> -/* Card Clock Enable Register */
> -#define SD_CLK_EN 0x04
> -#define MS_CLK_EN 0x08
> -
> -/* Card Select Register */
> -#define SD_MOD_SEL 2
> -#define MS_MOD_SEL 3
> -
> -/* Card Output Enable Register */
> -#define SD_OUTPUT_EN 0x04
> -#define MS_OUTPUT_EN 0x08
> -
> -/* CARD_SHARE_MODE */
> -#define CARD_SHARE_MASK 0x0F
> -#define CARD_SHARE_MULTI_LUN 0x00
> -#define CARD_SHARE_NORMAL 0x00
> -#define CARD_SHARE_48_SD 0x04
> -#define CARD_SHARE_48_MS 0x08
> -/* CARD_SHARE_MODE for barossa */
> -#define CARD_SHARE_BAROSSA_SD 0x01
> -#define CARD_SHARE_BAROSSA_MS 0x02
> -
> -/* CARD_DRIVE_SEL */
> -#define MS_DRIVE_8mA (0x01 << 6)
> -#define MMC_DRIVE_8mA (0x01 << 4)
> -#define XD_DRIVE_8mA (0x01 << 2)
> -#define GPIO_DRIVE_8mA 0x01
> -#define RTS5209_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\
> - XD_DRIVE_8mA | GPIO_DRIVE_8mA)
> -#define RTL8411_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\
> - XD_DRIVE_8mA)
> -#define RTSX_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | GPIO_DRIVE_8mA)
> +#define STATE_TRANS_NONE 0
> +#define STATE_TRANS_CMD 1
> +#define STATE_TRANS_BUF 2
> +#define STATE_TRANS_SG 3
>
> -/* SD30_DRIVE_SEL */
> -#define DRIVER_TYPE_A 0x05
> -#define DRIVER_TYPE_B 0x03
> -#define DRIVER_TYPE_C 0x02
> -#define DRIVER_TYPE_D 0x01
> -#define CFG_DRIVER_TYPE_A 0x02
> -#define CFG_DRIVER_TYPE_B 0x03
> -#define CFG_DRIVER_TYPE_C 0x01
> -#define CFG_DRIVER_TYPE_D 0x00
> -
> -/* FPDCTL */
> -#define SSC_POWER_DOWN 0x01
> -#define SD_OC_POWER_DOWN 0x02
> -#define ALL_POWER_DOWN 0x07
> -#define OC_POWER_DOWN 0x06
> -
> -/* CLK_CTL */
> -#define CHANGE_CLK 0x01
> -
> -/* LDO_CTL */
> -#define BPP_ASIC_1V7 0x00
> -#define BPP_ASIC_1V8 0x01
> -#define BPP_ASIC_1V9 0x02
> -#define BPP_ASIC_2V0 0x03
> -#define BPP_ASIC_2V7 0x04
> -#define BPP_ASIC_2V8 0x05
> -#define BPP_ASIC_3V2 0x06
> -#define BPP_ASIC_3V3 0x07
> -#define BPP_REG_TUNED18 0x07
> -#define BPP_TUNED18_SHIFT_8402 5
> -#define BPP_TUNED18_SHIFT_8411 4
> -#define BPP_PAD_MASK 0x04
> -#define BPP_PAD_3V3 0x04
> -#define BPP_PAD_1V8 0x00
> -#define BPP_LDO_POWB 0x03
> -#define BPP_LDO_ON 0x00
> -#define BPP_LDO_SUSPEND 0x02
> -#define BPP_LDO_OFF 0x03
> -
> -/* CD_PAD_CTL */
> -#define CD_DISABLE_MASK 0x07
> -#define MS_CD_DISABLE 0x04
> -#define SD_CD_DISABLE 0x02
> -#define XD_CD_DISABLE 0x01
> -#define CD_DISABLE 0x07
> -#define CD_ENABLE 0x00
> -#define MS_CD_EN_ONLY 0x03
> -#define SD_CD_EN_ONLY 0x05
> -#define XD_CD_EN_ONLY 0x06
> -#define FORCE_CD_LOW_MASK 0x38
> -#define FORCE_CD_XD_LOW 0x08
> -#define FORCE_CD_SD_LOW 0x10
> -#define FORCE_CD_MS_LOW 0x20
> -#define CD_AUTO_DISABLE 0x40
> -
> -/* SD_STAT1 */
> -#define SD_CRC7_ERR 0x80
> -#define SD_CRC16_ERR 0x40
> -#define SD_CRC_WRITE_ERR 0x20
> -#define SD_CRC_WRITE_ERR_MASK 0x1C
> -#define GET_CRC_TIME_OUT 0x02
> -#define SD_TUNING_COMPARE_ERR 0x01
> -
> -/* SD_STAT2 */
> -#define SD_RSP_80CLK_TIMEOUT 0x01
> -
> -/* SD_BUS_STAT */
> -#define SD_CLK_TOGGLE_EN 0x80
> -#define SD_CLK_FORCE_STOP 0x40
> -#define SD_DAT3_STATUS 0x10
> -#define SD_DAT2_STATUS 0x08
> -#define SD_DAT1_STATUS 0x04
> -#define SD_DAT0_STATUS 0x02
> -#define SD_CMD_STATUS 0x01
> -
> -/* SD_PAD_CTL */
> -#define SD_IO_USING_1V8 0x80
> -#define SD_IO_USING_3V3 0x7F
> -#define TYPE_A_DRIVING 0x00
> -#define TYPE_B_DRIVING 0x01
> -#define TYPE_C_DRIVING 0x02
> -#define TYPE_D_DRIVING 0x03
> -
> -/* SD_SAMPLE_POINT_CTL */
> -#define DDR_FIX_RX_DAT 0x00
> -#define DDR_VAR_RX_DAT 0x80
> -#define DDR_FIX_RX_DAT_EDGE 0x00
> -#define DDR_FIX_RX_DAT_14_DELAY 0x40
> -#define DDR_FIX_RX_CMD 0x00
> -#define DDR_VAR_RX_CMD 0x20
> -#define DDR_FIX_RX_CMD_POS_EDGE 0x00
> -#define DDR_FIX_RX_CMD_14_DELAY 0x10
> -#define SD20_RX_POS_EDGE 0x00
> -#define SD20_RX_14_DELAY 0x08
> -#define SD20_RX_SEL_MASK 0x08
> +#define TRANS_NOT_READY 0
> +#define TRANS_RESULT_OK 1
> +#define TRANS_RESULT_FAIL 2
> +#define TRANS_NO_DEVICE 3
>
> -/* SD_PUSH_POINT_CTL */
> -#define DDR_FIX_TX_CMD_DAT 0x00
> -#define DDR_VAR_TX_CMD_DAT 0x80
> -#define DDR_FIX_TX_DAT_14_TSU 0x00
> -#define DDR_FIX_TX_DAT_12_TSU 0x40
> -#define DDR_FIX_TX_CMD_NEG_EDGE 0x00
> -#define DDR_FIX_TX_CMD_14_AHEAD 0x20
> -#define SD20_TX_NEG_EDGE 0x00
> -#define SD20_TX_14_AHEAD 0x10
> -#define SD20_TX_SEL_MASK 0x10
> -#define DDR_VAR_SDCLK_POL_SWAP 0x01
> -
> -/* SD_TRANSFER */
> -#define SD_TRANSFER_START 0x80
> -#define SD_TRANSFER_END 0x40
> -#define SD_STAT_IDLE 0x20
> -#define SD_TRANSFER_ERR 0x10
> -/* SD Transfer Mode definition */
> -#define SD_TM_NORMAL_WRITE 0x00
> -#define SD_TM_AUTO_WRITE_3 0x01
> -#define SD_TM_AUTO_WRITE_4 0x02
> -#define SD_TM_AUTO_READ_3 0x05
> -#define SD_TM_AUTO_READ_4 0x06
> -#define SD_TM_CMD_RSP 0x08
> -#define SD_TM_AUTO_WRITE_1 0x09
> -#define SD_TM_AUTO_WRITE_2 0x0A
> -#define SD_TM_NORMAL_READ 0x0C
> -#define SD_TM_AUTO_READ_1 0x0D
> -#define SD_TM_AUTO_READ_2 0x0E
> -#define SD_TM_AUTO_TUNING 0x0F
> -
> -/* SD_VPTX_CTL / SD_VPRX_CTL */
> -#define PHASE_CHANGE 0x80
> -#define PHASE_NOT_RESET 0x40
> -
> -/* SD_DCMPS_TX_CTL / SD_DCMPS_RX_CTL */
> -#define DCMPS_CHANGE 0x80
> -#define DCMPS_CHANGE_DONE 0x40
> -#define DCMPS_ERROR 0x20
> -#define DCMPS_CURRENT_PHASE 0x1F
> -
> -/* SD Configure 1 Register */
> -#define SD_CLK_DIVIDE_0 0x00
> -#define SD_CLK_DIVIDE_256 0xC0
> -#define SD_CLK_DIVIDE_128 0x80
> -#define SD_BUS_WIDTH_1BIT 0x00
> -#define SD_BUS_WIDTH_4BIT 0x01
> -#define SD_BUS_WIDTH_8BIT 0x02
> -#define SD_ASYNC_FIFO_NOT_RST 0x10
> -#define SD_20_MODE 0x00
> -#define SD_DDR_MODE 0x04
> -#define SD_30_MODE 0x08
> -
> -#define SD_CLK_DIVIDE_MASK 0xC0
> -
> -/* SD_CMD_STATE */
> -#define SD_CMD_IDLE 0x80
> -
> -/* SD_DATA_STATE */
> -#define SD_DATA_IDLE 0x80
> -
> -/* DCM_DRP_CTL */
> -#define DCM_RESET 0x08
> -#define DCM_LOCKED 0x04
> -#define DCM_208M 0x00
> -#define DCM_TX 0x01
> -#define DCM_RX 0x02
> -
> -/* DCM_DRP_TRIG */
> -#define DRP_START 0x80
> -#define DRP_DONE 0x40
> -
> -/* DCM_DRP_CFG */
> -#define DRP_WRITE 0x80
> -#define DRP_READ 0x00
> -#define DCM_WRITE_ADDRESS_50 0x50
> -#define DCM_WRITE_ADDRESS_51 0x51
> -#define DCM_READ_ADDRESS_00 0x00
> -#define DCM_READ_ADDRESS_51 0x51
> -
> -/* IRQSTAT0 */
> -#define DMA_DONE_INT 0x80
> -#define SUSPEND_INT 0x40
> -#define LINK_RDY_INT 0x20
> -#define LINK_DOWN_INT 0x10
> -
> -/* DMACTL */
> -#define DMA_RST 0x80
> -#define DMA_BUSY 0x04
> -#define DMA_DIR_TO_CARD 0x00
> -#define DMA_DIR_FROM_CARD 0x02
> -#define DMA_EN 0x01
> -#define DMA_128 (0 << 4)
> -#define DMA_256 (1 << 4)
> -#define DMA_512 (2 << 4)
> -#define DMA_1024 (3 << 4)
> -#define DMA_PACK_SIZE_MASK 0x30
> -
> -/* SSC_CTL1 */
> -#define SSC_RSTB 0x80
> -#define SSC_8X_EN 0x40
> -#define SSC_FIX_FRAC 0x20
> -#define SSC_SEL_1M 0x00
> -#define SSC_SEL_2M 0x08
> -#define SSC_SEL_4M 0x10
> -#define SSC_SEL_8M 0x18
> -
> -/* SSC_CTL2 */
> -#define SSC_DEPTH_MASK 0x07
> -#define SSC_DEPTH_DISALBE 0x00
> -#define SSC_DEPTH_4M 0x01
> -#define SSC_DEPTH_2M 0x02
> -#define SSC_DEPTH_1M 0x03
> -#define SSC_DEPTH_500K 0x04
> -#define SSC_DEPTH_250K 0x05
> -
> -/* System Clock Control Register */
> -#define CLK_LOW_FREQ 0x01
> -
> -/* System Clock Divider Register */
> -#define CLK_DIV_1 0x01
> -#define CLK_DIV_2 0x02
> -#define CLK_DIV_4 0x03
> -#define CLK_DIV_8 0x04
> -
> -/* MS_CFG */
> -#define SAMPLE_TIME_RISING 0x00
> -#define SAMPLE_TIME_FALLING 0x80
> -#define PUSH_TIME_DEFAULT 0x00
> -#define PUSH_TIME_ODD 0x40
> -#define NO_EXTEND_TOGGLE 0x00
> -#define EXTEND_TOGGLE_CHK 0x20
> -#define MS_BUS_WIDTH_1 0x00
> -#define MS_BUS_WIDTH_4 0x10
> -#define MS_BUS_WIDTH_8 0x18
> -#define MS_2K_SECTOR_MODE 0x04
> -#define MS_512_SECTOR_MODE 0x00
> -#define MS_TOGGLE_TIMEOUT_EN 0x00
> -#define MS_TOGGLE_TIMEOUT_DISEN 0x01
> -#define MS_NO_CHECK_INT 0x02
> +#define RTSX_RESV_BUF_LEN 4096
> +#define HOST_CMDS_BUF_LEN 1024
> +#define HOST_SG_TBL_BUF_LEN (RTSX_RESV_BUF_LEN - HOST_CMDS_BUF_LEN)
> +#define HOST_SG_TBL_ITEMS (HOST_SG_TBL_BUF_LEN / 8)
> +#define MAX_SG_ITEM_LEN 0x80000
> +#define HOST_TO_DEVICE 0
> +#define DEVICE_TO_HOST 1
> +
> +#define OUTPUT_3V3 0
> +#define OUTPUT_1V8 1
>
> -/* MS_TRANS_CFG */
> -#define WAIT_INT 0x80
> -#define NO_WAIT_INT 0x00
> -#define NO_AUTO_READ_INT_REG 0x00
> -#define AUTO_READ_INT_REG 0x40
> -#define MS_CRC16_ERR 0x20
> -#define MS_RDY_TIMEOUT 0x10
> -#define MS_INT_CMDNK 0x08
> -#define MS_INT_BREQ 0x04
> -#define MS_INT_ERR 0x02
> -#define MS_INT_CED 0x01
> -
> -/* MS_TRANSFER */
> -#define MS_TRANSFER_START 0x80
> -#define MS_TRANSFER_END 0x40
> -#define MS_TRANSFER_ERR 0x20
> -#define MS_BS_STATE 0x10
> -#define MS_TM_READ_BYTES 0x00
> -#define MS_TM_NORMAL_READ 0x01
> -#define MS_TM_WRITE_BYTES 0x04
> -#define MS_TM_NORMAL_WRITE 0x05
> -#define MS_TM_AUTO_READ 0x08
> -#define MS_TM_AUTO_WRITE 0x0C
> -
> -/* SD Configure 2 Register */
> -#define SD_CALCULATE_CRC7 0x00
> -#define SD_NO_CALCULATE_CRC7 0x80
> -#define SD_CHECK_CRC16 0x00
> -#define SD_NO_CHECK_CRC16 0x40
> -#define SD_NO_CHECK_WAIT_CRC_TO 0x20
> -#define SD_WAIT_BUSY_END 0x08
> -#define SD_NO_WAIT_BUSY_END 0x00
> -#define SD_CHECK_CRC7 0x00
> -#define SD_NO_CHECK_CRC7 0x04
> -#define SD_RSP_LEN_0 0x00
> -#define SD_RSP_LEN_6 0x01
> -#define SD_RSP_LEN_17 0x02
> -/* SD/MMC Response Type Definition */
> -#define SD_RSP_TYPE_R0 0x04
> -#define SD_RSP_TYPE_R1 0x01
> -#define SD_RSP_TYPE_R1b 0x09
> -#define SD_RSP_TYPE_R2 0x02
> -#define SD_RSP_TYPE_R3 0x05
> -#define SD_RSP_TYPE_R4 0x05
> -#define SD_RSP_TYPE_R5 0x01
> -#define SD_RSP_TYPE_R6 0x01
> -#define SD_RSP_TYPE_R7 0x01
> -
> -/* SD_CONFIGURE3 */
> -#define SD_RSP_80CLK_TIMEOUT_EN 0x01
> -
> -/* Card Transfer Reset Register */
> -#define SPI_STOP 0x01
> -#define XD_STOP 0x02
> -#define SD_STOP 0x04
> -#define MS_STOP 0x08
> -#define SPI_CLR_ERR 0x10
> -#define XD_CLR_ERR 0x20
> -#define SD_CLR_ERR 0x40
> -#define MS_CLR_ERR 0x80
> -
> -/* Card Data Source Register */
> -#define PINGPONG_BUFFER 0x01
> -#define RING_BUFFER 0x00
> -
> -/* Card Power Control Register */
> -#define PMOS_STRG_MASK 0x10
> -#define PMOS_STRG_800mA 0x10
> -#define PMOS_STRG_400mA 0x00
> -#define SD_POWER_OFF 0x03
> -#define SD_PARTIAL_POWER_ON 0x01
> -#define SD_POWER_ON 0x00
> -#define SD_POWER_MASK 0x03
> -#define MS_POWER_OFF 0x0C
> -#define MS_PARTIAL_POWER_ON 0x04
> -#define MS_POWER_ON 0x00
> -#define MS_POWER_MASK 0x0C
> -#define BPP_POWER_OFF 0x0F
> -#define BPP_POWER_5_PERCENT_ON 0x0E
> -#define BPP_POWER_10_PERCENT_ON 0x0C
> -#define BPP_POWER_15_PERCENT_ON 0x08
> -#define BPP_POWER_ON 0x00
> -#define BPP_POWER_MASK 0x0F
> -#define SD_VCC_PARTIAL_POWER_ON 0x02
> -#define SD_VCC_POWER_ON 0x00
> -
> -/* PWR_GATE_CTRL */
> -#define PWR_GATE_EN 0x01
> -#define LDO3318_PWR_MASK 0x06
> -#define LDO_ON 0x00
> -#define LDO_SUSPEND 0x04
> -#define LDO_OFF 0x06
> -
> -/* CARD_CLK_SOURCE */
> -#define CRC_FIX_CLK (0x00 << 0)
> -#define CRC_VAR_CLK0 (0x01 << 0)
> -#define CRC_VAR_CLK1 (0x02 << 0)
> -#define SD30_FIX_CLK (0x00 << 2)
> -#define SD30_VAR_CLK0 (0x01 << 2)
> -#define SD30_VAR_CLK1 (0x02 << 2)
> -#define SAMPLE_FIX_CLK (0x00 << 4)
> -#define SAMPLE_VAR_CLK0 (0x01 << 4)
> -#define SAMPLE_VAR_CLK1 (0x02 << 4)
> -
> -/* HOST_SLEEP_STATE */
> -#define HOST_ENTER_S1 1
> -#define HOST_ENTER_S3 2
> +#define RTSX_PHASE_MAX 32
> +#define RX_TUNING_CNT 3
>
> #define MS_CFG 0xFD40
> +#define SAMPLE_TIME_RISING 0x00
> +#define SAMPLE_TIME_FALLING 0x80
> +#define PUSH_TIME_DEFAULT 0x00
> +#define PUSH_TIME_ODD 0x40
> +#define NO_EXTEND_TOGGLE 0x00
> +#define EXTEND_TOGGLE_CHK 0x20
> +#define MS_BUS_WIDTH_1 0x00
> +#define MS_BUS_WIDTH_4 0x10
> +#define MS_BUS_WIDTH_8 0x18
> +#define MS_2K_SECTOR_MODE 0x04
> +#define MS_512_SECTOR_MODE 0x00
> +#define MS_TOGGLE_TIMEOUT_EN 0x00
> +#define MS_TOGGLE_TIMEOUT_DISEN 0x01
> +#define MS_NO_CHECK_INT 0x02
> #define MS_TPC 0xFD41
> #define MS_TRANS_CFG 0xFD42
> +#define WAIT_INT 0x80
> +#define NO_WAIT_INT 0x00
> +#define NO_AUTO_READ_INT_REG 0x00
> +#define AUTO_READ_INT_REG 0x40
> +#define MS_CRC16_ERR 0x20
> +#define MS_RDY_TIMEOUT 0x10
> +#define MS_INT_CMDNK 0x08
> +#define MS_INT_BREQ 0x04
> +#define MS_INT_ERR 0x02
> +#define MS_INT_CED 0x01
> #define MS_TRANSFER 0xFD43
> +#define MS_TRANSFER_START 0x80
> +#define MS_TRANSFER_END 0x40
> +#define MS_TRANSFER_ERR 0x20
> +#define MS_BS_STATE 0x10
> +#define MS_TM_READ_BYTES 0x00
> +#define MS_TM_NORMAL_READ 0x01
> +#define MS_TM_WRITE_BYTES 0x04
> +#define MS_TM_NORMAL_WRITE 0x05
> +#define MS_TM_AUTO_READ 0x08
> +#define MS_TM_AUTO_WRITE 0x0C
> #define MS_INT_REG 0xFD44
> #define MS_BYTE_CNT 0xFD45
> #define MS_SECTOR_CNT_L 0xFD46
> @@ -549,14 +192,90 @@
> #define MS_DBUS_H 0xFD48
>
> #define SD_CFG1 0xFDA0
> +#define SD_CLK_DIVIDE_0 0x00
> +#define SD_CLK_DIVIDE_256 0xC0
> +#define SD_CLK_DIVIDE_128 0x80
> +#define SD_BUS_WIDTH_1BIT 0x00
> +#define SD_BUS_WIDTH_4BIT 0x01
> +#define SD_BUS_WIDTH_8BIT 0x02
> +#define SD_ASYNC_FIFO_NOT_RST 0x10
> +#define SD_20_MODE 0x00
> +#define SD_DDR_MODE 0x04
> +#define SD_30_MODE 0x08
> +#define SD_CLK_DIVIDE_MASK 0xC0
> #define SD_CFG2 0xFDA1
> +#define SD_CALCULATE_CRC7 0x00
> +#define SD_NO_CALCULATE_CRC7 0x80
> +#define SD_CHECK_CRC16 0x00
> +#define SD_NO_CHECK_CRC16 0x40
> +#define SD_NO_CHECK_WAIT_CRC_TO 0x20
> +#define SD_WAIT_BUSY_END 0x08
> +#define SD_NO_WAIT_BUSY_END 0x00
> +#define SD_CHECK_CRC7 0x00
> +#define SD_NO_CHECK_CRC7 0x04
> +#define SD_RSP_LEN_0 0x00
> +#define SD_RSP_LEN_6 0x01
> +#define SD_RSP_LEN_17 0x02
> +#define SD_RSP_TYPE_R0 0x04
> +#define SD_RSP_TYPE_R1 0x01
> +#define SD_RSP_TYPE_R1b 0x09
> +#define SD_RSP_TYPE_R2 0x02
> +#define SD_RSP_TYPE_R3 0x05
> +#define SD_RSP_TYPE_R4 0x05
> +#define SD_RSP_TYPE_R5 0x01
> +#define SD_RSP_TYPE_R6 0x01
> +#define SD_RSP_TYPE_R7 0x01
> #define SD_CFG3 0xFDA2
> +#define SD_RSP_80CLK_TIMEOUT_EN 0x01
> +
> #define SD_STAT1 0xFDA3
> +#define SD_CRC7_ERR 0x80
> +#define SD_CRC16_ERR 0x40
> +#define SD_CRC_WRITE_ERR 0x20
> +#define SD_CRC_WRITE_ERR_MASK 0x1C
> +#define GET_CRC_TIME_OUT 0x02
> +#define SD_TUNING_COMPARE_ERR 0x01
> #define SD_STAT2 0xFDA4
> +#define SD_RSP_80CLK_TIMEOUT 0x01
> +
> #define SD_BUS_STAT 0xFDA5
> +#define SD_CLK_TOGGLE_EN 0x80
> +#define SD_CLK_FORCE_STOP 0x40
> +#define SD_DAT3_STATUS 0x10
> +#define SD_DAT2_STATUS 0x08
> +#define SD_DAT1_STATUS 0x04
> +#define SD_DAT0_STATUS 0x02
> +#define SD_CMD_STATUS 0x01
> #define SD_PAD_CTL 0xFDA6
> +#define SD_IO_USING_1V8 0x80
> +#define SD_IO_USING_3V3 0x7F
> +#define TYPE_A_DRIVING 0x00
> +#define TYPE_B_DRIVING 0x01
> +#define TYPE_C_DRIVING 0x02
> +#define TYPE_D_DRIVING 0x03
> #define SD_SAMPLE_POINT_CTL 0xFDA7
> +#define DDR_FIX_RX_DAT 0x00
> +#define DDR_VAR_RX_DAT 0x80
> +#define DDR_FIX_RX_DAT_EDGE 0x00
> +#define DDR_FIX_RX_DAT_14_DELAY 0x40
> +#define DDR_FIX_RX_CMD 0x00
> +#define DDR_VAR_RX_CMD 0x20
> +#define DDR_FIX_RX_CMD_POS_EDGE 0x00
> +#define DDR_FIX_RX_CMD_14_DELAY 0x10
> +#define SD20_RX_POS_EDGE 0x00
> +#define SD20_RX_14_DELAY 0x08
> +#define SD20_RX_SEL_MASK 0x08
> #define SD_PUSH_POINT_CTL 0xFDA8
> +#define DDR_FIX_TX_CMD_DAT 0x00
> +#define DDR_VAR_TX_CMD_DAT 0x80
> +#define DDR_FIX_TX_DAT_14_TSU 0x00
> +#define DDR_FIX_TX_DAT_12_TSU 0x40
> +#define DDR_FIX_TX_CMD_NEG_EDGE 0x00
> +#define DDR_FIX_TX_CMD_14_AHEAD 0x20
> +#define SD20_TX_NEG_EDGE 0x00
> +#define SD20_TX_14_AHEAD 0x10
> +#define SD20_TX_SEL_MASK 0x10
> +#define DDR_VAR_SDCLK_POL_SWAP 0x01
> #define SD_CMD0 0xFDA9
> #define SD_CMD_START 0x40
> #define SD_CMD1 0xFDAA
> @@ -569,14 +288,46 @@
> #define SD_BLOCK_CNT_L 0xFDB1
> #define SD_BLOCK_CNT_H 0xFDB2
> #define SD_TRANSFER 0xFDB3
> +#define SD_TRANSFER_START 0x80
> +#define SD_TRANSFER_END 0x40
> +#define SD_STAT_IDLE 0x20
> +#define SD_TRANSFER_ERR 0x10
> +#define SD_TM_NORMAL_WRITE 0x00
> +#define SD_TM_AUTO_WRITE_3 0x01
> +#define SD_TM_AUTO_WRITE_4 0x02
> +#define SD_TM_AUTO_READ_3 0x05
> +#define SD_TM_AUTO_READ_4 0x06
> +#define SD_TM_CMD_RSP 0x08
> +#define SD_TM_AUTO_WRITE_1 0x09
> +#define SD_TM_AUTO_WRITE_2 0x0A
> +#define SD_TM_NORMAL_READ 0x0C
> +#define SD_TM_AUTO_READ_1 0x0D
> +#define SD_TM_AUTO_READ_2 0x0E
> +#define SD_TM_AUTO_TUNING 0x0F
> #define SD_CMD_STATE 0xFDB5
> +#define SD_CMD_IDLE 0x80
> +
> #define SD_DATA_STATE 0xFDB6
> +#define SD_DATA_IDLE 0x80
>
> #define SRCTL 0xFC13
>
> #define DCM_DRP_CTL 0xFC23
> +#define DCM_RESET 0x08
> +#define DCM_LOCKED 0x04
> +#define DCM_208M 0x00
> +#define DCM_TX 0x01
> +#define DCM_RX 0x02
> #define DCM_DRP_TRIG 0xFC24
> +#define DRP_START 0x80
> +#define DRP_DONE 0x40
> #define DCM_DRP_CFG 0xFC25
> +#define DRP_WRITE 0x80
> +#define DRP_READ 0x00
> +#define DCM_WRITE_ADDRESS_50 0x50
> +#define DCM_WRITE_ADDRESS_51 0x51
> +#define DCM_READ_ADDRESS_00 0x00
> +#define DCM_READ_ADDRESS_51 0x51
> #define DCM_DRP_WR_DATA_L 0xFC26
> #define DCM_DRP_WR_DATA_H 0xFC27
> #define DCM_DRP_RD_DATA_L 0xFC28
> @@ -587,42 +338,153 @@
> #define SD_DCMPS1_CTL 0xFC2D
> #define SD_VPTX_CTL SD_VPCLK0_CTL
> #define SD_VPRX_CTL SD_VPCLK1_CTL
> +#define PHASE_CHANGE 0x80
> +#define PHASE_NOT_RESET 0x40
> #define SD_DCMPS_TX_CTL SD_DCMPS0_CTL
> #define SD_DCMPS_RX_CTL SD_DCMPS1_CTL
> +#define DCMPS_CHANGE 0x80
> +#define DCMPS_CHANGE_DONE 0x40
> +#define DCMPS_ERROR 0x20
> +#define DCMPS_CURRENT_PHASE 0x1F
> #define CARD_CLK_SOURCE 0xFC2E
> -
> +#define CRC_FIX_CLK (0x00 << 0)
> +#define CRC_VAR_CLK0 (0x01 << 0)
> +#define CRC_VAR_CLK1 (0x02 << 0)
> +#define SD30_FIX_CLK (0x00 << 2)
> +#define SD30_VAR_CLK0 (0x01 << 2)
> +#define SD30_VAR_CLK1 (0x02 << 2)
> +#define SAMPLE_FIX_CLK (0x00 << 4)
> +#define SAMPLE_VAR_CLK0 (0x01 << 4)
> +#define SAMPLE_VAR_CLK1 (0x02 << 4)
> #define CARD_PWR_CTL 0xFD50
> +#define PMOS_STRG_MASK 0x10
> +#define PMOS_STRG_800mA 0x10
> +#define PMOS_STRG_400mA 0x00
> +#define SD_POWER_OFF 0x03
> +#define SD_PARTIAL_POWER_ON 0x01
> +#define SD_POWER_ON 0x00
> +#define SD_POWER_MASK 0x03
> +#define MS_POWER_OFF 0x0C
> +#define MS_PARTIAL_POWER_ON 0x04
> +#define MS_POWER_ON 0x00
> +#define MS_POWER_MASK 0x0C
> +#define BPP_POWER_OFF 0x0F
> +#define BPP_POWER_5_PERCENT_ON 0x0E
> +#define BPP_POWER_10_PERCENT_ON 0x0C
> +#define BPP_POWER_15_PERCENT_ON 0x08
> +#define BPP_POWER_ON 0x00
> +#define BPP_POWER_MASK 0x0F
> +#define SD_VCC_PARTIAL_POWER_ON 0x02
> +#define SD_VCC_POWER_ON 0x00
> #define CARD_CLK_SWITCH 0xFD51
> #define RTL8411B_PACKAGE_MODE 0xFD51
> #define CARD_SHARE_MODE 0xFD52
> +#define CARD_SHARE_MASK 0x0F
> +#define CARD_SHARE_MULTI_LUN 0x00
> +#define CARD_SHARE_NORMAL 0x00
> +#define CARD_SHARE_48_SD 0x04
> +#define CARD_SHARE_48_MS 0x08
> +#define CARD_SHARE_BAROSSA_SD 0x01
> +#define CARD_SHARE_BAROSSA_MS 0x02
> #define CARD_DRIVE_SEL 0xFD53
> +#define MS_DRIVE_8mA (0x01 << 6)
> +#define MMC_DRIVE_8mA (0x01 << 4)
> +#define XD_DRIVE_8mA (0x01 << 2)
> +#define GPIO_DRIVE_8mA 0x01
> +#define RTS5209_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\
> + XD_DRIVE_8mA | GPIO_DRIVE_8mA)
> +#define RTL8411_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | MMC_DRIVE_8mA |\
> + XD_DRIVE_8mA)
> +#define RTSX_CARD_DRIVE_DEFAULT (MS_DRIVE_8mA | GPIO_DRIVE_8mA)
> +
> #define CARD_STOP 0xFD54
> +#define SPI_STOP 0x01
> +#define XD_STOP 0x02
> +#define SD_STOP 0x04
> +#define MS_STOP 0x08
> +#define SPI_CLR_ERR 0x10
> +#define XD_CLR_ERR 0x20
> +#define SD_CLR_ERR 0x40
> +#define MS_CLR_ERR 0x80
> #define CARD_OE 0xFD55
> +#define SD_OUTPUT_EN 0x04
> +#define MS_OUTPUT_EN 0x08
> #define CARD_AUTO_BLINK 0xFD56
> #define CARD_GPIO_DIR 0xFD57
> #define CARD_GPIO 0xFD58
> #define CARD_DATA_SOURCE 0xFD5B
> +#define PINGPONG_BUFFER 0x01
> +#define RING_BUFFER 0x00
> #define SD30_CLK_DRIVE_SEL 0xFD5A
> +#define DRIVER_TYPE_A 0x05
> +#define DRIVER_TYPE_B 0x03
> +#define DRIVER_TYPE_C 0x02
> +#define DRIVER_TYPE_D 0x01
> #define CARD_SELECT 0xFD5C
> +#define SD_MOD_SEL 2
> +#define MS_MOD_SEL 3
> #define SD30_DRIVE_SEL 0xFD5E
> +#define CFG_DRIVER_TYPE_A 0x02
> +#define CFG_DRIVER_TYPE_B 0x03
> +#define CFG_DRIVER_TYPE_C 0x01
> +#define CFG_DRIVER_TYPE_D 0x00
> #define SD30_CMD_DRIVE_SEL 0xFD5E
> #define SD30_DAT_DRIVE_SEL 0xFD5F
> #define CARD_CLK_EN 0xFD69
> +#define SD_CLK_EN 0x04
> +#define MS_CLK_EN 0x08
> #define SDIO_CTRL 0xFD6B
> #define CD_PAD_CTL 0xFD73
> -
> +#define CD_DISABLE_MASK 0x07
> +#define MS_CD_DISABLE 0x04
> +#define SD_CD_DISABLE 0x02
> +#define XD_CD_DISABLE 0x01
> +#define CD_DISABLE 0x07
> +#define CD_ENABLE 0x00
> +#define MS_CD_EN_ONLY 0x03
> +#define SD_CD_EN_ONLY 0x05
> +#define XD_CD_EN_ONLY 0x06
> +#define FORCE_CD_LOW_MASK 0x38
> +#define FORCE_CD_XD_LOW 0x08
> +#define FORCE_CD_SD_LOW 0x10
> +#define FORCE_CD_MS_LOW 0x20
> +#define CD_AUTO_DISABLE 0x40
> #define FPDCTL 0xFC00
> +#define SSC_POWER_DOWN 0x01
> +#define SD_OC_POWER_DOWN 0x02
> +#define ALL_POWER_DOWN 0x07
> +#define OC_POWER_DOWN 0x06
> #define PDINFO 0xFC01
>
> #define CLK_CTL 0xFC02
> +#define CHANGE_CLK 0x01
> +#define CLK_LOW_FREQ 0x01
> +
> #define CLK_DIV 0xFC03
> +#define CLK_DIV_1 0x01
> +#define CLK_DIV_2 0x02
> +#define CLK_DIV_4 0x03
> +#define CLK_DIV_8 0x04
> #define CLK_SEL 0xFC04
>
> #define SSC_DIV_N_0 0xFC0F
> #define SSC_DIV_N_1 0xFC10
> #define SSC_CTL1 0xFC11
> +#define SSC_RSTB 0x80
> +#define SSC_8X_EN 0x40
> +#define SSC_FIX_FRAC 0x20
> +#define SSC_SEL_1M 0x00
> +#define SSC_SEL_2M 0x08
> +#define SSC_SEL_4M 0x10
> +#define SSC_SEL_8M 0x18
> #define SSC_CTL2 0xFC12
> -
> +#define SSC_DEPTH_MASK 0x07
> +#define SSC_DEPTH_DISALBE 0x00
> +#define SSC_DEPTH_4M 0x01
> +#define SSC_DEPTH_2M 0x02
> +#define SSC_DEPTH_1M 0x03
> +#define SSC_DEPTH_500K 0x04
> +#define SSC_DEPTH_250K 0x05
> #define RCCTL 0xFC14
>
> #define FPGA_PULL_CTL 0xFC1D
> @@ -630,6 +492,24 @@
> #define GPIO_CTL 0xFC1F
>
> #define LDO_CTL 0xFC1E
> +#define BPP_ASIC_1V7 0x00
> +#define BPP_ASIC_1V8 0x01
> +#define BPP_ASIC_1V9 0x02
> +#define BPP_ASIC_2V0 0x03
> +#define BPP_ASIC_2V7 0x04
> +#define BPP_ASIC_2V8 0x05
> +#define BPP_ASIC_3V2 0x06
> +#define BPP_ASIC_3V3 0x07
> +#define BPP_REG_TUNED18 0x07
> +#define BPP_TUNED18_SHIFT_8402 5
> +#define BPP_TUNED18_SHIFT_8411 4
> +#define BPP_PAD_MASK 0x04
> +#define BPP_PAD_3V3 0x04
> +#define BPP_PAD_1V8 0x00
> +#define BPP_LDO_POWB 0x03
> +#define BPP_LDO_ON 0x00
> +#define BPP_LDO_SUSPEND 0x02
> +#define BPP_LDO_OFF 0x03
> #define SYS_VER 0xFC32
>
> #define CARD_PULL_CTL1 0xFD60
> @@ -642,6 +522,10 @@
> /* PCI Express Related Registers */
> #define IRQEN0 0xFE20
> #define IRQSTAT0 0xFE21
> +#define DMA_DONE_INT 0x80
> +#define SUSPEND_INT 0x40
> +#define LINK_RDY_INT 0x20
> +#define LINK_DOWN_INT 0x10
> #define IRQEN1 0xFE22
> #define IRQSTAT1 0xFE23
> #define TLPRIEN 0xFE24
> @@ -653,6 +537,16 @@
> #define DMATC2 0xFE2A
> #define DMATC3 0xFE2B
> #define DMACTL 0xFE2C
> +#define DMA_RST 0x80
> +#define DMA_BUSY 0x04
> +#define DMA_DIR_TO_CARD 0x00
> +#define DMA_DIR_FROM_CARD 0x02
> +#define DMA_EN 0x01
> +#define DMA_128 (0 << 4)
> +#define DMA_256 (1 << 4)
> +#define DMA_512 (2 << 4)
> +#define DMA_1024 (3 << 4)
> +#define DMA_PACK_SIZE_MASK 0x30
> #define BCTL 0xFE2D
> #define RBBC0 0xFE2E
> #define RBBC1 0xFE2F
> @@ -693,11 +587,19 @@
> #define RESET_LOAD_REG 0xFE5E
> #define EFUSE_CONTENT 0xFE5F
> #define HOST_SLEEP_STATE 0xFE60
> +#define HOST_ENTER_S1 1
> +#define HOST_ENTER_S3 2
> +
> #define SDIO_CFG 0xFE70
>
> #define NFTS_TX_CTRL 0xFE72
>
> #define PWR_GATE_CTRL 0xFE75
> +#define PWR_GATE_EN 0x01
> +#define LDO3318_PWR_MASK 0x06
> +#define LDO_ON 0x00
> +#define LDO_SUSPEND 0x04
> +#define LDO_OFF 0x06
> #define PWD_SUSPEND_EN 0xFE76
> #define LDO_PWR_SEL 0xFE78
>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog