168 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * Copyright (C) Marvell International Ltd. and its affiliates
 | |
|  */
 | |
| 
 | |
| #ifndef _DDR3_TRAINING_IP_DEF_H
 | |
| #define _DDR3_TRAINING_IP_DEF_H
 | |
| 
 | |
| #define PATTERN_55			0x55555555
 | |
| #define PATTERN_AA			0xaaaaaaaa
 | |
| #define PATTERN_80			0x80808080
 | |
| #define PATTERN_20			0x20202020
 | |
| #define PATTERN_01			0x01010101
 | |
| #define PATTERN_FF			0xffffffff
 | |
| #define PATTERN_00			0x00000000
 | |
| 
 | |
| /* 16bit bus width patterns */
 | |
| #define PATTERN_55AA			0x5555aaaa
 | |
| #define PATTERN_00FF			0x0000ffff
 | |
| #define PATTERN_0080			0x00008080
 | |
| 
 | |
| #define INVALID_VALUE			0xffffffff
 | |
| #define MAX_NUM_OF_DUNITS		32
 | |
| /*
 | |
|  * length *2 = length in words of pattern, first low address,
 | |
|  * second high address
 | |
|  */
 | |
| #define TEST_PATTERN_LENGTH		4
 | |
| #define KILLER_PATTERN_DQ_NUMBER	8
 | |
| #define SSO_DQ_NUMBER			4
 | |
| #define PATTERN_MAXIMUM_LENGTH		64
 | |
| #define ADLL_TX_LENGTH			64
 | |
| #define ADLL_RX_LENGTH			32
 | |
| 
 | |
| #define PARAM_NOT_CARE			0
 | |
| #define PARAM_UNDEFINED			0xffffffff
 | |
| 
 | |
| #define READ_LEVELING_PHY_OFFSET	2
 | |
| #define WRITE_LEVELING_PHY_OFFSET	0
 | |
| 
 | |
| #define MASK_ALL_BITS			0xffffffff
 | |
| 
 | |
| #define CS_BIT_MASK			0xf
 | |
| 
 | |
| /* DFX access */
 | |
| #define BROADCAST_ID			28
 | |
| #define MULTICAST_ID			29
 | |
| 
 | |
| #define XSB_BASE_ADDR			0x00004000
 | |
| #define XSB_CTRL_0_REG			0x00000000
 | |
| #define XSB_CTRL_1_REG			0x00000004
 | |
| #define XSB_CMD_REG			0x00000008
 | |
| #define XSB_ADDRESS_REG			0x0000000c
 | |
| #define XSB_DATA_REG			0x00000010
 | |
| #define PIPE_ENABLE_ADDR		0x000f8000
 | |
| #define ENABLE_DDR_TUNING_ADDR		0x000f829c
 | |
| 
 | |
| #define CLIENT_BASE_ADDR		0x00002000
 | |
| #define CLIENT_CTRL_REG			0x00000000
 | |
| 
 | |
| #define TARGET_INT			0x1801
 | |
| #define TARGET_EXT			0x180e
 | |
| #define BYTE_EN				0
 | |
| #define CMD_READ			0
 | |
| #define CMD_WRITE			1
 | |
| 
 | |
| #define INTERNAL_ACCESS_PORT		1
 | |
| #define EXECUTING			1
 | |
| #define ACCESS_EXT			1
 | |
| #define CS2_EXIST_BIT			2
 | |
| #define TRAINING_ID			0xf
 | |
| #define EXT_TRAINING_ID			1
 | |
| #define EXT_MODE			0x4
 | |
| 
 | |
| #define GET_RESULT_STATE(res)		(res)
 | |
| #define SET_RESULT_STATE(res, state)	(res = state)
 | |
| 
 | |
| #define ADDR_SIZE_512MB			0x04000000
 | |
| #define ADDR_SIZE_1GB			0x08000000
 | |
