11.2Sskrll/* $NetBSD: imx23_mmcreg.h,v 1.2 2026/02/02 06:23:37 skrll Exp $ */ 21.1Sskrll 31.1Sskrll/* 41.1Sskrll * Copyright (c) 2012 The NetBSD Foundation, Inc. 51.1Sskrll * All rights reserved. 61.1Sskrll * 71.1Sskrll * This code is derived from software contributed to The NetBSD Foundation 81.1Sskrll * by Petri Laakso. 91.1Sskrll * 101.1Sskrll * Redistribution and use in source and binary forms, with or without 111.1Sskrll * modification, are permitted provided that the following conditions 121.1Sskrll * are met: 131.1Sskrll * 1. Redistributions of source code must retain the above copyright 141.1Sskrll * notice, this list of conditions and the following disclaimer. 151.1Sskrll * 2. Redistributions in binary form must reproduce the above copyright 161.1Sskrll * notice, this list of conditions and the following disclaimer in the 171.1Sskrll * documentation and/or other materials provided with the distribution. 181.1Sskrll * 191.1Sskrll * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 201.1Sskrll * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 211.1Sskrll * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 221.1Sskrll * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 231.1Sskrll * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 241.1Sskrll * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 251.1Sskrll * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 261.1Sskrll * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 271.1Sskrll * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 281.1Sskrll * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 291.1Sskrll * POSSIBILITY OF SUCH DAMAGE. 301.1Sskrll */ 311.1Sskrll 321.1Sskrll#ifndef _ARM_IMX_IMX23_SSPREG_H_ 331.1Sskrll#define _ARM_IMX_IMX23_SSSREG_H_ 341.1Sskrll 351.1Sskrll#include <sys/cdefs.h> 361.1Sskrll 371.1Sskrll#define HW_SSP1_BASE 0x80010000 381.1Sskrll#define HW_SSP1_SIZE 0x2000 391.1Sskrll 401.1Sskrll#define HW_SSP2_BASE 0x80034000 411.1Sskrll#define HW_SSP2_SIZE 0x2000 421.1Sskrll 431.1Sskrll/* 441.1Sskrll * SSP Control Register 0. 451.1Sskrll */ 461.1Sskrll#define HW_SSP_CTRL0 0x000 471.1Sskrll#define HW_SSP_CTRL0_SET 0x004 481.1Sskrll#define HW_SSP_CTRL0_CLR 0x008 491.1Sskrll#define HW_SSP_CTRL0_TOG 0x00C 501.1Sskrll 511.1Sskrll#define HW_SSP_CTRL0_SFTRST __BIT(31) 521.1Sskrll#define HW_SSP_CTRL0_CLKGATE __BIT(30) 531.1Sskrll#define HW_SSP_CTRL0_RUN __BIT(29) 541.1Sskrll#define HW_SSP_CTRL0_SDIO_IRQ_CHECK __BIT(28) 551.1Sskrll#define HW_SSP_CTRL0_LOCK_CS __BIT(27) 561.1Sskrll#define HW_SSP_CTRL0_IGNORE_CRC __BIT(26) 571.1Sskrll#define HW_SSP_CTRL0_READ __BIT(25) 581.1Sskrll#define HW_SSP_CTRL0_DATA_XFER __BIT(24) 591.1Sskrll#define HW_SSP_CTRL0_BUS_WIDTH __BITS(23, 22) 601.1Sskrll#define HW_SSP_CTRL0_WAIT_FOR_IRQ __BIT(21) 611.1Sskrll#define HW_SSP_CTRL0_WAIT_FOR_CMD __BIT(20) 621.1Sskrll#define HW_SSP_CTRL0_LONG_RESP __BIT(19) 631.1Sskrll#define HW_SSP_CTRL0_CHECK_RESP __BIT(18) 641.1Sskrll#define HW_SSP_CTRL0_GET_RESP __BIT(17) 651.1Sskrll#define HW_SSP_CTRL0_ENABLE __BIT(16) 661.1Sskrll#define HW_SSP_CTRL0_XFER_COUNT __BITS(15, 0) 671.1Sskrll 681.1Sskrll/* 691.1Sskrll * SD/MMC Command Register 0. 701.1Sskrll */ 711.1Sskrll#define HW_SSP_CMD0 0x010 721.1Sskrll#define HW_SSP_CMD0_SET 0x014 731.1Sskrll#define HW_SSP_CMD0_CLR 0x018 741.1Sskrll#define HW_SSP_CMD0_TOG 0x01C 751.1Sskrll 761.1Sskrll#define HW_SSP_CMD0_RSVD0 __BITS(31, 23) 771.1Sskrll#define HW_SSP_CMD0_SLOW_CLKING_EN __BIT(22) 781.1Sskrll#define HW_SSP_CMD0_CONT_CLKING_EN __BIT(21) 791.1Sskrll#define HW_SSP_CMD0_APPEND_8CYC __BIT(20) 801.1Sskrll#define HW_SSP_CMD0_BLOCK_SIZE __BITS(19, 16) 811.1Sskrll#define HW_SSP_CMD0_BLOCK_COUNT __BITS(15, 8) 821.1Sskrll#define HW_SSP_CMD0_CMD __BITS(7, 0) 831.1Sskrll 841.1Sskrll/* 851.1Sskrll * SD/MMC Command Register 1. 861.1Sskrll */ 871.1Sskrll#define HW_SSP_CMD1 0x020 881.1Sskrll 891.1Sskrll#define HW_SSP_CMD1_CMD_ARG __BITS(31, 0) 901.1Sskrll 911.1Sskrll/* 921.1Sskrll * SD/MMC Compare Reference. 931.1Sskrll */ 941.1Sskrll#define HW_SSP_COMPREF 0x030 951.1Sskrll 961.1Sskrll#define HW_SSP_COMPREF_REFERENCE __BITS(31, 0) 971.1Sskrll 981.1Sskrll/* 991.1Sskrll * SD/MMC compare mask. 1001.1Sskrll */ 1011.1Sskrll#define HW_SSP_COMPMASK 0x040 1021.1Sskrll 1031.1Sskrll#define HW_SSP_COMPMASK_MASK __BITS(31, 0) 1041.1Sskrll 1051.1Sskrll/* 1061.1Sskrll * SSP Timing Register. 1071.1Sskrll */ 1081.1Sskrll#define HW_SSP_TIMING 0x050 1091.1Sskrll 1101.1Sskrll#define HW_SSP_TIMING_TIMEOUT __BITS(31, 16) 1111.1Sskrll#define HW_SSP_TIMING_CLOCK_DIVIDE __BITS(15, 8) 1121.1Sskrll#define HW_SSP_TIMING_CLOCK_RATE __BITS(7, 0) 1131.1Sskrll 1141.1Sskrll/* 1151.1Sskrll * SSP Control Register 1. 1161.1Sskrll */ 1171.1Sskrll#define HW_SSP_CTRL1 0x060 1181.1Sskrll#define HW_SSP_CTRL1_SET 0x064 1191.1Sskrll#define HW_SSP_CTRL1_CLR 0x068 1201.1Sskrll#define HW_SSP_CTRL1_TOG 0x06C 1211.1Sskrll 1221.1Sskrll#define HW_SSP_CTRL1_SDIO_IRQ __BIT(31) 1231.1Sskrll#define HW_SSP_CTRL1_SDIO_IRQ_EN __BIT(30) 1241.1Sskrll#define HW_SSP_CTRL1_RESP_ERR_IRQ __BIT(29) 1251.1Sskrll#define HW_SSP_CTRL1_RESP_ERR_IRQ_EN __BIT(28) 1261.1Sskrll#define HW_SSP_CTRL1_RESP_TIMEOUT_IRQ __BIT(27) 1271.1Sskrll#define HW_SSP_CTRL1_RESP_TIMEOUT_IRQ_EN __BIT(26) 1281.1Sskrll#define HW_SSP_CTRL1_DATA_TIMEOUT_IRQ __BIT(25) 1291.1Sskrll#define HW_SSP_CTRL1_DATA_TIMEOUT_IRQ_EN __BIT(24) 1301.1Sskrll#define HW_SSP_CTRL1_DATA_CRC_IRQ __BIT(23) 1311.1Sskrll#define HW_SSP_CTRL1_DATA_CRC_IRQ_EN __BIT(22) 1321.1Sskrll#define HW_SSP_CTRL1_FIFO_UNDERRUN_IRQ __BIT(21) 1331.1Sskrll#define HW_SSP_CTRL1_FIFO_UNDERRUN_EN __BIT(20) 1341.1Sskrll#define HW_SSP_CTRL1_RSVD3 __BIT(19) 1351.1Sskrll#define HW_SSP_CTRL1_RSVD2 __BIT(18) 1361.1Sskrll#define HW_SSP_CTRL1_RECV_TIMEOUT_IRQ __BIT(17) 1371.1Sskrll#define HW_SSP_CTRL1_RECV_TIMEOUT_IRQ_EN __BIT(16) 1381.1Sskrll#define HW_SSP_CTRL1_FIFO_OVERRUN_IRQ __BIT(15) 1391.1Sskrll#define HW_SSP_CTRL1_FIFO_OVERRUN_IRQ_EN __BIT(14) 1401.1Sskrll#define HW_SSP_CTRL1_DMA_ENABLE __BIT(13) 1411.1Sskrll#define HW_SSP_CTRL1_RSVD1 __BIT(12) 1421.1Sskrll#define HW_SSP_CTRL1_SLAVE_OUT_DISABLE __BIT(11) 1431.1Sskrll#define HW_SSP_CTRL1_PHASE __BIT(10) 1441.1Sskrll#define HW_SSP_CTRL1_POLARITY __BIT(9) 1451.1Sskrll#define HW_SSP_CTRL1_SLAVE_MODE __BIT(8) 1461.1Sskrll#define HW_SSP_CTRL1_WORD_LENGTH __BITS(7, 4) 1471.1Sskrll#define HW_SSP_CTRL1_SSP_MODE __BITS(3, 0) 1481.1Sskrll 1491.1Sskrll/* 1501.1Sskrll * SSP Data Register. 1511.1Sskrll */ 1521.1Sskrll#define HW_SSP_DATA 0x070 1531.1Sskrll 1541.1Sskrll#define HW_SSP_DATA_DATA __BITS(31, 0) 1551.1Sskrll 1561.1Sskrll/* 1571.1Sskrll * SD/MMC Card Response Register 0. 1581.1Sskrll */ 1591.1Sskrll#define HW_SSP_SDRESP0 0x080 1601.1Sskrll 1611.1Sskrll#define HW_SSP_SDRESP0_RESP0 __BITS(31, 0) 1621.1Sskrll 1631.1Sskrll/* 1641.1Sskrll * SD/MMC Card Response Register 1. 1651.1Sskrll */ 1661.1Sskrll#define HW_SSP_SDRESP1 0x090 1671.1Sskrll 1681.1Sskrll#define HW_SSP_SDRESP1_RESP1 __BITS(31, 0) 1691.1Sskrll 1701.1Sskrll/* 1711.1Sskrll * SD/MMC Card Response Register 2. 1721.1Sskrll */ 1731.1Sskrll#define HW_SSP_SDRESP2 0x0A0 1741.1Sskrll 1751.1Sskrll#define HW_SSP_SDRESP2_RESP2 __BITS(31, 0) 1761.1Sskrll 1771.1Sskrll/* 1781.1Sskrll * SD/MMC Card Response Register 3. 1791.1Sskrll */ 1801.1Sskrll#define HW_SSP_SDRESP3 0x0B0 1811.1Sskrll 1821.1Sskrll#define HW_SSP_SDRESP3_RESP3 __BITS(31, 0) 1831.1Sskrll 1841.1Sskrll/* 1851.1Sskrll * SSP Status Register. 1861.1Sskrll */ 1871.1Sskrll#define HW_SSP_STATUS 0x0C0 1881.1Sskrll 1891.1Sskrll#define HW_SSP_STATUS_PRESENT __BIT(31) 1901.1Sskrll#define HW_SSP_STATUS_RSVD5 __BIT(30) 1911.1Sskrll#define HW_SSP_STATUS_SD_PRESENT __BIT(29) 1921.1Sskrll#define HW_SSP_STATUS_CARD_DETECT __BIT(28) 1931.1Sskrll#define HW_SSP_STATUS_RSVD4 __BITS(27, 22) 1941.1Sskrll#define HW_SSP_STATUS_DMASENSE __BIT(21) 1951.1Sskrll#define HW_SSP_STATUS_DMATERM __BIT(20) 1961.1Sskrll#define HW_SSP_STATUS_DMAREQ __BIT(19) 1971.1Sskrll#define HW_SSP_STATUS_DMAEND __BIT(18) 1981.1Sskrll#define HW_SSP_STATUS_SDIO_IRQ __BIT(17) 1991.1Sskrll#define HW_SSP_STATUS_RESP_CRC_ERR __BIT(16) 2001.1Sskrll#define HW_SSP_STATUS_RESP_ERR __BIT(15) 2011.1Sskrll#define HW_SSP_STATUS_RESP_TIMEOUT __BIT(14) 2021.1Sskrll#define HW_SSP_STATUS_DATA_CRC_ERR __BIT(13) 2031.1Sskrll#define HW_SSP_STATUS_TIMEOUT __BIT(12) 2041.1Sskrll#define HW_SSP_STATUS_RECV_TIMEOUT_STAT __BIT(11) 2051.1Sskrll#define HW_SSP_STATUS_RSVD3 __BIT(10) 2061.1Sskrll#define HW_SSP_STATUS_FIFO_OVRFLW __BIT(9) 2071.1Sskrll#define HW_SSP_STATUS_FIFO_FULL __BIT(8) 2081.1Sskrll#define HW_SSP_STATUS_RSVD2 __BIT(7, 6) 2091.1Sskrll#define HW_SSP_STATUS_FIFO_EMPTY __BIT(5) 2101.1Sskrll#define HW_SSP_STATUS_FIFO_UNDRFLW __BIT(4) 2111.1Sskrll#define HW_SSP_STATUS_CMD_BUSY __BIT(3) 2121.1Sskrll#define HW_SSP_STATUS_DATA_BUSY __BIT(2) 2131.1Sskrll#define HW_SSP_STATUS_RSVD1 __BIT(1) 2141.1Sskrll#define HW_SSP_STATUS_BUSY __BIT(0) 2151.1Sskrll 2161.1Sskrll/* 2171.1Sskrll * SSP Debug Register. 2181.1Sskrll */ 2191.1Sskrll#define HW_SSP_DEBUG 0x100 2201.1Sskrll 2211.1Sskrll#define HW_SSP_DEBUG_DATACRC_ERR __BITS(31, 28) 2221.1Sskrll#define HW_SSP_DEBUG_DATA_STALL __BIT(27) 2231.1Sskrll#define HW_SSP_DEBUG_DAT_SM __BITS(26, 24) 2241.1Sskrll#define HW_SSP_DEBUG_RSVD1 __BITS(23, 20) 2251.1Sskrll#define HW_SSP_DEBUG_CMD_OE __BIT(19) 2261.1Sskrll#define HW_SSP_DEBUG_DMA_SM __BITS(18, 16) 2271.1Sskrll#define HW_SSP_DEBUG_MMC_SM __BITS(15, 12) 2281.1Sskrll#define HW_SSP_DEBUG_CMD_SM __BITS(11, 10) 2291.1Sskrll#define HW_SSP_DEBUG_SSP_CMD __BIT(9) 2301.1Sskrll#define HW_SSP_DEBUG_SSP_RESP __BIT(8) 2311.1Sskrll#define HW_SSP_DEBUG_SSP_RXD __BITS(7, 0) 2321.1Sskrll 2331.1Sskrll/* 2341.1Sskrll * SSP Version Register. 2351.1Sskrll */ 2361.1Sskrll#define HW_SSP_VERSION 0x110 2371.1Sskrll 2381.1Sskrll#define HW_SSP_VERSION_MAJOR __BITS(31, 24) 2391.1Sskrll#define HW_SSP_VERSION_MINOR __BITS(23, 16) 2401.1Sskrll#define HW_SSP_VERSION_STEP __BITS(15, 0) 2411.1Sskrll 2421.1Sskrll#endif /* !_ARM_IMX_IMX23_SSPREG_H_ */ 243