diff options
Diffstat (limited to 'qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs')
-rw-r--r-- | qemu/roms/SLOF/slof/fs/scsi-probe-helpers.fs | 95 |
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 -; |