diff options
Diffstat (limited to 'Documentation')
| -rw-r--r-- | Documentation/CodeOfConflict | 27 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/arm/exynos/power_domain.txt | 2 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/arm/sti.txt | 4 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/i2c/i2c-imx.txt | 1 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/net/amd-xgbe-phy.txt | 4 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/net/apm-xgene-enet.txt | 5 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt | 47 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/power/power_domain.txt | 29 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/serial/8250.txt (renamed from Documentation/devicetree/bindings/serial/of-serial.txt) | 0 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/serial/axis,etraxfs-uart.txt | 19 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt | 16 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/submitting-patches.txt | 3 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/vendor-prefixes.txt | 2 | ||||
| -rw-r--r-- | Documentation/power/suspend-and-interrupts.txt | 22 |
14 files changed, 175 insertions, 6 deletions
diff --git a/Documentation/CodeOfConflict b/Documentation/CodeOfConflict new file mode 100644 index 000000000000..1684d0b4efa6 --- /dev/null +++ b/Documentation/CodeOfConflict | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | Code of Conflict | ||
| 2 | ---------------- | ||
| 3 | |||
| 4 | The Linux kernel development effort is a very personal process compared | ||
| 5 | to "traditional" ways of developing software. Your code and ideas | ||
| 6 | behind it will be carefully reviewed, often resulting in critique and | ||
| 7 | criticism. The review will almost always require improvements to the | ||
| 8 | code before it can be included in the kernel. Know that this happens | ||
| 9 | because everyone involved wants to see the best possible solution for | ||
| 10 | the overall success of Linux. This development process has been proven | ||
| 11 | to create the most robust operating system kernel ever, and we do not | ||
| 12 | want to do anything to cause the quality of submission and eventual | ||
| 13 | result to ever decrease. | ||
| 14 | |||
| 15 | If however, anyone feels personally abused, threatened, or otherwise | ||
| 16 | uncomfortable due to this process, that is not acceptable. If so, | ||
| 17 | please contact the Linux Foundation's Technical Advisory Board at | ||
| 18 | <tab@lists.linux-foundation.org>, or the individual members, and they | ||
| 19 | will work to resolve the issue to the best of their ability. For more | ||
| 20 | information on who is on the Technical Advisory Board and what their | ||
| 21 | role is, please see: | ||
| 22 | http://www.linuxfoundation.org/programs/advisory-councils/tab | ||
| 23 | |||
| 24 | As a reviewer of code, please strive to keep things civil and focused on | ||
| 25 | the technical issues involved. We are all humans, and frustrations can | ||
| 26 | be high on both sides of the process. Try to keep in mind the immortal | ||
| 27 | words of Bill and Ted, "Be excellent to each other." | ||
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt index f4445e5a2bbb..1e097037349c 100644 --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt | |||
| @@ -22,6 +22,8 @@ Optional Properties: | |||
| 22 | - pclkN, clkN: Pairs of parent of input clock and input clock to the | 22 | - pclkN, clkN: Pairs of parent of input clock and input clock to the |
| 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) | 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) |
| 24 | are supported currently. | 24 | are supported currently. |
| 25 | - power-domains: phandle pointing to the parent power domain, for more details | ||
| 26 | see Documentation/devicetree/bindings/power/power_domain.txt | ||
| 25 | 27 | ||
| 26 | Node of a device using power domains must have a power-domains property | 28 | Node of a device using power domains must have a power-domains property |
| 27 | defined with a phandle to respective power domain. | 29 | defined with a phandle to respective power domain. |
diff --git a/Documentation/devicetree/bindings/arm/sti.txt b/Documentation/devicetree/bindings/arm/sti.txt index d70ec358736c..8d27f6b084c7 100644 --- a/Documentation/devicetree/bindings/arm/sti.txt +++ b/Documentation/devicetree/bindings/arm/sti.txt | |||
| @@ -13,6 +13,10 @@ Boards with the ST STiH407 SoC shall have the following properties: | |||
| 13 | Required root node property: | 13 | Required root node property: |
| 14 | compatible = "st,stih407"; | 14 | compatible = "st,stih407"; |
| 15 | 15 | ||
| 16 | Boards with the ST STiH410 SoC shall have the following properties: | ||
| 17 | Required root node property: | ||
| 18 | compatible = "st,stih410"; | ||
| 19 | |||
| 16 | Boards with the ST STiH418 SoC shall have the following properties: | 20 | Boards with the ST STiH418 SoC shall have the following properties: |
| 17 | Required root node property: | 21 | Required root node property: |
| 18 | compatible = "st,stih418"; | 22 | compatible = "st,stih418"; |
diff --git a/Documentation/devicetree/bindings/i2c/i2c-imx.txt b/Documentation/devicetree/bindings/i2c/i2c-imx.txt index 52d37fd8d3e5..ce4311d726ae 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-imx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-imx.txt | |||
| @@ -7,6 +7,7 @@ Required properties: | |||
| 7 | - "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC | 7 | - "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC |
| 8 | - reg : Should contain I2C/HS-I2C registers location and length | 8 | - reg : Should contain I2C/HS-I2C registers location and length |
| 9 | - interrupts : Should contain I2C/HS-I2C interrupt | 9 | - interrupts : Should contain I2C/HS-I2C interrupt |
| 10 | - clocks : Should contain the I2C/HS-I2C clock specifier | ||
| 10 | 11 | ||
| 11 | Optional properties: | 12 | Optional properties: |
| 12 | - clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz. | 13 | - clock-frequency : Constains desired I2C/HS-I2C bus clock frequency in Hz. |
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt index 33df3932168e..8db32384a486 100644 --- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt +++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt | |||
| @@ -27,6 +27,8 @@ property is used. | |||
| 27 | - amd,serdes-cdr-rate: CDR rate speed selection | 27 | - amd,serdes-cdr-rate: CDR rate speed selection |
| 28 | - amd,serdes-pq-skew: PQ (data sampling) skew | 28 | - amd,serdes-pq-skew: PQ (data sampling) skew |
| 29 | - amd,serdes-tx-amp: TX amplitude boost | 29 | - amd,serdes-tx-amp: TX amplitude boost |
| 30 | - amd,serdes-dfe-tap-config: DFE taps available to run | ||
| 31 | - amd,serdes-dfe-tap-enable: DFE taps to enable | ||
| 30 | 32 | ||
| 31 | Example: | 33 | Example: |
| 32 | xgbe_phy@e1240800 { | 34 | xgbe_phy@e1240800 { |
| @@ -41,4 +43,6 @@ Example: | |||
| 41 | amd,serdes-cdr-rate = <2>, <2>, <7>; | 43 | amd,serdes-cdr-rate = <2>, <2>, <7>; |
| 42 | amd,serdes-pq-skew = <10>, <10>, <30>; | 44 | amd,serdes-pq-skew = <10>, <10>, <30>; |
| 43 | amd,serdes-tx-amp = <15>, <15>, <10>; | 45 | amd,serdes-tx-amp = <15>, <15>, <10>; |
| 46 | amd,serdes-dfe-tap-config = <3>, <3>, <1>; | ||
| 47 | amd,serdes-dfe-tap-enable = <0>, <0>, <127>; | ||
| 44 | }; | 48 | }; |
diff --git a/Documentation/devicetree/bindings/net/apm-xgene-enet.txt b/Documentation/devicetree/bindings/net/apm-xgene-enet.txt index cfcc52705ed8..6151999c5dca 100644 --- a/Documentation/devicetree/bindings/net/apm-xgene-enet.txt +++ b/Documentation/devicetree/bindings/net/apm-xgene-enet.txt | |||
| @@ -4,7 +4,10 @@ Ethernet nodes are defined to describe on-chip ethernet interfaces in | |||
| 4 | APM X-Gene SoC. | 4 | APM X-Gene SoC. |
| 5 | 5 | ||
| 6 | Required properties for all the ethernet interfaces: | 6 | Required properties for all the ethernet interfaces: |
| 7 | - compatible: Should be "apm,xgene-enet" | 7 | - compatible: Should state binding information from the following list, |
| 8 | - "apm,xgene-enet": RGMII based 1G interface | ||
| 9 | - "apm,xgene1-sgenet": SGMII based 1G interface | ||
| 10 | - "apm,xgene1-xgenet": XFI based 10G interface | ||
| 8 | - reg: Address and length of the register set for the device. It contains the | 11 | - reg: Address and length of the register set for the device. It contains the |
| 9 | information of registers in the same order as described by reg-names | 12 | information of registers in the same order as described by reg-names |
| 10 | - reg-names: Should contain the register set names | 13 | - reg-names: Should contain the register set names |
diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt new file mode 100644 index 000000000000..2a3d90de18ee --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | TI Wilink 6/7/8 (wl12xx/wl18xx) SDIO devices | ||
| 2 | |||
| 3 | This node provides properties for controlling the wilink wireless device. The | ||
| 4 | node is expected to be specified as a child node to the SDIO controller that | ||
| 5 | connects the device to the system. | ||
| 6 | |||
| 7 | Required properties: | ||
| 8 | - compatible: should be one of the following: | ||
| 9 | * "ti,wl1271" | ||
| 10 | * "ti,wl1273" | ||
| 11 | * "ti,wl1281" | ||
| 12 | * "ti,wl1283" | ||
| 13 | * "ti,wl1801" | ||
| 14 | * "ti,wl1805" | ||
| 15 | * "ti,wl1807" | ||
| 16 | * "ti,wl1831" | ||
| 17 | * "ti,wl1835" | ||
| 18 | * "ti,wl1837" | ||
| 19 | - interrupts : specifies attributes for the out-of-band interrupt. | ||
| 20 | |||
| 21 | Optional properties: | ||
| 22 | - interrupt-parent : the phandle for the interrupt controller to which the | ||
| 23 | device interrupts are connected. | ||
| 24 | - ref-clock-frequency : ref clock frequency in Hz | ||
| 25 | - tcxo-clock-frequency : tcxo clock frequency in Hz | ||
| 26 | |||
| 27 | Note: the *-clock-frequency properties assume internal clocks. In case of external | ||
| 28 | clock, new bindings (for parsing the clock nodes) have to be added. | ||
| 29 | |||
| 30 | Example: | ||
| 31 | |||
| 32 | &mmc3 { | ||
| 33 | status = "okay"; | ||
| 34 | vmmc-supply = <&wlan_en_reg>; | ||
| 35 | bus-width = <4>; | ||
| 36 | cap-power-off-card; | ||
| 37 | keep-power-in-suspend; | ||
| 38 | |||
| 39 | #address-cells = <1>; | ||
| 40 | #size-cells = <0>; | ||
| 41 | wlcore: wlcore@2 { | ||
| 42 | compatible = "ti,wl1835"; | ||
| 43 | reg = <2>; | ||
| 44 | interrupt-parent = <&gpio0>; | ||
| 45 | interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; | ||
| 46 | }; | ||
| 47 | }; | ||
diff --git a/Documentation/devicetree/bindings/power/power_domain.txt b/Documentation/devicetree/bindings/power/power_domain.txt index 98c16672ab5f..0f8ed3710c66 100644 --- a/Documentation/devicetree/bindings/power/power_domain.txt +++ b/Documentation/devicetree/bindings/power/power_domain.txt | |||
| @@ -19,6 +19,16 @@ Required properties: | |||
| 19 | providing multiple PM domains (e.g. power controllers), but can be any value | 19 | providing multiple PM domains (e.g. power controllers), but can be any value |
| 20 | as specified by device tree binding documentation of particular provider. | 20 | as specified by device tree binding documentation of particular provider. |
| 21 | 21 | ||
| 22 | Optional properties: | ||
| 23 | - power-domains : A phandle and PM domain specifier as defined by bindings of | ||
| 24 | the power controller specified by phandle. | ||
| 25 | Some power domains might be powered from another power domain (or have | ||
| 26 | other hardware specific dependencies). For representing such dependency | ||
| 27 | a standard PM domain consumer binding is used. When provided, all domains | ||
| 28 | created by the given provider should be subdomains of the domain | ||
| 29 | specified by this binding. More details about power domain specifier are | ||
| 30 | available in the next section. | ||
| 31 | |||
| 22 | Example: | 32 | Example: |
| 23 | 33 | ||
| 24 | power: power-controller@12340000 { | 34 | power: power-controller@12340000 { |
| @@ -30,6 +40,25 @@ Example: | |||
| 30 | The node above defines a power controller that is a PM domain provider and | 40 | The node above defines a power controller that is a PM domain provider and |
| 31 | expects one cell as its phandle argument. | 41 | expects one cell as its phandle argument. |
| 32 | 42 | ||
| 43 | Example 2: | ||
| 44 | |||
| 45 | parent: power-controller@12340000 { | ||
| 46 | compatible = "foo,power-controller"; | ||
| 47 | reg = <0x12340000 0x1000>; | ||
| 48 | #power-domain-cells = <1>; | ||
| 49 | }; | ||
| 50 | |||
| 51 | child: power-controller@12340000 { | ||
| 52 | compatible = "foo,power-controller"; | ||
| 53 | reg = <0x12341000 0x1000>; | ||
| 54 | power-domains = <&parent 0>; | ||
| 55 | #power-domain-cells = <1>; | ||
| 56 | }; | ||
| 57 | |||
| 58 | The nodes above define two power controllers: 'parent' and 'child'. | ||
| 59 | Domains created by the 'child' power controller are subdomains of '0' power | ||
| 60 | domain provided by the 'parent' power controller. | ||
| 61 | |||
| 33 | ==PM domain consumers== | 62 | ==PM domain consumers== |
| 34 | 63 | ||
| 35 | Required properties: | 64 | Required properties: |
diff --git a/Documentation/devicetree/bindings/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/8250.txt index 91d5ab0e60fc..91d5ab0e60fc 100644 --- a/Documentation/devicetree/bindings/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/serial/8250.txt | |||
diff --git a/Documentation/devicetree/bindings/serial/axis,etraxfs-uart.txt b/Documentation/devicetree/bindings/serial/axis,etraxfs-uart.txt new file mode 100644 index 000000000000..ebcbb62c0a76 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/axis,etraxfs-uart.txt | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | ETRAX FS UART | ||
| 2 | |||
| 3 | Required properties: | ||
| 4 | - compatible : "axis,etraxfs-uart" | ||
| 5 | - reg: offset and length of the register set for the device. | ||
| 6 | - interrupts: device interrupt | ||
| 7 | |||
| 8 | Optional properties: | ||
| 9 | - {dtr,dsr,ri,cd}-gpios: specify a GPIO for DTR/DSR/RI/CD | ||
| 10 | line respectively. | ||
| 11 | |||
| 12 | Example: | ||
| 13 | |||
| 14 | serial@b00260000 { | ||
| 15 | compatible = "axis,etraxfs-uart"; | ||
| 16 | reg = <0xb0026000 0x1000>; | ||
| 17 | interrupts = <68>; | ||
| 18 | status = "disabled"; | ||
| 19 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt index 7f76214f728a..289c40ed7470 100644 --- a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt +++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt | |||
| @@ -21,6 +21,18 @@ Optional properties: | |||
| 21 | - reg-io-width : the size (in bytes) of the IO accesses that should be | 21 | - reg-io-width : the size (in bytes) of the IO accesses that should be |
| 22 | performed on the device. If this property is not present then single byte | 22 | performed on the device. If this property is not present then single byte |
| 23 | accesses are used. | 23 | accesses are used. |
| 24 | - dcd-override : Override the DCD modem status signal. This signal will always | ||
| 25 | be reported as active instead of being obtained from the modem status | ||
| 26 | register. Define this if your serial port does not use this pin. | ||
| 27 | - dsr-override : Override the DTS modem status signal. This signal will always | ||
| 28 | be reported as active instead of being obtained from the modem status | ||
| 29 | register. Define this if your serial port does not use this pin. | ||
| 30 | - cts-override : Override the CTS modem status signal. This signal will always | ||
| 31 | be reported as active instead of being obtained from the modem status | ||
| 32 | register. Define this if your serial port does not use this pin. | ||
| 33 | - ri-override : Override the RI modem status signal. This signal will always be | ||
| 34 | reported as inactive instead of being obtained from the modem status register. | ||
| 35 | Define this if your serial port does not use this pin. | ||
| 24 | 36 | ||
| 25 | Example: | 37 | Example: |
| 26 | 38 | ||
| @@ -31,6 +43,10 @@ Example: | |||
| 31 | interrupts = <10>; | 43 | interrupts = <10>; |
| 32 | reg-shift = <2>; | 44 | reg-shift = <2>; |
| 33 | reg-io-width = <4>; | 45 | reg-io-width = <4>; |
| 46 | dcd-override; | ||
| 47 | dsr-override; | ||
| 48 | cts-override; | ||
| 49 | ri-override; | ||
| 34 | }; | 50 | }; |
| 35 | 51 | ||
| 36 | Example with one clock: | 52 | Example with one clock: |
diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt index 56742bc70218..7d44eae7ab0b 100644 --- a/Documentation/devicetree/bindings/submitting-patches.txt +++ b/Documentation/devicetree/bindings/submitting-patches.txt | |||
| @@ -12,6 +12,9 @@ I. For patch submitters | |||
| 12 | 12 | ||
| 13 | devicetree@vger.kernel.org | 13 | devicetree@vger.kernel.org |
| 14 | 14 | ||
| 15 | and Cc: the DT maintainers. Use scripts/get_maintainer.pl to identify | ||
| 16 | all of the DT maintainers. | ||
| 17 | |||
| 15 | 3) The Documentation/ portion of the patch should come in the series before | 18 | 3) The Documentation/ portion of the patch should come in the series before |
| 16 | the code implementing the binding. | 19 | the code implementing the binding. |
| 17 | 20 | ||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index f6a9f2593c74..cc393faecc8f 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
| @@ -20,6 +20,7 @@ amlogic Amlogic, Inc. | |||
| 20 | ams AMS AG | 20 | ams AMS AG |
| 21 | amstaos AMS-Taos Inc. | 21 | amstaos AMS-Taos Inc. |
| 22 | apm Applied Micro Circuits Corporation (APM) | 22 | apm Applied Micro Circuits Corporation (APM) |
| 23 | arasan Arasan Chip Systems | ||
| 23 | arm ARM Ltd. | 24 | arm ARM Ltd. |
| 24 | armadeus ARMadeus Systems SARL | 25 | armadeus ARMadeus Systems SARL |
| 25 | asahi-kasei Asahi Kasei Corp. | 26 | asahi-kasei Asahi Kasei Corp. |
| @@ -27,6 +28,7 @@ atmel Atmel Corporation | |||
| 27 | auo AU Optronics Corporation | 28 | auo AU Optronics Corporation |
| 28 | avago Avago Technologies | 29 | avago Avago Technologies |
| 29 | avic Shanghai AVIC Optoelectronics Co., Ltd. | 30 | avic Shanghai AVIC Optoelectronics Co., Ltd. |
| 31 | axis Axis Communications AB | ||
| 30 | bosch Bosch Sensortec GmbH | 32 | bosch Bosch Sensortec GmbH |
| 31 | brcm Broadcom Corporation | 33 | brcm Broadcom Corporation |
| 32 | buffalo Buffalo, Inc. | 34 | buffalo Buffalo, Inc. |
diff --git a/Documentation/power/suspend-and-interrupts.txt b/Documentation/power/suspend-and-interrupts.txt index 2f9c5a5fcb25..8afb29a8604a 100644 --- a/Documentation/power/suspend-and-interrupts.txt +++ b/Documentation/power/suspend-and-interrupts.txt | |||
| @@ -40,8 +40,10 @@ but also to IPIs and to some other special-purpose interrupts. | |||
| 40 | 40 | ||
| 41 | The IRQF_NO_SUSPEND flag is used to indicate that to the IRQ subsystem when | 41 | The IRQF_NO_SUSPEND flag is used to indicate that to the IRQ subsystem when |
| 42 | requesting a special-purpose interrupt. It causes suspend_device_irqs() to | 42 | requesting a special-purpose interrupt. It causes suspend_device_irqs() to |
| 43 | leave the corresponding IRQ enabled so as to allow the interrupt to work all | 43 | leave the corresponding IRQ enabled so as to allow the interrupt to work as |
| 44 | the time as expected. | 44 | expected during the suspend-resume cycle, but does not guarantee that the |
| 45 | interrupt will wake the system from a suspended state -- for such cases it is | ||
| 46 | necessary to use enable_irq_wake(). | ||
| 45 | 47 | ||
| 46 | Note that the IRQF_NO_SUSPEND flag affects the entire IRQ and not just one | 48 | Note that the IRQF_NO_SUSPEND flag affects the entire IRQ and not just one |
| 47 | user of it. Thus, if the IRQ is shared, all of the interrupt handlers installed | 49 | user of it. Thus, if the IRQ is shared, all of the interrupt handlers installed |
| @@ -110,8 +112,9 @@ any special interrupt handling logic for it to work. | |||
| 110 | IRQF_NO_SUSPEND and enable_irq_wake() | 112 | IRQF_NO_SUSPEND and enable_irq_wake() |
| 111 | ------------------------------------- | 113 | ------------------------------------- |
| 112 | 114 | ||
| 113 | There are no valid reasons to use both enable_irq_wake() and the IRQF_NO_SUSPEND | 115 | There are very few valid reasons to use both enable_irq_wake() and the |
| 114 | flag on the same IRQ. | 116 | IRQF_NO_SUSPEND flag on the same IRQ, and it is never valid to use both for the |
| 117 | same device. | ||
| 115 | 118 | ||
| 116 | First of all, if the IRQ is not shared, the rules for handling IRQF_NO_SUSPEND | 119 | First of all, if the IRQ is not shared, the rules for handling IRQF_NO_SUSPEND |
| 117 | interrupts (interrupt handlers are invoked after suspend_device_irqs()) are | 120 | interrupts (interrupt handlers are invoked after suspend_device_irqs()) are |
| @@ -120,4 +123,13 @@ handlers are not invoked after suspend_device_irqs()). | |||
| 120 | 123 | ||
| 121 | Second, both enable_irq_wake() and IRQF_NO_SUSPEND apply to entire IRQs and not | 124 | Second, both enable_irq_wake() and IRQF_NO_SUSPEND apply to entire IRQs and not |
| 122 | to individual interrupt handlers, so sharing an IRQ between a system wakeup | 125 | to individual interrupt handlers, so sharing an IRQ between a system wakeup |
| 123 | interrupt source and an IRQF_NO_SUSPEND interrupt source does not make sense. | 126 | interrupt source and an IRQF_NO_SUSPEND interrupt source does not generally |
| 127 | make sense. | ||
| 128 | |||
| 129 | In rare cases an IRQ can be shared between a wakeup device driver and an | ||
| 130 | IRQF_NO_SUSPEND user. In order for this to be safe, the wakeup device driver | ||
| 131 | must be able to discern spurious IRQs from genuine wakeup events (signalling | ||
| 132 | the latter to the core with pm_system_wakeup()), must use enable_irq_wake() to | ||
| 133 | ensure that the IRQ will function as a wakeup source, and must request the IRQ | ||
| 134 | with IRQF_COND_SUSPEND to tell the core that it meets these requirements. If | ||
| 135 | these requirements are not met, it is not valid to use IRQF_COND_SUSPEND. | ||
