Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
mctp_i3c_target.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 */
7
13
14#ifndef ZEPHYR_INCLUDE_PMCI_MCTP_MCTP_I3C_TARGET_H_
15#define ZEPHYR_INCLUDE_PMCI_MCTP_MCTP_I3C_TARGET_H_
16
17#include <stdint.h>
18#include <zephyr/kernel.h>
19#include <zephyr/device.h>
20#include <zephyr/drivers/i3c.h>
22#include <libmctp.h>
23
29 struct mctp_binding binding;
30 const struct device *i3c;
31 struct i3c_target_config i3c_target_cfg;
32 uint8_t endpoint_id;
33 struct mctp_pktbuf *tx_pkt;
34 struct k_sem *tx_lock;
35 struct k_sem *tx_complete;
36 struct mctp_pktbuf *rx_pkt;
37 uint8_t tx_storage[MCTP_PKTBUF_SIZE(MCTP_I3C_MAX_PKT_SIZE)] PKTBUF_STORAGE_ALIGN;
39};
40
42extern const struct i3c_target_callbacks mctp_i3c_target_callbacks;
43int mctp_i3c_target_start(struct mctp_binding *binding);
44int mctp_i3c_target_tx(struct mctp_binding *binding, struct mctp_pktbuf *pkt);
46
53#define MCTP_I3C_TARGET_DT_DEFINE(_name, _node_id) \
54 K_SEM_DEFINE(_name##_tx_lock, 1, 1); \
55 K_SEM_DEFINE(_name##_tx_complete, 0, 1); \
56 struct mctp_binding_i3c_target _name = { \
57 .binding = { \
58 .name = STRINGIFY(_name), .version = 1, \
59 .start = mctp_i3c_target_start, \
60 .tx = mctp_i3c_target_tx, \
61 .pkt_size = MCTP_I3C_MAX_PKT_SIZE, \
62 .tx_storage = _name.tx_storage, \
63 }, \
64 .i3c = DEVICE_DT_GET(DT_PHANDLE(_node_id, i3c)), \
65 .i3c_target_cfg = { \
66 .callbacks = &mctp_i3c_target_callbacks, \
67 }, \
68 .endpoint_id = DT_PROP(_node_id, endpoint_id), \
69 .tx_lock = &_name##_tx_lock, \
70 .tx_complete = &_name##_tx_complete, \
71 };
72
73#endif /* ZEPHYR_INCLUDE_PMCI_MCTP_MCTP_I3C_TARGET_H_ */
Main header file for I3C (Inter-Integrated Circuit) driver API.
Public kernel APIs.
Internal definitions shared by the MCTP I3C controller and target bindings.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
Definition target_device.h:106
Structure describing a device that supports the I3C target API.
Definition target_device.h:101
Semaphore structure.
Definition kernel.h:3798
An MCTP binding for Zephyr's I3C target interface using GPIO.
Definition mctp_i3c_target.h:27