@@ -1257,6 +1257,18 @@ enum i3c_ccc_rstact_defining_byte {
12571257
12581258 /** Virtual Target Detect. */
12591259 I3C_CCC_RSTACT_VIRTUAL_TARGET_DETECT = 0x04U ,
1260+
1261+ /** Return Time to Reset Peripheral */
1262+ I3C_CCC_RSTACT_RETURN_TIME_TO_RESET_PERIPHERAL = 0x81U ,
1263+
1264+ /** Return Time to Reset Whole Target */
1265+ I3C_CCC_RSTACT_RETURN_TIME_TO_WHOLE_TARGET = 0x82U ,
1266+
1267+ /** Return Time for Debug Network Adapter Reset */
1268+ I3C_CCC_RSTACT_RETURN_TIME_FOR_DEBUG_NETWORK_ADAPTER_RESET = 0x83U ,
1269+
1270+ /** Return Virtual Target Indication */
1271+ I3C_CCC_RSTACT_RETURN_VIRTUAL_TARGET_INDICATION = 0x84U ,
12601272};
12611273
12621274/**
@@ -1317,10 +1329,10 @@ int i3c_ccc_do_getpid(struct i3c_device_desc *target,
13171329 struct i3c_ccc_getpid * pid );
13181330
13191331/**
1320- * @brief Broadcast RSTACT to reset I3C Peripheral.
1332+ * @brief Broadcast RSTACT to reset I3C Peripheral (Format 1) .
13211333 *
13221334 * Helper function to broadcast Target Reset Action (RSTACT) to
1323- * all connected targets to Reset the I3C Peripheral Only (0x01) .
1335+ * all connected targets.
13241336 *
13251337 * @param[in] controller Pointer to the controller device driver instance.
13261338 * @param[in] action What reset action to perform.
@@ -1330,6 +1342,60 @@ int i3c_ccc_do_getpid(struct i3c_device_desc *target,
13301342int i3c_ccc_do_rstact_all (const struct device * controller ,
13311343 enum i3c_ccc_rstact_defining_byte action );
13321344
1345+ /**
1346+ * @brief Single target RSTACT to reset I3C Peripheral.
1347+ *
1348+ * Helper function to do Target Reset Action (RSTACT) to
1349+ * one target.
1350+ *
1351+ * @param[in] target Pointer to the target device descriptor.
1352+ * @param[in] action What reset action to perform.
1353+ * @param[in] get True if a get, False if set
1354+ * @param[out] data Pointer to RSTACT payload received.
1355+ *
1356+ * @return @see i3c_do_ccc
1357+ */
1358+ int i3c_ccc_do_rstact (const struct i3c_device_desc * target ,
1359+ enum i3c_ccc_rstact_defining_byte action ,
1360+ bool get ,
1361+ uint8_t * data );
1362+
1363+ /**
1364+ * @brief Single target RSTACT to reset I3C Peripheral (Format 2).
1365+ *
1366+ * Helper function to do Target Reset Action (RSTACT, format 2) to
1367+ * one target. This is a Direct Write.
1368+ *
1369+ * @param[in] target Pointer to the target device descriptor.
1370+ * @param[in] action What reset action to perform.
1371+ *
1372+ * @return @see i3c_do_ccc
1373+ */
1374+ static inline int i3c_ccc_do_rstact_fmt2 (const struct i3c_device_desc * target ,
1375+ enum i3c_ccc_rstact_defining_byte action )
1376+ {
1377+ return i3c_ccc_do_rstact (target , action , false, NULL );
1378+ }
1379+
1380+ /**
1381+ * @brief Single target RSTACT to reset I3C Peripheral (Format 3).
1382+ *
1383+ * Helper function to do Target Reset Action (RSTACT, format 3) to
1384+ * one target. This is a Direct Read.
1385+ *
1386+ * @param[in] target Pointer to the target device descriptor.
1387+ * @param[in] action What reset action to perform.
1388+ * @param[out] data Pointer to RSTACT payload received.
1389+ *
1390+ * @return @see i3c_do_ccc
1391+ */
1392+ static inline int i3c_ccc_do_rstact_fmt3 (const struct i3c_device_desc * target ,
1393+ enum i3c_ccc_rstact_defining_byte action ,
1394+ uint8_t * data )
1395+ {
1396+ return i3c_ccc_do_rstact (target , action , true, data );
1397+ }
1398+
13331399/**
13341400 * @brief Broadcast RSTDAA to reset dynamic addresses for all targets.
13351401 *
0 commit comments