~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/interrupt-controller/msi.txt

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/devicetree/bindings/interrupt-controller/msi.txt (Version linux-6.12-rc7) and /Documentation/devicetree/bindings/interrupt-controller/msi.txt (Version linux-4.18.20)


  1 This document describes the generic device tre      1 This document describes the generic device tree binding for MSI controllers and
  2 their master(s).                                    2 their master(s).
  3                                                     3 
  4 Message Signaled Interrupts (MSIs) are a class      4 Message Signaled Interrupts (MSIs) are a class of interrupts generated by a
  5 write to an MMIO address.                           5 write to an MMIO address.
  6                                                     6 
  7 MSIs were originally specified by PCI (and are      7 MSIs were originally specified by PCI (and are used with PCIe), but may also be
  8 used with other busses, and hence a mechanism       8 used with other busses, and hence a mechanism is required to relate devices on
  9 those busses to the MSI controllers which they      9 those busses to the MSI controllers which they are capable of using,
 10 potentially including additional information.      10 potentially including additional information.
 11                                                    11 
 12 MSIs are distinguished by some combination of:     12 MSIs are distinguished by some combination of:
 13                                                    13 
 14 - The doorbell (the MMIO address written to).      14 - The doorbell (the MMIO address written to).
 15                                                    15   
 16   Devices may be configured by software to wri     16   Devices may be configured by software to write to arbitrary doorbells which
 17   they can address. An MSI controller may feat     17   they can address. An MSI controller may feature a number of doorbells.
 18                                                    18 
 19 - The payload (the value written to the doorbe     19 - The payload (the value written to the doorbell).
 20                                                    20   
 21   Devices may be configured to write an arbitr     21   Devices may be configured to write an arbitrary payload chosen by software.
 22   MSI controllers may have restrictions on per     22   MSI controllers may have restrictions on permitted payloads.
 23                                                    23 
 24 - Sideband information accompanying the write.     24 - Sideband information accompanying the write.
 25                                                    25   
 26   Typically this is neither configurable nor p     26   Typically this is neither configurable nor probeable, and depends on the path
 27   taken through the memory system (i.e. it is      27   taken through the memory system (i.e. it is a property of the combination of
 28   MSI controller and device rather than a prop     28   MSI controller and device rather than a property of either in isolation).
 29                                                    29 
 30                                                    30 
 31 MSI controllers:                                   31 MSI controllers:
 32 ================                                   32 ================
 33                                                    33 
 34 An MSI controller signals interrupts to a CPU      34 An MSI controller signals interrupts to a CPU when a write is made to an MMIO
 35 address by some master. An MSI controller may      35 address by some master. An MSI controller may feature a number of doorbells.
 36                                                    36 
 37 Required properties:                               37 Required properties:
 38 --------------------                               38 --------------------
 39                                                    39 
 40 - msi-controller: Identifies the node as an MS     40 - msi-controller: Identifies the node as an MSI controller.
 41                                                    41 
 42 Optional properties:                               42 Optional properties:
 43 --------------------                               43 --------------------
 44                                                    44 
 45 - #msi-cells: The number of cells in an msi-sp     45 - #msi-cells: The number of cells in an msi-specifier, required if not zero.
 46                                                    46 
 47   Typically this will encode information relat     47   Typically this will encode information related to sideband data, and will
 48   not encode doorbells or payloads as these ca     48   not encode doorbells or payloads as these can be configured dynamically.
 49                                                    49 
 50   The meaning of the msi-specifier is defined      50   The meaning of the msi-specifier is defined by the device tree binding of
 51   the specific MSI controller.                     51   the specific MSI controller. 
 52                                                    52 
 53                                                    53 
 54 MSI clients                                        54 MSI clients
 55 ===========                                        55 ===========
 56                                                    56 
 57 MSI clients are devices which generate MSIs. F     57 MSI clients are devices which generate MSIs. For each MSI they wish to
 58 generate, the doorbell and payload may be conf     58 generate, the doorbell and payload may be configured, though sideband
 59 information may not be configurable.               59 information may not be configurable.
 60                                                    60 
 61 Required properties:                               61 Required properties:
 62 --------------------                               62 --------------------
 63                                                    63 
 64 - msi-parent: A list of phandle + msi-specifie     64 - msi-parent: A list of phandle + msi-specifier pairs, one for each MSI
 65   controller which the device is capable of us     65   controller which the device is capable of using.
 66                                                    66 
 67   This property is unordered, and MSIs may be      67   This property is unordered, and MSIs may be allocated from any combination of
 68   MSI controllers listed in the msi-parent pro     68   MSI controllers listed in the msi-parent property.
 69                                                    69 
 70   If a device has restrictions on the allocati     70   If a device has restrictions on the allocation of MSIs, these restrictions
 71   must be described with additional properties     71   must be described with additional properties.
 72                                                    72 
 73   When #msi-cells is non-zero, busses with an      73   When #msi-cells is non-zero, busses with an msi-parent will require
 74   additional properties to describe the relati     74   additional properties to describe the relationship between devices on the bus
 75   and the set of MSIs they can potentially gen     75   and the set of MSIs they can potentially generate.
 76                                                    76 
 77                                                    77 
 78 Example                                            78 Example
 79 =======                                            79 =======
 80                                                    80 
 81 / {                                                81 / {
 82         #address-cells = <1>;                      82         #address-cells = <1>;
 83         #size-cells = <1>;                         83         #size-cells = <1>;
 84                                                    84 
 85         msi_a: msi-controller@a {                  85         msi_a: msi-controller@a {
 86                 reg = <0xa 0xf00>;                 86                 reg = <0xa 0xf00>;
 87                 compatible = "vendor-a,some-co     87                 compatible = "vendor-a,some-controller";
 88                 msi-controller;                    88                 msi-controller;
 89                 /* No sideband data, so #msi-c     89                 /* No sideband data, so #msi-cells omitted */
 90         };                                         90         };
 91                                                    91 
 92         msi_b: msi-controller@b {                  92         msi_b: msi-controller@b {
 93                 reg = <0xb 0xf00>;                 93                 reg = <0xb 0xf00>;
 94                 compatible = "vendor-b,another     94                 compatible = "vendor-b,another-controller";
 95                 msi-controller;                    95                 msi-controller;
 96                 /* Each device has some unique     96                 /* Each device has some unique ID */
 97                 #msi-cells = <1>;                  97                 #msi-cells = <1>;
 98         };                                         98         };
 99                                                    99 
100         msi_c: msi-controller@c {                 100         msi_c: msi-controller@c {
101                 reg = <0xc 0xf00>;             !! 101                 reg = <0xb 0xf00>;
102                 compatible = "vendor-b,another    102                 compatible = "vendor-b,another-controller";
103                 msi-controller;                   103                 msi-controller;
104                 /* Each device has some unique    104                 /* Each device has some unique ID */
105                 #msi-cells = <1>;                 105                 #msi-cells = <1>;
106         };                                        106         };
107                                                   107 
108         dev@0 {                                   108         dev@0 {
109                 reg = <0x0 0xf00>;                109                 reg = <0x0 0xf00>;
110                 compatible = "vendor-c,some-de    110                 compatible = "vendor-c,some-device";
111                                                   111 
112                 /* Can only generate MSIs to m    112                 /* Can only generate MSIs to msi_a */
113                 msi-parent = <&msi_a>;            113                 msi-parent = <&msi_a>;
114         };                                        114         };
115                                                   115 
116         dev@1 {                                   116         dev@1 {
117                 reg = <0x1 0xf00>;                117                 reg = <0x1 0xf00>;
118                 compatible = "vendor-c,some-de    118                 compatible = "vendor-c,some-device";
119                                                   119 
120                 /*                                120                 /* 
121                  * Can generate MSIs to either    121                  * Can generate MSIs to either A or B.
122                  */                               122                  */
123                 msi-parent = <&msi_a>, <&msi_b    123                 msi-parent = <&msi_a>, <&msi_b 0x17>;
124         };                                        124         };
125                                                   125 
126         dev@2 {                                   126         dev@2 {
127                 reg = <0x2 0xf00>;                127                 reg = <0x2 0xf00>;
128                 compatible = "vendor-c,some-de    128                 compatible = "vendor-c,some-device";
129                 /*                                129                 /*
130                  * Has different IDs at each M    130                  * Has different IDs at each MSI controller.
131                  * Can generate MSIs to all of    131                  * Can generate MSIs to all of the MSI controllers.
132                  */                               132                  */
133                 msi-parent = <&msi_a>, <&msi_b    133                 msi-parent = <&msi_a>, <&msi_b 0x17>, <&msi_c 0x53>;
134         };                                        134         };
135 };                                                135 };
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php