PCI: kirin: Add MSI support
Add support for MSI to the kirin host controller driver, based on the generic dwc infrastructure. Signed-off-by: Xiaowei Song <songxiaowei@hisilicon.com> Signed-off-by: Yao Chen <chenyao11@huawei.com> [lorenzo.pieralisi@arm.com: updated commit log] Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
This commit is contained in:
committed by
Lorenzo Pieralisi
parent
ce397d215c
commit
141cb3d4ee
@@ -430,6 +430,9 @@ static int kirin_pcie_host_init(struct pcie_port *pp)
|
|||||||
{
|
{
|
||||||
kirin_pcie_establish_link(pp);
|
kirin_pcie_establish_link(pp);
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_PCI_MSI))
|
||||||
|
dw_pcie_msi_init(pp);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -445,9 +448,34 @@ static const struct dw_pcie_host_ops kirin_pcie_host_ops = {
|
|||||||
.host_init = kirin_pcie_host_init,
|
.host_init = kirin_pcie_host_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int kirin_pcie_add_msi(struct dw_pcie *pci,
|
||||||
|
struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
int irq;
|
||||||
|
|
||||||
|
if (IS_ENABLED(CONFIG_PCI_MSI)) {
|
||||||
|
irq = platform_get_irq(pdev, 0);
|
||||||
|
if (irq < 0) {
|
||||||
|
dev_err(&pdev->dev,
|
||||||
|
"failed to get MSI IRQ (%d)\n", irq);
|
||||||
|
return irq;
|
||||||
|
}
|
||||||
|
|
||||||
|
pci->pp.msi_irq = irq;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int __init kirin_add_pcie_port(struct dw_pcie *pci,
|
static int __init kirin_add_pcie_port(struct dw_pcie *pci,
|
||||||
struct platform_device *pdev)
|
struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = kirin_pcie_add_msi(pci, pdev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
pci->pp.ops = &kirin_pcie_host_ops;
|
pci->pp.ops = &kirin_pcie_host_ops;
|
||||||
|
|
||||||
return dw_pcie_host_init(&pci->pp);
|
return dw_pcie_host_init(&pci->pp);
|
||||||
|
|||||||
Reference in New Issue
Block a user