@@ -1324,30 +1324,6 @@ static enum udc_bus_speed udc_dwc2_device_speed(const struct device *dev)
1324
1324
}
1325
1325
}
1326
1326
1327
- static int udc_dwc2_enable (const struct device * dev )
1328
- {
1329
- struct usb_dwc2_reg * const base = dwc2_get_base (dev );
1330
- mem_addr_t dctl_reg = (mem_addr_t )& base -> dctl ;
1331
-
1332
- /* Disable soft disconnect */
1333
- sys_clear_bits (dctl_reg , USB_DWC2_DCTL_SFTDISCON );
1334
- LOG_DBG ("Enable device %p" , base );
1335
-
1336
- return 0 ;
1337
- }
1338
-
1339
- static int udc_dwc2_disable (const struct device * dev )
1340
- {
1341
- struct usb_dwc2_reg * const base = dwc2_get_base (dev );
1342
- mem_addr_t dctl_reg = (mem_addr_t )& base -> dctl ;
1343
-
1344
- /* Enable soft disconnect */
1345
- sys_set_bits (dctl_reg , USB_DWC2_DCTL_SFTDISCON );
1346
- LOG_DBG ("Disable device %p" , dev );
1347
-
1348
- return 0 ;
1349
- }
1350
-
1351
1327
static int dwc2_core_soft_reset (const struct device * dev )
1352
1328
{
1353
1329
struct usb_dwc2_reg * const base = dwc2_get_base (dev );
@@ -1386,7 +1362,7 @@ static int dwc2_core_soft_reset(const struct device *dev)
1386
1362
return 0 ;
1387
1363
}
1388
1364
1389
- static int udc_dwc2_init (const struct device * dev )
1365
+ static int udc_dwc2_init_controller (const struct device * dev )
1390
1366
{
1391
1367
const struct udc_dwc2_config * const config = dev -> config ;
1392
1368
struct udc_dwc2_data * const priv = udc_get_private (dev );
@@ -1399,19 +1375,6 @@ static int udc_dwc2_init(const struct device *dev)
1399
1375
uint32_t ghwcfg4 ;
1400
1376
int ret ;
1401
1377
1402
- if (config -> quirks != NULL && config -> quirks -> clk_enable != NULL ) {
1403
- LOG_DBG ("Enable vendor clock" );
1404
- ret = config -> quirks -> clk_enable (dev );
1405
- if (ret ) {
1406
- return ret ;
1407
- }
1408
- }
1409
-
1410
- ret = dwc2_init_pinctrl (dev );
1411
- if (ret ) {
1412
- return ret ;
1413
- }
1414
-
1415
1378
ret = dwc2_core_soft_reset (dev );
1416
1379
if (ret ) {
1417
1380
return ret ;
@@ -1551,27 +1514,49 @@ static int udc_dwc2_init(const struct device *dev)
1551
1514
USB_DWC2_GINTSTS_SOF ,
1552
1515
(mem_addr_t )& base -> gintmsk );
1553
1516
1517
+ return 0 ;
1518
+ }
1519
+
1520
+ static int udc_dwc2_enable (const struct device * dev )
1521
+ {
1522
+ const struct udc_dwc2_config * const config = dev -> config ;
1523
+ struct usb_dwc2_reg * const base = dwc2_get_base (dev );
1524
+ int err ;
1525
+
1526
+ err = udc_dwc2_init_controller (dev );
1527
+ if (err ) {
1528
+ return err ;
1529
+ }
1554
1530
1555
1531
/* Call vendor-specific function to enable peripheral */
1556
1532
if (config -> quirks != NULL && config -> quirks -> pwr_on != NULL ) {
1557
1533
LOG_DBG ("Enable vendor power" );
1558
- ret = config -> quirks -> pwr_on (dev );
1559
- if (ret ) {
1560
- return ret ;
1534
+ err = config -> quirks -> pwr_on (dev );
1535
+ if (err ) {
1536
+ return err ;
1561
1537
}
1562
1538
}
1563
1539
1564
1540
/* Enable global interrupt */
1565
1541
sys_set_bits ((mem_addr_t )& base -> gahbcfg , USB_DWC2_GAHBCFG_GLBINTRMASK );
1566
1542
config -> irq_enable_func (dev );
1567
1543
1544
+ /* Disable soft disconnect */
1545
+ sys_clear_bits ((mem_addr_t )& base -> dctl , USB_DWC2_DCTL_SFTDISCON );
1546
+ LOG_DBG ("Enable device %p" , base );
1547
+
1568
1548
return 0 ;
1569
1549
}
1570
1550
1571
- static int udc_dwc2_shutdown (const struct device * dev )
1551
+ static int udc_dwc2_disable (const struct device * dev )
1572
1552
{
1573
1553
const struct udc_dwc2_config * const config = dev -> config ;
1574
- struct usb_dwc2_reg * const base = config -> base ;
1554
+ struct usb_dwc2_reg * const base = dwc2_get_base (dev );
1555
+ mem_addr_t dctl_reg = (mem_addr_t )& base -> dctl ;
1556
+
1557
+ /* Enable soft disconnect */
1558
+ sys_set_bits (dctl_reg , USB_DWC2_DCTL_SFTDISCON );
1559
+ LOG_DBG ("Disable device %p" , dev );
1575
1560
1576
1561
config -> irq_disable_func (dev );
1577
1562
sys_clear_bits ((mem_addr_t )& base -> gahbcfg , USB_DWC2_GAHBCFG_GLBINTRMASK );
@@ -1589,6 +1574,27 @@ static int udc_dwc2_shutdown(const struct device *dev)
1589
1574
return 0 ;
1590
1575
}
1591
1576
1577
+ static int udc_dwc2_init (const struct device * dev )
1578
+ {
1579
+ const struct udc_dwc2_config * const config = dev -> config ;
1580
+ int ret ;
1581
+
1582
+ if (config -> quirks != NULL && config -> quirks -> clk_enable != NULL ) {
1583
+ LOG_DBG ("Enable vendor clock" );
1584
+ ret = config -> quirks -> clk_enable (dev );
1585
+ if (ret ) {
1586
+ return ret ;
1587
+ }
1588
+ }
1589
+
1590
+ return dwc2_init_pinctrl (dev );
1591
+ }
1592
+
1593
+ static int udc_dwc2_shutdown (const struct device * dev )
1594
+ {
1595
+ return 0 ;
1596
+ }
1597
+
1592
1598
static int dwc2_driver_preinit (const struct device * dev )
1593
1599
{
1594
1600
const struct udc_dwc2_config * config = dev -> config ;
0 commit comments