2018-08-27 19:27:32 +09:00
|
|
|
/* SPDX-License-Identifier: BSD-3-Clause */
|
|
|
|
/*
|
|
|
|
* Texas Instruments System Control Interface (TISCI) Protocol
|
|
|
|
*
|
|
|
|
* Communication protocol with TI SCI hardware
|
|
|
|
* The system works in a message response protocol
|
|
|
|
* See: http://processors.wiki.ti.com/index.php/TISCI for details
|
|
|
|
*
|
|
|
|
* Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
|
|
|
|
* Based on drivers/firmware/ti_sci.h from Linux.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __TI_SCI_H
|
|
|
|
#define __TI_SCI_H
|
|
|
|
|
|
|
|
/* Generic Messages */
|
|
|
|
#define TI_SCI_MSG_ENABLE_WDT 0x0000
|
|
|
|
#define TI_SCI_MSG_WAKE_RESET 0x0001
|
|
|
|
#define TI_SCI_MSG_VERSION 0x0002
|
|
|
|
#define TI_SCI_MSG_WAKE_REASON 0x0003
|
|
|
|
#define TI_SCI_MSG_GOODBYE 0x0004
|
|
|
|
#define TI_SCI_MSG_SYS_RESET 0x0005
|
|
|
|
#define TI_SCI_MSG_BOARD_CONFIG 0x000b
|
2018-08-27 19:27:33 +09:00
|
|
|
#define TI_SCI_MSG_BOARD_CONFIG_RM 0x000c
|
|
|
|
#define TI_SCI_MSG_BOARD_CONFIG_SECURITY 0x000d
|
|
|
|
#define TI_SCI_MSG_BOARD_CONFIG_PM 0x000e
|
2018-08-27 19:27:32 +09:00
|
|
|
|
|
|
|
/**
|
|
|
|
* struct ti_sci_msg_hdr - Generic Message Header for All messages and responses
|
|
|
|
* @type: Type of messages: One of TI_SCI_MSG* values
|
|
|
|
* @host: Host of the message
|
|
|
|
* @seq: Message identifier indicating a transfer sequence
|
|
|
|
* @flags: Flag for the message
|
|
|
|
*/
|
|
|
|
struct ti_sci_msg_hdr {
|
|
|
|
u16 type;
|
|
|
|
u8 host;
|
|
|
|
u8 seq;
|
|
|
|
#define TI_SCI_MSG_FLAG(val) (1 << (val))
|
|
|
|
#define TI_SCI_FLAG_REQ_GENERIC_NORESPONSE 0x0
|
|
|
|
#define TI_SCI_FLAG_REQ_ACK_ON_RECEIVED TI_SCI_MSG_FLAG(0)
|
|
|
|
#define TI_SCI_FLAG_REQ_ACK_ON_PROCESSED TI_SCI_MSG_FLAG(1)
|
|
|
|
#define TI_SCI_FLAG_RESP_GENERIC_NACK 0x0
|
|
|
|
#define TI_SCI_FLAG_RESP_GENERIC_ACK TI_SCI_MSG_FLAG(1)
|
|
|
|
/* Additional Flags */
|
|
|
|
u32 flags;
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* struct ti_sci_secure_msg_hdr - Header that prefixes all TISCI messages sent
|
|
|
|
* via secure transport.
|
|
|
|
* @checksum: crc16 checksum for the entire message
|
|
|
|
* @reserved: Reserved for future use.
|
|
|
|
*/
|
|
|
|
struct ti_sci_secure_msg_hdr {
|
|
|
|
u16 checksum;
|
|
|
|
u16 reserved;
|
|
|
|
} __packed;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* struct ti_sci_msg_resp_version - Response for a message
|
|
|
|
* @hdr: Generic header
|
|
|
|
* @firmware_description: String describing the firmware
|
|
|
|
* @firmware_revision: Firmware revision
|
|
|
|
* @abi_major: Major version of the ABI that firmware supports
|
|
|
|
* @abi_minor: Minor version of the ABI that firmware supports
|
|
|
|
*
|
|
|
|
* In general, ABI version changes follow the rule that minor version increments
|
|
|
|
* are backward compatible. Major revision changes in ABI may not be
|
|
|
|
* backward compatible.
|
|
|
|
*
|
|
|
|
* Response to a generic message with message type TI_SCI_MSG_VERSION
|
|
|
|
*/
|
|
|
|
struct ti_sci_msg_resp_version {
|
|
|
|
struct ti_sci_msg_hdr hdr;
|
|
|
|
char firmware_description[32];
|
|
|
|
u16 firmware_revision;
|
|
|
|
u8 abi_major;
|
|
|
|
u8 abi_minor;
|
|
|
|
} __packed;
|
|
|
|
|
2018-08-27 19:27:33 +09:00
|
|
|
/**
|
|
|
|
* struct ti_sci_msg_board_config - Board configuration message
|
|
|
|
* @hdr: Generic Header
|
|
|
|
* @boardcfgp_low: Lower 32 bit of the pointer pointing to the board
|
|
|
|
* configuration data
|
|
|
|
* @boardcfgp_high: Upper 32 bit of the pointer pointing to the board
|
|
|
|
* configuration data
|
|
|
|
* @boardcfg_size: Size of board configuration data object
|
|
|
|
* Request type is TI_SCI_MSG_BOARD_CONFIG, responded with a generic
|
|
|
|
* ACK/NACK message.
|
|
|
|
*/
|
|
|
|
struct ti_sci_msg_board_config {
|
|
|
|
struct ti_sci_msg_hdr hdr;
|
|
|
|
u32 boardcfgp_low;
|
|
|
|
u32 boardcfgp_high;
|
|
|
|
u16 boardcfg_size;
|
|
|
|
} __packed;
|
|
|
|
|
2018-08-27 19:27:32 +09:00
|
|
|
#endif /* __TI_SCI_H */
|