diff options
Diffstat (limited to 'qemu/roms/SLOF/board-js2x/slof/pci-interrupts.fs')
-rw-r--r-- | qemu/roms/SLOF/board-js2x/slof/pci-interrupts.fs | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/qemu/roms/SLOF/board-js2x/slof/pci-interrupts.fs b/qemu/roms/SLOF/board-js2x/slof/pci-interrupts.fs deleted file mode 100644 index 92851cd58..000000000 --- a/qemu/roms/SLOF/board-js2x/slof/pci-interrupts.fs +++ /dev/null @@ -1,235 +0,0 @@ -\ ***************************************************************************** -\ * Copyright (c) 2004, 2008 IBM Corporation -\ * All rights reserved. -\ * This program and the accompanying materials -\ * are made available under the terms of the BSD License -\ * which accompanies this distribution, and is available at -\ * http://www.opensource.org/licenses/bsd-license.php -\ * -\ * Contributors: -\ * IBM Corporation - initial implementation -\ ****************************************************************************/ - -\ define function pointer as forward declaration for get-interrupt-line -\ this is board wireing and southbridge dependent -\ returns the wired interrupt line for this config addr -\ ( config-addr -- irq-line ) -DEFER pci-get-irq-line - -\ define function pointer as forward declaration for get-interrupt-sense-type -\ this is board wireing and southbridge dependent -\ returns the wired interrupt sense type for this config addr -\ 0 - Edge rising -\ 1 - Level low -\ 2 - Level high -\ 3 - Edge falling -\ ( config-addr -- irq-sense ) -DEFER pci-get-irq-sense - - -\ ***************************************************************************** -\ Generic IRQ routines -\ ***************************************************************************** - - - -: unknown-slot ( -- 0 ) -\ cr pci-vec ABORT" Unknown slot " - 0 -; -\ 0c s" /ht/@1/@2" PCI-X INTA & INTC Pnpirq0 -> irq12 -\ 0e s" /ht/@1/@2" PCI-X INTB & INTD Pnpirq1 -> irq14 -\ 10 s" /ht/@8,1" ATA -\ 0f s" /ht/@1/@1" Obsidian Pnpirq2 -> irq15 -\ 10 s" /ht/@7/@2" Video / Exar Serial PirqA -\ 11 s" /ht/@2/@4" Ethernet PirqB -\ 12 s" /ht/@2/@4,1" Ethernet PirqC -\ 13 s" /ht/@7/@0" USB PirqD -\ 13 s" /ht/@7/@0,1" USB PirqD -\ 13 s" /ht/@7/@0,2" USB PirqD - -\ 14 s" /ht/@3/@0" PCIe gpio28 -\ 15 s" /ht/@4/@0" PCIe gpio29 -\ 16 s" /ht/@5/@0" PCIe gpio30 -\ 17 s" /ht/@6/@0" PCIe gpio31 - - -\ ----------------------------------------------------------------------------- -\ Get the interrupt pin for a device on ht u4 -: u4-get-irq-line ( config-addr -- irq-line ) -\ cr s" u4-get-irq-line " type - pci-device-vec c@ CASE - 1 OF pci-device-vec-len 1 >= IF - pci-device-vec 1+ c@ CASE - 1 OF f ENDOF - 2 OF dup pci-interrupt@ CASE - 1 OF c ENDOF - 3 OF e ENDOF - 2 OF c ENDOF - 4 OF e ENDOF - ENDCASE - ENDOF - dup OF unknown-slot ENDOF - ENDCASE - ELSE - unknown-slot - THEN - ENDOF - 2 OF pci-device-vec-len 1 >= IF - pci-device-vec 1+ c@ CASE - 4 OF dup pci-addr2fn 1 >= IF 12 ELSE 11 THEN ENDOF - dup OF unknown-slot ENDOF - ENDCASE - ELSE - unknown-slot - THEN - ENDOF - 3 OF 14 ENDOF - 4 OF 15 ENDOF - 5 OF 16 ENDOF - 6 OF 17 ENDOF - 7 OF pci-device-vec-len 1 >= IF - pci-device-vec 1+ c@ CASE - 0 OF 13 ENDOF - 2 OF 10 ENDOF - dup OF unknown-slot ENDOF - ENDCASE - ELSE - unknown-slot - THEN - ENDOF - 8 OF 10 ENDOF - dup OF unknown-slot ENDOF - ENDCASE - swap drop -; - -\ ----------------------------------------------------------------------------- -\ Get the interrupt sense type for a device on ht u4 -: u4-get-irq-sense ( config-addr -- irq-sense ) -\ cr s" u4-get-irq-sense " type - u4-get-irq-line CASE - 0c OF 00 ENDOF - 0e OF 00 ENDOF - dup OF 01 ENDOF - ENDCASE -; - -\ 10 s" /ht/@4,1" set-pci-interrupt \ ATA -\ 13 s" /ht/@3/@0" set-pci-interrupt \ USB -\ 13 s" /ht/@3/@0,1" set-pci-interrupt \ USB -\ 13 s" /ht/@3/@0,2" set-pci-interrupt \ USB -\ 1c s" /ht/@2/@1" set-pci-interrupt \ Ethernet -\ 1d s" /ht/@2/@1,1" set-pci-interrupt \ Ethernet - -\ ----------------------------------------------------------------------------- -\ Get the interrupt pin for a device on ht u3 -: u3-get-irq-line ( config-addr -- irq-line ) -\ cr s" u3-get-irq-line " type - pci-device-vec c@ CASE - 2 OF pci-device-vec-len 1 >= IF - pci-device-vec 1+ c@ CASE - 1 OF dup pci-addr2fn 1 >= IF 1d ELSE 1c THEN ENDOF - dup OF unknown-slot ENDOF - ENDCASE - ELSE - unknown-slot - THEN - ENDOF - 3 OF 13 ENDOF - 4 OF 10 ENDOF - dup OF unknown-slot ENDOF - ENDCASE - swap drop -; - -\ ----------------------------------------------------------------------------- -\ Get the interrupt sense type for a device on ht u3 -: u3-get-irq-sense ( config-addr -- irq-sense ) -\ cr s" u3-get-irq-sense " type - u3-get-irq-line CASE - dup OF 01 ENDOF - ENDCASE -; - - - -\ ----------------------------------------------------------------------------- -\ Get the interrupt pin for a device on attu -: pcie-get-irq-line ( config-addr -- irq-line ) -\ cr s" pcie-get-irq-line " type - drop - 3 -; - - -\ ----------------------------------------------------------------------------- -\ Get the interrupt sense type for a device on attu -: pcie-get-irq-sense ( config-addr -- irq-sense ) -\ cr s" pcie-get-irq-sense " type - drop - 01 -; - -\ ----------------------------------------------------------------------------- -\ Set up the special routines for HT irq handling -: ht-irq-init ( -- ) -\ cr s" ht-irq-init " type - u4? IF - ['] u4-get-irq-line TO pci-get-irq-line - ['] u4-get-irq-sense TO pci-get-irq-sense - ELSE - ['] u3-get-irq-line TO pci-get-irq-line - ['] u3-get-irq-sense TO pci-get-irq-sense - THEN -; - -\ ----------------------------------------------------------------------------- -\ Set up the special routines for PCI-e irq handling -: pcie-irq-init ( -- ) -\ cr s" pcie-irq-init " type - ['] pcie-get-irq-sense TO pci-get-irq-sense - ['] pcie-get-irq-line TO pci-get-irq-line -; - -\ ----------------------------------------------------------------------------- -\ Set up the special routines for irq handling -0 VALUE mpic -: pci-irq-init ( mpic puid -- mpic ) - over TO mpic - 18 rshift FF and - CASE - F1 OF pcie-irq-init ENDOF - F2 OF ht-irq-init ENDOF - dup OF ABORT" Wrong PUID! in pci-irq-init" ENDOF - ENDCASE -; - -\ ----------------------------------------------------------------------------- -\ Set the interrupt pin for a device -: pci-set-irq-line ( config-addr -- ) -\ cr pci-vec - dup pci-get-irq-line -\ ." ->" dup . - swap pci-irq-line! -; - -\ ----------------------------------------------------------------------------- -\ Add an irq entry for the device at config-addr into the irq map -\ each entry consists of 7 integer values -\ Structure of an entry: -\ +----------+---+---+------------+--------------+---------+---------------+ -\ Number# | 0 | 1 | 2 | 3 | 4 | 5 | 6 | -\ +----------+---+---+------------+--------------+---------+---------------+ -\ meaning | config | | | int# | phandle | intr nr | pos edge (0) | -\ | addr | | | (1=a, 2=b, | intr contr | | act ll (1) | -\ +----------+---+---+------------+--------------+---------+---------------+ -\ value | pci slot | 0 | 0 | 1 | mpic | 7 | 0|1 | -\ +----------+---+---+------------+--------------+---------+---------------+ -: pci-gen-irq-entry ( prop-addr prop-len config-addr -- prop-addr prop-len ) - dup >r encode-int+ 0 encode-64+ \ config addr - r@ pci-interrupt@ encode-int+ \ interrupt type - mpic encode-int+ \ phandle to MPIC - r@ pci-irq-line@ encode-int+ \ interrupt number - r> pci-get-irq-sense encode-int+ \ trigger type -; |