]>
git.proxmox.com Git - mirror_edk2.git/blob - QuarkSocPkg/QuarkNorthCluster/MemoryInit/Pei/meminit_utils.h
af7b8c8951201ced6db908cf81c9708935ec5124
1 /************************************************************************
3 * Copyright (c) 2013-2017 Intel Corporation.
5 * SPDX-License-Identifier: BSD-2-Clause-Patent
7 ***************************************************************************/
8 #ifndef _MEMINIT_UTILS_H_
9 #define _MEMINIT_UTILS_H_
11 // General Definitions:
13 #define SAMPLE_SIZE 4 // reduce number of training samples in simulation env
15 #define SAMPLE_SIZE 6 // must be odd number
18 #define EARLY_DB (0x12) // must be less than this number to enable early deadband
19 #define LATE_DB (0x34) // must be greater than this number to enable late deadband
20 #define CHX_REGS (11*4)
27 #define MCEIL(num,den) ((uint8_t)((num+den-1)/den))
28 #define MMAX(a,b) ((((int32_t)(a))>((int32_t)(b)))?(a):(b))
29 #define MCOUNT(a) (sizeof(a)/sizeof(*a))
31 typedef enum ALGOS_enum
{
45 void set_rcvn(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
, uint32_t pi_count
);
46 void set_rdqs(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
, uint32_t pi_count
);
47 void set_wdqs(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
, uint32_t pi_count
);
48 void set_wdq(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
, uint32_t pi_count
);
49 void set_wcmd(uint8_t channel
, uint32_t pi_count
);
50 void set_wclk(uint8_t channel
, uint8_t grp
, uint32_t pi_count
);
51 void set_wctl(uint8_t channel
, uint8_t rank
, uint32_t pi_count
);
52 void set_vref(uint8_t channel
, uint8_t byte_lane
, uint32_t setting
);
53 uint32_t get_rcvn(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
);
54 uint32_t get_rdqs(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
);
55 uint32_t get_wdqs(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
);
56 uint32_t get_wdq(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
);
57 uint32_t get_wcmd(uint8_t channel
);
58 uint32_t get_wclk(uint8_t channel
, uint8_t group
);
59 uint32_t get_wctl(uint8_t channel
, uint8_t rank
);
60 uint32_t get_vref(uint8_t channel
, uint8_t byte_lane
);
62 void clear_pointers(void);
63 void enable_cache(void);
64 void disable_cache(void);
65 void find_rising_edge(MRCParams_t
*mrc_params
, uint32_t delay
[], uint8_t channel
, uint8_t rank
, bool rcvn
);
66 uint32_t sample_dqs(MRCParams_t
*mrc_params
, uint8_t channel
, uint8_t rank
, bool rcvn
);
67 uint32_t get_addr(MRCParams_t
*mrc_params
, uint8_t channel
, uint8_t rank
);
68 uint32_t byte_lane_mask(MRCParams_t
*mrc_params
);
70 uint64_t read_tsc(void);
71 uint32_t get_tsc_freq(void);
72 void delay_n(uint32_t nanoseconds
);
73 void delay_u(uint32_t microseconds
);
74 void delay_m(uint32_t milliseconds
);
75 void delay_s(uint32_t seconds
);
77 void post_code(uint8_t major
, uint8_t minor
);
78 void training_message(uint8_t channel
, uint8_t rank
, uint8_t byte_lane
);
79 void print_timings(MRCParams_t
*mrc_params
);
81 void enable_scrambling(MRCParams_t
*mrc_params
);
82 void store_timings(MRCParams_t
*mrc_params
);
83 void restore_timings(MRCParams_t
*mrc_params
);
84 void default_timings(MRCParams_t
*mrc_params
);
88 // Map memset() and memcpy() to BaseMemoryLib functions
90 #include <Library/BaseMemoryLib.h>
91 #define memset(d,c,n) ((c) == 0) ? ZeroMem ((d), (n)) : SetMem ((d), (n), (c))
92 #define memcpy(d,s,n) CopyMem ((d), (s), (n))
95 #endif // _MEMINIT_UTILS_H_