summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
blob: ef8c7b0d4474b6ff26c8ce63d764dbca3d2af35a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
\ Set up all known capabilities for this board to the plugged devices

: pci-msi-prop ( addr -- )
    5 pci-cap-find          ( capaddr )
    ?dup IF
        2+ rtas-config-w@   ( msi-control )
        1 rshift 7 and      ( msi-control:3:1 )

        dup 6 < IF
            1 swap lshift   ( vectors# )
            encode-int " ibm,req#msi" property
        ELSE
            ." Invalid MSI vectors number " . cr
        THEN
    THEN
;

: pci-msix-prop ( addr -- )
    11 pci-cap-find         ( capaddr )
    ?dup IF
        2+ rtas-config-w@   ( msix-control )
        7ff and             ( msix-control:10:0 )
        1+                  ( vectors# )
        ?dup IF
            encode-int " ibm,req#msi-x" property
        THEN
    THEN
;

: pci-set-capabilities ( config-addr -- )
    dup pci-msi-prop
    dup pci-msix-prop
    drop
;