hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/*
 * Copyright (C) Marvell International Ltd. and its affiliates
 *
 * SPDX-License-Identifier:    GPL-2.0
 */
 
#ifndef _DDR3_TRAINING_IP_DEF_H
#define _DDR3_TRAINING_IP_DEF_H
 
#include "silicon_if.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 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 _1K                0x00000400
#define _4K                0x00001000
#define _8K                0x00002000
#define _16K                0x00004000
#define _32K                0x00008000
#define _64K                0x00010000
#define _128K                0x00020000
#define _256K                0x00040000
#define _512K                0x00080000
 
#define _1M                0x00100000
#define _2M                0x00200000
#define _4M                0x00400000
#define _8M                0x00800000
#define _16M                0x01000000
#define _32M                0x02000000
#define _64M                0x04000000
#define _128M                0x08000000
#define _256M                0x10000000
#define _512M                0x20000000
 
#define _1G                0x40000000
#define _2G                0x80000000
 
#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
 
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_page_size {
   PAGE_SIZE_1K,
   PAGE_SIZE_2K
};
 
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
};
 
struct reg_data {
   u32 reg_addr;
   u32 reg_data;
   u32 reg_mask;
};
 
#endif /* _DDR3_TRAINING_IP_DEF_H */