]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkNorthCluster/MemoryInit/Pei/meminit_utils.h
QuarkSocPkg: Add new package for Quark SoC X1000
[mirror_edk2.git] / QuarkSocPkg / QuarkNorthCluster / MemoryInit / Pei / meminit_utils.h
CommitLineData
9b6bbcdb
MK
1/************************************************************************\r
2 *\r
3 * Copyright (c) 2013-2015 Intel Corporation.\r
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
37typedef 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
51void set_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r
52void set_rdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r
53void set_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r
54void set_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane, uint32_t pi_count);\r
55void set_wcmd(uint8_t channel, uint32_t pi_count);\r
56void set_wclk(uint8_t channel, uint8_t grp, uint32_t pi_count);\r
57void set_wctl(uint8_t channel, uint8_t rank, uint32_t pi_count);\r
58void set_vref(uint8_t channel, uint8_t byte_lane, uint32_t setting);\r
59uint32_t get_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r
60uint32_t get_rdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r
61uint32_t get_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r
62uint32_t get_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r
63uint32_t get_wcmd(uint8_t channel);\r
64uint32_t get_wclk(uint8_t channel, uint8_t group);\r
65uint32_t get_wctl(uint8_t channel, uint8_t rank);\r
66uint32_t get_vref(uint8_t channel, uint8_t byte_lane);\r
67\r
68void clear_pointers(void);\r
69void enable_cache(void);\r
70void disable_cache(void);\r
71void find_rising_edge(MRCParams_t *mrc_params, uint32_t delay[], uint8_t channel, uint8_t rank, bool rcvn);\r
72uint32_t sample_dqs(MRCParams_t *mrc_params, uint8_t channel, uint8_t rank, bool rcvn);\r
73uint32_t get_addr(MRCParams_t *mrc_params, uint8_t channel, uint8_t rank);\r
74uint32_t byte_lane_mask(MRCParams_t *mrc_params);\r
75\r
76uint64_t read_tsc(void);\r
77uint32_t get_tsc_freq(void);\r
78void delay_n(uint32_t nanoseconds);\r
79void delay_u(uint32_t microseconds);\r
80void delay_m(uint32_t milliseconds);\r
81void delay_s(uint32_t seconds);\r
82\r
83void post_code(uint8_t major, uint8_t minor);\r
84void training_message(uint8_t channel, uint8_t rank, uint8_t byte_lane);\r
85void print_timings(MRCParams_t *mrc_params);\r
86\r
87void enable_scrambling(MRCParams_t *mrc_params);\r
88void store_timings(MRCParams_t *mrc_params);\r
89void restore_timings(MRCParams_t *mrc_params);\r
90void default_timings(MRCParams_t *mrc_params);\r
91\r
92#ifndef SIM\r
93void *memset(void *d, int c, size_t n);\r
94void *memcpy(void *d, const void *s, size_t n);\r
95#endif\r
96\r
97#endif // _MEMINIT_UTILS_H_\r