Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
protocol.h
Go to the documentation of this file.
1/*
2 * Copyright 2024 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_
14#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_
15
22
23#include <zephyr/device.h>
25#include <stdint.h>
26#include <errno.h>
27
29#define SCMI_SHORT_NAME_MAX_SIZE 16
30
42#define SCMI_MESSAGE_HDR_MAKE(id, type, proto, token) \
43 (SCMI_FIELD_MAKE(id, GENMASK(7, 0), 0) | \
44 SCMI_FIELD_MAKE(type, GENMASK(1, 0), 8) | \
45 SCMI_FIELD_MAKE(proto, GENMASK(7, 0), 10) | \
46 SCMI_FIELD_MAKE(token, GENMASK(9, 0), 18))
47
48struct scmi_channel;
49
61
79
89
107
120 union {
123 struct {
128 };
129 };
130};
131
142
150int scmi_status_to_errno(int scmi_status);
151
173 struct scmi_message *msg, struct scmi_message *reply,
174 bool use_polling);
175
186
197
209 uint32_t message_id, uint32_t *attributes);
210
221
225
231
232#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_ */
Header file for SCMI Utility Macros.
System error numbers.
scmi_message_type
SCMI message type.
Definition protocol.h:53
int scmi_protocol_message_attributes_get(struct scmi_protocol *proto, uint32_t message_id, uint32_t *attributes)
Get protocol message attributes.
scmi_status_code
SCMI status codes.
Definition protocol.h:65
scmi_common_cmd
SCMI common command.
Definition protocol.h:83
int scmi_protocol_get_version(struct scmi_protocol *proto, uint32_t *version)
Get protocol version.
int scmi_protocol_attributes_get(struct scmi_protocol *proto, uint32_t *attributes)
Get protocol attributes.
int scmi_send_message(struct scmi_protocol *proto, struct scmi_message *msg, struct scmi_message *reply, bool use_polling)
Send an SCMI message and wait for its reply.
int scmi_protocol_version_negotiate(struct scmi_protocol *proto, uint32_t version)
Negotiate protocol version.
int scmi_status_to_errno(int scmi_status)
Convert an SCMI status code to its Linux equivalent (if possible).
@ SCMI_NOTIFICATION
notification message
Definition protocol.h:59
@ SCMI_DELAYED_REPLY
delayed reply message
Definition protocol.h:57
@ SCMI_COMMAND
command message
Definition protocol.h:55
@ SCMI_SUCCESS
Definition protocol.h:66
@ SCMI_INVALID_PARAMETERS
Definition protocol.h:68
@ SCMI_BUSY
Definition protocol.h:72
@ SCMI_GENERIC_ERROR
Definition protocol.h:74
@ SCMI_HARDWARE_ERROR
Definition protocol.h:75
@ SCMI_OUT_OF_RANGE
Definition protocol.h:71
@ SCMI_PROTOCOL_ERROR
Definition protocol.h:76
@ SCMI_NOT_FOUND
Definition protocol.h:70
@ SCMI_DENIED
Definition protocol.h:69
@ SCMI_IN_USE
Definition protocol.h:77
@ SCMI_NOT_SUPPORTED
Definition protocol.h:67
@ SCMI_COMMS_ERROR
Definition protocol.h:73
@ SCMI_MSG_NEGOTIATE_PROTOCOL_VERSION
Definition protocol.h:87
@ SCMI_MSG_PROTOCOL_VERSION
Definition protocol.h:84
@ SCMI_MSG_PROTOCOL_ATTRIBUTES
Definition protocol.h:85
@ SCMI_MSG_MESSAGE_ATTRIBUTES
Definition protocol.h:86
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
SCMI channel structure.
Definition transport.h:52
SCMI message structure.
Definition protocol.h:137
uint32_t hdr
Definition protocol.h:138
uint32_t len
Definition protocol.h:139
void * content
Definition protocol.h:140
SCMI protocol version.
Definition protocol.h:118
uint16_t major
minor protocol revision
Definition protocol.h:127
uint16_t minor
major protocol revision
Definition protocol.h:125
uint32_t raw
Raw 32-bit protocol version value.
Definition protocol.h:122
SCMI protocol structure.
Definition protocol.h:95
uint32_t version
protocol supported version
Definition protocol.h:105
const struct device * transport
transport layer device
Definition protocol.h:101
struct scmi_channel * tx
TX channel.
Definition protocol.h:99
void * data
protocol private data
Definition protocol.h:103
uint32_t id
protocol ID
Definition protocol.h:97