@@ -143,7 +143,7 @@ struct dt_node *add_ics_node(void)
dt_add_property_strings(ics, "compatible", "IBM,ppc-xics",
"IBM,opal-xics");
dt_add_property_cells(ics, "#address-cells", 0);
- dt_add_property_cells(ics, "#interrupt-cells", 1);
+ dt_add_property_cells(ics, "#interrupt-cells", 2);
dt_add_property_string(ics, "device_type",
"PowerPC-Interrupt-Source-Controller");
dt_add_property(ics, "interrupt-controller", NULL, 0);
@@ -305,7 +305,6 @@
compatible = "IBM,ppc-xicp", "IBM,power8-icp";
interrupt-controller;
#address-cells = <0x0>;
- #interrupt-cells = <0x1>;
device_type = "PowerPC-External-Interrupt-Presentation";
/*
@@ -548,7 +548,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8002d00000000000000010000003ffff8002e00000000000000010000003ffff
8002f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80060000
@@ -560,7 +559,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8006500000000000000010000003ffff8006600000000000000010000003ffff
800670000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80068000
@@ -572,7 +570,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8006d00000000000000010000003ffff8006e00000000000000010000003ffff
8006f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80130000
@@ -584,7 +581,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8013500000000000000010000003ffff8013600000000000000010000003ffff
801370000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80168000
@@ -596,7 +592,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8016d00000000000000010000003ffff8016e00000000000000010000003ffff
8016f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80170000
@@ -608,7 +603,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8017500000000000000010000003ffff8017600000000000000010000003ffff
801770000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: ipl-params
@@ -1453,7 +1453,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8002500000000000000010000003ffff8002600000000000000010000003ffff
800270000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80030000
@@ -1465,7 +1464,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8003500000000000000010000003ffff8003600000000000000010000003ffff
800370000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80060000
@@ -1477,7 +1475,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8006500000000000000010000003ffff8006600000000000000010000003ffff
800670000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80068000
@@ -1489,7 +1486,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8006d00000000000000010000003ffff8006e00000000000000010000003ffff
8006f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80070000
@@ -1501,7 +1497,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8007500000000000000010000003ffff8007600000000000000010000003ffff
800770000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80128000
@@ -1513,7 +1508,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8012d00000000000000010000003ffff8012e00000000000000010000003ffff
8012f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80130000
@@ -1525,7 +1519,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8013500000000000000010000003ffff8013600000000000000010000003ffff
801370000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80160000
@@ -1537,7 +1530,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8016500000000000000010000003ffff8016600000000000000010000003ffff
801670000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80168000
@@ -1549,7 +1541,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8016d00000000000000010000003ffff8016e00000000000000010000003ffff
8016f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80170000
@@ -1561,7 +1552,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8017500000000000000010000003ffff8017600000000000000010000003ffff
801770000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80828000
@@ -1573,7 +1563,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8082d00000000000000010000003ffff8082e00000000000000010000003ffff
8082f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80830000
@@ -1585,7 +1574,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8083500000000000000010000003ffff8083600000000000000010000003ffff
808370000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80860000
@@ -1597,7 +1585,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8086500000000000000010000003ffff8086600000000000000010000003ffff
808670000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80868000
@@ -1609,7 +1596,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8086d00000000000000010000003ffff8086e00000000000000010000003ffff
8086f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80870000
@@ -1621,7 +1607,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8087500000000000000010000003ffff8087600000000000000010000003ffff
808770000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80920000
@@ -1633,7 +1618,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8092500000000000000010000003ffff8092600000000000000010000003ffff
809270000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80928000
@@ -1645,7 +1629,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8092d00000000000000010000003ffff8092e00000000000000010000003ffff
8092f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80930000
@@ -1657,7 +1640,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8093500000000000000010000003ffff8093600000000000000010000003ffff
809370000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80968000
@@ -1669,7 +1651,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8096d00000000000000010000003ffff8096e00000000000000010000003ffff
8096f0000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: interrupt-controller@3ffff80970000
@@ -1681,7 +1662,6 @@ prop: ibm,enabled-idle-states size: 24 val: 6e617000666173742d736c65657000727677
0010000003ffff8097500000000000000010000003ffff8097600000000000000010000003ffff
809770000000000000001000
prop: #address-cells size: 4 val: 00000000
- prop: #interrupt-cells size: 4 val: 00000001
prop: device_type size: 40 val: 506f77657250432d45787465726e616c2d496e746572727570742d50726573656e746174696f
6e00
node: ipl-params
@@ -1760,15 +1760,19 @@ static void npu_add_phb_properties(struct npu *p)
dt_add_property_cells(np, "interrupt-parent", icsp);
/* DLPL Interrupts */
- p->phb.lstate.int_size = 1;
- p->phb.lstate.int_val[0][0] = p->base_lsi + NPU_LSI_INT_DL0;
- p->phb.lstate.int_val[1][0] = p->base_lsi + NPU_LSI_INT_DL1;
- p->phb.lstate.int_val[2][0] = p->base_lsi + NPU_LSI_INT_DL2;
- p->phb.lstate.int_val[3][0] = p->base_lsi + NPU_LSI_INT_DL3;
- p->phb.lstate.int_parent[0] = icsp;
- p->phb.lstate.int_parent[1] = icsp;
- p->phb.lstate.int_parent[2] = icsp;
- p->phb.lstate.int_parent[3] = icsp;
+ p->phb.lstate.int_size = 2;
+ p->phb.lstate.int_val[0][0] = p->base_lsi + NPU_LSI_INT_DL0;
+ p->phb.lstate.int_val[0][1] = 1;
+ p->phb.lstate.int_val[1][0] = p->base_lsi + NPU_LSI_INT_DL1;
+ p->phb.lstate.int_val[1][1] = 1;
+ p->phb.lstate.int_val[2][0] = p->base_lsi + NPU_LSI_INT_DL2;
+ p->phb.lstate.int_val[2][1] = 1;
+ p->phb.lstate.int_val[3][0] = p->base_lsi + NPU_LSI_INT_DL3;
+ p->phb.lstate.int_val[3][1] = 1;
+ p->phb.lstate.int_parent[0] = icsp;
+ p->phb.lstate.int_parent[1] = icsp;
+ p->phb.lstate.int_parent[2] = icsp;
+ p->phb.lstate.int_parent[3] = icsp;
/* Due to the way the emulated PCI devices are structured in
* the device tree the core PCI layer doesn't do this for
@@ -2617,11 +2617,15 @@ static void p7ioc_pcie_add_node(struct p7ioc_phb *p)
* PCI code based on the content of this structure:
*/
lsibase = p->buid_lsi << 4;
- p->phb.lstate.int_size = 1;
+ p->phb.lstate.int_size = 2;
p->phb.lstate.int_val[0][0] = lsibase + PHB_LSI_PCIE_INTA;
+ p->phb.lstate.int_val[0][1] = 1;
p->phb.lstate.int_val[1][0] = lsibase + PHB_LSI_PCIE_INTB;
+ p->phb.lstate.int_val[1][1] = 1;
p->phb.lstate.int_val[2][0] = lsibase + PHB_LSI_PCIE_INTC;
+ p->phb.lstate.int_val[2][1] = 1;
p->phb.lstate.int_val[3][0] = lsibase + PHB_LSI_PCIE_INTD;
+ p->phb.lstate.int_val[3][1] = 1;
p->phb.lstate.int_parent[0] = icsp;
p->phb.lstate.int_parent[1] = icsp;
p->phb.lstate.int_parent[2] = icsp;
@@ -629,7 +629,7 @@ static void p7ioc_create_hub(struct dt_node *np)
dt_add_property_cells(np, "ibm,opal-hubid", 0, id);
/* XXX Fixme: how many RGC interrupts ? */
- dt_add_property_cells(np, "interrupts", ioc->rgc_buid << 4);
+ dt_add_property_cells(np, "interrupts", ioc->rgc_buid << 4, 1);
dt_add_property_cells(np, "interrupt-base", ioc->rgc_buid << 4);
/* XXX What about ibm,opal-mmio-real ? */
@@ -4248,11 +4248,15 @@ static void phb3_add_properties(struct phb3 *p)
* PCI code based on the content of this structure:
*/
lsibase = p->base_lsi;
- p->phb.lstate.int_size = 1;
+ p->phb.lstate.int_size = 2;
p->phb.lstate.int_val[0][0] = lsibase + PHB3_LSI_PCIE_INTA;
+ p->phb.lstate.int_val[0][1] = 1;
p->phb.lstate.int_val[1][0] = lsibase + PHB3_LSI_PCIE_INTB;
+ p->phb.lstate.int_val[1][1] = 1;
p->phb.lstate.int_val[2][0] = lsibase + PHB3_LSI_PCIE_INTC;
+ p->phb.lstate.int_val[2][1] = 1;
p->phb.lstate.int_val[3][0] = lsibase + PHB3_LSI_PCIE_INTD;
+ p->phb.lstate.int_val[3][1] = 1;
p->phb.lstate.int_parent[0] = icsp;
p->phb.lstate.int_parent[1] = icsp;
p->phb.lstate.int_parent[2] = icsp;
@@ -2923,11 +2923,15 @@ static void phb4_add_properties(struct phb4 *p)
* PCI code based on the content of this structure:
*/
lsibase = p->base_lsi;
- p->phb.lstate.int_size = 1;
+ p->phb.lstate.int_size = 2;
p->phb.lstate.int_val[0][0] = lsibase + PHB4_LSI_PCIE_INTA;
+ p->phb.lstate.int_val[0][1] = 1;
p->phb.lstate.int_val[1][0] = lsibase + PHB4_LSI_PCIE_INTB;
+ p->phb.lstate.int_val[1][1] = 1;
p->phb.lstate.int_val[2][0] = lsibase + PHB4_LSI_PCIE_INTC;
+ p->phb.lstate.int_val[2][1] = 1;
p->phb.lstate.int_val[3][0] = lsibase + PHB4_LSI_PCIE_INTD;
+ p->phb.lstate.int_val[3][1] = 1;
p->phb.lstate.int_parent[0] = icsp;
p->phb.lstate.int_parent[1] = icsp;
p->phb.lstate.int_parent[2] = icsp;
@@ -783,7 +783,7 @@ static void psi_create_mm_dtnode(struct psi *psi)
dt_add_property_strings(np, "compatible", "ibm,psi");
}
dt_add_property_cells(np, "interrupt-parent", get_ics_phandle());
- dt_add_property_cells(np, "interrupts", psi->interrupt);
+ dt_add_property_cells(np, "interrupts", psi->interrupt, 1);
dt_add_property_cells(np, "ibm,chip-id", psi->chip_id);
}
@@ -199,7 +199,7 @@ static void rhesus_dt_fixup_uart(struct dt_node *lpc, bool has_irq)
if (has_irq) {
uint32_t chip_id = dt_get_chip_id(lpc);
uint32_t irq = get_psi_interrupt(chip_id) + P8_IRQ_PSI_HOST_ERR;
- dt_add_property_cells(uart, "interrupts", irq);
+ dt_add_property_cells(uart, "interrupts", irq, 1);
dt_add_property_cells(uart, "interrupt-parent",
get_ics_phandle());
}
This is more compliant with PAPR, it will also allow us to use the second cell for other attributes on P9. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> --- v2. Fix a couple of places where we created 1-cell properties core/interrupts.c | 2 +- doc/device-tree.txt | 1 - hdata/test/p8-840-spira.dt | 6 ------ hdata/test/p81-811.spira.dt | 20 -------------------- hw/npu.c | 22 +++++++++++++--------- hw/p7ioc-phb.c | 6 +++++- hw/p7ioc.c | 2 +- hw/phb3.c | 6 +++++- hw/phb4.c | 6 +++++- hw/psi.c | 2 +- platforms/rhesus/rhesus.c | 2 +- 11 files changed, 32 insertions(+), 43 deletions(-)