/** @file ISH policy Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _ISH_CONFIG_H_ #define _ISH_CONFIG_H_ #define ISH_PREMEM_CONFIG_REVISION 1 #define ISH_CONFIG_REVISION 1 extern EFI_GUID gIshPreMemConfigGuid; extern EFI_GUID gIshConfigGuid; #pragma pack (push,1) /** ISH GPIO settings **/ typedef struct { /** GPIO signals pin muxing settings. If signal can be enable only on a single pin then this parameter should be set to 0. Refer to GPIO_*_MUXING_ISH_*x_* in GpioPins*.h for supported settings on a given platform **/ UINT32 PinMux; ///< GPIO Pin mux configuration. Refer to GPIO_*_MUXING_ISH_*x_MOSI_* /** GPIO Pads Internal Termination. For more information please see Platform Design Guide. Check GPIO_ELECTRICAL_CONFIG for reference **/ UINT32 PadTermination; } ISH_GPIO_CONFIG; /** SPI signals settings. **/ typedef struct { ISH_GPIO_CONFIG Mosi; ///< MOSI Pin configuration. ISH_GPIO_CONFIG Miso; ///< MISO Pin configuration. ISH_GPIO_CONFIG Clk; ///< CLK Pin configuration. ISH_GPIO_CONFIG Cs[PCH_MAX_ISH_SPI_CS_PINS]; ///< CS Pin configuration. } ISH_SPI_PIN_CONFIG; /** UART signals settings. **/ typedef struct { ISH_GPIO_CONFIG Rx; ///< RXD Pin configuration. ISH_GPIO_CONFIG Tx; ///< TXD Pin configuration. ISH_GPIO_CONFIG Rts; ///< RTS Pin configuration. ISH_GPIO_CONFIG Cts; ///< CTS Pin configuration. } ISH_UART_PIN_CONFIG; /** I2C signals settings. **/ typedef struct { ISH_GPIO_CONFIG Sda; ///< SDA Pin configuration. ISH_GPIO_CONFIG Scl; ///< SCL Pin configuration. } ISH_I2C_PIN_CONFIG; /** Struct contains GPIO pins assigned and signal settings of SPI **/ typedef struct { UINT8 Enable; ///< ISH SPI GPIO pins assigned: 0: False 1: True UINT8 CsEnable[PCH_MAX_ISH_SPI_CS_PINS]; ///< ISH SPI CS pins assigned: 0: False 1: True UINT16 RsvdField0; ///< Reserved field ISH_SPI_PIN_CONFIG PinConfig; } ISH_SPI; /** Struct contains GPIO pins assigned and signal settings of UART **/ typedef struct { UINT32 Enable : 1; ///< ISH UART GPIO pins assigned: 0: False 1: True UINT32 RsvdBits0 : 31; ///< Reserved Bits ISH_UART_PIN_CONFIG PinConfig; } ISH_UART; /** Struct contains GPIO pins assigned and signal settings of I2C **/ typedef struct { UINT32 Enable : 1; ///< ISH I2C GPIO pins assigned: 0: False 1: True UINT32 RsvdBits0 : 31; ///< Reserved Bits ISH_I2C_PIN_CONFIG PinConfig; } ISH_I2C; /** Struct contains GPIO pins assigned and signal settings of GP **/ typedef struct { UINT32 Enable : 1; ///< ISH GP GPIO pins assigned: 0: False 1: True UINT32 RsvdBits0 : 31; ///< Reserved Bits ISH_GPIO_CONFIG PinConfig; } ISH_GP; /// /// The ISH_CONFIG block describes Integrated Sensor Hub device. /// typedef struct { CONFIG_BLOCK_HEADER Header; ///< Config Block Header ISH_SPI Spi[PCH_MAX_ISH_SPI_CONTROLLERS]; ISH_UART Uart[PCH_MAX_ISH_UART_CONTROLLERS]; ISH_I2C I2c[PCH_MAX_ISH_I2C_CONTROLLERS]; ISH_GP Gp[PCH_MAX_ISH_GP_PINS]; UINT32 PdtUnlock : 1; ///< ISH PDT Unlock Msg: 0: False 1: True UINT32 RsvdBits0 : 31; ///< Reserved Bits } ISH_CONFIG; /// /// Premem Policy for Integrated Sensor Hub device. /// typedef struct { CONFIG_BLOCK_HEADER Header; ///< Config Block Header /** ISH Controler 0: Disable; 1: Enable. For Desktop sku, the ISH POR should be disabled. 0:Disable . **/ UINT32 Enable : 1; UINT32 RsvdBits0 : 31; ///< Reserved Bits } ISH_PREMEM_CONFIG; #pragma pack (pop) #endif // _ISH_CONFIG_H_