Commit 7e9d4749 authored by Jon Hunter's avatar Jon Hunter Committed by Thierry Reding

ARM: tegra: Correct polarity for Tegra114 PMIC interrupt

The ARM GIC only supports interrupts with either level-high or
rising-edge types for SPIs. The interrupt type for the Palmas PMIC used
for Tegra114 boards is specified as level-low which is invalid for the
GIC. This has gone undetected because until recently, failures to set
the interrupt type when the interrupts are mapped via firmware (such as
device-tree) have not been reported. Since commits 4b357dae
("genirq: Look-up trigger type if not specified by caller") and
1e2a7d78 ("irqdomain: Don't set type when mapping an IRQ"), failure
to set the interrupt type will cause the requesting of the interrupt to
fail and exposing incorrectly configured interrupts.

Please note that although the interrupt type was never being set for the
Palmas PMIC, it was still working fine, because the default type setting
for the interrupt, 'level-high', happen to match the correct type for
the interrupt.

Finally, it should be noted that the Palmas interrupt from the PMIC is
actually 'level-low', however, this interrupt signal is inverted by the
Tegra PMC and so the GIC actually sees a 'level-high' interrupt which is
what should be specified in the device-tree interrupt specifier.
Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent a70cb07b
...@@ -897,7 +897,7 @@ ldo2 { ...@@ -897,7 +897,7 @@ ldo2 {
palmas: tps65913@58 { palmas: tps65913@58 {
compatible = "ti,palmas"; compatible = "ti,palmas";
reg = <0x58>; reg = <0x58>;
interrupts = <0 86 IRQ_TYPE_LEVEL_LOW>; interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
......
...@@ -802,7 +802,7 @@ regulator@43 { ...@@ -802,7 +802,7 @@ regulator@43 {
palmas: pmic@58 { palmas: pmic@58 {
compatible = "ti,palmas"; compatible = "ti,palmas";
reg = <0x58>; reg = <0x58>;
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>; interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
......
...@@ -63,7 +63,7 @@ i2c@7000d000 { ...@@ -63,7 +63,7 @@ i2c@7000d000 {
palmas: pmic@58 { palmas: pmic@58 {
compatible = "ti,palmas"; compatible = "ti,palmas";
reg = <0x58>; reg = <0x58>;
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>; interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment