blob: ed09d5b803b4fdbb44b1f3e4233d96f442492f7d [file] [log] [blame]
/*
* Copyright (c) 2020 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __ESPI_OOB_HANDLER_H__
#define __ESPI_OOB_HANDLER_H__
/* eSPI host entity address */
#define PCH_DEST_SLV_ADDR 0x02u
#define SRC_SLV_ADDR 0x21u
#define OOB_RESPONSE_SENDER_INDEX 0x02u
#define OOB_RESPONSE_DATA_INDEX 0x04u
/* Temperature command opcode */
#define OOB_CMDCODE 0x01u
#define OOB_RESPONSE_LEN 0x05u
/* Maximum bytes for OOB transactions */
#define MAX_ESPI_BUF_LEN 80u
#define MIN_GET_TEMP_CYCLES 5u
/* 100ms */
#define MAX_OOB_TIMEOUT 100ul
void oob_rx_handler(const struct device *dev, struct espi_callback *cb,
struct espi_event event);
/**
* @brief Retrieve PCH temperature over OOB channel.
* Assumes OOB Tx and Rx as synchronous operation.
*
* @param dev eSPI driver handle.
*
* @retval 0 If successful.
* @retval -ENOTSUP returned when OOB channel is not supported.
* @retval -EINVAL is returned when OOB parameters are invalid.
*
*/
int get_pch_temp_sync(const struct device *dev);
/**
* @brief Retrieve PCH temperature over OOB channel.
* Assumes OOB Tx and Rx as synchronous operation.
*
* @param dev eSPI driver handle.
*
* @retval 0 If successful.
* @retval -ENOTSUP returned when OOB channel is not supported.
* @retval -ETIMEOUT OOB operations could not be started.
*
*/
int get_pch_temp_async(const struct device *dev);
#endif /* __ESPI_OOB_HANDLER_H__ */