/** @file
Header file with all common HSIO information
Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _PCH_HSIO_H_
#define _PCH_HSIO_H_
#define PCH_LANE_OWN_COMMON 0x10
#define PCH_LANE_BDCAST 0x11
#define PCH_HSIO_LANE_GROUP_NO 0x09
#define PCH_HSIO_LANE_GROUP_COMMON_LANE 0x00
#define PCH_HSIO_LANE_GROUP_PCIE 0x01
#define PCH_HSIO_LANE_GROUP_DMI 0x02
#define PCH_HSIO_LANE_GROUP_GBE 0x03
#define PCH_HSIO_LANE_GROUP_USB3 0x04
#define PCH_HSIO_LANE_GROUP_SATA 0x05
#define PCH_HSIO_LANE_GROUP_SSIC 0x06
/**
PCH HSIO ChipsetInit Version Information
**/
typedef struct {
UINT16 BaseCrc;
UINT16 SusCrc;
UINT16 OemCrc;
UINT8 Version;
UINT8 Product;
UINT8 MetalLayer : 4;
UINT8 BaseLayer : 4;
UINT8 OemVersion;
UINT16 DebugMode : 1;
UINT16 OemCrcValid : 1;
UINT16 SusCrcValid : 1;
UINT16 BaseCrcValid : 1;
UINT16 Reserved : 12;
} PCH_HSIO_VER_INFO;
#define PMC_DATA_CMD_SIZE ((12/sizeof(UINT16))-1)
#define PMC_DATA_DELAY_CMD_SIZE ((4/sizeof(UINT16))-1)
#define RECORD_OFFSET(X, Y) ((X << 4) | Y)
/**
PCH HSIO ChipsetInit Command Field
**/
typedef struct {
UINT8 Command : 3;
UINT8 Size : 5;
UINT8 Pid;
UINT8 OpCode; //PrivateControlWrite
UINT8 Bar; //0
UINT8 Fbe; //First Byte Enable : 0x0F
UINT8 Fid; //0
UINT16 Offset;
UINT32 Value;
} PCH_HSIO_CMD_FIELD;
/**
PCH HSIO Delay XRAM Data
**/
typedef struct {
UINT8 Command : 3;
UINT8 Size : 5;
UINT8 DelayPeriod; //(00h = 1us, 01h = 10us, 02h = 100us, ..., 07h = 10s; others reserved)
UINT8 DelayCount; //(0 - 255); total delay = Delay period * Delay count
UINT8 Padding;
} PCH_HSIO_DELAY_CMD_FIELD;
typedef enum {
Delay1us = 0x0,
Delay10us,
Delay100us,
Delay1ms,
Delay10ms,
Delay100ms,
Delay1s,
Delay10s
} PCH_HSIO_DELAY;
/**
PCH PCIE PLL SSC Data
**/
#define MAX_PCIE_PLL_SSC_PERCENT 20
#include
#endif //_PCH_HSIO_H_