Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ccc.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Intel Corporation
3 * Copyright 2023 Meta Platforms, Inc. and its affiliates
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_
9#define ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_
10
18#include <stdint.h>
19
20#include <zephyr/device.h>
21#include <zephyr/toolchain.h>
22#include <zephyr/sys/util.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
29#define I3C_CCC_BROADCAST_MAX_ID 0x7FU
30
36#define I3C_CCC_ENEC(broadcast) ((broadcast) ? 0x00U : 0x80U)
37
43#define I3C_CCC_DISEC(broadcast) ((broadcast) ? 0x01U : 0x81U)
44
51#define I3C_CCC_ENTAS(as, broadcast) (((broadcast) ? 0x02U : 0x82U) + (as))
52
58#define I3C_CCC_ENTAS0(broadcast) I3C_CCC_ENTAS(0, broadcast)
59
65#define I3C_CCC_ENTAS1(broadcast) I3C_CCC_ENTAS(1, broadcast)
66
72#define I3C_CCC_ENTAS2(broadcast) I3C_CCC_ENTAS(2, broadcast)
73
79#define I3C_CCC_ENTAS3(broadcast) I3C_CCC_ENTAS(3, broadcast)
80
82#define I3C_CCC_RSTDAA 0x06U
83
85#define I3C_CCC_ENTDAA 0x07U
86
88#define I3C_CCC_DEFTGTS 0x08U
89
95#define I3C_CCC_SETMWL(broadcast) ((broadcast) ? 0x09U : 0x89U)
96
102#define I3C_CCC_SETMRL(broadcast) ((broadcast) ? 0x0AU : 0x8AU)
103
105#define I3C_CCC_ENTTM 0x0BU
106
108#define I3C_CCC_SETBUSCON 0x0CU
109
115#define I3C_CCC_ENDXFER(broadcast) ((broadcast) ? 0x12U : 0x92U)
116
118#define I3C_CCC_ENTHDR(x) (0x20U + (x))
119
121#define I3C_CCC_ENTHDR0 0x20U
122
124#define I3C_CCC_ENTHDR1 0x21U
125
127#define I3C_CCC_ENTHDR2 0x22U
128
130#define I3C_CCC_ENTHDR3 0x23U
131
133#define I3C_CCC_ENTHDR4 0x24U
134
136#define I3C_CCC_ENTHDR5 0x25U
137
139#define I3C_CCC_ENTHDR6 0x26U
140
142#define I3C_CCC_ENTHDR7 0x27U
143
149#define I3C_CCC_SETXTIME(broadcast) ((broadcast) ? 0x28U : 0x98U)
150
152#define I3C_CCC_SETAASA 0x29U
153
159#define I3C_CCC_RSTACT(broadcast) ((broadcast) ? 0x2AU : 0x9AU)
160
162#define I3C_CCC_DEFGRPA 0x2BU
163
169#define I3C_CCC_RSTGRPA(broadcast) ((broadcast) ? 0x2CU : 0x9CU)
170
172#define I3C_CCC_MLANE(broadcast) ((broadcast) ? 0x2DU : 0x9DU)
173
180#define I3C_CCC_VENDOR(broadcast, id) ((id) + ((broadcast) ? 0x61U : 0xE0U))
181
188#define I3C_CCC_RSTDAA_DC 0x86U
189
191#define I3C_CCC_SETDASA 0x87U
192
194#define I3C_CCC_SETNEWDA 0x88U
195
197#define I3C_CCC_GETMWL 0x8BU
198
200#define I3C_CCC_GETMRL 0x8CU
201
203#define I3C_CCC_GETPID 0x8DU
204
206#define I3C_CCC_GETBCR 0x8EU
207
209#define I3C_CCC_GETDCR 0x8FU
210
212#define I3C_CCC_GETSTATUS 0x90U
213
215#define I3C_CCC_GETACCCR 0x91U
216
218#define I3C_CCC_SETBRGTGT 0x93U
219
221#define I3C_CCC_GETMXDS 0x94U
222
224#define I3C_CCC_GETCAPS 0x95U
225
227#define I3C_CCC_SETROUTE 0x96U
228
230#define I3C_CCC_D2DXFER 0x97U
231
233#define I3C_CCC_GETXTIME 0x99U
234
236#define I3C_CCC_SETGRPA 0x9BU
237
238struct i3c_device_desc;
239
279
284 struct {
289
297
299 size_t data_len;
300
307 size_t num_xfer;
308
317
318 struct {
328
332};
333
348} __packed;
349
351#define I3C_CCC_ENEC_EVT_ENINTR BIT(0)
352
354#define I3C_CCC_ENEC_EVT_ENCR BIT(1)
355
357#define I3C_CCC_ENEC_EVT_ENHJ BIT(3)
358
359#define I3C_CCC_ENEC_EVT_ALL \
360 (I3C_CCC_ENEC_EVT_ENINTR | I3C_CCC_ENEC_EVT_ENCR | I3C_CCC_ENEC_EVT_ENHJ)
361
363#define I3C_CCC_DISEC_EVT_DISINTR BIT(0)
364
366#define I3C_CCC_DISEC_EVT_DISCR BIT(1)
367
369#define I3C_CCC_DISEC_EVT_DISHJ BIT(3)
370
371#define I3C_CCC_DISEC_EVT_ALL \
372 (I3C_CCC_DISEC_EVT_DISINTR | I3C_CCC_DISEC_EVT_DISCR | I3C_CCC_DISEC_EVT_DISHJ)
373
374/*
375 * Events for both enabling and disabling since
376 * they have the same bits.
377 */
378
380#define I3C_CCC_EVT_INTR BIT(0)
381
383#define I3C_CCC_EVT_CR BIT(1)
384
386#define I3C_CCC_EVT_HJ BIT(3)
387
389#define I3C_CCC_EVT_ALL \
390 (I3C_CCC_EVT_INTR | I3C_CCC_EVT_CR | I3C_CCC_EVT_HJ)
391
403} __packed;
404
416
419} __packed;
420
440
468
487
500
530} __packed;
531
542} __packed;
543
550} __packed;
551
558} __packed;
559
560
571
585
590 struct {
606
607 union {
614
628
631} __packed;
632
634#define I3C_CCC_GETSTATUS_PROTOCOL_ERR BIT(5)
635
637#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK GENMASK(7U, 6U)
638
647#define I3C_CCC_GETSTATUS_ACTIVITY_MODE(status) \
648 FIELD_GET(I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK, (status))
649
651#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_NCH 0x3
652
654#define I3C_CCC_GETSTATUS_NUM_INT_MASK GENMASK(3U, 0U)
655
664#define I3C_CCC_GETSTATUS_NUM_INT(status) \
665 FIELD_GET(I3C_CCC_GETSTATUS_NUM_INT_MASK, (status))
666
668#define I3C_CCC_GETSTATUS_PRECR_DEEP_SLEEP_DETECTED BIT(0)
669
671#define I3C_CCC_GETSTATUS_PRECR_HANDOFF_DELAY_NACK BIT(1)
672
695
710
724
741
742
747 struct {
750
754
755 struct {
758
761
769
770 struct {
777
785} __packed;
786
788#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_MAX 0
789
791#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_8MHZ 1
792
794#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_6MHZ 2
795
797#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_4MHZ 3
798
800#define I3C_CCC_GETMXDS_MAX_SDR_FSCL_2MHZ 4
801
803#define I3C_CCC_GETMXDS_TSCO_8NS 0
804
806#define I3C_CCC_GETMXDS_TSCO_9NS 1
807
809#define I3C_CCC_GETMXDS_TSCO_10NS 2
810
812#define I3C_CCC_GETMXDS_TSCO_11NS 3
813
815#define I3C_CCC_GETMXDS_TSCO_12NS 4
816
818#define I3C_CCC_GETMXDS_TSCO_GT_12NS 7
819
821#define I3C_CCC_GETMXDS_MAXWR_DEFINING_BYTE_SUPPORT BIT(3)
822
824#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK GENMASK(2U, 0U)
825
834#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL(maxwr) \
835 FIELD_GET(I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK, (maxwr))
836
838#define I3C_CCC_GETMXDS_MAXRD_W2R_PERMITS_STOP_BETWEEN BIT(6)
839
841#define I3C_CCC_GETMXDS_MAXRD_TSCO_MASK GENMASK(5U, 3U)
842
851#define I3C_CCC_GETMXDS_MAXRD_TSCO(maxrd) \
852 FIELD_GET(I3C_CCC_GETMXDS_MAXRD_TSCO_MASK, (maxrd))
853
855#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK GENMASK(2U, 0U)
856
865#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL(maxrd) \
866 FIELD_GET(I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK, (maxrd))
867
869#define I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE BIT(2)
870
872#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK GENMASK(1U, 0U)
873
882#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE(crhdly1) \
883 FIELD_GET(I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK, (crhdly1))
884
895
918
927 union {
936
964
965 union {
972
979
993
1007} __packed;
1008
1010#define I3C_CCC_GETCAPS1_HDR_DDR BIT(0)
1011
1013#define I3C_CCC_GETCAPS1_HDR_TSP BIT(1)
1014
1016#define I3C_CCC_GETCAPS1_HDR_TSL BIT(2)
1017
1019#define I3C_CCC_GETCAPS1_HDR_BT BIT(3)
1020
1028#define I3C_CCC_GETCAPS1_HDR_MODE(x) BIT(x)
1029
1031#define I3C_CCC_GETCAPS1_HDR_MODE0 BIT(0)
1032
1034#define I3C_CCC_GETCAPS1_HDR_MODE1 BIT(1)
1035
1037#define I3C_CCC_GETCAPS1_HDR_MODE2 BIT(2)
1038
1040#define I3C_CCC_GETCAPS1_HDR_MODE3 BIT(3)
1041
1043#define I3C_CCC_GETCAPS1_HDR_MODE4 BIT(4)
1044
1046#define I3C_CCC_GETCAPS1_HDR_MODE5 BIT(5)
1047
1049#define I3C_CCC_GETCAPS1_HDR_MODE6 BIT(6)
1050
1052#define I3C_CCC_GETCAPS1_HDR_MODE7 BIT(7)
1053
1055#define I3C_CCC_GETCAPS2_HDRDDR_WRITE_ABORT BIT(6)
1056
1058#define I3C_CCC_GETCAPS2_HDRDDR_ABORT_CRC BIT(7)
1059
1064#define I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK GENMASK(5U, 4U)
1065
1074#define I3C_CCC_GETCAPS2_GRPADDR_CAP(getcaps2) \
1075 FIELD_GET(I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK, (getcaps2))
1076
1081#define I3C_CCC_GETCAPS2_SPEC_VER_MASK GENMASK(3U, 0U)
1082
1092#define I3C_CCC_GETCAPS2_SPEC_VER(getcaps2) \
1093 FIELD_GET(I3C_CCC_GETCAPS2_SPEC_VER_MASK, (getcaps2))
1094
1099#define I3C_CCC_GETCAPS3_MLANE_SUPPORT BIT(0)
1100
1105#define I3C_CCC_GETCAPS3_D2DXFER_SUPPORT BIT(1)
1106
1111#define I3C_CCC_GETCAPS3_D2DXFER_IBI_CAPABLE BIT(2)
1112
1117#define I3C_CCC_GETCAPS3_GETCAPS_DEFINING_BYTE_SUPPORT BIT(3)
1118
1123#define I3C_CCC_GETCAPS3_GETSTATUS_DEFINING_BYTE_SUPPORT BIT(4)
1124
1129#define I3C_CCC_GETCAPS3_HDRBT_CRC32_SUPPORT BIT(5)
1130
1135#define I3C_CCC_GETCAPS3_IBI_MDR_PENDING_READ_NOTIFICATION BIT(6)
1136
1141#define I3C_CCC_GETCAPS_TESTPAT1 0xA5
1142
1147#define I3C_CCC_GETCAPS_TESTPAT2 0x5A
1148
1153#define I3C_CCC_GETCAPS_TESTPAT3 0xA5
1154
1159#define I3C_CCC_GETCAPS_TESTPAT4 0x5A
1160
1165#define I3C_CCC_GETCAPS_TESTPAT 0xA55AA55A
1166
1171#define I3C_CCC_GETCAPS_CRCAPS1_HJ_SUPPORT BIT(0)
1172
1177#define I3C_CCC_GETCAPS_CRCAPS1_GRP_MANAGEMENT_SUPPORT BIT(1)
1178
1183#define I3C_CCC_GETCAPS_CRCAPS1_ML_SUPPORT BIT(2)
1184
1189#define I3C_CCC_GETCAPS_CRCAPS2_IBI_TIR_SUPPORT BIT(0)
1190
1195#define I3C_CCC_GETCAPS_CRCAPS2_CONTROLLER_PASSBACK BIT(1)
1196
1201#define I3C_CCC_GETCAPS_CRCAPS2_DEEP_SLEEP_CAPABLE BIT(2)
1202
1207#define I3C_CCC_GETCAPS_CRCAPS2_DELAYED_CONTROLLER_HANDOFF BIT(3)
1208
1210#define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK GENMASK(2U, 0U)
1211
1220#define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE(vtcap1) \
1221 FIELD_GET(I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK, (vtcap1))
1222
1227#define I3C_CCC_GETCAPS_VTCAP1_SIDE_EFFECTS BIT(4)
1228
1233#define I3C_CCC_GETCAPS_VTCAP1_SHARED_PERIPH_DETECT BIT(5)
1234
1236#define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK GENMASK(1U, 0U)
1237
1246#define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS(vtcap2) \
1247 FIELD_GET(I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK, (vtcap2))
1248
1253#define I3C_CCC_GETCAPS_VTCAP2_ADDRESS_REMAPPING BIT(2)
1254
1256#define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK GENMASK(4U, 3U)
1257
1266#define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND(vtcap2) \
1267 FIELD_GET(I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK, (vtcap2))
1268
1300
1329#define I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER_MASK GENMASK(3U, 0U)
1330
1338#define I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER(y) \
1339 FIELD_PREP(I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER_MASK, (y))
1340
1342#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC 0
1343
1345#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_BASIC_SPEC BIT(4)
1346
1348#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC_EDITORIAL_1_Y_0 0
1349
1351#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC_EDITORIAL_1_Y_1 BIT(5)
1352
1367#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_JEDEC_SIDEBAND 128
1368
1376#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_MCTP 129
1377
1384#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_ETSI 130
1385
1398static inline bool i3c_ccc_is_payload_broadcast(const struct i3c_ccc_payload *payload)
1399{
1400 return (payload->ccc.id <= I3C_CCC_BROADCAST_MAX_ID);
1401}
1402
1415 struct i3c_ccc_getbcr *bcr);
1416
1429 struct i3c_ccc_getdcr *dcr);
1430
1443 struct i3c_ccc_getpid *pid);
1444
1456int i3c_ccc_do_rstact_all(const struct device *controller,
1457 enum i3c_ccc_rstact_defining_byte action);
1458
1472int i3c_ccc_do_rstact(const struct i3c_device_desc *target,
1473 enum i3c_ccc_rstact_defining_byte action,
1474 bool get,
1475 uint8_t *data);
1476
1488static inline int i3c_ccc_do_rstact_fmt2(const struct i3c_device_desc *target,
1489 enum i3c_ccc_rstact_defining_byte action)
1490{
1491 return i3c_ccc_do_rstact(target, action, false, NULL);
1492}
1493
1506static inline int i3c_ccc_do_rstact_fmt3(const struct i3c_device_desc *target,
1507 enum i3c_ccc_rstact_defining_byte action,
1508 uint8_t *data)
1509{
1510 return i3c_ccc_do_rstact(target, action, true, data);
1511}
1512
1527
1537int i3c_ccc_do_rstdaa_all(const struct device *controller);
1538
1553int i3c_ccc_do_setdasa(const struct i3c_device_desc *target,
1554 struct i3c_ccc_address da);
1555
1569int i3c_ccc_do_setnewda(const struct i3c_device_desc *target,
1570 struct i3c_ccc_address new_da);
1571
1584int i3c_ccc_do_events_all_set(const struct device *controller,
1585 bool enable, struct i3c_ccc_events *events);
1586
1600 bool enable, struct i3c_ccc_events *events);
1601
1613int i3c_ccc_do_entas(const struct i3c_device_desc *target, uint8_t as);
1614
1625static inline int i3c_ccc_do_entas0(const struct i3c_device_desc *target)
1626{
1627 return i3c_ccc_do_entas(target, 0);
1628}
1629
1640static inline int i3c_ccc_do_entas1(const struct i3c_device_desc *target)
1641{
1642 return i3c_ccc_do_entas(target, 1);
1643}
1644
1655static inline int i3c_ccc_do_entas2(const struct i3c_device_desc *target)
1656{
1657 return i3c_ccc_do_entas(target, 2);
1658}
1659
1670static inline int i3c_ccc_do_entas3(const struct i3c_device_desc *target)
1671{
1672 return i3c_ccc_do_entas(target, 3);
1673}
1674
1685int i3c_ccc_do_entas_all(const struct device *controller, uint8_t as);
1686
1696static inline int i3c_ccc_do_entas0_all(const struct device *controller)
1697{
1698 return i3c_ccc_do_entas_all(controller, 0);
1699}
1700
1710static inline int i3c_ccc_do_entas1_all(const struct device *controller)
1711{
1712 return i3c_ccc_do_entas_all(controller, 1);
1713}
1714
1724static inline int i3c_ccc_do_entas2_all(const struct device *controller)
1725{
1726 return i3c_ccc_do_entas_all(controller, 2);
1727}
1728
1738static inline int i3c_ccc_do_entas3_all(const struct device *controller)
1739{
1740 return i3c_ccc_do_entas_all(controller, 3);
1741}
1742
1754int i3c_ccc_do_setmwl_all(const struct device *controller,
1755 const struct i3c_ccc_mwl *mwl);
1756
1768int i3c_ccc_do_setmwl(const struct i3c_device_desc *target,
1769 const struct i3c_ccc_mwl *mwl);
1770
1782int i3c_ccc_do_getmwl(const struct i3c_device_desc *target,
1783 struct i3c_ccc_mwl *mwl);
1784
1798int i3c_ccc_do_setmrl_all(const struct device *controller,
1799 const struct i3c_ccc_mrl *mrl,
1800 bool has_ibi_size);
1801
1816int i3c_ccc_do_setmrl(const struct i3c_device_desc *target,
1817 const struct i3c_ccc_mrl *mrl);
1818
1833int i3c_ccc_do_getmrl(const struct i3c_device_desc *target,
1834 struct i3c_ccc_mrl *mrl);
1835
1846int i3c_ccc_do_enttm(const struct device *controller,
1847 enum i3c_ccc_enttm_defbyte defbyte);
1848
1865int i3c_ccc_do_getstatus(const struct i3c_device_desc *target,
1866 union i3c_ccc_getstatus *status,
1867 enum i3c_ccc_getstatus_fmt fmt,
1868 enum i3c_ccc_getstatus_defbyte defbyte);
1869
1881static inline int i3c_ccc_do_getstatus_fmt1(const struct i3c_device_desc *target,
1882 union i3c_ccc_getstatus *status)
1883{
1884 return i3c_ccc_do_getstatus(target, status,
1887}
1888
1901static inline int i3c_ccc_do_getstatus_fmt2(const struct i3c_device_desc *target,
1902 union i3c_ccc_getstatus *status,
1903 enum i3c_ccc_getstatus_defbyte defbyte)
1904{
1905 return i3c_ccc_do_getstatus(target, status,
1906 GETSTATUS_FORMAT_2, defbyte);
1907}
1908
1925int i3c_ccc_do_getcaps(const struct i3c_device_desc *target,
1926 union i3c_ccc_getcaps *caps,
1927 enum i3c_ccc_getcaps_fmt fmt,
1928 enum i3c_ccc_getcaps_defbyte defbyte);
1929
1941static inline int i3c_ccc_do_getcaps_fmt1(const struct i3c_device_desc *target,
1942 union i3c_ccc_getcaps *caps)
1943{
1944 return i3c_ccc_do_getcaps(target, caps,
1947}
1948
1961static inline int i3c_ccc_do_getcaps_fmt2(const struct i3c_device_desc *target,
1962 union i3c_ccc_getcaps *caps,
1963 enum i3c_ccc_getcaps_defbyte defbyte)
1964{
1965 return i3c_ccc_do_getcaps(target, caps,
1966 GETCAPS_FORMAT_2, defbyte);
1967}
1968
1982int i3c_ccc_do_setvendor(const struct i3c_device_desc *target,
1983 uint8_t id,
1984 uint8_t *payload,
1985 size_t len);
1986
2001int i3c_ccc_do_getvendor(const struct i3c_device_desc *target,
2002 uint8_t id,
2003 uint8_t *payload,
2004 size_t len,
2005 size_t *num_xfer);
2006
2024 uint8_t id,
2025 uint8_t defbyte,
2026 uint8_t *payload,
2027 size_t len,
2028 size_t *num_xfer);
2029
2042int i3c_ccc_do_setvendor_all(const struct device *controller,
2043 uint8_t id,
2044 uint8_t *payload,
2045 size_t len);
2046
2058int i3c_ccc_do_setaasa_all(const struct device *controller);
2059
2076int i3c_ccc_do_getmxds(const struct i3c_device_desc *target,
2077 union i3c_ccc_getmxds *caps,
2078 enum i3c_ccc_getmxds_fmt fmt,
2079 enum i3c_ccc_getmxds_defbyte defbyte);
2080
2092static inline int i3c_ccc_do_getmxds_fmt1(const struct i3c_device_desc *target,
2093 union i3c_ccc_getmxds *caps)
2094{
2095 return i3c_ccc_do_getmxds(target, caps,
2098}
2099
2111static inline int i3c_ccc_do_getmxds_fmt2(const struct i3c_device_desc *target,
2112 union i3c_ccc_getmxds *caps)
2113{
2114 return i3c_ccc_do_getmxds(target, caps,
2117}
2118
2131static inline int i3c_ccc_do_getmxds_fmt3(const struct i3c_device_desc *target,
2132 union i3c_ccc_getmxds *caps,
2133 enum i3c_ccc_getmxds_defbyte defbyte)
2134{
2135 return i3c_ccc_do_getmxds(target, caps,
2136 GETMXDS_FORMAT_3, defbyte);
2137}
2138
2147int i3c_ccc_do_deftgts_all(const struct device *controller,
2148 struct i3c_ccc_deftgts *deftgts);
2149
2161int i3c_ccc_do_setbuscon(const struct device *controller,
2162 uint8_t *context, uint16_t length);
2163
2179int i3c_ccc_do_getacccr(const struct i3c_device_desc *target,
2180 struct i3c_ccc_address *handoff_address);
2181
2182#ifdef __cplusplus
2183}
2184#endif
2185
2190#endif /* ZEPHYR_INCLUDE_DRIVERS_I3C_CCC_H_ */
irp nz macro MOVR cc s mov cc s endm endr irp as
Definition asm-macro-32-bit-gnu.h:16
i3c_sdr_controller_error_types
I3C SDR Controller Error Types.
Definition error_types.h:24
static int i3c_ccc_do_entas0_all(const struct device *controller)
Broadcast ENTAS0.
Definition ccc.h:1696
int i3c_ccc_do_deftgts_all(const struct device *controller, struct i3c_ccc_deftgts *deftgts)
Broadcast DEFTGTS.
i3c_ccc_getstatus_defbyte
Defining byte values for GETSTATUS Format 2.
Definition ccc.h:575
i3c_ccc_getmxds_fmt
Indicate which format of getmxds to use.
Definition ccc.h:714
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:1881
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_getvendor(const struct i3c_device_desc *target, uint8_t id, uint8_t *payload, size_t len, size_t *num_xfer)
Single target to Get Vendor / Standard Extension CCC.
static int i3c_ccc_do_entas3(const struct i3c_device_desc *target)
Direct ENTAS3.
Definition ccc.h:1670
i3c_ccc_enttm_defbyte
Defining byte values for ENTTM.
Definition ccc.h:491
int i3c_ccc_do_rstact_all(const struct device *controller, enum i3c_ccc_rstact_defining_byte action)
Broadcast RSTACT to reset I3C Peripheral (Format 1).
int i3c_ccc_do_getvendor_defbyte(const struct i3c_device_desc *target, uint8_t id, uint8_t defbyte, uint8_t *payload, size_t len, size_t *num_xfer)
Single target to Get Vendor / Standard Extension CCC with a defining byte.
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:1901
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.
static int i3c_ccc_do_getmxds_fmt3(const struct i3c_device_desc *target, union i3c_ccc_getmxds *caps, enum i3c_ccc_getmxds_defbyte defbyte)
Single target GETMXDS to Get Max Data Speed (Format 3).
Definition ccc.h:2131
static int i3c_ccc_do_getmxds_fmt2(const struct i3c_device_desc *target, union i3c_ccc_getmxds *caps)
Single target GETMXDS to Get Max Data Speed (Format 2).
Definition ccc.h:2111
int i3c_ccc_do_enttm(const struct device *controller, enum i3c_ccc_enttm_defbyte defbyte)
Broadcast ENTTM.
static int i3c_ccc_do_entas1(const struct i3c_device_desc *target)
Direct ENTAS1.
Definition ccc.h:1640
i3c_ccc_getmxds_defbyte
Enum for I3C Get Max Data Speed (GETMXDS) Format 3 Defining Byte Values.
Definition ccc.h:728
i3c_ccc_rstact_defining_byte
Enum for I3C Reset Action (RSTACT) Defining Byte Values.
Definition ccc.h:1272
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_entas(const struct i3c_device_desc *target, uint8_t as)
Direct ENTAS to set the Activity State.
int i3c_ccc_do_getmxds(const struct i3c_device_desc *target, union i3c_ccc_getmxds *caps, enum i3c_ccc_getmxds_fmt fmt, enum i3c_ccc_getmxds_defbyte defbyte)
Single target GETMXDS to Get Max Data Speed.
int i3c_ccc_do_setnewda(const struct i3c_device_desc *target, struct i3c_ccc_address new_da)
Set New Dynamic Address for a target.
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.
int i3c_ccc_do_setbuscon(const struct device *controller, uint8_t *context, uint16_t length)
Broadcast SETBUSCON to set the bus context.
int i3c_ccc_do_setvendor(const struct i3c_device_desc *target, uint8_t id, uint8_t *payload, size_t len)
Single target to Set Vendor / Standard Extension CCC.
i3c_ccc_getstatus_fmt
Indicate which format of GETSTATUS to use.
Definition ccc.h:564
int i3c_ccc_do_setvendor_all(const struct device *controller, uint8_t id, uint8_t *payload, size_t len)
Broadcast Set Vendor / Standard Extension CCC.
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_getacccr(const struct i3c_device_desc *target, struct i3c_ccc_address *handoff_address)
Direct GETACCCR for Controller Handoff.
int i3c_ccc_do_rstact(const struct i3c_device_desc *target, enum i3c_ccc_rstact_defining_byte action, bool get, uint8_t *data)
Single target RSTACT to reset I3C Peripheral.
static int i3c_ccc_do_entas1_all(const struct device *controller)
Broadcast ENTAS1.
Definition ccc.h:1710
int i3c_ccc_do_getpid(struct i3c_device_desc *target, struct i3c_ccc_getpid *pid)
Get PID from a target.
int i3c_ccc_do_getcaps(const struct i3c_device_desc *target, union i3c_ccc_getcaps *caps, enum i3c_ccc_getcaps_fmt fmt, enum i3c_ccc_getcaps_defbyte defbyte)
Single target GETCAPS to Get Target Status.
int i3c_ccc_do_entas_all(const struct device *controller, uint8_t as)
Broadcast ENTAS to set the Activity State.
i3c_ccc_getcaps_fmt
Indicate which format of GETCAPS to use.
Definition ccc.h:888
static int i3c_ccc_do_getmxds_fmt1(const struct i3c_device_desc *target, union i3c_ccc_getmxds *caps)
Single target GETMXDS to Get Max Data Speed (Format 1).
Definition ccc.h:2092
static int i3c_ccc_do_getcaps_fmt2(const struct i3c_device_desc *target, union i3c_ccc_getcaps *caps, enum i3c_ccc_getcaps_defbyte defbyte)
Single target GETCAPS to Get Capabilities (Format 2).
Definition ccc.h:1961
static bool i3c_ccc_is_payload_broadcast(const struct i3c_ccc_payload *payload)
Test if I3C CCC payload is for broadcast.
Definition ccc.h:1398
int i3c_ccc_do_rstdaa_all(const struct device *controller)
Broadcast RSTDAA to reset dynamic addresses for all targets.
int i3c_ccc_do_setaasa_all(const struct device *controller)
Broadcast SETAASA to set all target's dynamic address to their static address.
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.
static int i3c_ccc_do_entas0(const struct i3c_device_desc *target)
Direct ENTAS0.
Definition ccc.h:1625
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_rstdaa(struct i3c_device_desc *target)
Reset dynamic addresses for a targets.
static int i3c_ccc_do_entas2_all(const struct device *controller)
Broadcast ENTAS2.
Definition ccc.h:1724
static int i3c_ccc_do_rstact_fmt2(const struct i3c_device_desc *target, enum i3c_ccc_rstact_defining_byte action)
Single target RSTACT to reset I3C Peripheral (Format 2).
Definition ccc.h:1488
i3c_ccc_getcaps_defbyte
Enum for I3C Get Capabilities (GETCAPS) Format 2 Defining Byte Values.
Definition ccc.h:899
static int i3c_ccc_do_entas2(const struct i3c_device_desc *target)
Direct ENTAS2.
Definition ccc.h:1655
static int i3c_ccc_do_getcaps_fmt1(const struct i3c_device_desc *target, union i3c_ccc_getcaps *caps)
Single target GETCAPS to Get Capabilities (Format 1).
Definition ccc.h:1941
static int i3c_ccc_do_entas3_all(const struct device *controller)
Broadcast ENTAS3.
Definition ccc.h:1738
int i3c_ccc_do_getmwl(const struct i3c_device_desc *target, struct i3c_ccc_mwl *mwl)
Single target GETMWL to Get Maximum Write Length.
static int i3c_ccc_do_rstact_fmt3(const struct i3c_device_desc *target, enum i3c_ccc_rstact_defining_byte action, uint8_t *data)
Single target RSTACT to reset I3C Peripheral (Format 3).
Definition ccc.h:1506
int i3c_ccc_do_setdasa(const struct i3c_device_desc *target, struct i3c_ccc_address da)
Set Dynamic Address from Static Address for a target.
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
Maximum CCC ID for broadcast.
Definition ccc.h:29
@ GETSTATUS_FORMAT_2_PRECR
PRECR - Alternate status format describing Controller-capable device.
Definition ccc.h:580
@ GETSTATUS_FORMAT_2_INVALID
Invalid defining byte.
Definition ccc.h:583
@ GETSTATUS_FORMAT_2_TGTSTAT
Target status.
Definition ccc.h:577
@ GETMXDS_FORMAT_2
GETMXDS Format 2.
Definition ccc.h:719
@ GETMXDS_FORMAT_1
GETMXDS Format 1.
Definition ccc.h:716
@ GETMXDS_FORMAT_3
GETMXDS Format 3.
Definition ccc.h:722
@ ENTTM_EXIT_TEST_MODE
Remove all I3C Devices from Test Mode.
Definition ccc.h:493
@ ENTTM_VENDOR_TEST_MODE
Indicates that I3C Devices shall return a random 32-bit value in the PID during the Dynamic Address A...
Definition ccc.h:498
@ GETMXDS_FORMAT_3_INVALID
Invalid defining byte.
Definition ccc.h:739
@ GETMXDS_FORMAT_3_CRHDLY
Delay parameters for a Controller-capable Device, and it's expected Activity State during a Controlle...
Definition ccc.h:736
@ GETMXDS_FORMAT_3_WRRDTURN
Standard Target Write/Read speed parameters, and optional Maximum Read Turnaround Time.
Definition ccc.h:731
@ I3C_CCC_RSTACT_RETURN_VIRTUAL_TARGET_INDICATION
Return Virtual Target Indication.
Definition ccc.h:1298
@ I3C_CCC_RSTACT_RETURN_TIME_TO_RESET_PERIPHERAL
Return Time to Reset Peripheral.
Definition ccc.h:1289
@ I3C_CCC_RSTACT_RETURN_TIME_TO_WHOLE_TARGET
Return Time to Reset Whole Target.
Definition ccc.h:1292
@ I3C_CCC_RSTACT_PERIPHERAL_ONLY
Reset the I3C Peripheral Only.
Definition ccc.h:1277
@ I3C_CCC_RSTACT_DEBUG_NETWORK_ADAPTER
Debug Network Adapter Reset.
Definition ccc.h:1283
@ I3C_CCC_RSTACT_NO_RESET
No Reset on Target Reset Pattern.
Definition ccc.h:1274
@ I3C_CCC_RSTACT_VIRTUAL_TARGET_DETECT
Virtual Target Detect.
Definition ccc.h:1286
@ I3C_CCC_RSTACT_RETURN_TIME_FOR_DEBUG_NETWORK_ADAPTER_RESET
Return Time for Debug Network Adapter Reset.
Definition ccc.h:1295
@ I3C_CCC_RSTACT_RESET_WHOLE_TARGET
Reset the Whole Target.
Definition ccc.h:1280
@ GETSTATUS_FORMAT_2
GETSTATUS Format 2.
Definition ccc.h:569
@ GETSTATUS_FORMAT_1
GETSTATUS Format 1.
Definition ccc.h:566
@ GETCAPS_FORMAT_1
GETCAPS Format 1.
Definition ccc.h:890
@ GETCAPS_FORMAT_2
GETCAPS Format 2.
Definition ccc.h:893
@ GETCAPS_FORMAT_2_CRCAPS
Controller handoff capabilities and features.
Definition ccc.h:907
@ GETCAPS_FORMAT_2_INVALID
Invalid defining byte.
Definition ccc.h:916
@ GETCAPS_FORMAT_2_TGTCAPS
Standard Target capabilities and features.
Definition ccc.h:901
@ GETCAPS_FORMAT_2_DBGCAPS
Debug-capable Device capabilities and features.
Definition ccc.h:913
@ GETCAPS_FORMAT_2_VTCAPS
Virtual Target capabilities and features.
Definition ccc.h:910
@ GETCAPS_FORMAT_2_TESTPAT
Fixed 32b test pattern.
Definition ccc.h:904
#define NULL
Definition iar_missing_defs.h:20
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__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:504
Payload for a single device address.
Definition ccc.h:514
uint8_t addr
Definition ccc.h:529
The active controller part of payload for DEFTGTS CCC.
Definition ccc.h:427
uint8_t addr
Dynamic Address of Active Controller.
Definition ccc.h:429
uint8_t dcr
Device Characteristic Register of Active Controller.
Definition ccc.h:432
uint8_t static_addr
Static Address of Active Controller.
Definition ccc.h:438
uint8_t bcr
Bus Characteristic Register of Active Controller.
Definition ccc.h:435
The target device part of payload for DEFTGTS CCC.
Definition ccc.h:447
uint8_t dcr
Device Characteristic Register of a I3C target device or a group.
Definition ccc.h:456
uint8_t addr
Dynamic Address of a target device, or a group address.
Definition ccc.h:449
uint8_t static_addr
Static Address of a target device or a group.
Definition ccc.h:466
uint8_t bcr
Bus Characteristic Register of a target device or a group.
Definition ccc.h:463
uint8_t lvr
Legacy Virtual Register for legacy I2C device.
Definition ccc.h:459
Payload for DEFTGTS CCC (Define List of Targets).
Definition ccc.h:477
struct i3c_ccc_deftgts_active_controller active_controller
Data describing the active controller.
Definition ccc.h:482
struct i3c_ccc_deftgts_target targets[]
Data describing the target(s) on the bus.
Definition ccc.h:485
uint8_t count
Number of Targets (and Groups) present on the I3C Bus.
Definition ccc.h:479
Payload for ENEC/DISEC CCC (Target Events Command).
Definition ccc.h:337
uint8_t events
Event byte:
Definition ccc.h:347
Payload for GETBCR CCC (Get Bus Characteristics Register).
Definition ccc.h:547
uint8_t bcr
Bus Characteristics Register.
Definition ccc.h:549
Payload for GETDCR CCC (Get Device Characteristics Register).
Definition ccc.h:555
uint8_t dcr
Device Characteristics Register.
Definition ccc.h:557
Payload for GETPID CCC (Get Provisioned ID).
Definition ccc.h:535
uint8_t pid[6]
48-bit Provisioned ID.
Definition ccc.h:541
Payload for SETMRL/GETMRL CCC (Set/Get Maximum Read Length).
Definition ccc.h:413
uint16_t len
Maximum Read Length.
Definition ccc.h:415
uint8_t ibi_len
Optional IBI Payload Size.
Definition ccc.h:418
Payload for SETMWL/GETMWL CCC (Set/Get Maximum Write Length).
Definition ccc.h:400
uint16_t len
Maximum Write Length.
Definition ccc.h:402
Payload structure for one CCC transaction.
Definition ccc.h:283
enum i3c_sdr_controller_error_types err
SDR Error Type.
Definition ccc.h:315
struct i3c_ccc_target_payload * payloads
Array of struct i3c_ccc_target_payload.
Definition ccc.h:327
struct i3c_ccc_payload::@224 targets
size_t num_xfer
Total number of bytes transferred.
Definition ccc.h:307
uint8_t * data
Pointer to byte array of data for this CCC.
Definition ccc.h:296
uint8_t id
The CCC ID (I3C_CCC_*).
Definition ccc.h:288
struct i3c_ccc_payload::@223 ccc
size_t num_targets
Number of targets.
Definition ccc.h:330
size_t data_len
Length in bytes for optional data array.
Definition ccc.h:299
One Bridged Target for SETBRGTGT payload.
Definition ccc.h:676
uint16_t id
16-bit ID for the bridged target.
Definition ccc.h:693
uint8_t addr
Dynamic address of the bridged target.
Definition ccc.h:683
Payload for SETBRGTGT CCC (Set Bridge Targets).
Definition ccc.h:703
uint8_t count
Number of bridged targets.
Definition ccc.h:705
struct i3c_ccc_setbrgtgt_tgt targets[]
Array of bridged targets.
Definition ccc.h:708
Payload structure for Direct CCC to one target.
Definition ccc.h:243
uint8_t addr
Target address.
Definition ccc.h:245
size_t data_len
Length in bytes for data.
Definition ccc.h:260
uint8_t rnw
0 for Write, 1 for Read
Definition ccc.h:248
uint8_t * data
Definition ccc.h:257
size_t num_xfer
Total number of bytes transferred.
Definition ccc.h:269
enum i3c_sdr_controller_error_types err
SDR Error Type.
Definition ccc.h:277
Structure describing a I3C target device.
Definition i3c.h:894
Misc utilities.
Macros to abstract toolchain specific capabilities.
Payload for GETCAPS CCC (Get Optional Feature Capabilities).
Definition ccc.h:926
union i3c_ccc_getcaps::@232 fmt1
uint8_t crcaps[2]
Defining Byte 0x91: CRCAPS Byte 1 CRCAPS1.
Definition ccc.h:992
uint8_t tgtcaps[4]
Defining Byte 0x00: TGTCAPS.
Definition ccc.h:971
union i3c_ccc_getcaps::@233 fmt2
uint8_t getcaps[4]
I3C v1.1+ Device Capabilities Byte 1 GETCAPS1.
Definition ccc.h:962
uint8_t gethdrcap
I3C v1.0 HDR Capabilities.
Definition ccc.h:935
uint8_t vtcaps[2]
Defining Byte 0x93: VTCAPS Byte 1 VTCAPS1.
Definition ccc.h:1005
uint32_t testpat
Defining Byte 0x5A: TESTPAT.
Definition ccc.h:978
Payload for GETMXDS CCC (Get Max Data Speed).
Definition ccc.h:746
struct i3c_ccc_getmxds::@229 fmt1
uint8_t maxrdturn[3]
Maximum Read Turnaround Time in microsecond.
Definition ccc.h:767
uint8_t maxrd
maxRd
Definition ccc.h:752
uint8_t maxwr
maxWr
Definition ccc.h:749
struct i3c_ccc_getmxds::@231 fmt3
uint8_t wrrdturn[5]
Defining Byte 0x00: WRRDTURN.
Definition ccc.h:776
uint8_t crhdly1
Defining Byte 0x91: CRHDLY.
Definition ccc.h:783
struct i3c_ccc_getmxds::@230 fmt2
Payload for GETSTATUS CCC (Get Device Status).
Definition ccc.h:589
struct i3c_ccc_getstatus::@227 fmt1
uint16_t precr
Defining Byte 0x91: PRECR.
Definition ccc.h:627
uint16_t tgtstat
Defining Byte 0x00: TGTSTAT.
Definition ccc.h:613
union i3c_ccc_getstatus::@228 fmt2
uint16_t status
Device Status.
Definition ccc.h:604
uint16_t raw_u16
Definition ccc.h:629