summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs')
-rw-r--r--qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs95
1 files changed, 0 insertions, 95 deletions
diff --git a/qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs b/qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs
deleted file mode 100644
index 6aec8b159..000000000
--- a/qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs
+++ /dev/null
@@ -1,95 +0,0 @@
-\ This file is meant to be included by SCSI hosts to provide
-\ probing helpers - scsi-find-disks
-
-: wrapped-inquiry ( -- true | false )
- inquiry 0= IF false EXIT THEN
- \ Skip devices with PQ != 0
- sector inquiry-data>peripheral c@ e0 and 0 =
-;
-
-: scsi-read-lun ( addr -- lun true | false )
- dup c@ C0 AND CASE
- 40 OF w@-be 3FFF AND TRUE ENDOF
- 0 OF w@-be TRUE ENDOF
- dup dup OF ." Unsupported LUN format = " . cr FALSE ENDOF
- ENDCASE
-;
-
-: vscsi-report-luns ( -- array ndev )
- \ array of pointers, up to 8 devices
- dev-max-target 3 << alloc-mem dup
- 0 ( devarray devcur ndev )
- dev-max-target 0 DO
- i 0 dev-generate-srplun (set-target)
- report-luns nip IF
- sector l@ ( devarray devcur ndev size )
- sector 8 + swap ( devarray devcur ndev lunarray size )
- dup 8 + dup alloc-mem ( devarray devcur ndev lunarray size size+ mem )
- dup rot 0 fill ( devarray devcur ndev lunarray size mem )
- dup >r swap move r> ( devarray devcur ndev mem )
- dup sector l@ 3 >> 0 ?DO ( devarray devcur ndev mem memcur )
- dup dup scsi-read-lun IF
- j swap dev-generate-srplun swap x! 8 +
- ELSE
- 2drop
- THEN
- LOOP drop
- rot ( devarray ndev mem devcur )
- dup >r x! r> 8 + ( devarray ndev devcur )
- swap 1 +
- ELSE
- dev-max-target 1 = IF
- \ Some USB MSC devices do not implement report
- \ luns. That will stall the bulk pipe. These devices are
- \ single lun devices, report it accordingly
-
- ( devarray devcur ndev )
- 16 alloc-mem ( devarray devcur ndev mem )
- dup 16 0 fill ( devarray devcur ndev mem )
- dup 0 0 dev-generate-srplun swap x! ( devarray devcur ndev mem )
- rot x! ( devarray ndev )
- 1 +
- UNLOOP EXIT
- THEN
- THEN
- LOOP
- nip
-;
-
-: make-media-alias ( $name srplun -- )
- >r
- get-next-alias ?dup IF
- r> make-disk-alias
- ELSE
- r> drop
- THEN
-;
-
-: scsi-find-disks ( -- )
- ." SCSI: Looking for devices" cr
- vscsi-report-luns
- 0 ?DO
- dup x@
- BEGIN
- dup x@
- dup 0= IF drop TRUE ELSE
- (set-target) wrapped-inquiry IF
- ." " current-target (u.) type ." "
- \ XXX FIXME: Check top bits to ignore unsupported units
- \ and maybe provide better printout & more cases
- \ XXX FIXME: Actually check for LUNs
- sector inquiry-data>peripheral c@ CASE
- 0 OF ." DISK : " " disk" current-target make-media-alias ENDOF
- 5 OF ." CD-ROM : " " cdrom" current-target make-media-alias ENDOF
- 7 OF ." OPTICAL : " " cdrom" current-target make-media-alias ENDOF
- e OF ." RED-BLOCK: " " disk" current-target make-media-alias ENDOF
- dup dup OF ." ? (" . 8 emit 29 emit 5 spaces ENDOF
- ENDCASE
- sector .inquiry-text cr
- THEN
- 8 + FALSE
- THEN
- UNTIL drop
- 8 +
- LOOP drop
-;