13a0398d7SOtavio Salvador /* 23a0398d7SOtavio Salvador * Freescale i.MX28 SSP Register Definitions 33a0398d7SOtavio Salvador * 43a0398d7SOtavio Salvador * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com> 53a0398d7SOtavio Salvador * 63a0398d7SOtavio Salvador * Based on code from LTIB: 73a0398d7SOtavio Salvador * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved. 83a0398d7SOtavio Salvador * 91a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 103a0398d7SOtavio Salvador */ 113a0398d7SOtavio Salvador 123a0398d7SOtavio Salvador #ifndef __MX28_REGS_SSP_H__ 133a0398d7SOtavio Salvador #define __MX28_REGS_SSP_H__ 143a0398d7SOtavio Salvador 15*552a848eSStefano Babic #include <asm/mach-imx/regs-common.h> 163a0398d7SOtavio Salvador 173a0398d7SOtavio Salvador #ifndef __ASSEMBLY__ 18f3801e2bSMarek Vasut #if defined(CONFIG_MX23) 19f3801e2bSMarek Vasut struct mxs_ssp_regs { 20f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_ctrl0) 21f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_cmd0) 22f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_cmd1) 23f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_compref) 24f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_compmask) 25f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_timing) 26f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_ctrl1) 27f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_data) 28f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_sdresp0) 29f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_sdresp1) 30f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_sdresp2) 31f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_sdresp3) 32f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_status) 33f3801e2bSMarek Vasut 34f3801e2bSMarek Vasut uint32_t reserved1[12]; 35f3801e2bSMarek Vasut 36f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_debug) 37f3801e2bSMarek Vasut mxs_reg_32(hw_ssp_version) 38f3801e2bSMarek Vasut }; 39f3801e2bSMarek Vasut #elif defined(CONFIG_MX28) 409c471142SOtavio Salvador struct mxs_ssp_regs { 41ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_ctrl0) 42ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_cmd0) 43ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_cmd1) 44ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_xfer_size) 45ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_block_size) 46ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_compref) 47ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_compmask) 48ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_timing) 49ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_ctrl1) 50ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_data) 51ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_sdresp0) 52ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_sdresp1) 53ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_sdresp2) 54ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_sdresp3) 55ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_ddr_ctrl) 56ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_dll_ctrl) 57ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_status) 58ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_dll_sts) 59ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_debug) 60ddcf13b1SOtavio Salvador mxs_reg_32(hw_ssp_version) 613a0398d7SOtavio Salvador }; 62f3801e2bSMarek Vasut #endif 6314e26bcfSMarek Vasut 643430e0bdSMarek Vasut static inline int mxs_ssp_bus_id_valid(int bus) 653430e0bdSMarek Vasut { 663430e0bdSMarek Vasut #if defined(CONFIG_MX23) 673430e0bdSMarek Vasut const unsigned int mxs_ssp_chan_count = 2; 683430e0bdSMarek Vasut #elif defined(CONFIG_MX28) 693430e0bdSMarek Vasut const unsigned int mxs_ssp_chan_count = 4; 703430e0bdSMarek Vasut #endif 713430e0bdSMarek Vasut 723430e0bdSMarek Vasut if (bus >= mxs_ssp_chan_count) 733430e0bdSMarek Vasut return 0; 743430e0bdSMarek Vasut 753430e0bdSMarek Vasut if (bus < 0) 763430e0bdSMarek Vasut return 0; 773430e0bdSMarek Vasut 783430e0bdSMarek Vasut return 1; 793430e0bdSMarek Vasut } 803430e0bdSMarek Vasut 813430e0bdSMarek Vasut static inline int mxs_ssp_clock_by_bus(unsigned int clock) 823430e0bdSMarek Vasut { 833430e0bdSMarek Vasut #if defined(CONFIG_MX23) 843430e0bdSMarek Vasut return 0; 853430e0bdSMarek Vasut #elif defined(CONFIG_MX28) 863430e0bdSMarek Vasut return clock; 873430e0bdSMarek Vasut #endif 883430e0bdSMarek Vasut } 893430e0bdSMarek Vasut 9014e26bcfSMarek Vasut static inline struct mxs_ssp_regs *mxs_ssp_regs_by_bus(unsigned int port) 9114e26bcfSMarek Vasut { 9214e26bcfSMarek Vasut switch (port) { 9314e26bcfSMarek Vasut case 0: 9414e26bcfSMarek Vasut return (struct mxs_ssp_regs *)MXS_SSP0_BASE; 9514e26bcfSMarek Vasut case 1: 9614e26bcfSMarek Vasut return (struct mxs_ssp_regs *)MXS_SSP1_BASE; 9795e873d6SMarek Vasut #ifdef CONFIG_MX28 9814e26bcfSMarek Vasut case 2: 9914e26bcfSMarek Vasut return (struct mxs_ssp_regs *)MXS_SSP2_BASE; 10014e26bcfSMarek Vasut case 3: 10114e26bcfSMarek Vasut return (struct mxs_ssp_regs *)MXS_SSP3_BASE; 10295e873d6SMarek Vasut #endif 10314e26bcfSMarek Vasut default: 10414e26bcfSMarek Vasut return NULL; 10514e26bcfSMarek Vasut } 10614e26bcfSMarek Vasut } 1073a0398d7SOtavio Salvador #endif 1083a0398d7SOtavio Salvador 1093a0398d7SOtavio Salvador #define SSP_CTRL0_SFTRST (1 << 31) 1103a0398d7SOtavio Salvador #define SSP_CTRL0_CLKGATE (1 << 30) 1113a0398d7SOtavio Salvador #define SSP_CTRL0_RUN (1 << 29) 1123a0398d7SOtavio Salvador #define SSP_CTRL0_SDIO_IRQ_CHECK (1 << 28) 1133a0398d7SOtavio Salvador #define SSP_CTRL0_LOCK_CS (1 << 27) 1143a0398d7SOtavio Salvador #define SSP_CTRL0_IGNORE_CRC (1 << 26) 1153a0398d7SOtavio Salvador #define SSP_CTRL0_READ (1 << 25) 1163a0398d7SOtavio Salvador #define SSP_CTRL0_DATA_XFER (1 << 24) 1173a0398d7SOtavio Salvador #define SSP_CTRL0_BUS_WIDTH_MASK (0x3 << 22) 1183a0398d7SOtavio Salvador #define SSP_CTRL0_BUS_WIDTH_OFFSET 22 1193a0398d7SOtavio Salvador #define SSP_CTRL0_BUS_WIDTH_ONE_BIT (0x0 << 22) 1203a0398d7SOtavio Salvador #define SSP_CTRL0_BUS_WIDTH_FOUR_BIT (0x1 << 22) 1213a0398d7SOtavio Salvador #define SSP_CTRL0_BUS_WIDTH_EIGHT_BIT (0x2 << 22) 1223a0398d7SOtavio Salvador #define SSP_CTRL0_WAIT_FOR_IRQ (1 << 21) 1233a0398d7SOtavio Salvador #define SSP_CTRL0_WAIT_FOR_CMD (1 << 20) 1243a0398d7SOtavio Salvador #define SSP_CTRL0_LONG_RESP (1 << 19) 1253a0398d7SOtavio Salvador #define SSP_CTRL0_CHECK_RESP (1 << 18) 1263a0398d7SOtavio Salvador #define SSP_CTRL0_GET_RESP (1 << 17) 1273a0398d7SOtavio Salvador #define SSP_CTRL0_ENABLE (1 << 16) 1283a0398d7SOtavio Salvador 129f3801e2bSMarek Vasut #ifdef CONFIG_MX23 130f3801e2bSMarek Vasut #define SSP_CTRL0_XFER_COUNT_OFFSET 0 131f3801e2bSMarek Vasut #define SSP_CTRL0_XFER_COUNT_MASK 0xffff 132f3801e2bSMarek Vasut #endif 133f3801e2bSMarek Vasut 1343a0398d7SOtavio Salvador #define SSP_CMD0_SOFT_TERMINATE (1 << 26) 1353a0398d7SOtavio Salvador #define SSP_CMD0_DBL_DATA_RATE_EN (1 << 25) 1363a0398d7SOtavio Salvador #define SSP_CMD0_PRIM_BOOT_OP_EN (1 << 24) 1373a0398d7SOtavio Salvador #define SSP_CMD0_BOOT_ACK_EN (1 << 23) 1383a0398d7SOtavio Salvador #define SSP_CMD0_SLOW_CLKING_EN (1 << 22) 1393a0398d7SOtavio Salvador #define SSP_CMD0_CONT_CLKING_EN (1 << 21) 1403a0398d7SOtavio Salvador #define SSP_CMD0_APPEND_8CYC (1 << 20) 141f3801e2bSMarek Vasut #if defined(CONFIG_MX23) 142f3801e2bSMarek Vasut #define SSP_CMD0_BLOCK_SIZE_MASK (0xf << 16) 143f3801e2bSMarek Vasut #define SSP_CMD0_BLOCK_SIZE_OFFSET 16 144f3801e2bSMarek Vasut #define SSP_CMD0_BLOCK_COUNT_MASK (0xff << 8) 145f3801e2bSMarek Vasut #define SSP_CMD0_BLOCK_COUNT_OFFSET 8 146f3801e2bSMarek Vasut #endif 1473a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MASK 0xff 1483a0398d7SOtavio Salvador #define SSP_CMD0_CMD_OFFSET 0 1493a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_GO_IDLE_STATE 0x00 1503a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_OP_COND 0x01 1513a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_ALL_SEND_CID 0x02 1523a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SET_RELATIVE_ADDR 0x03 1533a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SET_DSR 0x04 1543a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_RESERVED_5 0x05 1553a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SWITCH 0x06 1563a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SELECT_DESELECT_CARD 0x07 1573a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_EXT_CSD 0x08 1583a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_CSD 0x09 1593a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_CID 0x0a 1603a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_READ_DAT_UNTIL_STOP 0x0b 1613a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_STOP_TRANSMISSION 0x0c 1623a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_STATUS 0x0d 1633a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_BUSTEST_R 0x0e 1643a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_GO_INACTIVE_STATE 0x0f 1653a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SET_BLOCKLEN 0x10 1663a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_READ_SINGLE_BLOCK 0x11 1673a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_READ_MULTIPLE_BLOCK 0x12 1683a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_BUSTEST_W 0x13 1693a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_WRITE_DAT_UNTIL_STOP 0x14 1703a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SET_BLOCK_COUNT 0x17 1713a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_WRITE_BLOCK 0x18 1723a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_WRITE_MULTIPLE_BLOCK 0x19 1733a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_PROGRAM_CID 0x1a 1743a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_PROGRAM_CSD 0x1b 1753a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SET_WRITE_PROT 0x1c 1763a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_CLR_WRITE_PROT 0x1d 1773a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_SEND_WRITE_PROT 0x1e 1783a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_ERASE_GROUP_START 0x23 1793a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_ERASE_GROUP_END 0x24 1803a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_ERASE 0x26 1813a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_FAST_IO 0x27 1823a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_GO_IRQ_STATE 0x28 1833a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_LOCK_UNLOCK 0x2a 1843a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_APP_CMD 0x37 1853a0398d7SOtavio Salvador #define SSP_CMD0_CMD_MMC_GEN_CMD 0x38 1863a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_GO_IDLE_STATE 0x00 1873a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ALL_SEND_CID 0x02 1883a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SEND_RELATIVE_ADDR 0x03 1893a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SET_DSR 0x04 1903a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_IO_SEND_OP_COND 0x05 1913a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SELECT_DESELECT_CARD 0x07 1923a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SEND_CSD 0x09 1933a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SEND_CID 0x0a 1943a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_STOP_TRANSMISSION 0x0c 1953a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SEND_STATUS 0x0d 1963a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_GO_INACTIVE_STATE 0x0f 1973a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SET_BLOCKLEN 0x10 1983a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_READ_SINGLE_BLOCK 0x11 1993a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_READ_MULTIPLE_BLOCK 0x12 2003a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_WRITE_BLOCK 0x18 2013a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_WRITE_MULTIPLE_BLOCK 0x19 2023a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_PROGRAM_CSD 0x1b 2033a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SET_WRITE_PROT 0x1c 2043a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_CLR_WRITE_PROT 0x1d 2053a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_SEND_WRITE_PROT 0x1e 2063a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ERASE_WR_BLK_START 0x20 2073a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ERASE_WR_BLK_END 0x21 2083a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ERASE_GROUP_START 0x23 2093a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ERASE_GROUP_END 0x24 2103a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_ERASE 0x26 2113a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_LOCK_UNLOCK 0x2a 2123a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_IO_RW_DIRECT 0x34 2133a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_IO_RW_EXTENDED 0x35 2143a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_APP_CMD 0x37 2153a0398d7SOtavio Salvador #define SSP_CMD0_CMD_SD_GEN_CMD 0x38 2163a0398d7SOtavio Salvador 2173a0398d7SOtavio Salvador #define SSP_CMD1_CMD_ARG_MASK 0xffffffff 2183a0398d7SOtavio Salvador #define SSP_CMD1_CMD_ARG_OFFSET 0 2193a0398d7SOtavio Salvador 220f3801e2bSMarek Vasut #if defined(CONFIG_MX28) 2213a0398d7SOtavio Salvador #define SSP_XFER_SIZE_XFER_COUNT_MASK 0xffffffff 2223a0398d7SOtavio Salvador #define SSP_XFER_SIZE_XFER_COUNT_OFFSET 0 2233a0398d7SOtavio Salvador 2243a0398d7SOtavio Salvador #define SSP_BLOCK_SIZE_BLOCK_COUNT_MASK (0xffffff << 4) 2253a0398d7SOtavio Salvador #define SSP_BLOCK_SIZE_BLOCK_COUNT_OFFSET 4 2263a0398d7SOtavio Salvador #define SSP_BLOCK_SIZE_BLOCK_SIZE_MASK 0xf 2273a0398d7SOtavio Salvador #define SSP_BLOCK_SIZE_BLOCK_SIZE_OFFSET 0 228f3801e2bSMarek Vasut #endif 2293a0398d7SOtavio Salvador 2303a0398d7SOtavio Salvador #define SSP_COMPREF_REFERENCE_MASK 0xffffffff 2313a0398d7SOtavio Salvador #define SSP_COMPREF_REFERENCE_OFFSET 0 2323a0398d7SOtavio Salvador 2333a0398d7SOtavio Salvador #define SSP_COMPMASK_MASK_MASK 0xffffffff 2343a0398d7SOtavio Salvador #define SSP_COMPMASK_MASK_OFFSET 0 2353a0398d7SOtavio Salvador 2363a0398d7SOtavio Salvador #define SSP_TIMING_TIMEOUT_MASK (0xffff << 16) 2373a0398d7SOtavio Salvador #define SSP_TIMING_TIMEOUT_OFFSET 16 2383a0398d7SOtavio Salvador #define SSP_TIMING_CLOCK_DIVIDE_MASK (0xff << 8) 2393a0398d7SOtavio Salvador #define SSP_TIMING_CLOCK_DIVIDE_OFFSET 8 2403a0398d7SOtavio Salvador #define SSP_TIMING_CLOCK_RATE_MASK 0xff 2413a0398d7SOtavio Salvador #define SSP_TIMING_CLOCK_RATE_OFFSET 0 2423a0398d7SOtavio Salvador 2433a0398d7SOtavio Salvador #define SSP_CTRL1_SDIO_IRQ (1 << 31) 2443a0398d7SOtavio Salvador #define SSP_CTRL1_SDIO_IRQ_EN (1 << 30) 2453a0398d7SOtavio Salvador #define SSP_CTRL1_RESP_ERR_IRQ (1 << 29) 2463a0398d7SOtavio Salvador #define SSP_CTRL1_RESP_ERR_IRQ_EN (1 << 28) 2473a0398d7SOtavio Salvador #define SSP_CTRL1_RESP_TIMEOUT_IRQ (1 << 27) 2483a0398d7SOtavio Salvador #define SSP_CTRL1_RESP_TIMEOUT_IRQ_EN (1 << 26) 2493a0398d7SOtavio Salvador #define SSP_CTRL1_DATA_TIMEOUT_IRQ (1 << 25) 2503a0398d7SOtavio Salvador #define SSP_CTRL1_DATA_TIMEOUT_IRQ_EN (1 << 24) 2513a0398d7SOtavio Salvador #define SSP_CTRL1_DATA_CRC_IRQ (1 << 23) 2523a0398d7SOtavio Salvador #define SSP_CTRL1_DATA_CRC_IRQ_EN (1 << 22) 2533a0398d7SOtavio Salvador #define SSP_CTRL1_FIFO_UNDERRUN_IRQ (1 << 21) 2543a0398d7SOtavio Salvador #define SSP_CTRL1_FIFO_UNDERRUN_EN (1 << 20) 2553a0398d7SOtavio Salvador #define SSP_CTRL1_CEATA_CCS_ERR_IRQ (1 << 19) 2563a0398d7SOtavio Salvador #define SSP_CTRL1_CEATA_CCS_ERR_IRQ_EN (1 << 18) 2573a0398d7SOtavio Salvador #define SSP_CTRL1_RECV_TIMEOUT_IRQ (1 << 17) 2583a0398d7SOtavio Salvador #define SSP_CTRL1_RECV_TIMEOUT_IRQ_EN (1 << 16) 2593a0398d7SOtavio Salvador #define SSP_CTRL1_FIFO_OVERRUN_IRQ (1 << 15) 2603a0398d7SOtavio Salvador #define SSP_CTRL1_FIFO_OVERRUN_IRQ_EN (1 << 14) 2613a0398d7SOtavio Salvador #define SSP_CTRL1_DMA_ENABLE (1 << 13) 2623a0398d7SOtavio Salvador #define SSP_CTRL1_CEATA_CCS_ERR_EN (1 << 12) 2633a0398d7SOtavio Salvador #define SSP_CTRL1_SLAVE_OUT_DISABLE (1 << 11) 2643a0398d7SOtavio Salvador #define SSP_CTRL1_PHASE (1 << 10) 2653a0398d7SOtavio Salvador #define SSP_CTRL1_POLARITY (1 << 9) 2663a0398d7SOtavio Salvador #define SSP_CTRL1_SLAVE_MODE (1 << 8) 2673a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_MASK (0xf << 4) 2683a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_OFFSET 4 2693a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_RESERVED0 (0x0 << 4) 2703a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_RESERVED1 (0x1 << 4) 2713a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_RESERVED2 (0x2 << 4) 2723a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_FOUR_BITS (0x3 << 4) 2733a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_EIGHT_BITS (0x7 << 4) 2743a0398d7SOtavio Salvador #define SSP_CTRL1_WORD_LENGTH_SIXTEEN_BITS (0xf << 4) 2753a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_MASK 0xf 2763a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_OFFSET 0 2773a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_SPI 0x0 2783a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_SSI 0x1 2793a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_SD_MMC 0x3 2803a0398d7SOtavio Salvador #define SSP_CTRL1_SSP_MODE_MS 0x4 2813a0398d7SOtavio Salvador 2823a0398d7SOtavio Salvador #define SSP_DATA_DATA_MASK 0xffffffff 2833a0398d7SOtavio Salvador #define SSP_DATA_DATA_OFFSET 0 2843a0398d7SOtavio Salvador 2853a0398d7SOtavio Salvador #define SSP_SDRESP0_RESP0_MASK 0xffffffff 2863a0398d7SOtavio Salvador #define SSP_SDRESP0_RESP0_OFFSET 0 2873a0398d7SOtavio Salvador 2883a0398d7SOtavio Salvador #define SSP_SDRESP1_RESP1_MASK 0xffffffff 2893a0398d7SOtavio Salvador #define SSP_SDRESP1_RESP1_OFFSET 0 2903a0398d7SOtavio Salvador 2913a0398d7SOtavio Salvador #define SSP_SDRESP2_RESP2_MASK 0xffffffff 2923a0398d7SOtavio Salvador #define SSP_SDRESP2_RESP2_OFFSET 0 2933a0398d7SOtavio Salvador 2943a0398d7SOtavio Salvador #define SSP_SDRESP3_RESP3_MASK 0xffffffff 2953a0398d7SOtavio Salvador #define SSP_SDRESP3_RESP3_OFFSET 0 2963a0398d7SOtavio Salvador 2973a0398d7SOtavio Salvador #define SSP_DDR_CTRL_DMA_BURST_TYPE_MASK (0x3 << 30) 2983a0398d7SOtavio Salvador #define SSP_DDR_CTRL_DMA_BURST_TYPE_OFFSET 30 2993a0398d7SOtavio Salvador #define SSP_DDR_CTRL_NIBBLE_POS (1 << 1) 3003a0398d7SOtavio Salvador #define SSP_DDR_CTRL_TXCLK_DELAY_TYPE (1 << 0) 3013a0398d7SOtavio Salvador 3023a0398d7SOtavio Salvador #define SSP_DLL_CTRL_REF_UPDATE_INT_MASK (0xf << 28) 3033a0398d7SOtavio Salvador #define SSP_DLL_CTRL_REF_UPDATE_INT_OFFSET 28 3043a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_UPDATE_INT_MASK (0xff << 20) 3053a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_UPDATE_INT_OFFSET 20 3063a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_OVERRIDE_VAL_MASK (0x3f << 10) 3073a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_OVERRIDE_VAL_OFFSET 10 3083a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_OVERRIDE (1 << 9) 3093a0398d7SOtavio Salvador #define SSP_DLL_CTRL_GATE_UPDATE (1 << 7) 3103a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_DLY_TARGET_MASK (0xf << 3) 3113a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_DLY_TARGET_OFFSET 3 3123a0398d7SOtavio Salvador #define SSP_DLL_CTRL_SLV_FORCE_UPD (1 << 2) 3133a0398d7SOtavio Salvador #define SSP_DLL_CTRL_RESET (1 << 1) 3143a0398d7SOtavio Salvador #define SSP_DLL_CTRL_ENABLE (1 << 0) 3153a0398d7SOtavio Salvador 3163a0398d7SOtavio Salvador #define SSP_STATUS_PRESENT (1 << 31) 3173a0398d7SOtavio Salvador #define SSP_STATUS_MS_PRESENT (1 << 30) 3183a0398d7SOtavio Salvador #define SSP_STATUS_SD_PRESENT (1 << 29) 3193a0398d7SOtavio Salvador #define SSP_STATUS_CARD_DETECT (1 << 28) 3203a0398d7SOtavio Salvador #define SSP_STATUS_DMABURST (1 << 22) 3213a0398d7SOtavio Salvador #define SSP_STATUS_DMASENSE (1 << 21) 3223a0398d7SOtavio Salvador #define SSP_STATUS_DMATERM (1 << 20) 3233a0398d7SOtavio Salvador #define SSP_STATUS_DMAREQ (1 << 19) 3243a0398d7SOtavio Salvador #define SSP_STATUS_DMAEND (1 << 18) 3253a0398d7SOtavio Salvador #define SSP_STATUS_SDIO_IRQ (1 << 17) 3263a0398d7SOtavio Salvador #define SSP_STATUS_RESP_CRC_ERR (1 << 16) 3273a0398d7SOtavio Salvador #define SSP_STATUS_RESP_ERR (1 << 15) 3283a0398d7SOtavio Salvador #define SSP_STATUS_RESP_TIMEOUT (1 << 14) 3293a0398d7SOtavio Salvador #define SSP_STATUS_DATA_CRC_ERR (1 << 13) 3303a0398d7SOtavio Salvador #define SSP_STATUS_TIMEOUT (1 << 12) 3313a0398d7SOtavio Salvador #define SSP_STATUS_RECV_TIMEOUT_STAT (1 << 11) 3323a0398d7SOtavio Salvador #define SSP_STATUS_CEATA_CCS_ERR (1 << 10) 3333a0398d7SOtavio Salvador #define SSP_STATUS_FIFO_OVRFLW (1 << 9) 3343a0398d7SOtavio Salvador #define SSP_STATUS_FIFO_FULL (1 << 8) 3353a0398d7SOtavio Salvador #define SSP_STATUS_FIFO_EMPTY (1 << 5) 3363a0398d7SOtavio Salvador #define SSP_STATUS_FIFO_UNDRFLW (1 << 4) 3373a0398d7SOtavio Salvador #define SSP_STATUS_CMD_BUSY (1 << 3) 3383a0398d7SOtavio Salvador #define SSP_STATUS_DATA_BUSY (1 << 2) 3393a0398d7SOtavio Salvador #define SSP_STATUS_BUSY (1 << 0) 3403a0398d7SOtavio Salvador 3413a0398d7SOtavio Salvador #define SSP_DLL_STS_REF_SEL_MASK (0x3f << 8) 3423a0398d7SOtavio Salvador #define SSP_DLL_STS_REF_SEL_OFFSET 8 3433a0398d7SOtavio Salvador #define SSP_DLL_STS_SLV_SEL_MASK (0x3f << 2) 3443a0398d7SOtavio Salvador #define SSP_DLL_STS_SLV_SEL_OFFSET 2 3453a0398d7SOtavio Salvador #define SSP_DLL_STS_REF_LOCK (1 << 1) 3463a0398d7SOtavio Salvador #define SSP_DLL_STS_SLV_LOCK (1 << 0) 3473a0398d7SOtavio Salvador 3483a0398d7SOtavio Salvador #define SSP_DEBUG_DATACRC_ERR_MASK (0xf << 28) 3493a0398d7SOtavio Salvador #define SSP_DEBUG_DATACRC_ERR_OFFSET 28 3503a0398d7SOtavio Salvador #define SSP_DEBUG_DATA_STALL (1 << 27) 3513a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_MASK (0x7 << 24) 3523a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_OFFSET 24 3533a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_DSM_IDLE (0x0 << 24) 3543a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_DSM_WORD (0x2 << 24) 3553a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_DSM_CRC1 (0x3 << 24) 3563a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_DSM_CRC2 (0x4 << 24) 3573a0398d7SOtavio Salvador #define SSP_DEBUG_DAT_SM_DSM_END (0x5 << 24) 3583a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MASK (0xf << 20) 3593a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_OFFSET 20 3603a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_IDLE (0x0 << 20) 3613a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_CKON (0x1 << 20) 3623a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_BS1 (0x2 << 20) 3633a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_TPC (0x3 << 20) 3643a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_BS2 (0x4 << 20) 3653a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_HDSHK (0x5 << 20) 3663a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_BS3 (0x6 << 20) 3673a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_RW (0x7 << 20) 3683a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_CRC1 (0x8 << 20) 3693a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_CRC2 (0x9 << 20) 3703a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_BS0 (0xa << 20) 3713a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_END1 (0xb << 20) 3723a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_END2W (0xc << 20) 3733a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_END2R (0xd << 20) 3743a0398d7SOtavio Salvador #define SSP_DEBUG_MSTK_SM_MSTK_DONE (0xe << 20) 3753a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_OE (1 << 19) 3763a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_MASK (0x7 << 16) 3773a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_OFFSET 16 3783a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_IDLE (0x0 << 16) 3793a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_DMAREQ (0x1 << 16) 3803a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_DMAACK (0x2 << 16) 3813a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_STALL (0x3 << 16) 3823a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_BUSY (0x4 << 16) 3833a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_DONE (0x5 << 16) 3843a0398d7SOtavio Salvador #define SSP_DEBUG_DMA_SM_DMA_COUNT (0x6 << 16) 3853a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MASK (0xf << 12) 3863a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_OFFSET 12 3873a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_IDLE (0x0 << 12) 3883a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_CMD (0x1 << 12) 3893a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_TRC (0x2 << 12) 3903a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_RESP (0x3 << 12) 3913a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_RPRX (0x4 << 12) 3923a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_TX (0x5 << 12) 3933a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_CTOK (0x6 << 12) 3943a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_RX (0x7 << 12) 3953a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_CCS (0x8 << 12) 3963a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_PUP (0x9 << 12) 3973a0398d7SOtavio Salvador #define SSP_DEBUG_MMC_SM_MMC_WAIT (0xa << 12) 3983a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_MASK (0x3 << 10) 3993a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_OFFSET 10 4003a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_CSM_IDLE (0x0 << 10) 4013a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_CSM_INDEX (0x1 << 10) 4023a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_CSM_ARG (0x2 << 10) 4033a0398d7SOtavio Salvador #define SSP_DEBUG_CMD_SM_CSM_CRC (0x3 << 10) 4043a0398d7SOtavio Salvador #define SSP_DEBUG_SSP_CMD (1 << 9) 4053a0398d7SOtavio Salvador #define SSP_DEBUG_SSP_RESP (1 << 8) 4063a0398d7SOtavio Salvador #define SSP_DEBUG_SSP_RXD_MASK 0xff 4073a0398d7SOtavio Salvador #define SSP_DEBUG_SSP_RXD_OFFSET 0 4083a0398d7SOtavio Salvador 4093a0398d7SOtavio Salvador #define SSP_VERSION_MAJOR_MASK (0xff << 24) 4103a0398d7SOtavio Salvador #define SSP_VERSION_MAJOR_OFFSET 24 4113a0398d7SOtavio Salvador #define SSP_VERSION_MINOR_MASK (0xff << 16) 4123a0398d7SOtavio Salvador #define SSP_VERSION_MINOR_OFFSET 16 4133a0398d7SOtavio Salvador #define SSP_VERSION_STEP_MASK 0xffff 4143a0398d7SOtavio Salvador #define SSP_VERSION_STEP_OFFSET 0 4153a0398d7SOtavio Salvador 4163a0398d7SOtavio Salvador #endif /* __MX28_REGS_SSP_H__ */ 417