@@ -1513,40 +1513,31 @@ static bool _parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configur
1513
1513
uint16_t const drv_len = tu_desc_get_interface_total_len (desc_itf , assoc_itf_count , desc_end - p_desc );
1514
1514
TU_ASSERT (drv_len >= sizeof (tusb_desc_interface_t ));
1515
1515
1516
- if (desc_itf -> bInterfaceClass == TUSB_CLASS_HUB && dev -> hub_addr != 0 )
1516
+ // Find driver for this interface
1517
+ uint8_t drv_id ;
1518
+ for (drv_id = 0 ; drv_id < USBH_CLASS_DRIVER_COUNT ; drv_id ++ )
1517
1519
{
1518
- // TODO Attach hub to Hub is not currently supported
1519
- // skip this interface
1520
- TU_LOG (USBH_DBG_LVL , "Only 1 level of HUB is supported\r\n" );
1521
- }
1522
- else
1523
- {
1524
- // Find driver for this interface
1525
- uint8_t drv_id ;
1526
- for (drv_id = 0 ; drv_id < USBH_CLASS_DRIVER_COUNT ; drv_id ++ )
1520
+ usbh_class_driver_t const * driver = & usbh_class_drivers [drv_id ];
1521
+
1522
+ if ( driver -> open (dev -> rhport , dev_addr , desc_itf , drv_len ) )
1527
1523
{
1528
- usbh_class_driver_t const * driver = & usbh_class_drivers [drv_id ];
1524
+ // open successfully
1525
+ TU_LOG2 (" %s opened\r\n" , driver -> name );
1529
1526
1530
- if ( driver -> open (dev -> rhport , dev_addr , desc_itf , drv_len ) )
1527
+ // bind (associated) interfaces to found driver
1528
+ for (uint8_t i = 0 ; i < assoc_itf_count ; i ++ )
1531
1529
{
1532
- // open successfully
1533
- TU_LOG2 (" %s opened\r\n" , driver -> name );
1530
+ uint8_t const itf_num = desc_itf -> bInterfaceNumber + i ;
1534
1531
1535
- // bind (associated) interfaces to found driver
1536
- for (uint8_t i = 0 ; i < assoc_itf_count ; i ++ )
1537
- {
1538
- uint8_t const itf_num = desc_itf -> bInterfaceNumber + i ;
1539
-
1540
- // Interface number must not be used already
1541
- TU_ASSERT ( DRVID_INVALID == dev -> itf2drv [itf_num ] );
1542
- dev -> itf2drv [itf_num ] = drv_id ;
1543
- }
1532
+ // Interface number must not be used already
1533
+ TU_ASSERT ( DRVID_INVALID == dev -> itf2drv [itf_num ] );
1534
+ dev -> itf2drv [itf_num ] = drv_id ;
1535
+ }
1544
1536
1545
- // bind all endpoints to found driver
1546
- tu_edpt_bind_driver (dev -> ep2drv , desc_itf , drv_len , drv_id );
1537
+ // bind all endpoints to found driver
1538
+ tu_edpt_bind_driver (dev -> ep2drv , desc_itf , drv_len , drv_id );
1547
1539
1548
- break ; // exit driver find loop
1549
- }
1540
+ break ; // exit driver find loop
1550
1541
}
1551
1542
1552
1543
if ( drv_id >= USBH_CLASS_DRIVER_COUNT )
0 commit comments