| C6X Interrupt Chips | |
| ------------------- | |
| * C64X+ Core Interrupt Controller | |
| The core interrupt controller provides 16 prioritized interrupts to the | |
| C64X+ core. Priority 0 and 1 are used for reset and NMI respectively. | |
| Priority 2 and 3 are reserved. Priority 4-15 are used for interrupt | |
| sources coming from outside the core. | |
| Required properties: | |
| -------------------- | |
| - compatible: Should be "ti,c64x+core-pic"; | |
| - #interrupt-cells: <1> | |
| Interrupt Specifier Definition | |
| ------------------------------ | |
| Single cell specifying the core interrupt priority level (4-15) where | |
| 4 is highest priority and 15 is lowest priority. | |
| Example | |
| ------- | |
| core_pic: interrupt-controller@0 { | |
| interrupt-controller; | |
| #interrupt-cells = <1>; | |
| compatible = "ti,c64x+core-pic"; | |
| }; | |
| * C64x+ Megamodule Interrupt Controller | |
| The megamodule PIC consists of four interrupt mupliplexers each of which | |
| combine up to 32 interrupt inputs into a single interrupt output which | |
| may be cascaded into the core interrupt controller. The megamodule PIC | |
| has a total of 12 outputs cascading into the core interrupt controller. | |
| One for each core interrupt priority level. In addition to the combined | |
| interrupt sources, individual megamodule interrupts may be cascaded to | |
| the core interrupt controller. When an individual interrupt is cascaded, | |
| it is no longer handled through a megamodule interrupt combiner and is | |
| considered to have the core interrupt controller as the parent. | |
| Required properties: | |
| -------------------- | |
| - compatible: "ti,c64x+megamod-pic" | |
| - interrupt-controller | |
| - #interrupt-cells: <1> | |
| - reg: base address and size of register area | |
| - interrupt-parent: must be core interrupt controller | |
| - interrupts: This should have four cells; one for each interrupt combiner. | |
| The cells contain the core priority interrupt to which the | |
| corresponding combiner output is wired. | |
| Optional properties: | |
| -------------------- | |
| - ti,c64x+megamod-pic-mux: Array of 12 cells correspnding to the 12 core | |
| priority interrupts. The first cell corresponds to | |
| core priority 4 and the last cell corresponds to | |
| core priority 15. The value of each cell is the | |
| megamodule interrupt source which is MUXed to | |
| the core interrupt corresponding to the cell | |
| position. Allowed values are 4 - 127. Mapping for | |
| interrupts 0 - 3 (combined interrupt sources) are | |
| ignored. | |
| Interrupt Specifier Definition | |
| ------------------------------ | |
| Single cell specifying the megamodule interrupt source (4-127). Note that | |
| interrupts mapped directly to the core with "ti,c64x+megamod-pic-mux" will | |
| use the core interrupt controller as their parent and the specifier will | |
| be the core priority level, not the megamodule interrupt number. | |
| Examples | |
| -------- | |
| megamod_pic: interrupt-controller@1800000 { | |
| compatible = "ti,c64x+megamod-pic"; | |
| interrupt-controller; | |
| #interrupt-cells = <1>; | |
| reg = <0x1800000 0x1000>; | |
| interrupt-parent = <&core_pic>; | |
| interrupts = < 12 13 14 15 >; | |
| }; | |
| This is a minimal example where all individual interrupts go through a | |
| combiner. Combiner-0 is mapped to core interrupt 12, combiner-1 is mapped | |
| to interrupt 13, etc. | |
| megamod_pic: interrupt-controller@1800000 { | |
| compatible = "ti,c64x+megamod-pic"; | |
| interrupt-controller; | |
| #interrupt-cells = <1>; | |
| reg = <0x1800000 0x1000>; | |
| interrupt-parent = <&core_pic>; | |
| interrupts = < 12 13 14 15 >; | |
| ti,c64x+megamod-pic-mux = < 0 0 0 0 | |
| 32 0 0 0 | |
| 0 0 0 0 >; | |
| }; | |
| This the same as the first example except that megamodule interrupt 32 is | |
| mapped directly to core priority interrupt 8. The node using this interrupt | |
| must set the core controller as its interrupt parent and use 8 in the | |
| interrupt specifier value. |