xref: /rk3399_ARM-atf/include/drivers/dw_ufs.h (revision 9d068f66b15e644df4961b74b965323c20f21f14)
17e080842SHaojian Zhuang /*
293c78ed2SAntonio Nino Diaz  * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
37e080842SHaojian Zhuang  *
47e080842SHaojian Zhuang  * SPDX-License-Identifier: BSD-3-Clause
57e080842SHaojian Zhuang  */
67e080842SHaojian Zhuang 
7*c3cf06f1SAntonio Nino Diaz #ifndef DW_UFS_H
8*c3cf06f1SAntonio Nino Diaz #define DW_UFS_H
97e080842SHaojian Zhuang 
1093c78ed2SAntonio Nino Diaz #include <stdint.h>
117e080842SHaojian Zhuang 
127e080842SHaojian Zhuang /* Bus Throtting */
137e080842SHaojian Zhuang #define BUSTHRTL				0xC0
147e080842SHaojian Zhuang /* Outstanding OCP Requests */
157e080842SHaojian Zhuang #define OOCPR					0xC4
167e080842SHaojian Zhuang /* Fatal Error Interrupt Enable */
177e080842SHaojian Zhuang #define FEIE					0xC8
187e080842SHaojian Zhuang /* C-Port Direct Access Configuration register */
197e080842SHaojian Zhuang #define CDACFG					0xD0
207e080842SHaojian Zhuang /* C-Port Direct Access Transmit 1 register */
217e080842SHaojian Zhuang #define CDATX1					0xD4
227e080842SHaojian Zhuang /* C-Port Direct Access Transmit 2 register */
237e080842SHaojian Zhuang #define CDATX2					0xD8
247e080842SHaojian Zhuang /* C-Port Direct Access Receive 1 register */
257e080842SHaojian Zhuang #define CDARX1					0xDC
267e080842SHaojian Zhuang /* C-Port Direct Access Receive 2 register */
277e080842SHaojian Zhuang #define CDARX2					0xE0
287e080842SHaojian Zhuang /* C-Port Direct Access Status register */
297e080842SHaojian Zhuang #define CDASTA					0xE4
307e080842SHaojian Zhuang /* UPIU Loopback Configuration register */
317e080842SHaojian Zhuang #define LBMCFG					0xF0
327e080842SHaojian Zhuang /* UPIU Loopback Status */
337e080842SHaojian Zhuang #define LBMSTA					0xF4
347e080842SHaojian Zhuang /* Debug register */
357e080842SHaojian Zhuang #define DBG					0xF8
367e080842SHaojian Zhuang /* HClk Divider register */
377e080842SHaojian Zhuang #define HCLKDIV					0xFC
387e080842SHaojian Zhuang 
397e080842SHaojian Zhuang #define TX_HIBERN8TIME_CAP_OFFSET		0x000F
407e080842SHaojian Zhuang #define TX_FSM_STATE_OFFSET			0x0041
417e080842SHaojian Zhuang #define TX_FSM_STATE_LINE_RESET			7
427e080842SHaojian Zhuang #define TX_FSM_STATE_LINE_CFG			6
437e080842SHaojian Zhuang #define TX_FSM_STATE_HS_BURST			5
447e080842SHaojian Zhuang #define TX_FSM_STATE_LS_BURST			4
457e080842SHaojian Zhuang #define TX_FSM_STATE_STALL			3
467e080842SHaojian Zhuang #define TX_FSM_STATE_SLEEP			2
477e080842SHaojian Zhuang #define TX_FSM_STATE_HIBERN8			1
487e080842SHaojian Zhuang #define TX_FSM_STATE_DISABLE			0
497e080842SHaojian Zhuang 
507e080842SHaojian Zhuang #define RX_MIN_ACTIVATETIME_CAP_OFFSET		0x008F
517e080842SHaojian Zhuang #define RX_HS_G2_SYNC_LENGTH_CAP_OFFSET		0x0094
527e080842SHaojian Zhuang #define RX_HS_G3_SYNC_LENGTH_CAP_OFFSET		0x0095
537e080842SHaojian Zhuang 
547e080842SHaojian Zhuang #define PA_AVAIL_TX_DATA_LANES_OFFSET		0x1520
557e080842SHaojian Zhuang #define PA_TX_SKIP_OFFSET			0x155C
567e080842SHaojian Zhuang #define PA_TX_SKIP_PERIOD_OFFSET		0x155D
577e080842SHaojian Zhuang #define PA_LOCAL_TX_LCC_ENABLE_OFFSET		0x155E
587e080842SHaojian Zhuang #define PA_ACTIVE_TX_DATA_LANES_OFFSET		0x1560
597e080842SHaojian Zhuang #define PA_CONNECTED_TX_DATA_LANES_OFFSET	0x1561
607e080842SHaojian Zhuang #define PA_TX_TRAILING_CLOCKS_OFFSET		0x1564
617e080842SHaojian Zhuang #define PA_TX_GEAR_OFFSET			0x1568
627e080842SHaojian Zhuang #define PA_TX_TERMINATION_OFFSET		0x1569
637e080842SHaojian Zhuang #define PA_HS_SERIES_OFFSET			0x156A
647e080842SHaojian Zhuang #define PA_PWR_MODE_OFFSET			0x1571
657e080842SHaojian Zhuang #define PA_ACTIVE_RX_DATA_LANES_OFFSET		0x1580
667e080842SHaojian Zhuang #define PA_CONNECTED_RX_DATA_LANES_OFFSET	0x1581
677e080842SHaojian Zhuang #define PA_RX_PWR_STATUS_OFFSET			0x1582
687e080842SHaojian Zhuang #define PA_RX_GEAR_OFFSET			0x1583
697e080842SHaojian Zhuang #define PA_RX_TERMINATION_OFFSET		0x1584
707e080842SHaojian Zhuang #define PA_SCRAMBLING_OFFSET			0x1585
717e080842SHaojian Zhuang #define PA_MAX_RX_PWM_GEAR_OFFSET		0x1586
727e080842SHaojian Zhuang #define PA_MAX_RX_HS_GEAR_OFFSET		0x1587
737e080842SHaojian Zhuang #define PA_PACP_REQ_TIMEOUT_OFFSET		0x1590
747e080842SHaojian Zhuang #define PA_PACP_REQ_EOB_TIMEOUT_OFFSET		0x1591
757e080842SHaojian Zhuang #define PA_REMOTE_VER_INFO_OFFSET		0x15A0
767e080842SHaojian Zhuang #define PA_LOGICAL_LANE_MAP_OFFSET		0x15A1
777e080842SHaojian Zhuang #define PA_TACTIVATE_OFFSET			0x15A8
787e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA0_OFFSET		0x15B0
797e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA1_OFFSET		0x15B1
807e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA2_OFFSET		0x15B2
817e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA3_OFFSET		0x15B3
827e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA4_OFFSET		0x15B4
837e080842SHaojian Zhuang #define PA_PWR_MODE_USER_DATA5_OFFSET		0x15B5
847e080842SHaojian Zhuang 
857e080842SHaojian Zhuang #define DL_TC0_TX_FC_THRESHOLD_OFFSET		0x2040
867e080842SHaojian Zhuang #define DL_AFC0_CREDIT_THRESHOLD_OFFSET		0x2044
877e080842SHaojian Zhuang #define DL_TC0_OUT_ACK_THRESHOLD_OFFSET		0x2045
887e080842SHaojian Zhuang 
897e080842SHaojian Zhuang #define DME_FC0_PROTECTION_TIMEOUT_OFFSET	0xD041
907e080842SHaojian Zhuang #define DME_TC0_REPLAY_TIMEOUT_OFFSET		0xD042
917e080842SHaojian Zhuang #define DME_AFC0_REQ_TIMEOUT_OFFSET		0xD043
927e080842SHaojian Zhuang #define DME_FC1_PROTECTION_TIMEOUT_OFFSET	0xD044
937e080842SHaojian Zhuang #define DME_TC1_REPLAY_TIMEOUT_OFFSET		0xD045
947e080842SHaojian Zhuang #define DME_AFC1_REQ_TIMEOUT_OFFSET		0xD046
957e080842SHaojian Zhuang 
967e080842SHaojian Zhuang #define VS_MPHY_CFG_UPDT_OFFSET			0xD085
977e080842SHaojian Zhuang #define VS_MK2_EXTN_SUPPORT_OFFSET		0xD0AB
987e080842SHaojian Zhuang #define VS_MPHY_DISABLE_OFFSET			0xD0C1
997e080842SHaojian Zhuang #define VS_MPHY_DISABLE_MPHYDIS			(1 << 0)
1007e080842SHaojian Zhuang 
1017e080842SHaojian Zhuang typedef struct dw_ufs_params {
1027e080842SHaojian Zhuang 	uintptr_t		reg_base;
1037e080842SHaojian Zhuang 	uintptr_t		desc_base;
1047e080842SHaojian Zhuang 	size_t			desc_size;
1057e080842SHaojian Zhuang 	unsigned long		flags;
1067e080842SHaojian Zhuang } dw_ufs_params_t;
1077e080842SHaojian Zhuang 
1087e080842SHaojian Zhuang int dw_ufs_init(dw_ufs_params_t *params);
1097e080842SHaojian Zhuang 
110*c3cf06f1SAntonio Nino Diaz #endif /* DW_UFS_H */
111