@@ -566,6 +566,36 @@ static int cmd_i3c_hdr_ddr_read(const struct shell *sh, size_t argc, char **argv
566
566
return ret ;
567
567
}
568
568
569
+ /* i3c ccc rstdaa_dc <device> <target> */
570
+ static int cmd_i3c_ccc_rstdaa_dc (const struct shell * sh , size_t argc , char * * argv )
571
+ {
572
+ const struct device * dev , * tdev ;
573
+ struct i3c_device_desc * desc ;
574
+ int ret ;
575
+
576
+ ret = i3c_parse_args (sh , argv , & dev , & tdev , & desc );
577
+ if (ret != 0 ) {
578
+ return ret ;
579
+ }
580
+
581
+ if (!(desc -> flags & I3C_V1P0_SUPPORT )) {
582
+ shell_error (sh , "I3C: %s does not support RSTDAA_DC." , tdev -> name );
583
+ return - ENOTSUP ;
584
+ }
585
+
586
+ ret = i3c_ccc_do_rstdaa (desc );
587
+ if (ret < 0 ) {
588
+ shell_error (sh , "I3C: unable to send CCC RSTDAA." );
589
+ return ret ;
590
+ }
591
+
592
+ /* reset device DA */
593
+ desc -> dynamic_addr = 0 ;
594
+ shell_print (sh , "Reset dynamic address for device %s" , desc -> dev -> name );
595
+
596
+ return ret ;
597
+ }
598
+
569
599
/* i3c ccc rstdaa <device> */
570
600
static int cmd_i3c_ccc_rstdaa (const struct shell * sh , size_t argc , char * * argv )
571
601
{
@@ -2246,6 +2276,10 @@ SHELL_STATIC_SUBCMD_SET_CREATE(
2246
2276
/* L2 I3C CCC Shell Commands*/
2247
2277
SHELL_STATIC_SUBCMD_SET_CREATE (
2248
2278
sub_i3c_ccc_cmds ,
2279
+ SHELL_CMD_ARG (rstdaa_dc , & dsub_i3c_device_attached_name ,
2280
+ "Send CCC RSTDAA\n"
2281
+ "Usage: ccc rstdaa_dc <device> <target>" ,
2282
+ cmd_i3c_ccc_rstdaa_dc , 3 , 0 ),
2249
2283
SHELL_CMD_ARG (rstdaa , & dsub_i3c_device_name ,
2250
2284
"Send CCC RSTDAA\n"
2251
2285
"Usage: ccc rstdaa <device>" ,
0 commit comments