@@ -169,6 +169,7 @@ struct fastboot_ctx_s
169169 */
170170
171171 uint64_t left ;
172+ FAR void * handle ;
172173 FAR void * download_buffer ;
173174 FAR struct fastboot_var_s * varlist ;
174175 CODE int (* upload_func )(FAR struct fastboot_ctx_s * );
@@ -1157,7 +1158,6 @@ static int fastboot_usbdev_initialize(FAR struct fastboot_ctx_s *ctx)
11571158# else
11581159 uint8_t dev = BOARDIOC_USBDEV_FASTBOOT ;
11591160# endif
1160- FAR void * handle ;
11611161 int ret ;
11621162
11631163 ctrl .usbdev = dev ;
@@ -1177,7 +1177,7 @@ static int fastboot_usbdev_initialize(FAR struct fastboot_ctx_s *ctx)
11771177 ctrl .action = BOARDIOC_USBDEV_CONNECT ;
11781178 ctrl .instance = 0 ;
11791179 ctrl .config = 0 ;
1180- ctrl .handle = & handle ;
1180+ ctrl .handle = & ctx -> handle ;
11811181
11821182 ret = boardctl (BOARDIOC_USBDEV_CONTROL , (uintptr_t )& ctrl );
11831183 if (ret < 0 )
@@ -1208,13 +1208,37 @@ static int fastboot_usbdev_initialize(FAR struct fastboot_ctx_s *ctx)
12081208
12091209static void fastboot_usbdev_deinit (FAR struct fastboot_ctx_s * ctx )
12101210{
1211+ #ifdef CONFIG_SYSTEM_FASTBOOTD_USB_BOARDCTL
1212+ struct boardioc_usbdev_ctrl_s ctrl ;
1213+ #endif
12111214 int i ;
12121215
12131216 for (i = 0 ; i < nitems (ctx -> tran_fd ); i ++ )
12141217 {
12151218 close (ctx -> tran_fd [i ]);
12161219 ctx -> tran_fd [i ] = -1 ;
12171220 }
1221+
1222+ #ifdef CONFIG_SYSTEM_FASTBOOTD_USB_BOARDCTL
1223+ if (ctx -> handle )
1224+ {
1225+ # ifdef CONFIG_USBDEV_COMPOSITE
1226+ ctrl .usbdev = BOARDIOC_USBDEV_COMPOSITE ;
1227+ # else
1228+ ctrl .usbdev = BOARDIOC_USBDEV_FASTBOOT ;
1229+ # endif
1230+ ctrl .action = BOARDIOC_USBDEV_DISCONNECT ;
1231+ ctrl .instance = 0 ;
1232+ ctrl .config = 0 ;
1233+ ctrl .handle = & ctx -> handle ;
1234+
1235+ i = boardctl (BOARDIOC_USBDEV_CONTROL , (uintptr_t )& ctrl );
1236+ if (i < 0 )
1237+ {
1238+ fb_err ("boardctl(BOARDIOC_USBDEV_DISCONNECT) failed: %d\n" , i );
1239+ }
1240+ }
1241+ #endif /* SYSTEM_FASTBOOTD_USB_BOARDCTL */
12181242}
12191243
12201244static ssize_t fastboot_usbdev_read (FAR struct fastboot_ctx_s * ctx ,
0 commit comments