Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *  Copyright (C) 2008 Marvell Semiconductors, All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #ifndef __MVSDIO_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #define __MVSDIO_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * Clock rates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define MVSD_CLOCKRATE_MAX			50000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define MVSD_BASE_DIV_MAX			0x7ff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * Register offsets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define MVSD_SYS_ADDR_LOW			0x000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) #define MVSD_SYS_ADDR_HI			0x004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define MVSD_BLK_SIZE				0x008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define MVSD_BLK_COUNT				0x00c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define MVSD_ARG_LOW				0x010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define MVSD_ARG_HI				0x014
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define MVSD_XFER_MODE				0x018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define MVSD_CMD				0x01c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define MVSD_RSP(i)				(0x020 + ((i)<<2))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define MVSD_RSP0				0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define MVSD_RSP1				0x024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define MVSD_RSP2				0x028
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define MVSD_RSP3				0x02c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define MVSD_RSP4				0x030
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define MVSD_RSP5				0x034
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define MVSD_RSP6				0x038
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define MVSD_RSP7				0x03c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define MVSD_FIFO				0x040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define MVSD_RSP_CRC7				0x044
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define MVSD_HW_STATE				0x048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define MVSD_HOST_CTRL				0x050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define MVSD_BLK_GAP_CTRL			0x054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define MVSD_CLK_CTRL				0x058
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define MVSD_SW_RESET				0x05c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define MVSD_NOR_INTR_STATUS			0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define MVSD_ERR_INTR_STATUS			0x064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define MVSD_NOR_STATUS_EN			0x068
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define MVSD_ERR_STATUS_EN			0x06c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define MVSD_NOR_INTR_EN			0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define MVSD_ERR_INTR_EN			0x074
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define MVSD_AUTOCMD12_ERR_STATUS		0x078
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define MVSD_CURR_BYTE_LEFT			0x07c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define MVSD_CURR_BLK_LEFT			0x080
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define MVSD_AUTOCMD12_ARG_LOW			0x084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define MVSD_AUTOCMD12_ARG_HI			0x088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define MVSD_AUTOCMD12_CMD			0x08c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) #define MVSD_AUTO_RSP(i)			(0x090 + ((i)<<2))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define MVSD_AUTO_RSP0				0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define MVSD_AUTO_RSP1				0x094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define MVSD_AUTO_RSP2				0x098
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define MVSD_CLK_DIV				0x128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define MVSD_WINDOW_CTRL(i)			(0x108 + ((i) << 3))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define MVSD_WINDOW_BASE(i)			(0x10c + ((i) << 3))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68)  * MVSD_CMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define MVSD_CMD_RSP_NONE			(0 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) #define MVSD_CMD_RSP_136			(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define MVSD_CMD_RSP_48				(2 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) #define MVSD_CMD_RSP_48BUSY			(3 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) #define MVSD_CMD_CHECK_DATACRC16		(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) #define MVSD_CMD_CHECK_CMDCRC			(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define MVSD_CMD_INDX_CHECK			(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define MVSD_CMD_DATA_PRESENT			(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define MVSD_UNEXPECTED_RESP			(1 << 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define MVSD_CMD_INDEX(x)			((x) << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85)  * MVSD_AUTOCMD12_CMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define MVSD_AUTOCMD12_BUSY			(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define MVSD_AUTOCMD12_INDX_CHECK		(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define MVSD_AUTOCMD12_INDEX(x)			((x) << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93)  * MVSD_XFER_MODE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define MVSD_XFER_MODE_WR_DATA_START		(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define MVSD_XFER_MODE_HW_WR_DATA_EN		(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define MVSD_XFER_MODE_AUTO_CMD12		(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define MVSD_XFER_MODE_INT_CHK_EN		(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define MVSD_XFER_MODE_TO_HOST			(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) #define MVSD_XFER_MODE_STOP_CLK			(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define MVSD_XFER_MODE_PIO			(1 << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)  * MVSD_HOST_CTRL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define MVSD_HOST_CTRL_PUSH_PULL_EN 		(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) #define MVSD_HOST_CTRL_CARD_TYPE_MEM_ONLY 	(0 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define MVSD_HOST_CTRL_CARD_TYPE_IO_ONLY 	(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define MVSD_HOST_CTRL_CARD_TYPE_IO_MEM_COMBO 	(2 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define MVSD_HOST_CTRL_CARD_TYPE_IO_MMC 	(3 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define MVSD_HOST_CTRL_CARD_TYPE_MASK	 	(3 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define MVSD_HOST_CTRL_BIG_ENDIAN 		(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define MVSD_HOST_CTRL_LSB_FIRST 		(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define MVSD_HOST_CTRL_DATA_WIDTH_4_BITS 	(1 << 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define MVSD_HOST_CTRL_HI_SPEED_EN 		(1 << 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define MVSD_HOST_CTRL_TMOUT_MAX 		0xf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define MVSD_HOST_CTRL_TMOUT_MASK 		(0xf << 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define MVSD_HOST_CTRL_TMOUT(x) 		((x) << 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define MVSD_HOST_CTRL_TMOUT_EN 		(1 << 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)  * MVSD_SW_RESET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define MVSD_SW_RESET_NOW			(1 << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)  * Normal interrupt status bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define MVSD_NOR_CMD_DONE			(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define MVSD_NOR_XFER_DONE			(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define MVSD_NOR_BLK_GAP_EVT			(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define MVSD_NOR_DMA_DONE			(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define MVSD_NOR_TX_AVAIL			(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define MVSD_NOR_RX_READY			(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) #define MVSD_NOR_CARD_INT			(1 << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define MVSD_NOR_READ_WAIT_ON			(1 << 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define MVSD_NOR_RX_FIFO_8W			(1 << 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define MVSD_NOR_TX_FIFO_8W			(1 << 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define MVSD_NOR_SUSPEND_ON			(1 << 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) #define MVSD_NOR_AUTOCMD12_DONE			(1 << 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) #define MVSD_NOR_UNEXP_RSP			(1 << 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define MVSD_NOR_ERROR				(1 << 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)  * Error status bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define MVSD_ERR_CMD_TIMEOUT			(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) #define MVSD_ERR_CMD_CRC			(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define MVSD_ERR_CMD_ENDBIT			(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define MVSD_ERR_CMD_INDEX			(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define MVSD_ERR_DATA_TIMEOUT			(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define MVSD_ERR_DATA_CRC			(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define MVSD_ERR_DATA_ENDBIT			(1 << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #define MVSD_ERR_AUTOCMD12			(1 << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define MVSD_ERR_CMD_STARTBIT			(1 << 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define MVSD_ERR_XFER_SIZE			(1 << 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define MVSD_ERR_RESP_T_BIT			(1 << 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) #define MVSD_ERR_CRC_ENDBIT			(1 << 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) #define MVSD_ERR_CRC_STARTBIT			(1 << 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) #define MVSD_ERR_CRC_STATUS			(1 << 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)  * CMD12 error status bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) #define MVSD_AUTOCMD12_ERR_NOTEXE		(1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) #define MVSD_AUTOCMD12_ERR_TIMEOUT		(1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) #define MVSD_AUTOCMD12_ERR_CRC			(1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) #define MVSD_AUTOCMD12_ERR_ENDBIT		(1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define MVSD_AUTOCMD12_ERR_INDEX		(1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) #define MVSD_AUTOCMD12_ERR_RESP_T_BIT		(1 << 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) #define MVSD_AUTOCMD12_ERR_RESP_STARTBIT	(1 << 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) #endif