]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/Library/MultiPlatformLib/BoardClkGens/BoardClkGens.h
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / MultiPlatformLib / BoardClkGens / BoardClkGens.h
CommitLineData
3cbfba02
DW
1/**@file\r
2 Clock generator setting for multiplatform.\r
3\r
4 This file includes package header files, library classes.\r
5\r
6 Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
7 \r\r
9dc8036d
MK
8 SPDX-License-Identifier: BSD-2-Clause-Patent\r
9\r
3cbfba02
DW
10 \r\r
11**/\r
12\r
13#ifndef _BOARD_CLK_GEN_H_\r
14#define _BOARD_CLK_GEN_H_\r
15\r
16#include <PiPei.h>\r
17#include <Library/HobLib.h>\r
18#include <Library/IoLib.h>\r
19#include <Library/DebugLib.h>\r
20#include <Library/SmbusLib.h>\r
21#include <Ppi/Smbus.h>\r
22#include <IndustryStandard/SmBus.h>\r
23#include <Guid/PlatformInfo.h>\r
24\r
25\r
26#define CLOCK_GENERATOR_ADDRESS 0xd2\r
27\r
28#define CLOCK_GENERATOR_SEETINGS_TABLET {0xB1, 0x82, 0xFF, 0xBF, 0xFF, 0x80}\r
29#define CLOCK_GENERATOR_SETTINGS_MOBILE {0xB1, 0x82, 0xFF, 0xBF, 0xFF, 0x80}\r
30#define CLOCK_GENERATOR_SETTINGS_DESKTOP {0xB1, 0x82, 0xFF, 0xBF, 0xFF, 0x80}\r
31\r
32typedef enum {\r
33 ClockGeneratorCk410,\r
34 ClockGeneratorCk505,\r
35 ClockGeneratorMax\r
36} CLOCK_GENERATOR_TYPE;\r
37\r
38typedef struct {\r
39 CLOCK_GENERATOR_TYPE ClockType;\r
40 UINT8 ClockId;\r
41 UINT8 SpreadSpectrumByteOffset;\r
42 UINT8 SpreadSpectrumBitOffset;\r
43} CLOCK_GENERATOR_DETAILS;\r
44\r
45#define MAX_CLOCK_GENERATOR_BUFFER_LENGTH 0x20\r
46\r
47//\r
48// CK410 Definitions\r
49//\r
50#define CK410_GENERATOR_ID 0x65\r
51#define CK410_GENERATOR_SPREAD_SPECTRUM_BYTE 1\r
52#define CK410_GENERATOR_SPREAD_SPECTRUM_BIT BIT0\r
53#define CK410_GENERATOR_CLOCK_FREERUN_BYTE 4\r
54#define CK410_GENERATOR_CLOCK_FREERUN_BIT (BIT0 | BIT1 | BIT2)\r
55\r
56//\r
57// CK505 Definitions\r
58//\r
59#define VF_CK505_GENERATOR_ID 0x5\r
60#define CK505_GENERATOR_ID 0x5 // Confirmed readout is 5\r
61#define CK505_GENERATOR_SPREAD_SPECTRUM_BYTE 4\r
62#define CK505_GENERATOR_SPREAD_SPECTRUM_BIT (BIT0 | BIT1)\r
63#define CK505_GENERATOR_PERCENT_SPREAD_BYTE 1\r
64#define CK505_GENERATOR_PERCENT_MASK ~(0xE)\r
65#define CK505_GENERATOR_PERCENT_250_VALUE 0xC\r
66#define CK505_GENERATOR_PERCENT_050_VALUE 0x4\r
67#define CK505_GENERATOR_PERCENT_000_VALUE 0x2\r
68\r
69//\r
70// IDT Definitions\r
71//\r
72#define IDT_GENERATOR_ID_REVA 0x1 //IDT Rev A\r
73#define IDTRevA_GENERATOR_SPREAD_SPECTRUM_BYTE 0\r
74#define IDTRevA_GENERATOR_SPREAD_SPECTRUM_BIT BIT0\r
75#define IDTRevA_GENERATOR_PERCENT_SPREAD_BYTE 5\r
76#define IDTRevA_GENERATOR_PERCENT_250_VALUE 0xF\r
77#define IDTRevA_GENERATOR_PERCENT_050_VALUE 0x3\r
78#define IDTRevA_GENERATOR_PERCENT_000_VALUE 0xE\r
79#define IDTRevA_GENERATOR_PERCENT_MASK ~(0xF)\r
80\r
81#define IDT_GENERATOR_ID_REVB 0x11 //IDT RevB\r
82#define IDT_GENERATOR_ID_REVD 0x21 //IDT RevD\r
83\r
84//\r
85// CLOCK CONTROLLER\r
86// SmBus address to read DIMM SPD\r
87//\r
88#define SMBUS_BASE_ADDRESS 0xEFA0\r
89#define SMBUS_BUS_DEV_FUNC 0x1F0300\r
90#define PLATFORM_NUM_SMBUS_RSVD_ADDRESSES 4\r
91#define SMBUS_ADDR_CH_A_1 0xA0\r
92#define SMBUS_ADDR_CH_A_2 0xA2\r
93#define SMBUS_ADDR_CH_B_1 0xA4\r
94#define SMBUS_ADDR_CH_B_2 0xA6\r
95\r
96//\r
97