mirror of
https://github.com/torvalds/linux.git
synced 2024-12-14 15:13:52 +00:00
aa276781a6
Texas Instrument's System Control Interface (TI-SCI) Message Protocol is used in Texas Instrument's System on Chip (SoC) such as those in keystone family K2G SoC to communicate between various compute processors with a central system controller entity. TI-SCI message protocol provides support for management of various hardware entities within the SoC. Add support driver to allow communication with system controller entity within the SoC using the mailbox client. We introduce the basic registration and query capability for the driver protocol as part of this change. Subsequent patches add in functionality specific to the TI-SCI features. Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Tero Kristo <t-kristo@ti.com>
94 lines
3.4 KiB
C
94 lines
3.4 KiB
C
/*
|
|
* 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) 2015-2016 Texas Instruments Incorporated - http://www.ti.com/
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* Neither the name of Texas Instruments Incorporated nor the names of
|
|
* its contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
*/
|
|
|
|
#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
|
|
|
|
/**
|
|
* 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_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;
|
|
|
|
#endif /* __TI_SCI_H */
|