|
@@ -40,6 +40,9 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
40
|
40
|
*
|
41
|
41
|
*/
|
42
|
42
|
|
|
43
|
+/** List of USB buses */
|
|
44
|
+struct list_head usb_buses = LIST_HEAD_INIT ( usb_buses );
|
|
45
|
+
|
43
|
46
|
/******************************************************************************
|
44
|
47
|
*
|
45
|
48
|
* Utility functions
|
|
@@ -1894,6 +1897,9 @@ int register_usb_bus ( struct usb_bus *bus ) {
|
1894
|
1897
|
if ( ( rc = bus->host->open ( bus ) ) != 0 )
|
1895
|
1898
|
goto err_open;
|
1896
|
1899
|
|
|
1900
|
+ /* Add to list of USB buses */
|
|
1901
|
+ list_add_tail ( &bus->list, &usb_buses );
|
|
1902
|
+
|
1897
|
1903
|
/* Register root hub */
|
1898
|
1904
|
if ( ( rc = register_usb_hub ( bus->hub ) ) != 0 )
|
1899
|
1905
|
goto err_register_hub;
|
|
@@ -1905,6 +1911,7 @@ int register_usb_bus ( struct usb_bus *bus ) {
|
1905
|
1911
|
|
1906
|
1912
|
unregister_usb_hub ( bus->hub );
|
1907
|
1913
|
err_register_hub:
|
|
1914
|
+ list_del ( &bus->list );
|
1908
|
1915
|
bus->host->close ( bus );
|
1909
|
1916
|
err_open:
|
1910
|
1917
|
return rc;
|
|
@@ -1927,6 +1934,9 @@ void unregister_usb_bus ( struct usb_bus *bus ) {
|
1927
|
1934
|
/* Unregister root hub */
|
1928
|
1935
|
unregister_usb_hub ( bus->hub );
|
1929
|
1936
|
|
|
1937
|
+ /* Remove from list of USB buses */
|
|
1938
|
+ list_del ( &bus->list );
|
|
1939
|
+
|
1930
|
1940
|
/* Close bus */
|
1931
|
1941
|
bus->host->close ( bus );
|
1932
|
1942
|
|