Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: Document the Open PIC device tree binding

This binding documents several properties that have been in use for quite
some time, and adds one new property 'pic-no-reset', which controls the
runtime initialization behavior of the PIC. More specifically, the presence
of 'pic-no-reset' mandates that the PIC shall not be reset during runtime
initialization and that any initialization related to interrupt sources
shall be limited to sources explicitly referenced in the device tree. This
functionality is useful in AMP systems where multiple OSes are sharing the
PIC and the reinitialization of the PIC can interfere with OSes that are
already up and running.

The interrupt specifier definition is based off of Stuart Yoder's FSL MPIC
binding.

Signed-off-by: Meador Inge <meador_inge@mentor.com>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Stuart Yoder <stuart.yoder@freescale.com>
Cc: Hollis Blanchard <hollis_blanchard@mentor.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

authored by

Meador Inge and committed by
Benjamin Herrenschmidt
a99eff39 90407c99

+98
+98
Documentation/devicetree/bindings/open-pic.txt
··· 1 + * Open PIC Binding 2 + 3 + This binding specifies what properties must be available in the device tree 4 + representation of an Open PIC compliant interrupt controller. This binding is 5 + based on the binding defined for Open PIC in [1] and is a superset of that 6 + binding. 7 + 8 + Required properties: 9 + 10 + NOTE: Many of these descriptions were paraphrased here from [1] to aid 11 + readability. 12 + 13 + - compatible: Specifies the compatibility list for the PIC. The type 14 + shall be <string> and the value shall include "open-pic". 15 + 16 + - reg: Specifies the base physical address(s) and size(s) of this 17 + PIC's addressable register space. The type shall be <prop-encoded-array>. 18 + 19 + - interrupt-controller: The presence of this property identifies the node 20 + as an Open PIC. No property value shall be defined. 21 + 22 + - #interrupt-cells: Specifies the number of cells needed to encode an 23 + interrupt source. The type shall be a <u32> and the value shall be 2. 24 + 25 + - #address-cells: Specifies the number of cells needed to encode an 26 + address. The type shall be <u32> and the value shall be 0. As such, 27 + 'interrupt-map' nodes do not have to specify a parent unit address. 28 + 29 + Optional properties: 30 + 31 + - pic-no-reset: The presence of this property indicates that the PIC 32 + shall not be reset during runtime initialization. No property value shall 33 + be defined. The presence of this property also mandates that any 34 + initialization related to interrupt sources shall be limited to sources 35 + explicitly referenced in the device tree. 36 + 37 + * Interrupt Specifier Definition 38 + 39 + Interrupt specifiers consists of 2 cells encoded as 40 + follows: 41 + 42 + - <1st-cell>: The interrupt-number that identifies the interrupt source. 43 + 44 + - <2nd-cell>: The level-sense information, encoded as follows: 45 + 0 = low-to-high edge triggered 46 + 1 = active low level-sensitive 47 + 2 = active high level-sensitive 48 + 3 = high-to-low edge triggered 49 + 50 + * Examples 51 + 52 + Example 1: 53 + 54 + /* 55 + * An Open PIC interrupt controller 56 + */ 57 + mpic: pic@40000 { 58 + // This is an interrupt controller node. 59 + interrupt-controller; 60 + 61 + // No address cells so that 'interrupt-map' nodes which reference 62 + // this Open PIC node do not need a parent address specifier. 63 + #address-cells = <0>; 64 + 65 + // Two cells to encode interrupt sources. 66 + #interrupt-cells = <2>; 67 + 68 + // Offset address of 0x40000 and size of 0x40000. 69 + reg = <0x40000 0x40000>; 70 + 71 + // Compatible with Open PIC. 72 + compatible = "open-pic"; 73 + 74 + // The PIC shall not be reset. 75 + pic-no-reset; 76 + }; 77 + 78 + Example 2: 79 + 80 + /* 81 + * An interrupt generating device that is wired to an Open PIC. 82 + */ 83 + serial0: serial@4500 { 84 + // Interrupt source '42' that is active high level-sensitive. 85 + // Note that there are only two cells as specified in the interrupt 86 + // parent's '#interrupt-cells' property. 87 + interrupts = <42 2>; 88 + 89 + // The interrupt controller that this device is wired to. 90 + interrupt-parent = <&mpic>; 91 + }; 92 + 93 + * References 94 + 95 + [1] Power.org (TM) Standard for Embedded Power Architecture (TM) Platform 96 + Requirements (ePAPR), Version 1.0, July 2008. 97 + (http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf) 98 +