summaryrefslogtreecommitdiffstats
path: root/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
diff options
context:
space:
mode:
authorYang Zhang <yang.z.zhang@intel.com>2015-08-28 09:58:54 +0800
committerYang Zhang <yang.z.zhang@intel.com>2015-09-01 12:44:00 +0800
commite44e3482bdb4d0ebde2d8b41830ac2cdb07948fb (patch)
tree66b09f592c55df2878107a468a91d21506104d3f /qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
parent9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00 (diff)
Add qemu 2.4.0
Change-Id: Ic99cbad4b61f8b127b7dc74d04576c0bcbaaf4f5 Signed-off-by: Yang Zhang <yang.z.zhang@intel.com>
Diffstat (limited to 'qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs')
-rw-r--r--qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs34
1 files changed, 34 insertions, 0 deletions
diff --git a/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs b/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
new file mode 100644
index 000000000..ef8c7b0d4
--- /dev/null
+++ b/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
@@ -0,0 +1,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
+;