]>
Commit | Line | Data |
---|---|---|
9b6bbcdb MK |
1 | /************************************************************************\r |
2 | *\r | |
8e8cc688 | 3 | * Copyright (c) 2013-2017 Intel Corporation.\r |
9b6bbcdb MK |
4 | *\r |
5 | * This program and the accompanying materials\r | |
6 | * are licensed and made available under the terms and conditions of the BSD License\r | |
7 | * which accompanies this distribution. The full text of the license may be found at\r | |
8 | * http://opensource.org/licenses/bsd-license.php\r | |
9 | *\r | |
10 | * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
11 | * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
12 | *\r | |
13 | ***************************************************************************/\r | |
14 | #ifndef _MEMINIT_UTILS_H_\r | |
15 | #define _MEMINIT_UTILS_H_\r | |
16 | \r | |
17 | // General Definitions:\r | |
18 | #ifdef QUICKSIM\r | |
19 | #define SAMPLE_SIZE 4 // reduce number of training samples in simulation env\r | |
20 | #else\r | |
21 | #define SAMPLE_SIZE 6 // must be odd number\r | |
22 | #endif\r | |
23 | \r | |
24 | #define EARLY_DB (0x12) // must be less than this number to enable early deadband\r | |
25 | #define LATE_DB (0x34) // must be greater than this number to enable late deadband\r | |
26 | #define CHX_REGS (11*4)\r | |
27 | #define FULL_CLK 128\r | |
28 | #define HALF_CLK 64\r | |
29 | #define QRTR_CLK 32\r | |
30 | \r | |
31 | \r | |
32 | \r | |
33 | #define MCEIL(num,den) ((uint8_t)((num+den-1)/den))\r | |
34 | #define MMAX(a,b) ((((int32_t)(a))>((int32_t)(b)))?(a):(b))\r | |
35 | #define MCOUNT(a) (sizeof(a)/sizeof(*a))\r | |
36 | \r | |
37 | typedef enum ALGOS_enum {\r | |
38 | eRCVN = 0,\r | |
39 | eWDQS,\r | |
40 | eWDQx,\r | |
41 | eRDQS,\r | |
42 | eVREF,\r | |
43 | eWCMD,\r | |
44 | eWCTL,\r | |
45 | eWCLK,\r | |
46 | eMAX_ALGOS,\r | |
47 | } ALGOs_t;\r | |
48 | \r | |
49 | \r | |
50 | // Prototypes:\r | |
51 | void set_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r | |
52 | void set_rdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r | |
53 | void set_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r | |
54 | void set_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r | |
55 | void set_wcmd(uint8_t channel, uint32_t pi_count);\r | |
56 | void set_wclk(uint8_t channel, uint8_t grp, uint32_t pi_count);\r | |
57 | void set_wctl(uint8_t channel, uint8_t rank, uint32_t pi_count);\r | |
58 | void set_vref(uint8_t channel, uint8_t byte_lane, uint32_t setting);\r | |
59 | uint32_t get_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r | |
60 | uint32_t get_rdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r | |
61 | uint32_t get_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r | |
62 | uint32_t get_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r | |
63 | uint32_t get_wcmd(uint8_t channel);\r | |
64 | uint32_t get_wclk(uint8_t channel, uint8_t group);\r | |
65 | uint32_t get_wctl(uint8_t channel, uint8_t rank);\r | |
66 | uint32_t get_vref(uint8_t channel, uint8_t byte_lane);\r | |
67 | \r | |
68 | void clear_pointers(void);\r | |
69 | void enable_cache(void);\r | |
70 | void disable_cache(void);\r | |
71 | void find_rising_edge(MRCParams_t *mrc_params, uint32_t delay[], uint8_t channel, uint8_t rank, bool rcvn);\r | |
72 | uint32_t sample_dqs(MRCParams_t *mrc_params, uint8_t channel, uint8_t rank, bool rcvn);\r | |
73 | uint32_t get_addr(MRCParams_t *mrc_params, uint8_t channel, uint8_t rank);\r | |
74 | uint32_t byte_lane_mask(MRCParams_t *mrc_params);\r | |
75 | \r | |
76 | uint64_t read_tsc(void);\r | |
77 | uint32_t get_tsc_freq(void);\r | |
78 | void delay_n(uint32_t nanoseconds);\r | |
79 | void delay_u(uint32_t microseconds);\r | |
80 | void delay_m(uint32_t milliseconds);\r | |
81 | void delay_s(uint32_t seconds);\r | |
82 | \r | |
83 | void post_code(uint8_t major, uint8_t minor);\r | |
84 | void training_message(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r | |
85 | void print_timings(MRCParams_t *mrc_params);\r | |
86 | \r | |
87 | void enable_scrambling(MRCParams_t *mrc_params);\r | |
88 | void store_timings(MRCParams_t *mrc_params);\r | |
89 | void restore_timings(MRCParams_t *mrc_params);\r | |
90 | void default_timings(MRCParams_t *mrc_params);\r | |
91 | \r | |
92 | #ifndef SIM\r | |
8e8cc688 MK |
93 | //\r |
94 | // Map memset() and memcpy() to BaseMemoryLib functions\r | |
95 | //\r | |
96 | #include <Library/BaseMemoryLib.h>\r | |
97 | #define memset(d,c,n) ((c) == 0) ? ZeroMem ((d), (n)) : SetMem ((d), (n), (c))\r | |
98 | #define memcpy(d,s,n) CopyMem ((d), (s), (n))\r | |
9b6bbcdb MK |
99 | #endif\r |
100 | \r | |
101 | #endif // _MEMINIT_UTILS_H_\r |