From: Kishon Vijay Abraham I <hidden> Date: 2021-08-04 13:29:33
Patch series adds support for legacy interrupt in pci-j721e. There are
two HW implementations of legacy interrupt controller, one specific to
J721E and the other for J7200/AM64.
In both these implementations, the legacy interrupt is connect to pulse
interrupt of GIC and level to pulse is handled by configuring EOI
register. EOI to convert level to pulse is broken in J721E due to an
errata but is functional in J7200.
v1 of the patch series can be found @ [1]
Patch series is created on top of [2]
Changes from v1:
1) Only the legacy interrupt specific part is sent as part of this
series. Rest are split and sent as a separate series [2]
2) Created irq_chip for legacy interrupt and used it's ops for enabling,
disabling the interrupts.
[1] -> http://lore.kernel.org/r/20210325090936.9306-1-kishon@ti.com
[2] -> http://lore.kernel.org/r/20210803074932.19820-1-kishon@ti.com
Kishon Vijay Abraham I (3):
dt-bindings: PCI: ti,j721e: Add bindings to specify legacy interrupts
PCI: j721e: Add PCI legacy interrupt support for J721E
PCI: j721e: Add PCI legacy interrupt support for J7200
.../bindings/pci/ti,j721e-pci-host.yaml | 15 ++
drivers/pci/controller/cadence/pci-j721e.c | 150 ++++++++++++++++++
2 files changed, 165 insertions(+)
--
2.17.1
From: Kishon Vijay Abraham I <hidden> Date: 2021-08-04 13:29:37
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
[1] -> J721E DRA829/TDA4VM Processors Silicon Revision 1.1/1.0 SPRZ455A –
DECEMBER 2020 – REVISED AUGUST 2021
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf)
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 85 ++++++++++++++++++++++
1 file changed, 85 insertions(+)
@@ -121,6 +129,79 @@ static void j721e_pcie_config_link_irq(struct j721e_pcie *pcie)j721e_pcie_intd_writel(pcie,ENABLE_REG_SYS_2,reg);}+staticvoidj721e_pcie_v1_legacy_irq_handler(structirq_desc*desc)+{+structj721e_pcie*pcie=irq_desc_get_handler_data(desc);+structirq_chip*chip=irq_desc_get_chip(desc);+inti,virq;+u32reg;++chained_irq_enter(chip,desc);++for(i=0;i<PCI_NUM_INTX;i++){+reg=j721e_pcie_intd_readl(pcie,STATUS_REG_SYS_0);+if(!(reg&INTx_EN(i)))+continue;++virq=irq_find_mapping(pcie->legacy_irq_domain,3-i);+generic_handle_irq(virq);+j721e_pcie_intd_writel(pcie,STATUS_CLR_REG_SYS_0,INTx_EN(i));+}++chained_irq_exit(chip,desc);+}++staticintj721e_pcie_intx_map(structirq_domain*domain,unsignedintirq,irq_hw_number_thwirq)+{+irq_set_chip_and_handler(irq,&dummy_irq_chip,handle_simple_irq);+irq_set_chip_data(irq,domain->host_data);++return0;+}++staticconststructirq_domain_opsj721e_pcie_intx_domain_ops={+.map=j721e_pcie_intx_map,+};++staticintj721e_pcie_config_legacy_irq(structj721e_pcie*pcie)+{+structirq_domain*legacy_irq_domain;+structdevice*dev=pcie->dev;+structdevice_node*node=dev->of_node;+structdevice_node*intc_node;+intirq,i;+u32reg;++intc_node=of_get_child_by_name(node,"interrupt-controller");+if(!intc_node){+dev_dbg(dev,"interrupt-controller node is absent. Legacy INTR not supported\n");+return0;+}++irq=irq_of_parse_and_map(intc_node,0);+if(!irq){+dev_err(dev,"Failed to parse and map legacy irq\n");+return-EINVAL;+}+irq_set_chained_handler_and_data(irq,j721e_pcie_v1_legacy_irq_handler,pcie);++legacy_irq_domain=irq_domain_add_linear(intc_node,PCI_NUM_INTX,+&j721e_pcie_intx_domain_ops,pcie);+if(!legacy_irq_domain){+dev_err(dev,"Failed to add irq domain for legacy irqs\n");+return-EINVAL;+}+pcie->legacy_irq_domain=legacy_irq_domain;++for(i=0;i<PCI_NUM_INTX;i++){+reg=j721e_pcie_intd_readl(pcie,ENABLE_REG_SYS_0);+reg|=INTx_EN(i);+j721e_pcie_intd_writel(pcie,ENABLE_REG_SYS_0,reg);+}++return0;+}+staticintj721e_pcie_start_link(structcdns_pcie*cdns_pcie){structj721e_pcie*pcie=dev_get_drvdata(cdns_pcie->dev);
@@ -433,6 +514,10 @@ static int j721e_pcie_probe(struct platform_device *pdev)gotoerr_get_sync;}+ret=j721e_pcie_config_legacy_irq(pcie);+if(ret<0)+gotoerr_get_sync;+bridge=devm_pci_alloc_host_bridge(dev,sizeof(*rc));if(!bridge){ret=-ENOMEM;
From: Kishon Vijay Abraham I <hidden> Date: 2021-08-04 13:29:44
Add PCI legacy interrupt support for J7200. J7200 has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J7200 has provided USER_EOI_REG register. When the SW writes to
USER_EOI_REG register after handling the interrupt, the IP checks the
state of legacy interrupt and re-triggers pulse interrupt invoking
the handler again. (Note that the errata in J721E where EOI is not
implemented is fixed in J7200).
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 77 ++++++++++++++++++++--
1 file changed, 71 insertions(+), 6 deletions(-)
@@ -183,7 +236,11 @@ static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)dev_err(dev,"Failed to parse and map legacy irq\n");return-EINVAL;}-irq_set_chained_handler_and_data(irq,j721e_pcie_v1_legacy_irq_handler,pcie);++if(pcie->is_intc_v1)+irq_set_chained_handler_and_data(irq,j721e_pcie_v1_legacy_irq_handler,pcie);+else+irq_set_chained_handler_and_data(irq,j721e_pcie_legacy_irq_handler,pcie);legacy_irq_domain=irq_domain_add_linear(intc_node,PCI_NUM_INTX,&j721e_pcie_intx_domain_ops,pcie);
@@ -194,9 +251,15 @@ static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)pcie->legacy_irq_domain=legacy_irq_domain;for(i=0;i<PCI_NUM_INTX;i++){-reg=j721e_pcie_intd_readl(pcie,ENABLE_REG_SYS_0);-reg|=INTx_EN(i);-j721e_pcie_intd_writel(pcie,ENABLE_REG_SYS_0,reg);+if(pcie->is_intc_v1){+reg=j721e_pcie_intd_readl(pcie,ENABLE_REG_SYS_0);+reg|=INTx_EN(i);+j721e_pcie_intd_writel(pcie,ENABLE_REG_SYS_0,reg);+}else{+reg=j721e_pcie_intd_readl(pcie,ENABLE_REG_SYS_1);+reg|=SYS1_INTx_EN(i);+j721e_pcie_intd_writel(pcie,ENABLE_REG_SYS_1,reg);+}}return0;
Are you sure about the edge signalling? How is the interrupt
retriggered when the input is still high, which could well be the case
for shared INTx?
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
From: Marc Zyngier <maz@kernel.org> Date: 2021-08-04 15:13:46
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
quoted hunk
[1] -> J721E DRA829/TDA4VM Processors Silicon Revision 1.1/1.0 SPRZ455A –
DECEMBER 2020 – REVISED AUGUST 2021
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf)
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 85 ++++++++++++++++++++++
1 file changed, 85 insertions(+)
Are you sure about the edge signalling? How is the interrupt
retriggered when the input is still high, which could well be the case
for shared INTx?
There is a EOI register which is used for re-triggering the interrupt.
That functionality is broken in J721E but is fixed in J7200 (the
following two patches in the series deals with that).
Thanks,
Kishon
From: Kishon Vijay Abraham I <hidden> Date: 2021-08-09 04:50:30
Hi Marc,
On 04/08/21 8:43 pm, Marc Zyngier wrote:
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
Right, this hardware (J721E) has a bug but was fixed in J7200 (Patch 3/3
handles that).
quoted
[1] -> J721E DRA829/TDA4VM Processors Silicon Revision 1.1/1.0 SPRZ455A –
DECEMBER 2020 – REVISED AUGUST 2021
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf)
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 85 ++++++++++++++++++++++
1 file changed, 85 insertions(+)
From: Marc Zyngier <maz@kernel.org> Date: 2021-08-09 09:39:09
On Mon, 09 Aug 2021 05:50:10 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
Hi Marc,
On 04/08/21 8:43 pm, Marc Zyngier wrote:
quoted
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
Right, this hardware (J721E) has a bug but was fixed in J7200 (Patch 3/3
handles that).
But how do you make it work with J721E? Is it even worth supporting if
(as I expect) it is unreliable?
quoted
quoted
[1] -> J721E DRA829/TDA4VM Processors Silicon Revision 1.1/1.0 SPRZ455A –
DECEMBER 2020 – REVISED AUGUST 2021
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf)
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 85 ++++++++++++++++++++++
1 file changed, 85 insertions(+)
What is the purpose of this write? It feels like this should be a
irq_eoi callback.
It's an IRQ ACK, since in this platform the level to edge is not
implemented properly in HW.
An Ack for an edge interrupt would need to happen before you handle
the interrupt, or you'd wrongly acknowledge edges that fire between
the handling of the interrupt and the Ack, and that would never be
handled.
If it really is an Ack, it needs to be moved *before* the handling,
preferably in an irq_ack callback. Otherwise, it is an EOI, and it
belongs to irq_eoi.
quoted
quoted
+ }++ chained_irq_exit(chip, desc);+}++static int j721e_pcie_intx_map(struct irq_domain *domain, unsigned int irq, irq_hw_number_t hwirq)+{+ irq_set_chip_and_handler(irq, &dummy_irq_chip, handle_simple_irq);
An INTx interrupt is a level interrupt. Please use the corresponding flow.
Okay.
quoted
quoted
+ irq_set_chip_data(irq, domain->host_data);++ return 0;+}++static const struct irq_domain_ops j721e_pcie_intx_domain_ops = {+ .map = j721e_pcie_intx_map,+};++static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)+{+ struct irq_domain *legacy_irq_domain;+ struct device *dev = pcie->dev;+ struct device_node *node = dev->of_node;+ struct device_node *intc_node;+ int irq, i;+ u32 reg;++ intc_node = of_get_child_by_name(node, "interrupt-controller");+ if (!intc_node) {+ dev_dbg(dev, "interrupt-controller node is absent. Legacy INTR not supported\n");+ return 0;+ }++ irq = irq_of_parse_and_map(intc_node, 0);+ if (!irq) {+ dev_err(dev, "Failed to parse and map legacy irq\n");+ return -EINVAL;+ }+ irq_set_chained_handler_and_data(irq, j721e_pcie_v1_legacy_irq_handler, pcie);++ legacy_irq_domain = irq_domain_add_linear(intc_node, PCI_NUM_INTX,+ &j721e_pcie_intx_domain_ops, pcie);+ if (!legacy_irq_domain) {+ dev_err(dev, "Failed to add irq domain for legacy irqs\n");+ return -EINVAL;+ }+ pcie->legacy_irq_domain = legacy_irq_domain;++ for (i = 0; i < PCI_NUM_INTX; i++) {+ reg = j721e_pcie_intd_readl(pcie, ENABLE_REG_SYS_0);+ reg |= INTx_EN(i);+ j721e_pcie_intd_writel(pcie, ENABLE_REG_SYS_0, reg);+ }
This should be moved to the irq_unmask() callback.
Should we also have a corresponding irq_mask()? Then would require us
implement reference counting since legacy interrupts are shared.
The core code should already deal with this, I expect. It isn't like
shared interrupts are something new. And yes, you should have both
mask and unmask.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
From: Kishon Vijay Abraham I <hidden> Date: 2021-08-09 14:59:07
Hi Marc,
On 09/08/21 3:09 pm, Marc Zyngier wrote:
On Mon, 09 Aug 2021 05:50:10 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Hi Marc,
On 04/08/21 8:43 pm, Marc Zyngier wrote:
quoted
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
Right, this hardware (J721E) has a bug but was fixed in J7200 (Patch 3/3
handles that).
But how do you make it work with J721E? Is it even worth supporting if
(as I expect) it is unreliable?
I've seen at-least the NVMe devices triggers the interrupts again and
the data transfer completes. But I agree, this is unreliable.
quoted
quoted
quoted
[1] -> J721E DRA829/TDA4VM Processors Silicon Revision 1.1/1.0 SPRZ455A –
DECEMBER 2020 – REVISED AUGUST 2021
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf)
Signed-off-by: Kishon Vijay Abraham I <redacted>
---
drivers/pci/controller/cadence/pci-j721e.c | 85 ++++++++++++++++++++++
1 file changed, 85 insertions(+)
What is the purpose of this write? It feels like this should be a
irq_eoi callback.
It's an IRQ ACK, since in this platform the level to edge is not
implemented properly in HW.
An Ack for an edge interrupt would need to happen before you handle
the interrupt, or you'd wrongly acknowledge edges that fire between
the handling of the interrupt and the Ack, and that would never be
handled.
If it really is an Ack, it needs to be moved *before* the handling,
preferably in an irq_ack callback. Otherwise, it is an EOI, and it
belongs to irq_eoi.
quoted
quoted
quoted
+ }++ chained_irq_exit(chip, desc);+}++static int j721e_pcie_intx_map(struct irq_domain *domain, unsigned int irq, irq_hw_number_t hwirq)+{+ irq_set_chip_and_handler(irq, &dummy_irq_chip, handle_simple_irq);
An INTx interrupt is a level interrupt. Please use the corresponding flow.
Okay.
quoted
quoted
+ irq_set_chip_data(irq, domain->host_data);++ return 0;+}++static const struct irq_domain_ops j721e_pcie_intx_domain_ops = {+ .map = j721e_pcie_intx_map,+};++static int j721e_pcie_config_legacy_irq(struct j721e_pcie *pcie)+{+ struct irq_domain *legacy_irq_domain;+ struct device *dev = pcie->dev;+ struct device_node *node = dev->of_node;+ struct device_node *intc_node;+ int irq, i;+ u32 reg;++ intc_node = of_get_child_by_name(node, "interrupt-controller");+ if (!intc_node) {+ dev_dbg(dev, "interrupt-controller node is absent. Legacy INTR not supported\n");+ return 0;+ }++ irq = irq_of_parse_and_map(intc_node, 0);+ if (!irq) {+ dev_err(dev, "Failed to parse and map legacy irq\n");+ return -EINVAL;+ }+ irq_set_chained_handler_and_data(irq, j721e_pcie_v1_legacy_irq_handler, pcie);++ legacy_irq_domain = irq_domain_add_linear(intc_node, PCI_NUM_INTX,+ &j721e_pcie_intx_domain_ops, pcie);+ if (!legacy_irq_domain) {+ dev_err(dev, "Failed to add irq domain for legacy irqs\n");+ return -EINVAL;+ }+ pcie->legacy_irq_domain = legacy_irq_domain;++ for (i = 0; i < PCI_NUM_INTX; i++) {+ reg = j721e_pcie_intd_readl(pcie, ENABLE_REG_SYS_0);+ reg |= INTx_EN(i);+ j721e_pcie_intd_writel(pcie, ENABLE_REG_SYS_0, reg);+ }
This should be moved to the irq_unmask() callback.
Should we also have a corresponding irq_mask()? Then would require us
implement reference counting since legacy interrupts are shared.
The core code should already deal with this, I expect. It isn't like
shared interrupts are something new. And yes, you should have both
mask and unmask.
From: Marc Zyngier <maz@kernel.org> Date: 2021-08-10 12:33:27
On Mon, 09 Aug 2021 15:58:38 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
Hi Marc,
On 09/08/21 3:09 pm, Marc Zyngier wrote:
quoted
On Mon, 09 Aug 2021 05:50:10 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Hi Marc,
On 04/08/21 8:43 pm, Marc Zyngier wrote:
quoted
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
Right, this hardware (J721E) has a bug but was fixed in J7200 (Patch 3/3
handles that).
But how do you make it work with J721E? Is it even worth supporting if
(as I expect) it is unreliable?
I've seen at-least the NVMe devices triggers the interrupts again and
the data transfer completes. But I agree, this is unreliable.
Then I don't think you should add INTx support for this system. It is
bound to be a support burden, and will reflect badly on the whole
platform. Focusing on J7200 is probably the best thing to do.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
From: Kishon Vijay Abraham I <hidden> Date: 2021-08-11 12:07:45
Hi Marc,
On 10/08/21 6:03 pm, Marc Zyngier wrote:
On Mon, 09 Aug 2021 15:58:38 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Hi Marc,
On 09/08/21 3:09 pm, Marc Zyngier wrote:
quoted
On Mon, 09 Aug 2021 05:50:10 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Hi Marc,
On 04/08/21 8:43 pm, Marc Zyngier wrote:
quoted
On Wed, 04 Aug 2021 14:29:11 +0100,
Kishon Vijay Abraham I [off-list ref] wrote:
quoted
Add PCI legacy interrupt support for J721E. J721E has a single HW
interrupt line for all the four legacy interrupts INTA/INTB/INTC/INTD.
The HW interrupt line connected to GIC is a pulse interrupt whereas
the legacy interrupts by definition is level interrupt. In order to
provide level interrupt functionality to edge interrupt line, PCIe
in J721E has provided IRQ_EOI register.
However due to Errata ID #i2094 ([1]), EOI feature is not enabled in HW
and only a single pulse interrupt will be generated for every
ASSERT_INTx/DEASSERT_INTx.
So my earlier remark stands. If you get a single edge, how do you
handle a level that is still high after having handled the interrupt
on hardware that has this bug?
Right, this hardware (J721E) has a bug but was fixed in J7200 (Patch 3/3
handles that).
But how do you make it work with J721E? Is it even worth supporting if
(as I expect) it is unreliable?
I've seen at-least the NVMe devices triggers the interrupts again and
the data transfer completes. But I agree, this is unreliable.
Then I don't think you should add INTx support for this system. It is
bound to be a support burden, and will reflect badly on the whole
platform. Focusing on J7200 is probably the best thing to do.
Okay, will drop this patch from the series and have INTx support only
for J7200.
Thanks
Kishon
Not a pattern unless you meant for foo-interrupt-controller-bar to be
valid.
Anything is allowed in the node?
It's same as whatever is defined in schemas/interrupt-controller.yaml,
just that it should be a subnode of pcie@. Should I add whatever is
present in schemas/interrupt-controller.yaml here?
Thanks
Kishon
Not a pattern unless you meant for foo-interrupt-controller-bar to be
valid.
Anything is allowed in the node?
It's same as whatever is defined in schemas/interrupt-controller.yaml,
just that it should be a subnode of pcie@. Should I add whatever is
present in schemas/interrupt-controller.yaml here?
Can you suggest how to include this?
Thanks,
Kishon
Not a pattern unless you meant for foo-interrupt-controller-bar to be
valid.
Anything is allowed in the node?
It's same as whatever is defined in schemas/interrupt-controller.yaml,
just that it should be a subnode of pcie@. Should I add whatever is
present in schemas/interrupt-controller.yaml here?
Can you suggest how to include this?
You don't. List the properties you are using. You need to define the
#interrupt-cells value for example. I'm sure there's already examples
in the tree doing this same child node.
Rob