summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/usb
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/usb')
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-hci.fs71
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-hub.fs32
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-keyb.fs54
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-mouse.fs20
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-parent-calls.fs15
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/dev-storage.fs361
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/slofdev.fs8
-rw-r--r--qemu/roms/SLOF/slof/fs/usb/usb-static.fs70
8 files changed, 0 insertions, 631 deletions
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-hci.fs b/qemu/roms/SLOF/slof/fs/usb/dev-hci.fs
deleted file mode 100644
index 5fb25b8b6..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-hci.fs
+++ /dev/null
@@ -1,71 +0,0 @@
-\ *****************************************************************************
-\ * Copyright (c) 2006, 2012, 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
-\ ****************************************************************************/
-\ *
-\ * [OEX]HCI functions
-\ *
-\ ****************************************************************************
-
-\ ( num $name type )
-
-VALUE usb_type \ USB type
-
-\ Open Firmware Properties
-device-type
-" usb" 2dup device-name
-
-rot
-VALUE usb_num \ controller number
-usb_num $cathex strdup \ create alias name
-2dup find-alias 0= IF
- get-node node>path set-alias
-ELSE 3drop THEN
-
-/hci-dev BUFFER: hcidev
-usb_num hcidev usb-setup-hcidev
-TRUE VALUE first-time-init?
-0 VALUE open-count
-
-false VALUE dev-hci-debug?
-
-1 encode-int s" #address-cells" property
-0 encode-int s" #size-cells" property
-
-\ converts physical address to text unit string
-: encode-unit ( port -- unit-str unit-len ) 1 hex-encode-unit ;
-
-\ Converts text unit string to phyical address
-: decode-unit ( addr len -- port ) 1 hex-decode-unit ;
-
-: get-hci-dev ( -- hcidev )
- hcidev
-;
-
-: hc-cleanup ( -- )
- my-phandle set-node
- dev-hci-debug? IF ." USB-HCI: Cleaning up " pwd cr THEN
- hcidev USB-HCD-EXIT
- 0 set-node
-;
-
-: open ( -- true | false )
- true
-;
-
-: close
-;
-
-\ create a new entry to cleanup and suspend HCI
-\ after first init
-first-time-init? IF
- ['] hc-cleanup add-quiesce-xt
- false to first-time-init?
-THEN
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-hub.fs b/qemu/roms/SLOF/slof/fs/usb/dev-hub.fs
deleted file mode 100644
index ba0b33437..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-hub.fs
+++ /dev/null
@@ -1,32 +0,0 @@
-new-device
-
-VALUE sudev
-
-s" slofdev.fs" included
-sudev slof-dev>port l@ dup set-unit encode-phys " reg" property
-sudev slof-dev>udev @ VALUE udev
-
-s" hub" device-name
-
-s" dev-parent-calls.fs" included
-
-1 encode-int s" #address-cells" property
-0 encode-int s" #size-cells" property
-: decode-unit 1 hex-decode-unit ;
-: encode-unit 1 hex-encode-unit ;
-
-: usb-hub-init ( usbdev -- true | false )
- udev USB-HUB-INIT
-;
-
-: open ( -- true | false )
- TRUE
-;
-
-: close
-;
-
-." USB HUB " cr
-usb-hub-init drop
-
-finish-device
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-keyb.fs b/qemu/roms/SLOF/slof/fs/usb/dev-keyb.fs
deleted file mode 100644
index db9e23ef1..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-keyb.fs
+++ /dev/null
@@ -1,54 +0,0 @@
-new-device
-
-VALUE sudev
-false VALUE usb-keyb-debug?
-
-s" slofdev.fs" included
-sudev slof-dev>port l@ dup set-unit encode-phys " reg" property
-sudev slof-dev>udev @ VALUE udev
-
-s" usb-keyboard" device-name
-s" keyboard" device-type
-s" EN" encode-string s" language" property
-s" keyboard" get-node node>path set-alias
-
-s" dev-parent-calls.fs" included
-
-0 VALUE open-count
-
-: open ( -- true | false )
- usb-keyb-debug? IF ." USB-KEYB: Opening (count is " open-count . ." )" cr THEN
- open-count 0= IF
- udev USB-HID-INIT 0= IF
- ." USB keyboard setup failed " pwd cr false EXIT
- THEN
- THEN
- open-count 1 + to open-count
- true
-;
-
-: close
- usb-keyb-debug? IF ." USB-KEYB: Closing (count is " open-count . ." )" cr THEN
- open-count 0> IF
- open-count 1 - dup to open-count
- 0= IF
- my-phandle set-node
- udev USB-HID-EXIT drop
- 0 set-node
- THEN
- THEN
-;
-
-\ method to check if a key is present in output buffer
-\ used by 'term-io.fs'
-: key-available? ( -- true|false )
- udev USB-KEY-AVAILABLE IF TRUE ELSE FALSE THEN
-;
-
-: read ( addr len -- actual )
- 0= IF drop 0 EXIT THEN
- udev USB-READ-KEYB ?dup IF swap c! 1 ELSE 0 swap c! 0 then
-;
-
-." USB Keyboard " cr
-finish-device
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-mouse.fs b/qemu/roms/SLOF/slof/fs/usb/dev-mouse.fs
deleted file mode 100644
index f6acd7e28..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-mouse.fs
+++ /dev/null
@@ -1,20 +0,0 @@
-new-device
-
-VALUE sudev
-s" slofdev.fs" included
-sudev slof-dev>port l@ dup set-unit encode-phys " reg" property
-sudev slof-dev>udev @ VALUE udev
-
-s" usb-mouse" device-name
-
-\ .S cr
-\ dup slof-dev>udev dup . @ . cr
-\ dup slof-dev>port dup . l@ . cr
-\ dup slof-dev>devaddr dup . l@ . cr
-\ dup slof-dev>hcitype dup . l@ . cr
-\ dup slof-dev>num dup . l@ . cr
-\ dup slof-dev>devtype dup . l@ . cr
-
-." USB mouse " cr
-
-finish-device
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-parent-calls.fs b/qemu/roms/SLOF/slof/fs/usb/dev-parent-calls.fs
deleted file mode 100644
index 57fa8ebdc..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-parent-calls.fs
+++ /dev/null
@@ -1,15 +0,0 @@
-\ ****************************************************************************/
-\ * Copyright (c) 2011 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
-\ ****************************************************************************/
-
-get-node CONSTANT my-phandle
-
-s" dma-function.fs" included
diff --git a/qemu/roms/SLOF/slof/fs/usb/dev-storage.fs b/qemu/roms/SLOF/slof/fs/usb/dev-storage.fs
deleted file mode 100644
index 94f8421d3..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/dev-storage.fs
+++ /dev/null
@@ -1,361 +0,0 @@
-\ *****************************************************************************
-\ * Copyright (c) 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
-\ ****************************************************************************/
-
-\ ( usbdev -- )
-
-new-device
-
-VALUE usbdev
-
-s" slofdev.fs" included
-
-false VALUE usb-disk-debug?
-
-usbdev slof-dev>port l@ dup set-unit encode-phys " reg" property
-s" storage" device-name
-
-s" dev-parent-calls.fs" included
-
-2 encode-int s" #address-cells" property
-0 encode-int s" #size-cells" property
-
-: decode-unit 2 hex64-decode-unit ;
-: encode-unit 2 hex64-encode-unit ;
-
-0 CONSTANT USB_PIPE_OUT
-1 CONSTANT USB_PIPE_IN
-
-\ -----------------------------------------------------------
-\ Specific properties
-\ -----------------------------------------------------------
-
-usbdev slof-dev>udev @ VALUE udev
-usbdev slof-dev>port l@ VALUE port
-usbdev slof-dev>hcitype l@ VALUE hcitype
-
-0 INSTANCE VALUE lun
-10000 VALUE dev-max-transfer
-0 VALUE resp-buffer
-0 VALUE resp-size
-0f CONSTANT SCSI-COMMAND-OFFSET
-
-\ -------------------------------------------------------
-\ DMA-able buffers
-\ -------------------------------------------------------
-
-STRUCT
- dev-max-transfer FIELD usb>data
- 40 FIELD usb>cmd
- 20 FIELD usb>csw
-CONSTANT /dma-buf
-
-0 VALUE dma-buf
-0 VALUE dma-buf-phys
-0 VALUE td-buf
-0 VALUE td-buf-phys
-1000 CONSTANT /td-buf
-
-: (dma-buf-init) ( -- )
- /dma-buf dma-alloc TO dma-buf
- dma-buf /dma-buf 0 dma-map-in TO dma-buf-phys
- /td-buf dma-alloc TO td-buf
- td-buf /td-buf 0 dma-map-in TO td-buf-phys
-;
-
-: (dma-buf-free) ( -- )
- td-buf td-buf-phys /td-buf dma-map-out
- td-buf /td-buf dma-free
- 0 TO td-buf
- 0 TO td-buf-phys
- dma-buf dma-buf-phys /dma-buf dma-map-out
- dma-buf /dma-buf dma-free
- 0 TO dma-buf
- 0 TO dma-buf-phys
-;
-
-
-scsi-open
-
-\ -----------------------------------------------------------
-\ Perform SCSI commands
-\ -----------------------------------------------------------
-
-0 INSTANCE VALUE current-target
-
-\ SCSI command. We do *NOT* implement the "standard" execute-command
-\ because that doesn't have a way to return the sense buffer back, and
-\ we do have auto-sense with some hosts. Instead we implement a made-up
-\ do-scsi-command.
-\
-\ Note: stat is -1 for "hw error" (ie, error queuing the command or
-\ getting the response).
-\
-\ A sense buffer is returned whenever the status is non-0 however
-\ if sense-len is 0 then no sense data is actually present
-\
-
-: do-bulk-command ( resp-buffer resp-size -- TRUE | FALSE )
- TO resp-size
- TO resp-buffer
- udev USB_PIPE_OUT td-buf td-buf-phys dma-buf-phys usb>cmd 1F
- usb-transfer-bulk IF \ transfer CBW
- resp-size IF
- d# 125 us
- udev USB_PIPE_IN td-buf td-buf-phys resp-buffer resp-size
- usb-transfer-bulk 1 = not IF \ transfer data
- usb-disk-debug? IF ." Data phase failed " cr THEN
- \ FALSE EXIT
- \ in case of a stall/halted endpoint we clear the halt
- \ Fall through and try reading the CSW
- THEN
- THEN
- d# 125 us
- udev USB_PIPE_IN td-buf td-buf-phys dma-buf-phys usb>csw 0D
- usb-transfer-bulk \ transfer CSW
- ELSE
- FALSE EXIT
- THEN
-;
-
-STRUCT \ cbw
- /l FIELD cbw>sig
- /l FIELD cbw>tag
- /l FIELD cbw>len
- /c FIELD cbw>flags
- /c FIELD cbw>lun \ 0:3 bits
- /c FIELD cbw>cblen \ 0:4 bits
-CONSTANT cbw-length
-
-STRUCT \ csw
- /l FIELD csw>sig
- /l FIELD csw>tag
- /l FIELD csw>data-residue
- /c FIELD csw>status
-CONSTANT cbw-length
-
-0 VALUE cbw-addr
-0 VALUE csw-addr
-
-: build-cbw ( tag xfer-len dir lun cmd-len addr -- )
- TO cbw-addr ( tag xfer-len dir lun cmd-len )
- cbw-addr cbw-length erase ( tag xfer-len dir lun cmd-len )
- cbw-addr cbw>cblen c! ( tag xfer-len dir lun )
- cbw-addr cbw>lun c! ( tag xfer-len dir )
- \ dir is true or false
- \ bmCBWFlags
- \ BIT 7 Direction
- \ 0 - OUT
- \ 1 - IN
- IF 80 ELSE 0 THEN
- cbw-addr cbw>flags c! ( tag xfer-len )
- cbw-addr cbw>len l!-le ( tag )
- cbw-addr cbw>tag l!-le ( )
- 43425355 cbw-addr cbw>sig l!-le
-;
-
-0 INSTANCE VALUE usb-buf-addr
-0 INSTANCE VALUE usb-buf-len
-0 INSTANCE VALUE usb-dir
-0 INSTANCE VALUE usb-cmd-addr
-0 INSTANCE VALUE usb-cmd-len
-1 VALUE tag
-
-: execute-scsi-command ( buf-addr buf-len dir cmd-addr cmd-len -- ... )
- ( ... [ sense-buf sense-len ] stat )
- \ Cleanup virtio request and response
- to usb-cmd-len to usb-cmd-addr to usb-dir to usb-buf-len to usb-buf-addr
-
- dma-buf usb>cmd 40 0 fill
- dma-buf usb>csw 20 0 fill
-
- tag usb-buf-len usb-dir lun usb-cmd-len dma-buf usb>cmd
- ( tag transfer-len dir lun cmd-len addr )
- build-cbw
- 1 tag + to tag
-
- usb-cmd-addr
- dma-buf usb>cmd SCSI-COMMAND-OFFSET +
- usb-cmd-len
- move
-
- \ Send it
- dma-buf-phys usb>data usb-buf-len
- do-bulk-command IF
- dma-buf usb>data usb-buf-addr usb-buf-len move
- ELSE
- ." USB-DISK: Bulk commad failed!" cr
- 0 0 -1 EXIT
- THEN
-
- dma-buf usb>csw to csw-addr
- csw-addr csw>sig l@ 55534253 <> IF
- ." USB-DISK: CSW signature invalid " cr
- 0 0 -1 EXIT
- THEN
-
- csw-addr csw>status c@ CASE
- 0 OF ENDOF \ Good
- 1 OF
- usb-disk-debug? IF
- ." USB-DISK: CSW Data residue: "
- csw-addr csw>data-residue l@-le . cr
- THEN
- 0 0 8 EXIT ENDOF \ Command failed, Retry
- dup OF 0 0 -1 EXIT ENDOF \ Anything else -> HW error
- ENDCASE
-
- \ Other error status
- csw-addr csw>status c@ dup 0<> IF
- usb-disk-debug? IF
- over scsi-get-sense-data
- ." USB-DISK: Sense key [ " dup . ." ] " .sense-text
- ." ASC,ASCQ: " . . cr
- THEN
- rot
- THEN
-;
-
-\ --------------------------------
-\ Include the generic host helpers
-\ --------------------------------
-
-" scsi-host-helpers.fs" included
-
-0 VALUE open-count
-
-: usb-storage-init ( -- TRUE )
- td-buf 0= IF
- usb-disk-debug? IF ." USB-DISK: Allocating buffer " cr THEN
- (dma-buf-init)
- udev USB-MSC-INIT 0= IF
- ." USB-DISK: Unable to initialize MSC " cr
- FALSE
- ELSE
- TRUE
- THEN
- THEN
-;
-
-: usb-storage-cleanup
- td-buf 0<> IF
- usb-disk-debug? IF ." USB-DISK: Freeing buffer " cr THEN
- (dma-buf-free)
- udev USB-MSC-EXIT 0= IF ." USB-DISK: Unable to exit MSC " cr THEN
- THEN
-;
-
-: open
- usb-disk-debug? IF ." USB-DISK: Opening (count is " open-count . ." )" cr THEN
-
- open-count 0= IF
- usb-storage-init IF
- 1 to open-count true
- ELSE ." USB-DISK initialization failed !" cr false THEN
- ELSE
- open-count 1 + to open-count
- true
- THEN
-;
-
-: close
- usb-disk-debug? IF ." USB-DISK: Closing (count is " open-count . ." )" cr THEN
-
- open-count 0> IF
- open-count 1 - dup to open-count
- 0= IF
- usb-storage-cleanup
- THEN
- THEN
-;
-
-\ -----------------------------------------------------------
-\ SCSI scan at boot and child device support
-\ -----------------------------------------------------------
-
-\ We use SRP luns of the form 01000000 | (target << 8) | lun
-\ in the top 32 bits of the 64-bit LUN
-: (set-target)
- dup 20 >> FFFF and to lun
- dup 30 >> FF and to port
- to current-target
- usb-disk-debug? IF ." USB-DISK: udev " udev . ." lun:" lun . ." port:" port . cr THEN
-;
-
-: dev-generate-srplun ( target lun-id -- srplun )
- swap drop port 0100 or 10 << or 20 <<
-;
-
-\ FIXME: Check max transfer coming from virtio config
-: max-transfer ( -- n )
- dev-max-transfer
-;
-
-\ We obtain here a unit address on the stack, since our #address-cells
-\ is 2, the 64-bit srplun is split in two cells that we need to join
-\
-\ Note: This diverges a bit from the original OF scsi spec as the two
-\ cells are the 2 words of a 64-bit SRP LUN
-: set-address ( srplun.lo srplun.hi -- )
- lxjoin (set-target)
- usb-disk-debug? IF ." USB-DISK: udev " udev . ." lun:" lun . ." port:" port . cr THEN
-;
-
-1 CONSTANT #target
-: dev-max-target ( -- #target )
- #target
-;
-
-" scsi-probe-helpers.fs" included
-
-scsi-close \ no further scsi words required
-
-\ Set scsi alias if none is set yet
-: setup-alias
- s" scsi" find-alias 0= IF
- s" scsi" get-node node>path set-alias
- ELSE
- drop
- THEN
-;
-
-: usb-storage-init-and-scan ( -- )
- usb-disk-debug? IF ." Initializing usb-disk: udev " udev . cr THEN
-
- \ Create instance for scanning:
- 0 0 get-node open-node ?dup 0= IF EXIT THEN
- my-self >r
- dup to my-self
-
- hcitype
- CASE
- 1 OF 4000 TO dev-max-transfer ENDOF \ OHCI
- 2 OF 10000 TO dev-max-transfer ENDOF \ EHCI
- 3 OF F000 TO dev-max-transfer ENDOF \ XHCI
- ENDCASE
- usb-storage-init
- scsi-find-disks
- setup-alias
- usb-storage-cleanup
- \ Close the temporary instance:
- close-node
- r> to my-self
-;
-
-." USB Storage " cr
-: usb-scsi-add-disk
- " scsi-disk.fs" included
-;
-
-usb-scsi-add-disk
-usb-storage-init-and-scan
-
-finish-device
diff --git a/qemu/roms/SLOF/slof/fs/usb/slofdev.fs b/qemu/roms/SLOF/slof/fs/usb/slofdev.fs
deleted file mode 100644
index d6e20fdcd..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/slofdev.fs
+++ /dev/null
@@ -1,8 +0,0 @@
-STRUCT
- /n FIELD slof-dev>udev
- /l FIELD slof-dev>port
- /l FIELD slof-dev>devaddr
- /l FIELD slof-dev>hcitype
- /l FIELD slof-dev>num
- /l FIELD slof-dev>devtype
-CONSTANT slof-usb-dev
diff --git a/qemu/roms/SLOF/slof/fs/usb/usb-static.fs b/qemu/roms/SLOF/slof/fs/usb/usb-static.fs
deleted file mode 100644
index 47db7276a..000000000
--- a/qemu/roms/SLOF/slof/fs/usb/usb-static.fs
+++ /dev/null
@@ -1,70 +0,0 @@
-\ *****************************************************************************
-\ * 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
-;