Zephyr Project API  3.2.0
A Scalable Open Source RTOS
ccc.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_
8#define ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_
9
17#include <zephyr/types.h>
18#include <zephyr/device.h>
19#include <zephyr/toolchain.h>
20#include <zephyr/sys/util.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
27#define I3C_CCC_BROADCAST_MAX_ID 0x7FU
28
34#define I3C_CCC_ENEC(broadcast) ((broadcast) ? 0x00U : 0x80U)
35
41#define I3C_CCC_DISEC(broadcast) ((broadcast) ? 0x01U : 0x81U)
42
49#define I3C_CCC_ENTAS(as, broadcast) (((broadcast) ? 0x02U : 0x82U) + (as))
50
56#define I3C_CCC_ENTAS0(broadcast) I3C_CCC_ENTAS(0, broadcast)
57
63#define I3C_CCC_ENTAS1(broadcast) I3C_CCC_ENTAS(1, broadcast)
64
70#define I3C_CCC_ENTAS2(broadcast) I3C_CCC_ENTAS(2, broadcast)
71
77#define I3C_CCC_ENTAS3(broadcast) I3C_CCC_ENTAS(3, broadcast)
78
80#define I3C_CCC_RSTDAA 0x06U
81
83#define I3C_CCC_ENTDAA 0x07U
84
86#define I3C_CCC_DEFTGTS 0x08U
87
93#define I3C_CCC_SETMWL(broadcast) ((broadcast) ? 0x09U : 0x89U)
94
100#define I3C_CCC_SETMRL(broadcast) ((broadcast) ? 0x0AU : 0x8AU)
101
103#define I3C_CCC_ENTTM 0x0BU
104
106#define I3C_CCC_SETBUSCON 0x0CU
107
113#define I3C_CCC_ENDXFER(broadcast) ((broadcast) ? 0x12U : 0x92U)
114
116#define I3C_CCC_ENTHDR(x) (0x20U + (x))
117
119#define I3C_CCC_ENTHDR0 0x20U
120
122#define I3C_CCC_ENTHDR1 0x21U
123
125#define I3C_CCC_ENTHDR2 0x22U
126
128#define I3C_CCC_ENTHDR3 0x23U
129
131#define I3C_CCC_ENTHDR4 0x24U
132
134#define I3C_CCC_ENTHDR5 0x25U
135
137#define I3C_CCC_ENTHDR6 0x26U
138
140#define I3C_CCC_ENTHDR7 0x27U
141
147#define I3C_CCC_SETXTIME(broadcast) ((broadcast) ? 0x28U : 0x98U)
148
150#define I3C_CCC_SETAASA 0x29U
151
157#define I3C_CCC_RSTACT(broadcast) ((broadcast) ? 0x2AU : 0x9AU)
158
160#define I3C_CCC_DEFGRPA 0x2BU
161
167#define I3C_CCC_RSTGRPA(broadcast) ((broadcast) ? 0x2CU : 0x9CU)
168
170#define I3C_CCC_MLANE(broadcast) ((broadcast) ? 0x2DU : 0x9DU)
171
178#define I3C_CCC_VENDOR(broadcast, id) ((id) + ((broadcast) ? 0x61U : 0xE0U))
179
181#define I3C_CCC_SETDASA 0x87U
182
184#define I3C_CCC_SETNEWDA 0x88U
185
187#define I3C_CCC_GETMWL 0x8BU
188
190#define I3C_CCC_GETMRL 0x8CU
191
193#define I3C_CCC_GETPID 0x8DU
194
196#define I3C_CCC_GETBCR 0x8EU
197
199#define I3C_CCC_GETDCR 0x8FU
200
202#define I3C_CCC_GETSTATUS 0x90U
203
205#define I3C_CCC_GETACCCR 0x91U
206
208#define I3C_CCC_SETBRGTGT 0x93U
209
211#define I3C_CCC_GETMXDS 0x94U
212
214#define I3C_CCC_GETCAPS 0x95U
215
217#define I3C_CCC_SETROUTE 0x96U
218
220#define I3C_CCC_D2DXFER 0x97U
221
223#define I3C_CCC_GETXTIME 0x99U
224
226#define I3C_CCC_SETGRPA 0x9BU
227
228struct i3c_device_desc;
229
236
239
248
250 size_t data_len;
251};
252
257 struct {
262
270
272 size_t data_len;
274
275 struct {
285
289};
290
305} __packed;
306
307/* For Enable Events */
308#define I3C_CCC_ENEC_EVT_ENINTR BIT(0)
309#define I3C_CCC_ENEC_EVT_ENCR BIT(1)
310#define I3C_CCC_ENEC_EVT_ENHJ BIT(3)
311
312#define I3C_CCC_ENEC_EVT_ALL \
313 (I3C_CCC_ENEC_EVT_ENINTR | I3C_CCC_ENEC_EVT_ENCR | I3C_CCC_ENEC_EVT_ENHJ)
314
315/* For Disable Events */
316#define I3C_CCC_DISEC_EVT_DISINTR BIT(0)
317#define I3C_CCC_DISEC_EVT_DISCR BIT(1)
318#define I3C_CCC_DISEC_EVT_DISHJ BIT(3)
319
320#define I3C_CCC_DISEC_EVT_ALL \
321 (I3C_CCC_DISEC_EVT_DISINTR | I3C_CCC_DISEC_EVT_DISCR | I3C_CCC_DISEC_EVT_DISHJ)
322
323/*
324 * Events for both enabling and disabling since
325 * they have the same bits.
326 */
327#define I3C_CCC_EVT_INTR BIT(0)
328#define I3C_CCC_EVT_CR BIT(1)
329#define I3C_CCC_EVT_HJ BIT(3)
330
331#define I3C_CCC_EVT_ALL \
332 (I3C_CCC_EVT_INTR | I3C_CCC_EVT_CR | I3C_CCC_EVT_HJ)
333
345} __packed;
346
358
361} __packed;
362
372
375
378
381};
382
392
393 union {
399
402 };
403
406
409};
410
422
425} __packed;
426
456} __packed;
457
468} __packed;
469
476} __packed;
477
484} __packed;
485
486
493};
494
498
501
506 struct {
522
523 union {
530
544
547} __packed;
548
549#define I3C_CCC_GETSTATUS_PROTOCOL_ERR BIT(5)
550
551#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT 6
552
553#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK \
554 (0x03U << I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT)
555
556#define I3C_CCC_GETSTATUS_ACTIVITY_MODE(status) \
557 (((status) & I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK) \
558 >> I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT)
559
560#define I3C_CCC_GETSTATUS_NUM_INT_SHIFT 0
561
562#define I3C_CCC_GETSTATUS_NUM_INT_MASK \
563 (0x0FU << I3C_CCC_GETSTATUS_NUM_INT_SHIFT)
564
565#define I3C_CCC_GETSTATUS_NUM_INT(status) \
566 (((status) & I3C_CCC_GETSTATUS_NUM_INT_MASK) \
567 >> I3C_CCC_GETSTATUS_NUM_INT_SHIFT)
568
569#define I3C_CCC_GETSTATUS_PRECR_DEEP_SLEEP_DETECTED BIT(0)
570
571#define I3C_CCC_GETSTATUS_PRECR_HANDOFF_DELAY_NACK BIT(1)
572
584
594} __packed;
595
606
609} __packed;
610
617 struct {
620
624
625 struct {
628
631
639
640 struct {
647
655} __packed;
656
657#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_MAX 0
658#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_8MHZ 1
659#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_6MHZ 2
660#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_4MHZ 3
661#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_2MHZ 4
662
663#define I3C_CCC_GETMXDS_TSCO_8NS 0
664#define I3C_CCC_GETMXDS_TSCO_9NS 1
665#define I3C_CCC_GETMXDS_TSCO_10NS 2
666#define I3C_CCC_GETMXDS_TSCO_11NS 3
667#define I3C_CCC_GETMXDS_TSCO_12NS 4
668#define I3C_CCC_GETMXDS_TSCO_GT_12NS 7
669
670#define I3C_CCC_GETMXDS_MAXWR_DEFINING_BYTE_SUPPORT BIT(3)
671
672#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_SHIFT 0
673
674#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK \
675 (0x07U << I3C_CCC_GET_MXDS_MAXWR_MAX_SDR_FSCL_SHIFT)
676
677#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL(maxwr) \
678 (((maxwr) & \
679 I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK) \
680 >> I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_SHIFT)
681
682#define I3C_CCC_GETMXDS_MAXRD_W2R_PERMITS_STOP_BETWEEN BIT(6)
683
684#define I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT 3
685
686#define I3C_CCC_GETMXDS_MAXRD_TSCO_MASK \
687 (0x07U << I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT)
688
689#define I3C_CCC_GETMXDS_MAXRD_TSCO(maxrd) \
690 (((maxrd) & I3C_CCC_GETMXDS_MAXRD_TSCO_MASK) \
691 >> I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT)
692
693#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_SHIFT 0
694
695#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK \
696 (0x07U << I3C_CCC_GET_MXDS_MAXRD_MAX_SDR_FSCL_SHIFT)
697
698#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL(maxrd) \
699 (((maxrd) & \
700 I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK) \
701 >> I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_SHIFT)
702
703#define I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE BIT(2)
704
705#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_SHIFT 0
706
707#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK \
708 (0x03U << I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE_SHIFT)
709
710#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE(crhdly1) \
711 (((crhdly1) & \
712 I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE_MASK) \
713 >> I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE_SHIFT)
714
725} __packed;
726
727#define I3C_CCC_GETCAPS1_HDR_DDR BIT(0)
728#define I3C_CCC_GETCAPS1_HDR_BT BIT(3)
729
730#define I3C_CCC_GETCAPS1_HDR_MODE(x) BIT(x)
731#define I3C_CCC_GETCAPS1_HDR_MODE0 BIT(0)
732#define I3C_CCC_GETCAPS1_HDR_MODE1 BIT(1)
733#define I3C_CCC_GETCAPS1_HDR_MODE2 BIT(2)
734#define I3C_CCC_GETCAPS1_HDR_MODE3 BIT(3)
735#define I3C_CCC_GETCAPS1_HDR_MODE4 BIT(4)
736#define I3C_CCC_GETCAPS1_HDR_MODE5 BIT(5)
737#define I3C_CCC_GETCAPS1_HDR_MODE6 BIT(6)
738#define I3C_CCC_GETCAPS1_HDR_MODE7 BIT(7)
739
740#define I3C_CCC_GETCAPS2_HDRDDR_WRITE_ABORT BIT(6)
741#define I3C_CCC_GETCAPS2_HDRDDR_ABORT_CRC BIT(7)
742
743#define I3C_CCC_GETCAPS2_GRPADDR_CAP_SHIFT 4
744#define I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK \
745 (0x03U << I3C_CCC_GETCAPS2_GRPADDR_CAP_SHIFT)
746#define I3C_CCC_GETCAPS2_GRPADDR_CAP(getcaps2) \
747 (((getcaps2) & \
748 I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK) \
749 >> I3C_CCC_GETCAPS_GRPADDR_CAP_SHIFT)
750
751#define I3C_CCC_GETCAPS2_SPEC_VER_SHIFT 0
752#define I3C_CCC_GETCAPS2_SPEC_VER_MASK \
753 (0x0FU << I3C_CCC_GETCAPS2_SPEC_VER_SHIFT)
754#define I3C_CCC_GETCAPS2_SPEC_VER(getcaps2) \
755 (((getcaps2) & \
756 I3C_CCC_GETCAPS2_SPEC_VER_MASK) \
757 >> I3C_CCC_GETCAPS_SPEC_VER_SHIFT)
758
759#define I3C_CCC_GETCAPS3_MLAME_SUPPORT BIT(0)
760#define I3C_CCC_GETCAPS3_D2DXFER_SUPPORT BIT(1)
761#define I3C_CCC_GETCAPS3_D3DXFER_IBI_CAPABLE BIT(2)
762#define I3C_CCC_GETCAPS3_GETCAPS_DEFINING_BYTE_SUPPORT BIT(3)
763#define I3C_CCC_GETCAPS3_GETSTATUS_DEFINING_BYTE_SUPPORT BIT(4)
764#define I3C_CCC_GETCAPS3_HDRBT_CRC32_SUPPORT BIT(5)
765#define I3C_CCC_GETCAPS3_IBI_MDR_PENDING_READ_NOTIFICATION BIT(6)
766
773};
774
785static inline bool i3c_ccc_is_payload_broadcast(const struct i3c_ccc_payload *payload)
786{
787 return (payload->ccc.id <= I3C_CCC_BROADCAST_MAX_ID);
788}
789
802 struct i3c_ccc_getbcr *bcr);
803
816 struct i3c_ccc_getdcr *dcr);
817
830 struct i3c_ccc_getpid *pid);
831
843int i3c_ccc_do_rstact_all(const struct device *controller,
844 enum i3c_ccc_rstact_defining_byte action);
845
855int i3c_ccc_do_rstdaa_all(const struct device *controller);
856
871
884int i3c_ccc_do_events_all_set(const struct device *controller,
885 bool enable, struct i3c_ccc_events *events);
886
900 bool enable, struct i3c_ccc_events *events);
901
913int i3c_ccc_do_setmwl_all(const struct device *controller,
914 const struct i3c_ccc_mwl *mwl);
915
928 const struct i3c_ccc_mwl *mwl);
929
942 struct i3c_ccc_mwl *mwl);
943
957int i3c_ccc_do_setmrl_all(const struct device *controller,
958 const struct i3c_ccc_mrl *mrl,
959 bool has_ibi_size);
960
976 const struct i3c_ccc_mrl *mrl);
977
993 struct i3c_ccc_mrl *mrl);
994
1012 union i3c_ccc_getstatus *status,
1013 enum i3c_ccc_getstatus_fmt fmt,
1014 enum i3c_ccc_getstatus_defbyte defbyte);
1015
1027static inline int i3c_ccc_do_getstatus_fmt1(const struct i3c_device_desc *target,
1028 union i3c_ccc_getstatus *status)
1029{
1030 return i3c_ccc_do_getstatus(target, status,
1033}
1034
1047static inline int i3c_ccc_do_getstatus_fmt2(const struct i3c_device_desc *target,
1048 union i3c_ccc_getstatus *status,
1049 enum i3c_ccc_getstatus_defbyte defbyte)
1050{
1051 return i3c_ccc_do_getstatus(target, status,
1052 GETSTATUS_FORMAT_2, defbyte);
1053}
1054
1055
1056#ifdef __cplusplus
1057}
1058#endif
1059
1064#endif /* ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_ */
i3c_ccc_getstatus_defbyte
Definition: ccc.h:495
static int i3c_ccc_do_getstatus_fmt1(const struct i3c_device_desc *target, union i3c_ccc_getstatus *status)
Single target GETSTATUS to Get Target Status (Format 1).
Definition: ccc.h:1027
int i3c_ccc_do_setmrl_all(const struct device *controller, const struct i3c_ccc_mrl *mrl, bool has_ibi_size)
Broadcast SETMRL to Set Maximum Read Length.
int i3c_ccc_do_rstact_all(const struct device *controller, enum i3c_ccc_rstact_defining_byte action)
Broadcast RSTACT to reset I3C Peripheral.
static int i3c_ccc_do_getstatus_fmt2(const struct i3c_device_desc *target, union i3c_ccc_getstatus *status, enum i3c_ccc_getstatus_defbyte defbyte)
Single target GETSTATUS to Get Target Status (Format 2).
Definition: ccc.h:1047
int i3c_ccc_do_getstatus(const struct i3c_device_desc *target, union i3c_ccc_getstatus *status, enum i3c_ccc_getstatus_fmt fmt, enum i3c_ccc_getstatus_defbyte defbyte)
Single target GETSTATUS to Get Target Status.
i3c_ccc_rstact_defining_byte
Definition: ccc.h:767
int i3c_ccc_do_setmwl_all(const struct device *controller, const struct i3c_ccc_mwl *mwl)
Broadcast SETMWL to Set Maximum Write Length.
int i3c_ccc_do_setmrl(const struct i3c_device_desc *target, const struct i3c_ccc_mrl *mrl)
Single target SETMRL to Set Maximum Read Length.
i3c_ccc_getstatus_fmt
Indicate which format of GETSTATUS to use.
Definition: ccc.h:490
int i3c_ccc_do_getbcr(struct i3c_device_desc *target, struct i3c_ccc_getbcr *bcr)
Get BCR from a target.
int i3c_ccc_do_getdcr(struct i3c_device_desc *target, struct i3c_ccc_getdcr *dcr)
Get DCR from a target.
int i3c_ccc_do_getpid(struct i3c_device_desc *target, struct i3c_ccc_getpid *pid)
Get PID from a target.
static bool i3c_ccc_is_payload_broadcast(const struct i3c_ccc_payload *payload)
Test if I3C CCC payload is for broadcast.
Definition: ccc.h:785
int i3c_ccc_do_rstdaa_all(const struct device *controller)
Broadcast RSTDAA to reset dynamic addresses for all targets.
int i3c_ccc_do_setmwl(const struct i3c_device_desc *target, const struct i3c_ccc_mwl *mwl)
Single target SETMWL to Set Maximum Write Length.
int i3c_ccc_do_getmrl(const struct i3c_device_desc *target, struct i3c_ccc_mrl *mrl)
Single target GETMRL to Get Maximum Read Length.
int i3c_ccc_do_setdasa(const struct i3c_device_desc *target)
Set Dynamic Address from Static Address for a target.
int i3c_ccc_do_getmwl(const struct i3c_device_desc *target, struct i3c_ccc_mwl *mwl)
Single target GETMWL to Get Maximum Write Length.
int i3c_ccc_do_events_all_set(const struct device *controller, bool enable, struct i3c_ccc_events *events)
Broadcast ENEC/DISEC to enable/disable target events.
int i3c_ccc_do_events_set(struct i3c_device_desc *target, bool enable, struct i3c_ccc_events *events)
Direct CCC ENEC/DISEC to enable/disable target events.
#define I3C_CCC_BROADCAST_MAX_ID
Definition: ccc.h:27
@ GETSTATUS_FORMAT_2_PRECR
Definition: ccc.h:497
@ GETSTATUS_FORMAT_2_INVALID
Definition: ccc.h:499
@ GETSTATUS_FORMAT_2_TGTSTAT
Definition: ccc.h:496
@ I3C_CCC_RSTACT_PERIPHERAL_ONLY
Definition: ccc.h:769
@ I3C_CCC_RSTACT_DEBUG_NETWORK_ADAPTER
Definition: ccc.h:771
@ I3C_CCC_RSTACT_NO_RESET
Definition: ccc.h:768
@ I3C_CCC_RSTACT_VIRTUAL_TARGET_DETECT
Definition: ccc.h:772
@ I3C_CCC_RSTACT_RESET_WHOLE_TARGET
Definition: ccc.h:770
@ GETSTATUS_FORMAT_2
Definition: ccc.h:492
@ GETSTATUS_FORMAT_1
Definition: ccc.h:491
int target
Definition: main.c:68
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition: device.h:435
Payload for a single device address.
Definition: ccc.h:440
uint8_t addr
Definition: ccc.h:455
The active controller part of payload for DEFTGTS CCC.
Definition: ccc.h:369
uint8_t addr
Definition: ccc.h:371
uint8_t dcr
Definition: ccc.h:374
uint8_t static_addr
Definition: ccc.h:380
uint8_t bcr
Definition: ccc.h:377
The target device part of payload for DEFTGTS CCC.
Definition: ccc.h:389
uint8_t dcr
Definition: ccc.h:398
uint8_t addr
Definition: ccc.h:391
uint8_t static_addr
Definition: ccc.h:408
uint8_t bcr
Definition: ccc.h:405
uint8_t lvr
Definition: ccc.h:401
Payload for DEFTGTS CCC (Define List of Targets).
Definition: ccc.h:419
struct i3c_ccc_deftgts_active_controller active_controller
Definition: ccc.h:421
struct i3c_ccc_deftgts_target targets[]
Definition: ccc.h:424
Payload for ENEC/DISEC CCC (Target Events Command).
Definition: ccc.h:294
uint8_t events
Definition: ccc.h:304
Payload for GETBCR CCC (Get Bus Characteristics Register).
Definition: ccc.h:473
uint8_t bcr
Definition: ccc.h:475
Payload for GETCAPS CCC (Get Optional Feature Capabilities).
Definition: ccc.h:720
uint8_t getcaps[4]
Definition: ccc.h:724
Payload for GETDCR CCC (Get Device Characteristics Register).
Definition: ccc.h:481
uint8_t dcr
Definition: ccc.h:483
Payload for GETPID CCC (Get Provisioned ID).
Definition: ccc.h:461
uint8_t pid[6]
Definition: ccc.h:467
Payload for SETMRL/GETMRL CCC (Set/Get Maximum Read Length).
Definition: ccc.h:355
uint16_t len
Definition: ccc.h:357
uint8_t ibi_len
Definition: ccc.h:360
Payload for SETMWL/GETMWL CCC (Set/Get Maximum Write Length).
Definition: ccc.h:342
uint16_t len
Definition: ccc.h:344
Payload structure for one CCC transaction.
Definition: ccc.h:256
struct i3c_ccc_target_payload * payloads
Definition: ccc.h:284
struct i3c_ccc_payload::@125 targets
struct i3c_ccc_payload::@124 ccc
uint8_t * data
Definition: ccc.h:269
uint8_t id
Definition: ccc.h:261
size_t num_targets
Definition: ccc.h:287
size_t data_len
Definition: ccc.h:272
One Bridged Target for SETBRGTGT payload.
Definition: ccc.h:576
uint16_t id
Definition: ccc.h:593
uint8_t addr
Definition: ccc.h:583
Payload for SETBRGTGT CCC (Set Bridge Targets).
Definition: ccc.h:603
uint8_t count
Definition: ccc.h:605
struct i3c_ccc_setbrgtgt_tgt targets[]
Definition: ccc.h:608
Payload structure for Direct CCC to one target.
Definition: ccc.h:233
uint8_t addr
Definition: ccc.h:235
size_t data_len
Definition: ccc.h:250
uint8_t rnw
Definition: ccc.h:238
uint8_t * data
Definition: ccc.h:247
Structure describing a I3C target device.
Definition: i3c.h:672
Macros to abstract toolchain specific capabilities.
Payload for GETMXDS CCC (Get Max Data Speed).
Definition: ccc.h:616
struct i3c_ccc_getmxds::@132 fmt3
uint8_t wrrdturn
Definition: ccc.h:646
uint8_t maxrdturn[3]
Definition: ccc.h:637
uint8_t maxrd
Definition: ccc.h:622
uint8_t maxwr
Definition: ccc.h:619
struct i3c_ccc_getmxds::@130 fmt1
struct i3c_ccc_getmxds::@131 fmt2
uint8_t crhdly1
Definition: ccc.h:653
Payload for GETSTATUS CCC (Get Device Status).
Definition: ccc.h:505
uint16_t precr
Definition: ccc.h:543
uint16_t tgtstat
Definition: ccc.h:529
uint16_t status
Definition: ccc.h:520
struct i3c_ccc_getstatus::@128 fmt1
union i3c_ccc_getstatus::@129 fmt2
uint16_t raw_u16
Definition: ccc.h:545
Misc utilities.