/** @file @copyright Copyright 1999 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __PLATFORM_CLOCKS_LIB__ #define __PLATFORM_CLOCKS_LIB__ // // Known clock generator types // typedef enum { ClockGeneratorCk410, ClockGeneratorCk420, ClockGeneratorCk440, ClockGeneratorCk505, ClockGeneratorMax } CLOCK_GENERATOR_TYPE; #define CLOCK_GENERATOR_ADDRESS 0xD2 // // Clock generator details table // typedef struct { CLOCK_GENERATOR_TYPE ClockType; UINT8 ClockId; UINT8 SpreadSpectrumByteOffset; UINT8 SpreadSpectrumBitOffset; } CLOCK_GENERATOR_DETAILS; // // An arbitrary maximum length for clock generator buffers // #define MAX_CLOCK_GENERATOR_BUFFER_LENGTH 0x20 // // CK410 Definitions // #define CK410_GENERATOR_ID 0x65 #define CK410_GENERATOR_SPREAD_SPECTRUM_BYTE 1 #define CK410_GENERATOR_SPREAD_SPECTRUM_BIT BIT0 #define CK410_GENERATOR_CLOCK_FREERUN_BYTE 4 #define CK410_GENERATOR_CLOCK_FREERUN_BIT (BIT0 | BIT1 | BIT2) // // CK420 Definitions // #define CK420_GENERATOR_ID 0x11 // IDT ICS932SQ420B #define CK420_GENERATOR_SPREAD_SPECTRUM_BYTE 1 #define CK420_GENERATOR_SPREAD_SPECTRUM_BIT BIT0 // // CK440 Definitions // #define CK440_GENERATOR_ID 0x12 #define CK440_GENERATOR_SPREAD_SPECTRUM_BYTE 6 #define CK440_GENERATOR_SPREAD_SPECTRUM_BIT BIT2 // // CK505 Definitions // #define CK505_GENERATOR_ID 0x26 // Silego SLG505YC264B #define CK505_GENERATOR_SPREAD_SPECTRUM_BYTE 4 #define CK505_GENERATOR_SPREAD_SPECTRUM_BIT (BIT0 | BIT1) #define CLOCK_GENERATOR_SETTINGS_PLATFORMSRP {0xFF, 0x9E, 0x3F, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x0A, 0x17, 0xFF, 0xFE} #define CLOCK_GENERATOR_SETTINGS_PLATFORMDVP {0xFF, 0x9E, 0x3F, 0x00, 0x00, 0x0F, 0x08, 0x31, 0x0A, 0x17} EFI_STATUS ConfigureClockGenerator ( IN EFI_PEI_SERVICES **PeiServices, IN CLOCK_GENERATOR_TYPE ClockType, IN UINT8 ClockAddress, IN UINTN ConfigurationTableLength, IN OUT UINT8 *ConfigurationTable, IN BOOLEAN EnableSpreadSpectrum, IN CLOCK_GENERATOR_DETAILS *mSupportedClockGeneratorT, IN BOOLEAN SecondarySmbus ); #define PEI_STALL_RESOLUTION 1 #endif