summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/usb/usb-static.fs
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/usb/usb-static.fs')
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/usb-static.fs70
1 files changed, 70 insertions, 0 deletions
diff --git a/qemu/roms/SLOF/slof/fs/usb/usb-static.fs b/qemu/roms/SLOF/slof/fs/usb/usb-static.fs
new file mode 100644
index 000000000..47db7276a
--- /dev/null
+++ b/qemu/roms/SLOF/slof/fs/usb/usb-static.fs
@@ -0,0 +1,70 @@
+\ *****************************************************************************
+\ * Copyright (c) 2004, 2011, 2013 IBM Corporation
+\ * All rights reserved.
+\ * This program and the accompanying materials
+\ * are made available under the terms of the BSD License
+\ * which accompanies this distribution, and is available at
+\ * http://www.opensource.org/licenses/bsd-license.php
+\ *
+\ * Contributors:
+\ * IBM Corporation - initial implementation
+\ ****************************************************************************/
+
+\ Load dev hci
+: load-dev-hci ( num name-str name-len )
+ s" dev-hci.fs" INCLUDED
+;
+
+0 VALUE ohci-init
+0 VALUE ehci-init
+0 VALUE xhci-init
+0 VALUE usb-alias-num
+
+: get-usb-alias-num
+ usb-alias-num dup 1+ to usb-alias-num
+;
+
+\ create a new ohci device alias for the current node
+: set-ohci-alias ( -- )
+ 1 to ohci-init
+ get-usb-alias-num ( num )
+ s" ohci" 1 load-dev-hci
+;
+
+\ create a new ehci device alias for the current node
+: set-ehci-alias ( -- )
+ 1 to ehci-init
+ get-usb-alias-num ( num )
+ s" ehci" 2 load-dev-hci
+;
+
+\ create a new xhci device alias for the current node
+: set-xhci-alias ( -- )
+ 1 to xhci-init
+ get-usb-alias-num ( num )
+ s" xhci" 3 load-dev-hci
+;
+
+: usb-enumerate ( hcidev -- )
+ USB-HCD-INIT
+;
+
+: usb-scan ( -- )
+ ." Scanning USB " cr
+ ohci-init 1 = IF USB-OHCI-REGISTER THEN
+ ehci-init 1 = IF USB-EHCI-REGISTER THEN
+ xhci-init 1 = IF USB-XHCI-REGISTER THEN
+
+ usb-alias-num 0 ?DO
+ " usb" i $cathex find-device
+ " get-hci-dev" get-node find-method
+ IF
+ execute usb-enumerate
+ ELSE
+ ." get-base-address method not found for usb@" i .
+ ." Device type: "
+ " device_type" get-node get-property 0= IF decode-string type cr 2drop THEN
+ THEN
+ LOOP
+ 0 set-node \ FIXME Setting it back
+;