blob: e9d033323af06175c0299629843b162d3bfe5ed2 [file] [log] [blame]
include config.fs
\ ---------
\ DMA words
\ ---------
: sparc32-dma-free ( virt size -- )
2drop
;
: sparc32-dma-map-out ( virt devaddr size -- )
(dma-sync)
;
['] sparc32-dma-free to (dma-free)
['] sparc32-dma-map-out to (dma-map-out)
" /" find-device
2 encode-int " #address-cells" property
1 encode-int " #size-cells" property
" sun4m" encode-string " compatible" property
h# 0a21fe80 encode-int " clock-frequency" property
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
: dma-sync
(dma-sync)
;
: dma-alloc
(dma-alloc)
;
: dma-free
(dma-free)
;
: dma-map-in
(dma-map-in)
;
: dma-map-out
(dma-map-out)
;
new-device
" memory" device-name
external
: open true ;
: close ;
\ claim ( phys size align -- base )
\ release ( phys size -- )
finish-device
new-device
" virtual-memory" device-name
external
: open true ;
: close ;
\ claim ( phys size align -- base )
\ release ( phys size -- )
finish-device
new-device
" iommu" device-name
2 encode-int " #address-cells" property
1 encode-int " #size-cells" property
h# 1000 encode-int " page-size" property
0 encode-int " cache-coherence?" property
external
: open ( cr ." opening iommu" cr) true ;
: close ;
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
finish-device
" /iommu" find-device
new-device
" sbus" device-name
" hierarchical" device-type
2 encode-int " #address-cells" property
1 encode-int " #size-cells" property
h# 01443fd0 encode-int " clock-frequency" property
h# 1c encode-int " slot-address-bits" property
h# 3f encode-int " burst-sizes" property
external
: open ( cr ." opening SBus" cr) true ;
: close ;
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
: map-in map-in-sbus ;
: map-out map-out-sbus ;
: dma-alloc " dma-alloc" $call-parent ;
: dma-free " dma-free" $call-parent ;
: dma-map-in " dma-map-in" $call-parent ;
: dma-map-out " dma-map-out" $call-parent ;
: dma-sync " dma-sync" $call-parent ;
finish-device
[IFDEF] CONFIG_BPP
" /iommu/sbus" find-device
new-device
" SUNW,bpp" device-name
h# 4 encode-int h# 0c800000 encode-int encode+ h# 0000001c encode-int encode+ " reg" property
h# 33 encode-int 0 encode-int encode+ " intr" property
finish-device
[THEN]
" /iommu/sbus" find-device
new-device
" espdma" device-name
external
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
: dma-alloc " dma-alloc" $call-parent ;
: dma-free " dma-free" $call-parent ;
: dma-map-in " dma-map-in" $call-parent ;
: dma-map-out " dma-map-out" $call-parent ;
: dma-sync " dma-sync" $call-parent ;
finish-device
" /iommu/sbus" find-device
new-device
" ledma" device-name
h# 3f encode-int " burst-sizes" property
external
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
: dma-alloc " dma-alloc" $call-parent ;
: dma-free " dma-free" $call-parent ;
: dma-map-in " dma-map-in" $call-parent ;
: dma-map-out " dma-map-out" $call-parent ;
: dma-sync " dma-sync" $call-parent ;
finish-device
" /iommu/sbus/ledma" find-device
new-device
" le" device-name
" network" device-type
h# 7 encode-int " busmaster-regval" property
h# 26 encode-int 0 encode-int encode+ " intr" property
: dma-alloc " dma-alloc" $call-parent ;
: dma-free " dma-free" $call-parent ;
: dma-map-in " dma-map-in" $call-parent ;
: dma-map-out " dma-map-out" $call-parent ;
: dma-sync " dma-sync" $call-parent ;
finish-device
\ obio (on-board IO)
" /" find-device
new-device
" obio" device-name
" hierarchical" device-type
2 encode-int " #address-cells" property
1 encode-int " #size-cells" property
external
: open ( cr ." opening obio" cr) true ;
: close ;
: encode-unit encode-unit-sbus ;
: decode-unit decode-unit-sbus ;
finish-device
" /options" find-device
" disk" encode-string " boot-from" property
" /openprom" find-device
0 0 " aligned-allocator" property