From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=basealt.ru; s=dkim; t=1777041224; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5o8fNIRQoX0iqar4S8yT3OA87JognesMghVSNXO7uq0=; b=ssbEnN9DpsaHyhpnZNZ1qjoEZjdMZdMOpcJbgbtbnukXLIJtc9YIZwqGhYXzbfolqe8lF2 uuwuUPsLgzTUrqFfssIAsxadEptoAHSHilGSrpB4sdyaJ+fkQRIMgT9rNqgvy5a8xQCq6v lENm8WZ3Ozg8WQTAWASMjbg44OtLKhLmf9LaZ/EElD+ks339Tjcn/Qya6KVNIbw3BO5mXF wmFWvOGxU7gl/jelOc9ygVMBtGm6MvcnpvUllHHLuHC32uE6vpIUT6uAuHx0lkKRhNOQle b0tAne9XQtJNVscBnYIJ4+8wwyT0KOxYt7b/nKGNKXIkSbFyOjwGYNgtEEE8Zw== From: Daniil Gnusarev To: gnusarevda@basealt.ru, devel-kernel@lists.altlinux.org Date: Fri, 24 Apr 2026 18:33:24 +0400 Message-ID: <20260424143329.427971-4-gnusarevda@basealt.ru> X-Mailer: git-send-email 2.42.2 In-Reply-To: <20260424143329.427971-1-gnusarevda@basealt.ru> References: <20260424143329.427971-1-gnusarevda@basealt.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [d-kernel] [PATCH 3/5] pci: baikal-pcie: driver compatibility with SDK versions 5.4 X-BeenThere: devel-kernel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux kernel packages development List-Id: ALT Linux kernel packages development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Apr 2026 14:33:47 -0000 Archived-At: List-Archive: List-Post: In SDK version 5.4 for PCIe devices the interrupt names required for the driver are not specified. In this case, interrupts are determined by index. In addition, the "msi-map" property is used as in subsequent versions of SDK. Signed-off-by: Daniil Gnusarev Do-not-upstream: this is a feature of Baikal-M --- drivers/pci/controller/dwc/pcie-baikal-core.c | 59 ++++++++++++++++++- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-baikal-core.c b/drivers/pci/controller/dwc/pcie-baikal-core.c index d67e6cab6e0de..a1de90e0ef6e1 100644 --- a/drivers/pci/controller/dwc/pcie-baikal-core.c +++ b/drivers/pci/controller/dwc/pcie-baikal-core.c @@ -650,10 +650,63 @@ static int bm1000_add_pcie_port(struct platform_device *pdev) struct dw_pcie_rp *pp = &pci->pp; int ret; - pp->irq = platform_get_irq_byname(pdev, "aer"); + pp->irq = platform_get_irq_byname_optional(pdev, "aer"); if (pp->irq < 0) { - dev_err(dev, "failed to get \"aer\" IRQ\n"); - return pp->irq; + dev_warn(dev, "failed to get \"aer\" IRQ, trying to get by index\n"); + pp->irq = platform_get_irq(pdev, 0); + if (pp->irq < 0) { + dev_err(dev, "failed to get \"aer\" IRQ\n"); + return pp->irq; + } + if (IS_ENABLED(CONFIG_PCI_MSI)) { + u32 lcru[2]; + u32 maps[4]; + struct of_changeset ocs; + struct property *prop; + + pp->msi_irq[0] = platform_get_irq(pdev, 1); + if (pp->msi_irq[0] < 0) { + dev_err(dev, "failed to get \"msi\" IRQ\n"); + return pp->msi_irq[0]; + } + + if (of_property_read_u32_array(dev->of_node, "baikal,pcie-lcru", lcru, 2)) { + dev_err(dev, "failed to read LCRU\n"); + return -EINVAL; + } + if (of_property_read_u32_array(dev->of_node, "msi-map", maps, 4)) { + dev_err(dev, "failed to read msi-map\n"); + return -EINVAL; + } + + of_changeset_init(&ocs); + + prop = of_find_property(dev->of_node, "msi-map", NULL); + if (!prop) { + dev_err(dev, "failed to find property msi-map\n"); + return -EINVAL; + } + + ret = of_changeset_remove_property(&ocs, dev->of_node, prop); + if (ret) { + dev_err(dev, "failed to remove property msi-map\n"); + return ret; + } + + maps[2] = lcru[1] * 0x10000; + ret = of_changeset_add_prop_u32_array(&ocs, dev->of_node, "msi-map", + maps, 4); + if (ret) { + dev_err(dev, "failed to modify property msi-map\n"); + return ret; + } + + ret = of_changeset_apply(&ocs); + if (ret) { + dev_err(dev, "failed to modify property msi-map\n"); + return ret; + } + } } ret = devm_request_irq(dev, pp->irq, bm1000_pcie_aer_irq_handler, -- 2.42.2