alder_lake_bios/Insyde/InsydeModulePkg/Include/SuperIoDefine.h

391 lines
8.7 KiB
C

/** @file
Define Super I/O config register and common structure
;******************************************************************************
;* Copyright (c) 2012, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _SUPER_IO_DEFINE_H_
#define _SUPER_IO_DEFINE_H_
#include <Protocol/IsaAcpi.h>
//
// Configuration Register
//
#define SIO_CR01 0x01
#define SIO_CR02 0x02
#define SIO_CR03 0x03
#define SIO_CR04 0x04
#define SIO_CR05 0x05
#define SIO_CR06 0x06
#define SIO_CR07 0x07
#define SIO_CR08 0x08
#define SIO_CR09 0x09
#define SIO_CR0A 0x0A
#define SIO_CR0B 0x0B
#define SIO_CR0C 0x0C
#define SIO_CR0D 0x0D
#define SIO_CR0E 0x0E
#define SIO_CR0F 0x0F
#define SIO_CR10 0x10
#define SIO_CR11 0x11
#define SIO_CR12 0x12
#define SIO_CR13 0x13
#define SIO_CR14 0x14
#define SIO_CR15 0x15
#define SIO_CR16 0x16
#define SIO_CR17 0x17
#define SIO_CR18 0x18
#define SIO_CR19 0x19
#define SIO_CR1A 0x1A
#define SIO_CR1B 0x1B
#define SIO_CR1C 0x1C
#define SIO_CR1D 0x1D
#define SIO_CR1E 0x1E
#define SIO_CR1F 0x1F
#define SIO_CR20 0x20
#define SIO_CR21 0x21
#define SIO_CR22 0x22
#define SIO_CR23 0x23
#define SIO_CR24 0x24
#define SIO_CR25 0x25
#define SIO_CR26 0x26
#define SIO_CR27 0x27
#define SIO_CR28 0x28
#define SIO_CR29 0x29
#define SIO_CR2A 0x2A
#define SIO_CR2B 0x2B
#define SIO_CR2C 0x2C
#define SIO_CR2D 0x2D
#define SIO_CR2E 0x2E
#define SIO_CR2F 0x2F
#define SIO_CR30 0x30
#define SIO_CR31 0x31
#define SIO_CR32 0x32
#define SIO_CR33 0x33
#define SIO_CR34 0x34
#define SIO_CR35 0x35
#define SIO_CR36 0x36
#define SIO_CR37 0x37
#define SIO_CR38 0x38
#define SIO_CR39 0x39
#define SIO_CR3A 0x3A
#define SIO_CR3B 0x3B
#define SIO_CR3C 0x3C
#define SIO_CR3D 0x3D
#define SIO_CR3E 0x3E
#define SIO_CR3F 0x3F
#define SIO_CR40 0x40
#define SIO_CR41 0x41
#define SIO_CR42 0x42
#define SIO_CR43 0x43
#define SIO_CR44 0x44
#define SIO_CR45 0x45
#define SIO_CR46 0x46
#define SIO_CR47 0x47
#define SIO_CR48 0x48
#define SIO_CR49 0x49
#define SIO_CR4A 0x4A
#define SIO_CR4B 0x4B
#define SIO_CR4C 0x4C
#define SIO_CR4D 0x4D
#define SIO_CR4E 0x4E
#define SIO_CR4F 0x4F
#define SIO_CR50 0x50
#define SIO_CR51 0x51
#define SIO_CR52 0x52
#define SIO_CR53 0x53
#define SIO_CR54 0x54
#define SIO_CR55 0x55
#define SIO_CR56 0x56
#define SIO_CR57 0x57
#define SIO_CR58 0x58
#define SIO_CR59 0x59
#define SIO_CR5A 0x5A
#define SIO_CR5B 0x5B
#define SIO_CR5C 0x5C
#define SIO_CR5D 0x5D
#define SIO_CR5E 0x5E
#define SIO_CR5F 0x5F
#define SIO_CR60 0x60
#define SIO_CR61 0x61
#define SIO_CR62 0x62
#define SIO_CR63 0x63
#define SIO_CR64 0x64
#define SIO_CR65 0x65
#define SIO_CR66 0x66
#define SIO_CR67 0x67
#define SIO_CR68 0x68
#define SIO_CR69 0x69
#define SIO_CR6A 0x6A
#define SIO_CR6B 0x6B
#define SIO_CR6C 0x6C
#define SIO_CR6D 0x6D
#define SIO_CR6E 0x6E
#define SIO_CR6F 0x6F
#define SIO_CR70 0x70
#define SIO_CR71 0x71
#define SIO_CR72 0x72
#define SIO_CR73 0x73
#define SIO_CR74 0x74
#define SIO_CR75 0x75
#define SIO_CR76 0x76
#define SIO_CR77 0x77
#define SIO_CR78 0x78
#define SIO_CR79 0x79
#define SIO_CR7A 0x7A
#define SIO_CR7B 0x7B
#define SIO_CR7C 0x7C
#define SIO_CR7D 0x7D
#define SIO_CR7E 0x7E
#define SIO_CR7F 0x7F
#define SIO_CR80 0x80
#define SIO_CR81 0x81
#define SIO_CR82 0x82
#define SIO_CR83 0x83
#define SIO_CR84 0x84
#define SIO_CR85 0x85
#define SIO_CR86 0x86
#define SIO_CR87 0x87
#define SIO_CR88 0x88
#define SIO_CR89 0x89
#define SIO_CR8A 0x8A
#define SIO_CR8B 0x8B
#define SIO_CR8C 0x8C
#define SIO_CR8D 0x8D
#define SIO_CR8E 0x8E
#define SIO_CR8F 0x8F
#define SIO_CR90 0x90
#define SIO_CR91 0x91
#define SIO_CR92 0x92
#define SIO_CR93 0x93
#define SIO_CR94 0x94
#define SIO_CR95 0x95
#define SIO_CR96 0x96
#define SIO_CR97 0x97
#define SIO_CR98 0x98
#define SIO_CR99 0x99
#define SIO_CR9A 0x9A
#define SIO_CR9B 0x9B
#define SIO_CR9C 0x9C
#define SIO_CR9D 0x9D
#define SIO_CR9E 0x9E
#define SIO_CR9F 0x9F
#define SIO_CRA0 0xA0
#define SIO_CRA1 0xA1
#define SIO_CRA2 0xA2
#define SIO_CRA3 0xA3
#define SIO_CRA4 0xA4
#define SIO_CRA5 0xA5
#define SIO_CRA6 0xA6
#define SIO_CRA7 0xA7
#define SIO_CRA8 0xA8
#define SIO_CRA9 0xA9
#define SIO_CRAA 0xAA
#define SIO_CRAB 0xAB
#define SIO_CRAC 0xAC
#define SIO_CRAD 0xAD
#define SIO_CRAE 0xAE
#define SIO_CRAF 0xAF
#define SIO_CRB0 0xB0
#define SIO_CRB1 0xB1
#define SIO_CRB2 0xB2
#define SIO_CRB3 0xB3
#define SIO_CRB4 0xB4
#define SIO_CRB5 0xB5
#define SIO_CRB6 0xB6
#define SIO_CRB7 0xB7
#define SIO_CRB8 0xB8
#define SIO_CRB9 0xB9
#define SIO_CRBA 0xBA
#define SIO_CRBB 0xBB
#define SIO_CRBC 0xBC
#define SIO_CRBD 0xBD
#define SIO_CRBE 0xBE
#define SIO_CRBF 0xBF
#define SIO_CRC0 0xC0
#define SIO_CRC1 0xC1
#define SIO_CRC2 0xC2
#define SIO_CRC3 0xC3
#define SIO_CRC4 0xC4
#define SIO_CRC5 0xC5
#define SIO_CRC6 0xC6
#define SIO_CRC7 0xC7
#define SIO_CRC8 0xC8
#define SIO_CRC9 0xC9
#define SIO_CRCA 0xCA
#define SIO_CRCB 0xCB
#define SIO_CRCC 0xCC
#define SIO_CRCD 0xCD
#define SIO_CRCE 0xCE
#define SIO_CRCF 0xCF
#define SIO_CRD0 0xD0
#define SIO_CRD1 0xD1
#define SIO_CRD2 0xD2
#define SIO_CRD3 0xD3
#define SIO_CRD4 0xD4
#define SIO_CRD5 0xD5
#define SIO_CRD6 0xD6
#define SIO_CRD7 0xD7
#define SIO_CRD8 0xD8
#define SIO_CRD9 0xD9
#define SIO_CRDA 0xDA
#define SIO_CRDB 0xDB
#define SIO_CRDC 0xDC
#define SIO_CRDD 0xDD
#define SIO_CRDE 0xDE
#define SIO_CRDF 0xDF
#define SIO_CRE0 0xE0
#define SIO_CRE1 0xE1
#define SIO_CRE2 0xE2
#define SIO_CRE3 0xE3
#define SIO_CRE4 0xE4
#define SIO_CRE5 0xE5
#define SIO_CRE6 0xE6
#define SIO_CRE7 0xE7
#define SIO_CRE8 0xE8
#define SIO_CRE9 0xE9
#define SIO_CREA 0xEA
#define SIO_CREB 0xEB
#define SIO_CREC 0xEC
#define SIO_CRED 0xED
#define SIO_CREE 0xEE
#define SIO_CREF 0xEF
#define SIO_CRF0 0xF0
#define SIO_CRF1 0xF1
#define SIO_CRF2 0xF2
#define SIO_CRF3 0xF3
#define SIO_CRF4 0xF4
#define SIO_CRF5 0xF5
#define SIO_CRF6 0xF6
#define SIO_CRF7 0xF7
#define SIO_CRF8 0xF8
#define SIO_CRF9 0xF9
#define SIO_CRFA 0xFA
#define SIO_CRFB 0xFB
#define SIO_CRFC 0xFC
#define SIO_CRFD 0xFD
#define SIO_CRFE 0xFE
#define SIO_CRFF 0xFF
//
// Super I/O Protocol Function Prototype Define
//
typedef
VOID
(EFIAPI *SET_POWER) (
IN BOOLEAN OnOff
);
typedef
VOID
(EFIAPI *GET_CURRENT_RESOURCE) (
IN EFI_ISA_ACPI_RESOURCE *ResourceList
);
typedef
VOID
(EFIAPI *SET_RESOURCE) (
IN EFI_ISA_ACPI_RESOURCE *ResourceList
);
typedef
VOID
(EFIAPI *ENABLE_DEVICE) (
IN BOOLEAN Enable
);
typedef
VOID
(EFIAPI *CONFIG_REG_WRITE) (
IN UINT8 Register,
IN UINT8 Value8
);
typedef
UINT8
(EFIAPI *CONFIG_REG_READ) (
IN UINT8 Register
);
typedef
EFI_STATUS
(EFIAPI *LPC_INIT) (
VOID
);
typedef
EFI_STATUS
(EFIAPI *DEVICE_INIT) (
IN UINTN Index
);
typedef
EFI_STATUS
(EFIAPI *SET_DEVICE_POWER) (
IN UINTN Index,
IN BOOLEAN OnOff
);
typedef
EFI_STATUS
(EFIAPI *SET_DEVICE_RESOURCE) (
IN UINTN Index,
IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList
);
typedef
EFI_STATUS
(EFIAPI *ENABLE_DEVICE_DEVICE) (
IN UINTN Index,
IN BOOLEAN Enable
);
typedef
VOID
(EFIAPI *EFI_DEVICE_INIT) (
VOID
);
typedef struct {
UINT8 UID;
BOOLEAN ScriptFlag;
UINT16 ConfigPort;
UINT16 IndexPort;
UINT16 DataPort;
} EFI_UNI_SIO;
typedef struct {
SET_POWER SetPower;
GET_CURRENT_RESOURCE GetCurrentResource;
SET_RESOURCE SetResource;
ENABLE_DEVICE EnableDevice;
CONFIG_REG_READ ConfigRegRead;
CONFIG_REG_WRITE ConfigRegWrite;
} EFI_SIO_ISA_FUNCTION;
typedef struct {
EFI_ISA_ACPI_DEVICE_ID Device;
EFI_SIO_ISA_FUNCTION *IsaFunction;
EFI_DEVICE_INIT InitDevice;
} EFI_ISA_ACPI_DEVICE_LIST;
typedef struct {
LPC_INIT LpcInit;
DEVICE_INIT DeviceInit;
SET_DEVICE_POWER SetDevicePower;
SET_DEVICE_RESOURCE SetDeviceResource;
ENABLE_DEVICE_DEVICE EnableDevice;
} EFI_ISA_DEVICE_FUNCTION;
#endif