[AMD Official Use Only - General] Hi Mike, please note there is V5 of IPMI KCS that fixes a typo found by Tinh. Thanks @Tinh, would you like to provide your R-B or Acked-by tag for V5? Thanks Abner > -----Original Message----- > From: Kinney, Michael D > Sent: Saturday, March 25, 2023 3:37 AM > To: Chang, Abner ; devel@edk2.groups.io > Cc: Gao, Liming ; Liu, Zhiguang > ; Nickle Wang ; Igor > Kulchytskyy ; Oram, Isaac W ; > Attar, AbdulLateef (Abdul Lateef) ; Kinney, > Michael D > Subject: RE: [PATCH v4] MdePkg/Include: Add IPMI KCS definitions > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > Reviewed-by: Michael D Kinney > > > -----Original Message----- > > From: abner.chang@amd.com > > Sent: Thursday, March 23, 2023 8:16 PM > > To: devel@edk2.groups.io > > Cc: Kinney, Michael D ; Gao, Liming > > ; Liu, Zhiguang ; > > Nickle Wang ; Igor Kulchytskyy ; > > Oram, Isaac W ; Abdul Lateef Attar > > > > Subject: [PATCH v4] MdePkg/Include: Add IPMI KCS definitions > > > > From: Abner Chang > > > > BZ #4354 > > This change adds definitions for IPMI KCS. > > > > Spec ref: > > > https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/i > pm > > i-second-gen-interface-spec-v2-rev1-1.html > > > > Signed-off-by: Abner Chang > > Cc: Michael D Kinney > > Cc: Liming Gao > > Cc: Zhiguang Liu > > Cc: Nickle Wang > > Cc: Igor Kulchytskyy > > Cc: Isaac Oram > > Cc: Abdul Lateef Attar > > Acked-by: Isaac Oram > > --- > > MdePkg/MdePkg.dec | 6 ++ > > MdePkg/Include/IndustryStandard/IpmiKcs.h | 76 > > +++++++++++++++++++++++ > > 2 files changed, 82 insertions(+) > > create mode 100644 MdePkg/Include/IndustryStandard/IpmiKcs.h > > > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index > > 2d643bede1d..5cf04bc0cb6 100644 > > --- a/MdePkg/MdePkg.dec > > +++ b/MdePkg/MdePkg.dec > > @@ -9,6 +9,7 @@ > > # (C) Copyright 2016 - 2021 Hewlett Packard Enterprise Development > > LP
# Copyright (c) 2022, Loongson Technology Corporation Limited. > > All rights reserved.
# Copyright (c) 2021 - 2022, Arm Limited. > > All rights reserved.
> > +# Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > > +reserved.
> > # > > # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -2342,6 +2343,11 > > @@ > > # @Prompt Memory Address of GuidedExtractHandler Table. > > > > > gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|0x1000 > 000 > > |UINT64|0x30001015 > > > > + ## This value is the IPMI KCS Interface I/O base address used to transmit > IPMI commands. > > + # The value of 0xca2 is the default I/O base address defined in IPMI > specification. > > + # @Prompt IPMI KCS Interface I/O Base Address > > + > > + > gEfiMdePkgTokenSpaceGuid.PcdIpmiKcsIoBaseAddress|0xca2|UINT16|0x00 > 00 > > + 0031 > > + > > [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] > > ## This value is used to set the base address of PCI express hierarchy. > > # @Prompt PCI Express Base Address. > > diff --git a/MdePkg/Include/IndustryStandard/IpmiKcs.h > > b/MdePkg/Include/IndustryStandard/IpmiKcs.h > > new file mode 100644 > > index 00000000000..1e1be787617 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/IpmiKcs.h > > @@ -0,0 +1,76 @@ > > +/** @file > > + IPMI KCS Register Definitions > > + > > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > > + reserved.
> > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > + @par Revision Reference: > > + IPMI Specification > > + Version 2.0, Rev. 1.1 > > + > > > +https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ > ip > > +mi-second-gen-interface-spec-v2-rev1-1.html > > +**/ > > + > > +#ifndef IPMI_KCS_H_ > > +#define IPMI_KCS_H_ > > + > > +#define IPMI_KCS_STATUS_REGISTER_OFFSET 1 > > +#define IPMI_KCS_COMMAND_REGISTER_OFFSET 1 > > +#define IPMI_KCS_DATA_OUT_REGISTER_OFFSET 0 > > +#define IPMI_KCS_DATA_IN_REGISTER_OFFSET 0 > > + > > +/// > > +/// IPMI KCS Interface Status Bits > > +/// > > +#define IPMI_KCS_OBF BIT0 > > +#define IPMI_KCS_IBF BIT1 > > +#define IPMI_KCS_SMS_ATN BIT2 > > +#define IPMI_KCS_COMMAND_DATA BIT3 > > +#define IPMI_KCS_OEM1 BIT4 > > +#define IPMI_KCS_OEM2 BIT5 > > +#define IPMI_KCS_S0 BIT6 > > +#define IPMI_KCS_S1 BIT7 > > + > > +/// > > +/// IPMI KCS Interface Control Codes > > +/// > > +#define IPMI_KCS_CONTROL_CODE_GET_STATUS_ABORT 0x60 > > +#define IPMI_KCS_CONTROL_CODE_WRITE_START 0x61 > > +#define IPMI_KCS_CONTROL_CODE_WRITE_END 0x62 > > +#define IPMI_KCS_CONTROL_CODE_READ 0x68 > > + > > +/// > > +/// Status Codes > > +/// > > +#define IPMI_KCS_STATUS_NO_ERROR 0x00 > > +#define IPMI_KCS_STATUS_ABORT 0x01 > > +#define IPMI_KCS_STATUS_ILLEGAL 0x02 > > +#define IPMI_KCS_STATUS_LENGTH_ERROR 0x06 > > +#define IPMI_KCS_STATUS_UNSPECIFIED 0xFF > > + > > +/// > > +/// KCS Interface State Bit > > +/// > > +typedef enum { > > + IPMI_KCS_IDLE_STATE = 0, > > + IPMI_KCS_READ_STATE, > > + IPMI_KCS_WRITE_STATE, > > + IPMI_KCS_ERROR_STATE > > +} IPMI_KCS_STATE; > > + > > +/// > > +/// IPMI KCS Interface Request Format /// typedef struct { > > + UINT8 NetFunc; > > + UINT8 Command; > > + UINT8 Data[]; > > +} IPMI_KCS_RESQUEST_HEADER; > > + > > +/// > > +/// IPMI KCS Interface Response Format /// typedef struct { > > + UINT8 NetFunc; > > + UINT8 Command; > > +} IPMI_KCS_RESPONSE_HEADER; > > +#endif > > -- > > 2.37.1.windows.1