| #define ADDR_SIZE_2GB			0x10000000
 | |
| #define ADDR_SIZE_4GB			0x20000000
 | |
| #define ADDR_SIZE_8GB			0x40000000
 | |
| #define ADDR_SIZE_16GB			0x80000000
 | |
| 
 | |
| 
 | |
| enum hws_edge_compare {
 | |
| 	EDGE_PF,
 | |
| 	EDGE_FP,
 | |
| 	EDGE_FPF,
 | |
| 	EDGE_PFP
 | |
| };
 | |
| 
 | |
| enum hws_control_element {
 | |
| 	HWS_CONTROL_ELEMENT_ADLL,		/* per bit 1 edge */
 | |
| 	HWS_CONTROL_ELEMENT_DQ_SKEW,
 | |
| 	HWS_CONTROL_ELEMENT_DQS_SKEW
 | |
| };
 | |
| 
 | |
| enum hws_search_dir {
 | |
| 	HWS_LOW2HIGH,
 | |
| 	HWS_HIGH2LOW,
 | |
| 	HWS_SEARCH_DIR_LIMIT
 | |
| };
 | |
| 
 | |
| enum hws_operation {
 | |
| 	OPERATION_READ = 0,
 | |
| 	OPERATION_WRITE = 1
 | |
| };
 | |
| 
 | |
| enum hws_training_ip_stat {
 | |
| 	HWS_TRAINING_IP_STATUS_FAIL,
 | |
| 	HWS_TRAINING_IP_STATUS_SUCCESS,
 | |
| 	HWS_TRAINING_IP_STATUS_TIMEOUT
 | |
| };
 | |
| 
 | |
| enum hws_ddr_cs {
 | |
| 	CS_SINGLE,
 | |
| 	CS_NON_SINGLE
 | |
| };
 | |
| 
 | |
| enum hws_ddr_phy {
 | |
| 	DDR_PHY_DATA = 0,
 | |
| 	DDR_PHY_CONTROL = 1
 | |
| };
 | |
| 
 | |
| enum hws_dir {
 | |
| 	OPER_WRITE,
 | |
| 	OPER_READ,
 | |
| 	OPER_WRITE_AND_READ
 | |
| };
 | |
| 
 | |
| enum hws_wl_supp {
 | |
| 	PHASE_SHIFT,
 | |
| 	CLOCK_SHIFT,
 | |
| 	ALIGN_SHIFT
 | |
| };
 | |
| 
 | |
| enum  mv_ddr_tip_bit_state {
 | |
| 	BIT_LOW_UI,
 | |
| 	BIT_HIGH_UI,
 | |
| 	BIT_SPLIT_IN,
 | |
| 	BIT_SPLIT_OUT,
 | |
| 	BIT_STATE_LAST
 | |
| };
 | |
| 
 | |
| enum  mv_ddr_tip_byte_state{
 | |
| 	BYTE_NOT_DEFINED,
 | |
| 	BYTE_HOMOGENEOUS_LOW = 0x1,
 | |
| 	BYTE_HOMOGENEOUS_HIGH = 0x2,
 | |
| 	BYTE_HOMOGENEOUS_SPLIT_IN = 0x4,
 | |
| 	BYTE_HOMOGENEOUS_SPLIT_OUT = 0x8,
 | |
| 	BYTE_SPLIT_OUT_MIX = 0x10,
 | |
| 	BYTE_STATE_LAST
 | |
| };
 | |
| 
 | |
| struct reg_data {
 | |
| 	unsigned int reg_addr;
 | |
| 	unsigned int reg_data;
 | |
| 	unsigned int reg_mask;
 | |
| };
 | |
| 
 | |
| enum dm_direction {
 | |
| 	DM_DIR_INVERSE,
 | |
| 	DM_DIR_DIRECT
 | |
| };
 | |
| 
 | |
| #endif /* _DDR3_TRAINING_IP_DEF_H */
 |