Hi Gustavo, On Friday 29 December 2017 07:51 PM, Gustavo Pimentel wrote: > Adds a IRQ chained API to pcie-designware, that aims to replace the current > IRQ domain hierarchy API implemented. > > Although the IRQ domain hierarchy API is still available, pcie-designware > will use now the IRQ chained API. > > Signed-off-by: Gustavo Pimentel <gustavo.pimentel@xxxxxxxxxxxx> > --- > Change v1->v2: > - num_vectors is now not configurable by the Device Tree. Now it is 32 by > default and can be overridden by any specific SoC driver. > Change v2->v3: > - Nothing changed, just to follow the patch set version. > Change v3->v4: > - Moved Kishon's fixes (PCI end point error and a dra7xx warning) from > v3-0007 patch file to here. > - Undo the change of the function signature to be more coherent with the > host mode specific functions (Thanks Kishon). > - Refactor the added functions in order to used host_data so that getting > pp again back from pci could be avoided. (Thanks Kishon) > - Changed summary line to match the drivers/PCI convention and changelog to > maintain the consistency (thanks Bjorn). > > drivers/pci/dwc/pcie-designware-host.c | 291 +++++++++++++++++++++++++++++---- > drivers/pci/dwc/pcie-designware.h | 18 ++ > 2 files changed, 281 insertions(+), 28 deletions(-) > > diff --git a/drivers/pci/dwc/pcie-designware-host.c b/drivers/pci/dwc/pcie-designware-host.c > index bf558df..631d665 100644 > --- a/drivers/pci/dwc/pcie-designware-host.c > +++ b/drivers/pci/dwc/pcie-designware-host.c > @@ -11,6 +11,7 @@ > * published by the Free Software Foundation. > */ > > +#include <linux/irqchip/chained_irq.h> > #include <linux/irqdomain.h> > #include <linux/of_address.h> > #include <linux/of_pci.h> > @@ -53,6 +54,42 @@ static struct irq_chip dw_msi_irq_chip = { > .irq_unmask = pci_msi_unmask_irq, > }; > > +static void dw_pci_ack_irq(struct irq_data *d) > +{ > + struct msi_desc *msi = irq_data_get_msi_desc(d); > + struct pcie_port *pp; > + > + pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi); > + > + if (pp->ops->msi_irq_ack) > + pp->ops->msi_irq_ack(d->irq, pp); just like below pass hwirq here.. Thanks Kishon