From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21A4A3921E4; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=MyoNCE2MvMwNHJjJBQTSX/xbHcoxWsMFtJOpLZ3WT6gPZF2l7PF167n31cyVREnLmShVMxlD5POuZA9hYc8UKLzXRABwzDAQj5EvupFBuidPyVZlmVJV/u//zcPecfbPzvHScfQiXoOsQV2lfB59zg1mrxKGyMZ4e1tbSTB5Ea0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=0gStX5aswa2Oy8OyS3h4jCJzOiKQDmU95lX8+cL9t00=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mCQSnWudBsm5fIRBSCRUCWu6Yn3E2hWGNfMQIZnbHq3HGOq4GylfeuKkJ0VJb8gc6gcoz75cDNFPeV9c2b+L1z0cHzsxeZBcnemLFKZrlyfgmlwh0+GwAOlgfvkJNgchcm7Yw2rQKEENF7Q/9j/ZIDcRtdoq2MEQQHbQ4DY2dpE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Nv/3fHsd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Nv/3fHsd" Received: by smtp.kernel.org (Postfix) with ESMTPS id ABCA4C2BCF7; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776205; bh=0gStX5aswa2Oy8OyS3h4jCJzOiKQDmU95lX8+cL9t00=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Nv/3fHsdBVCwWMXrcseSpbfRq14lM3CcpkMhSZv4x8azXwxofbpA/fQ75v/RKbziv MO1Hsod0DxsRX2dH8uSSO6wRd7fILMMeNdG44S+ts3NyHHTVvxNxgkEZJMVbtod5fb Vg92/MhHViNaQoSO/ZWfy2nEmZaZnnT6t8DzjgsN4L2kFck4ugAg2SlAMChGnPixqY Opd9GGLTnxCA08VtDPuOxl2mXHXMIKSO6r7mlRZQ/PvAGOgh8lQis1E2qpCc8GUlev fZ1+gGFnEVpWdJW/qnngKeAmV3XavrIjH7XR4LrF2X4uRzaQDMJnbcs/UDyDAASVQx yNQohJ+0zt+ug== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A8C9C55184; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:49 +0800 Subject: [PATCH RFC v5 1/7] mfd: ls2kbmc: Make a copy when parsing mode string Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-1-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2609; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=U6cr9tgtHDx0WKodEY4FvK4JRMLlLLDCHMpw0TehXDs=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhKI8yWfAOidTLPqzOGA8PA9CkgvMDA2n2Rl 1cfvBzkERGJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bt9mEAC7giJ3sZf0D0yS6L8QLrl7uWy1J7eCaPg92jdlM22hi7UfbXJYQxa8EK1fzHypR1piiOo fH5KIjmEhIJJ4bPdXt894GfCFWWygal9PlH9Yn89V1utIX9c8GLlYXpq1I5Ih3846w63yfbx9nB vuWN1HEs97eWQbwAc8qXjr+xvbNz/dVcKo+CuW1AKbYh+VCA6A1ZC5oI23Y96rlCdyYLiADDzp/ 4a3Z44GJvBkfhXy2eMw7Azq006rs+KuI2DcuoEV7449s7WIbBkm+CV8E+IkwBziyO9MszjcoM46 vxwAApZvLx/gTxI5+r9hZHck8rqFRABJb2wzH/mCdGbaW42eF03J7rcktAQHfQ8B3V7B4sUSxDF 8fDoc9l1Vsb9BHu0C7QXiFl4a29bx2XYy7JgzdQp8AxzfhBR3cjfPIla3ZbJiwTyY4OnBp8/nuy RxYVvGipb3RamdX30kIMxgxFCDU8iyYKvkycMSZHa0ycNktwzIUKIwfpVQcvFNOIedEtpsG5GZq L5YsFs/F4D68cuOKuOsI57zawn/x+QV6/WYyKocykK/glxiec4/ViiJVWwNtnAgCNFhuoEwWWkV wKYzeJjycWCuFdA4FRMb0MwIwAkoLHVsNYi9qxX/QbiQ1ywRxYaeMpRfGlWNYHoHGR8RcBzOI9d Xw2GRhJp/x5LMNw== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When parsing the mode string from BMC, the string is manipulated in-place with strsep(), preventing from parsing it again. Make a copy of the original string and manipulate the copy instead to fix this. Fixes: 0d64f6d1ffe9 ("mfd: ls2kbmc: Introduce Loongson-2K BMC core driver") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 408056bfb2fe757a5bde43775a483a48352e706d..fc9695eedd3662ac92ff116811b= b07bff1c994ea 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -427,34 +427,54 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) */ static int ls2k_bmc_parse_mode(struct pci_dev *pdev, struct simplefb_platf= orm_data *pd) { - char *mode; + /* Assume 64 bytes is enough for the resolution string */ + char mode_buf[64], mode_buf_orig[64]; + char *mode =3D mode_buf; + const void __iomem *mode_base; int depth, ret; =20 /* The last 16M of PCI BAR0 is used to store the resolution string. */ - mode =3D devm_ioremap(&pdev->dev, pci_resource_start(pdev, 0) + SZ_16M, S= Z_16M); - if (!mode) + mode_base =3D ioremap(pci_resource_start(pdev, 0) + SZ_16M, + sizeof(mode_buf)); + if (!mode_base) return -ENOMEM; + memcpy_fromio(mode_buf, mode_base, sizeof(mode_buf) - 1); + mode_buf[sizeof(mode_buf) - 1] =3D '\0'; + iounmap((void __iomem *)mode_base); + memcpy(mode_buf_orig, mode_buf, sizeof(mode_buf_orig)); =20 /* The resolution field starts with the flag "video=3D". */ if (!strncmp(mode, "video=3D", 6)) mode =3D mode + 6; =20 - ret =3D kstrtoint(strsep(&mode, "x"), 10, &pd->width); + ret =3D kstrtouint(strsep(&mode, "x"), 10, &pd->width); if (ret) - return ret; + goto invalid_mode; =20 - ret =3D kstrtoint(strsep(&mode, "-"), 10, &pd->height); + if (mode =3D=3D NULL) { + ret =3D -EINVAL; + goto invalid_mode; + } + ret =3D kstrtouint(strsep(&mode, "-"), 10, &pd->height); if (ret) - return ret; + goto invalid_mode; =20 + if (mode =3D=3D NULL) { + ret =3D -EINVAL; + goto invalid_mode; + } ret =3D kstrtoint(strsep(&mode, "@"), 10, &depth); if (ret) - return ret; + goto invalid_mode; =20 pd->stride =3D pd->width * depth / 8; pd->format =3D depth =3D=3D 32 ? "a8r8g8b8" : "r5g6b5"; =20 return 0; + +invalid_mode: + dev_err(&pdev->dev, "Invalid resolution string: %s\n", mode_buf_orig); + return ret; } =20 static int ls2k_bmc_probe(struct pci_dev *dev, const struct pci_device_id = *id) --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21990391E59; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=bomoppyoAVeAl6dNmEEePhAG5eskANlLMXgwgg5KLhsqX2gtYODIEP1/QinzguIe6MGTmdJzezAbxqNWGKKdxb4hPkAbBgt2V5r3cm1b0HdVG/WjDt7OOkGlwYErkSIW3fCCXMi3jXrjUZI6hZF/24UrCugXxfYA5MmRCLxqReU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=ehRRwOjr5rvL9ll38epbp5w7dw7xqUR8OpqKs2J2CGI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s/t5sSBmwlpXswddiX6kioUf41Mac9z8QyrU6RigD32Q/Y78yA+4aPD+8o9Bbv2WC+YXCArIRqpmAPOy1zpfacEU4gH3mqM5E9VZh72hSWLKiNcPYwX4LZN2149vuY0TPxHPD3xfkldWF9/gY0/r5fDoJDJ0lg5537vrvDoo6DA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bj4WOK8c; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bj4WOK8c" Received: by smtp.kernel.org (Postfix) with ESMTPS id BDE6AC2BCB9; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776205; bh=ehRRwOjr5rvL9ll38epbp5w7dw7xqUR8OpqKs2J2CGI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=bj4WOK8cqlvt7cWb4OdL29GcRdxmrRGS+u+TQv7jcxSwjG5Cf1mJiLi5lgba4ziq4 +UTxKlgxvXVfSPqiyE1jtaPW44enoTwZHVR/NtGAnbto22sOo3Fg71JVPdh2IVuDML TNYfW9MHTYHeDWbN+LcxFO+adJH7dTDS/iTq2reIBFVEbDB16N091bafRPQEzcDWyp 3smp0GEgQsdd269AB8D2ZEjVVg+6CGNTgF3A9WkPN3F2SxKcFC37CNJBBoElbk15dC pyE47NQkvKKcqM7fcdtpPNB85QEd5F9u26z4Qd4ucdLhKYxoXR11O4NHMyqiKyNa6s CWtI9b+0EQJ7g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D552C55182; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:50 +0800 Subject: [PATCH RFC v5 2/7] mfd: ls2kbmc: Sanity check for the connected pci port Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-2-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2625; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=oufFMpAEKeHSvtXxvdMyphQB5j62aoxVcKbqW/18KeU=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhK3mEKJMSNy6ygC/cKXxOk0Ld4Yfs5KObut tpA0Ml72FyJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bnEKD/9d0zx+gsQ6lkhnLW5Ck2EefOX7a7ytscd1t7azzRxo0lOx+BF+FRsF6lROQiYzMY+cYWt 1flfx1+x07ULr6+36n6k2zeEJVBMLgsAMiiKHZRov4PTYZpoMd0nYGoD5C0yWJvFKRYnItr1jLJ pgIOhe5JcaX1cYHDMiUwXMPD4htTt1j/vX3OfcX6EVStKwSeSaozcCpkapVximnU9ATHHwONlwA zg6+HDhpXFX0VjHX3NQlPHlAm957In16t/1Ze6Ni9doX4XVmB4X6Eu4mF7R+LllhtyyRUFwOFC6 827p+yCbYd3CxDGXE+mHIo8OFOfeuXqQ1QZIPLy+VL3DrWs9uFN2cPkXaS5TSJmzMYQO7+jEgtE T0ysSfQ0UzkM7xFSXiRoRkXam+4VZptuT1XsH3EgLFcN/NpEiIjbUsNabfNgkHlTKSXD6sI52tD 0moVWRZYWZBy1yAIOlHwlEPRk+jpKPNTPKAbZB2ZsLJXQmNA7lpZS4882wFd1XVLDS0aB0dxUXU rtuRd3hr8hkBEmqCulOF/ZRdzzJgHq/NfsEViSqkDh16pcmLB8X3U0AV3s9RKoBUOvPXeeYBaUr /iGPdax3fGejV1sSSSlTQVQnN6dHZs36yZ5l4FcfT3hdMzWOEseeF4qr+KhvQby1T/yR6GbjCeN TQnanMTErxJJMPg== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When the bmc resets, the recovery procedure require to reconfigure the parent device. The driver assumes that the parent device should be LS7A. Add a sanity check on initialization to ensure this and prevent from accidentally operating on non-LS7A ports. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index fc9695eedd3662ac92ff116811bb07bff1c994ea..a9a30611dde9e31cd86ff67b1d6= e02bf67b34755 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -35,6 +35,15 @@ #define LS2K_IPMI3_RES_START (LS2K_IPMI2_RES_START + LS2K_IPMI_RES_SIZE) #define LS2K_IPMI4_RES_START (LS2K_IPMI3_RES_START + LS2K_IPMI_RES_SIZE) =20 +/* LS7A port Device IDs */ +#define DEV_LS7A1K_PCIE_PORT0 0x7a09 +#define DEV_LS7A1K_PCIE_PORT1 0x7a19 +#define DEV_LS7A1K_PCIE_PORT2 0x7a29 +#define DEV_LS7A2K_PCIE_PORT0 0x7a39 +#define DEV_LS7A2K_PCIE_PORT1 0x7a49 +#define DEV_LS7A2K_PCIE_PORT2 0x7a59 +#define DEV_LS7A2K_PCIE_PORT3 0x7a69 + #define LS7A_PCI_CFG_SIZE 0x100 =20 /* LS7A bridge registers */ @@ -477,6 +486,24 @@ static int ls2k_bmc_parse_mode(struct pci_dev *pdev, s= truct simplefb_platform_da return ret; } =20 +static const struct pci_device_id ls7a_ports[] =3D { + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT1) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A1K_PCIE_PORT2) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT0) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT1) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT2) }, + { PCI_DEVICE(PCI_VENDOR_ID_LOONGSON, DEV_LS7A2K_PCIE_PORT3) }, + { } +}; + +static bool ls2k_check_parent(struct pci_dev *dev) +{ + struct pci_dev *parent =3D dev->bus->self; + + return parent && pci_match_id(ls7a_ports, parent) !=3D NULL; +} + static int ls2k_bmc_probe(struct pci_dev *dev, const struct pci_device_id = *id) { struct simplefb_platform_data pd; @@ -488,6 +515,11 @@ static int ls2k_bmc_probe(struct pci_dev *dev, const s= truct pci_device_id *id) if (ret) return ret; =20 + if (!ls2k_check_parent(dev)) { + dev_err(&dev->dev, "Expected to be connected to LS7A PCI-E port\n"); + return -ENODEV; + } + ddata =3D devm_kzalloc(&dev->dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM; --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21AD93921ED; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=HvPTDd1r1hosr9utSpxjocyuGlizlt/N8msgU2e3zhCt8NrI2vp+RpteHDj1eeV/USRckZ6Muoa/c85o2sOkO2NBtcTM9bB2knvTKflFKBvPop4KFxKwM5DBc+F7XWTSZGgu3NI0OM7sDrF+/5kHM17rWyg8b/QQ7FFO1nfBP0Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=J9mfaTs/eKOadRk45qFHbUkFlnkzEtRD4/K4DSL8eT4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qOcOgbZ3HmK3ayLx00ojdsyZcn7i37hP3LT/YsWC1TreQU4/g3THic5PsRQoYg0WbAC8LdYi0cWAotG1Jq51Qz5n/STUJVBDSpFutZJ2U9QljmeihMSD0nm70vN1ingqMoyRIpjxGxI/BJY6iIPxy5SqPJahuyPxgGZxgr7l07w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VsuLLXbe; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VsuLLXbe" Received: by smtp.kernel.org (Postfix) with ESMTPS id CD120C2BCFF; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776205; bh=J9mfaTs/eKOadRk45qFHbUkFlnkzEtRD4/K4DSL8eT4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VsuLLXbeNtmHykYwEpN9PCAvMGmIWtZaXiHWGq5zhtCE2OX5BpqkwpsmegzyFjIh7 dXdt2sDcIDLYIIMfnvirBYowG3sT1iKJZfC+xulqQWuEf5nPiZaStXANCrHuVCAQMy 8nxjhN+ISafZY90cBkVjhF+GLixwzKN56lDEvrJRLbr/j2si8xouHaIwxUvHxozuOI dV+7GSgAwk2KkXv+FYx+Tv/9nb3FCiniAED0Hyf517WmBdFahKuUchWGrmSKvEEVPV W+ihjAuANxR3j88NuJojUMYlyxr3251h2Gn6w+jsoqyiXcNL8FEjdBQCRFD1lXH+3I c9vHi85Z+wyjA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF8D3C55843; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:51 +0800 Subject: [PATCH RFC v5 3/7] mfd: ls2kbmc: Redraw using exported functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-3-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1128; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=VcxGUAsZn+03JiICVZ3kCtaItmQKTSKAeZBuv6zGY/o=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhKrq6jiI7RrNX9FagV9tUCFSss1tfMqJ2th qvNYsk/hiOJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z btk8D/41YbebAtDb2E9S3BwoDh7Yx4FtCVdTo96K6VUzWGIIz/T9s/XZWHdTba2p9e7lKJO+ho7 Sjy+JA2UFfzpmd3d/SXBbN5cEXOvFmZ9CIuLlK7pgIL83XnY+jACqNdHk7W8QukXXFTEPkdty4Q Hhm9QEjt/X7uQZtjunOypbvEVWp8blBwDsLvC65nFUNIPvUF3m3nIgrXcokm2tUo8gUJkc06f6V T9onIK7QCGt8e32eHa4zERSagpy7Wq6lyZ02pEPgl4PbT3SLI844D3O8FZsE+6Jgf8KfQJ/6Qgd aGZgJ8/KEdKWiBEFBuPhBz7oQ+ffmMfxkGl7nIWE1ukfKNOF7xbceY9hRVamglLOwmczybYfb72 8fEr4+EYDM8z9rUuDYJPXYFb0HzCzSGpYPk+qDmjs/o+cdm2bP5jwLzKU3GDtYmyYtXaeu8WNvY sFAHd1hgvD6mt/ShRpZHWAynqVA7LkIeDJjriacOTGzH4Dx72Y6a5y3GF8g6pJuG7DgxefjutSy GMdqSmRjiThq1pX+fECTt8Kk0HHdr468nKx6fUDkTGdT17fs6OSw3RJSV4pSwXdJMTdzwZsi0uq Njq52h+pWj/rN1ghPr9UYrsYHkrYgejKbDxOZ6JQb2KKNs1nb6KWEn5286D9XKetkO/+fUJVp4J Ft5TEn+Tx/jsOag== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang Use update_screen, i.e. redraw_screen() to trigger the redraw of the current vt. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index a9a30611dde9e31cd86ff67b1d6e02bf67b34755..e12f2ca2fbef360ceda14ee6fc6= 4f500e4944120 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -25,6 +25,7 @@ #include #include #include +#include =20 /* LS2K BMC resources */ #define LS2K_DISPLAY_RES_START (SZ_16M + SZ_2M) @@ -310,7 +311,9 @@ static void ls2k_bmc_events_fn(struct work_struct *work) =20 if (IS_ENABLED(CONFIG_VT)) { /* Re-push the display due to previous PCI-E loss. */ - set_console(vt_move_to_console(MAX_NR_CONSOLES - 1, 1)); + console_lock(); + update_screen(vc_cons[fg_console].d); + console_unlock(); } } =20 --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24AB3392807; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=RUTz/8ssY0cv5j7kQJNf5YyV1ppQM+8qOj6NFB+Oxlkt+owJqSFnFSiFWO0c3HI0DNNEEAZhVhGBiQnWRh59wIfvoxxFq5+PsFbG5ppBbKeIQwo57OkawEZs6iuC7rhPkHf4RtCvwgE/MYIJr50xpDNkIjSInCCi7ynJqfOZfSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=d4M2M70orrgx0wB2m/8b2iSym76cXcoVlWjx1HQ8p+c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FwJbF9x2GrdhU0X1k5eW+ej7uehu503J8JCh6wnXzwfXgLhccERdb13iTF9rW19mLQyXwpojlV+KfC9Fe56Uti/BMtT78MdNRKRnTJKnNZwRR361XQx+vvgRnuu1/oUkiWlTVEC1M0vjaSKpgVW+BGyFIyrfmBYwpYKN+5kP/Yc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lVG1jhQt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lVG1jhQt" Received: by smtp.kernel.org (Postfix) with ESMTPS id D6479C32781; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776205; bh=d4M2M70orrgx0wB2m/8b2iSym76cXcoVlWjx1HQ8p+c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=lVG1jhQt/k4oZ/WkbqT+E1LemSy2DI/3zHnkBOxojm6nTM+nEcecId1lx/re4yN5B DlTALMvX7bpWKmg1Q8cq4vsd2lFHCEktHVJx8IK87zHjjgF0SOF2kIjuQC3mm78Yr5 np39eS+vZgii3LapvyG2RjeK2MpTf+AFoV4UBeKpOWBzS/f2znv0Z6WANQCODR4MTc VInriE2UPDB3GQj1FwONZXatS99UuMS8humrSR3LUx0NHaycwmqXQd5qHjow5DGxL5 H4CCtZM5z1JsJ8niMFFBNM4d7n8ZHZxfT6qp4UL+nKaDwTqnsBJb4pg7Vmi7hTbXPJ 0b2NgpZa8bEkQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C13D9C55838; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:52 +0800 Subject: [PATCH RFC v5 4/7] mfd: ls2kbmc: Cancel the work queue on removal Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-4-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1480; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=JfJpObrd5YhUsg0KmTA+Fgw5Trzi5JwERZB1GRhNqG0=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhKuM+IF3Na2gINNmXwdAd99/qiKJDFzpe81 fBBn4lrj/SJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bkCMD/0d9TDXHqudXnVDofETx3w2WKdtK4V5hw6PTRf5VCAhGd9fl5txALHVjZWr0loSsNbYCPJ 0Smgh7HSul9o+2nAQum4J/36M1UfBgKoWy8soL7cyMFRJo/YNCpYXpI5jqLPQKsgAXihyACzEfi NSw8KssTl1CdWgmotQrY5MI/b6W3JVRSFCqvbfGg6pNPv2EG406wnrkncsxwUSsKtEuxAs050ds 9GLsHJ2CPTgVH1tEFmPCS3S6NQhfM6kUctroJeCQ3w1dJqunAWVRcYtOcUwE6sydTj5xuUFfRvO fxhFl2eG8Yw4nq+bIrQGh31zdfVP5g4PMdhOKTxjJC8g1QEx0akXY/9DxcCWeoaZnL7Hk/urp+O QDig1UomR27DjBIGS1N1oQmEwOaOaPdneAllfEBwC/bOxtvJWAoiuCNaFlROYvkPrgZxKCjPs99 0y0VBKuwG0Bx4X3HsdATKhjQr7k4cLttZ2tP4AENMBzGuPIoThI+XB+WYCnV60e+FgAfHzRdLLG hUqMkO00OsqFbR5j4o1fvmZyvandW+e046DeB9/kswHzHwPlWptvYlL+m7+YZNdhrAT3b/y6tzz xh3dtFuJBiAuAqXSivkPfXa5uRWHPhwBdkYGTL2ms21rSLGC2JuzV1F+eKRCI1zQadnfob0/cLR ETSKrLnoi1nb+/w== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang When the device is being removeed, the work queue should be canceled to avoid any pending work to be executed after the device is removed. Fixes: d952bba3fbb5 ("mfd: ls2kbmc: Add Loongson-2K BMC reset function supp= ort") Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index e12f2ca2fbef360ceda14ee6fc64f500e4944120..e7bebfe696ac4554eb628327981= 1a27ed865ab73 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -375,6 +375,12 @@ static void ls2k_bmc_save_pci_data(struct pci_dev *pde= v, struct ls2k_bmc_ddata * pci_read_config_dword(pdev, PCI_INTERRUPT_LINE, &ddata->bmc_pci_data.inte= rrupt_line); } =20 +static void ls2k_bmc_cancel_wq(void *data) +{ + struct ls2k_bmc_ddata *ddata =3D data; + (void) cancel_work_sync(&ddata->bmc_reset_work); +} + static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) { struct pci_dev *pdev =3D to_pci_dev(ddata->dev); @@ -385,6 +391,10 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) =20 INIT_WORK(&ddata->bmc_reset_work, ls2k_bmc_events_fn); =20 + ret =3D devm_add_action_or_reset(ddata->dev, ls2k_bmc_cancel_wq, ddata); + if (ret) + return ret; + ret =3D devm_request_irq(&pdev->dev, pdev->irq, ls2k_bmc_interrupt, IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc pcie", ddata); if (ret) { --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 402DF395266; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=l9Hia3BAmRYQgqYblFHhFgg1a26e6eZ7kEv82RMjqqSG5LpNXnQko0Jo/UnimWO9TgfDbJPUBKaE4ZKmI/GZZEQZssebvh46aOzTiAyhC94XXJglYqbOYRiEf/Pt3r+a7MiwmJrcp9D5IUgNVa5tOb4nx79f08LASoVdZQf1WRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=WfZ+z7682VFLD8O5mpMXciAcTTygQXbQjtjD80ndMT8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jJXXcyGKvE/f//nHEJdpDaXgHC6IGiiBoDrFj9IC8QPbKXYvvYqhCMXIioRcdXV9cvkSrllvy0N40q1szon2dgAmmrUX4/HYno9aL5+K6JDUJu+5GUOU1jGNAquYoJ0+nl4ASepHWDgLSrdR32pe7M1qa8MLjClUQTl9JQJ1tSA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=thmgH+jL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="thmgH+jL" Received: by smtp.kernel.org (Postfix) with ESMTPS id EBEE4C2BD00; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776206; bh=WfZ+z7682VFLD8O5mpMXciAcTTygQXbQjtjD80ndMT8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=thmgH+jLj2ynWhCw+v3i9qjXLlyZJ1ePdXPp7L1Gt+Nzfo7dwTEssjvGA0Jct21qt UbQcQiFjqBxYuHJPkg19gY7X0dDKG+uqTL7OMi6zzR+wWKfENx86UeSsY2/GDq0AIO cbFF3uvbOpKFc5K9q8gcsX/cQVYmskY4T7RoBAuGEIPG2vTP+1mW8VmmEUt9a87uiH 4LFmepaXe63yt5mLwNXuLXEFoh5RZJ7px7tOFwROjHNd5Shk0WxT9zzInjb+qr8wEf W9F+mnpZTTrg1iMZe1L55AG0NQg3mB0dEk8ZD8pxBeDv7ZkuNFc8aZRc94kPfvNmN8 VtRWd4CTD6iAA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D471DC55AB9; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:53 +0800 Subject: [PATCH RFC v5 5/7] ipmi: ls2k: Relax the dependency to its mfd driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-5-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1366; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=gWOO98z6lpPREnTgNizoggde9a0/OsZs516s8lw5YNI=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhKLjA7Pw71S5bqO8V/3cOJ+RNzMUIsZ1+R4 faly8Er4oCJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bjU3D/9zO9GKSVabQGWvriUD7pAikHYnLgNvakZ0ZsA22rBP+B9nuItLx/F0gZuM4/GtWsRbObj dEdZgNjAcK8uJeyOIu69C71A/iVcRDGuzPpB7pICy/gSYn5I2ZA/+9McNDnsTE7femZikHHjt1X wJmg0EdzCSWz2MwVv+9KhwCxSbToMv+6X6Ae3I1B9WkU8gqwSsi2z5y10LsKCcpnzYtmvx1IPK9 Vqm7ofvXaGOC3FXZAGQN2B73VAoa2905VJ/FNntOQy6WVx1j/Lp7Rlz5BImSJpqbDYix4lJLwcp KVUBkRIYDFPExT72Gf1MeqOrqXv46xwnjwN13Dk/APApNqHLrlRGbwSjsRFcW3DVSzOh21c6LFC mVrQE9D6WhZqQjathlGvtwuiXsQO4tqoiYVGwkMehYelsgD444oCJ9hOBI0Z6GOWvQhnJIYgbqI FhVsG/RVh7EdDk+StY74HJIi+j/0y/Yl8cIbrjtM8pP0AZfiEND8+9ge/LKvOMJddJsPQ/wjciC cK3UWyUtGMFMVdfXXZUN7Hdf8c9mYmxXuD9lJckVSPxZxlFlFF4SM2xWom0kM236KcZAF0uBg/l m+ZYoyvIf2L5ZWDDbbo+UnLt5c1sCTrLBcZPKX5qYdhyUu5/4ZcVhKlH3IEIOJj0FX4pvzyvhbD GJIutlcIHZ7hh5w== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang There is no strong dependency between the IPMI driver and its mfd driver. Although the IPMI driver will not work without the mfd driver, it is not a hard dependency. The IPMI driver can actually be compiled without the mfd driver, and it will just fail to probe. When the mfd driver is loaded, the IPMI driver will probe successfully. Therefore, the dependency of the IPMI driver on its mfd driver should be relaxed to "imply" from "select". This will allow the mfd driver to be compiled as a module and the IPMI driver to be compiled as a part of the ipmi_si module. The adjustment to Kconfig for the mfd driver will be introduced in the later patch in this series. Fixes: d46651d4e3c0 ("ipmi: Add Loongson-2K BMC support") Signed-off-by: Miao Wang --- drivers/char/ipmi/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/ipmi/Kconfig b/drivers/char/ipmi/Kconfig index 669f7600019747bcd2b37563477cf336f19a0407..f456e3e89416932f0d21bb74215= 3a503aeb24267 100644 --- a/drivers/char/ipmi/Kconfig +++ b/drivers/char/ipmi/Kconfig @@ -87,7 +87,7 @@ config IPMI_IPMB config IPMI_LS2K bool 'Loongson-2K IPMI interface' depends on LOONGARCH - select MFD_LS2K_BMC_CORE + imply MFD_LS2K_BMC_CORE help Provides a driver for Loongson-2K IPMI interfaces. =20 --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3FCB239525E; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=Khx/CkqdmR4iW0KBF55bG05PsUo2gYya4Ti4tpQrT6KtUvmkkHepsmImYT3itePFVOfsYB+4Uby3XOGXiopr7iAO6vKCwe1p4A2izM07hKvtJq7Os2zoHeL5CdGXDFjUOHk4aos1wO4R5s/FFAIOXjiFf7tFz49i2ncvC4QU3ZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=vZac1ji0I2lbNpDkmzQP3TJvCTOj42vg2oAMlAK30yA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IApMXcUl063LPAxwupI2rq+G88i5i7AI8Aov7J+Rz3GdpJrQrWWDTRClM/ftPuOZXi4jmF8VQxhBRHWFtEXsotIW4+8GrKIKd822UfAe9auFbf/ONXHb5p4M6t5RaCgZNfPyztT440I/xfREiw18x08D1n+RCuWEWYQCnYiMGz0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WBTuLm5M; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WBTuLm5M" Received: by smtp.kernel.org (Postfix) with ESMTPS id 03DB6C4AF12; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776206; bh=vZac1ji0I2lbNpDkmzQP3TJvCTOj42vg2oAMlAK30yA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=WBTuLm5M4B4n/s132yz/RiVXbbcUExoiL0FgcMkyB4dHw/vb/W2xckkJ3h17I8nqf uAAejYlDRMz3rHjw5R6nYIx5lBf9pEPCn2PvnDfUhu7PIOa5zVRd9ago17GZAHs1Jf n69WbjrFf30vFoC2JAGHDhBPPMa4yAFtUeawbByaaGC9CkKVFKfNuBMFa2IDpEaPbc 5zt1lWUS3xr+5mmm8fdD/zbCw+qnDWfLYeStcUIyCPcs0Dfz/MtX0458X/AlGEAKTR qaWXl510SVqHNpEzVWI10581QuDe5/4V9pCEQqt0zu+DscdcGziRcbiSWHH8B1wSD3 ylf/yZULHmtUg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E69E4C55822; Mon, 3 Aug 2026 16:56:45 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:54 +0800 Subject: [PATCH RFC v5 6/7] mfd: ls2kbmc: Able to be compiled as a module Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-6-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=726; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=4cYoUAWfr6lC2eTeoh29c5JZOLqOi/IiHDJf/iiky6g=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhKiv0vPvGaKDS59l99E0Hr6Vacx6sBqnp3c 0rDZSl4e7eJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bgaZEACu4h57kqez/+wUZsqc8Zn4n0TLdacI9nhuEuQUFiJJ0QkmvsRb6PDeZ6Hyk0RG070ioFn /xpTQt/M8MCPXlhI/idRPF8zWtLC6NHR/unfUAhkLelgd9PLp8wiJ2+TqrJ/2rT7tjhZBuJy/QU 2OzcirSuQXL2XaCojeysGU6IDoZ95Tf+ixDVp6lIr1A7uHVjZN4H4hMecUJUwV4gmI2hy9j1mzb 4MGXfFldNN9PIwsOwKwK8TkZPhd6RYLdxtghewv4JROKsnHVev7N6m4a1isnJ1ZRiB6BaEeFz8F sDvgO7LSkuDsbO+u4SZxPwTipyx/X7f+U34p/4ScATTesMsKIKwLTx8NK6UWHOXprQL6JSVPTP/ DeWdWgWfXBEbMm4NsnAJ8aL7yhmpgVp/4FbaB+REqyeDWuIQzlCum5MYgrkrZrjpz5zo43i/eMN chYy4lRDbgQK3qZ9YUdVe0joB4vgY2dWk4LR5kahPbEqAle7r8E/mgg8TZNiUj/Rv6WZyDhdEds 4dVMS7IuC/MKtPdwwD5hkCAWSHO2m/lSPBKxAabuQvNbsHHvo8RT1Uidvy+8bf3NfypQ+8q3KOY cUzbT8+NN18c3V2EiCGqV82KG3YWhHb4qcavAeHOvQJ54nz7IbLG4erAeAAkVdJ5/cWnU/t4fXs pMmsiIupLnhUt1g== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang Make ls2kmc able to be compiled as a module Signed-off-by: Miao Wang --- drivers/mfd/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 763ce6a34782bdd5d2b1a4d840c75b040092d83e..a7a9f97af248c88489dc1203a1b= a05f2ce4827df 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -2494,7 +2494,7 @@ config MFD_LOONGSON_SE which will forward them to the corresponding engine. =20 config MFD_LS2K_BMC_CORE - bool "Loongson-2K Board Management Controller Support" + tristate "Loongson-2K Board Management Controller Support" depends on PCI && ACPI_GENERIC_GSI select MFD_CORE help --=20 2.49.0 From nobody Fri Oct 2 08:24:49 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56BA53B636A; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; cv=none; b=HWmlGYj0r2l6T8cchthG5NBP4hbhxlA9kEFre3+YdjgXA0R5Xsb96A+y+SlSzAhjtSKQpXFGLwthIc3cTJlWU/OjF0iivXjqAZ6M6Vp/CKGftYP1L2gQR4kc/X+ctPEFpqR+vspyE7DdgaOVVVdgL+baINYKHKGh0DdGdmL1HPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785776206; c=relaxed/simple; bh=GspN0DMpb0/6pWqDquTQ23Bwwrp2YcUGDAwFcJac9HY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DAJAe1xhrMgCmE9uad3nhaYGWiO7DaqXxgID2q27tO8jQVFCp1ctlSfSeaKKjb4GQBhMQc8FmMI+f4RLcW3zhbUjdp7sgknipPeu2tMkHfRrWqyzHVG3I9gUrJ/0ucJgDaH9fw45QsKC0DkJw6LQWiVvhxx3mDo1cTpNonB8T2c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fjSTP51G; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fjSTP51G" Received: by smtp.kernel.org (Postfix) with ESMTPS id 172ACC4AF16; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785776206; bh=GspN0DMpb0/6pWqDquTQ23Bwwrp2YcUGDAwFcJac9HY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fjSTP51GPvewHyU4suo8hPE5Ll/xIe0R/2idA5zn3QdVdJ8RmSEDk7XJpZ93TKA34 /j11Os6NPDlr8Fq02wymkXTQozFBRJU39RqhGS4g4ivEvOTXaK5OBcaLZPUc5GI9ty S8eJJrcOqtqWkOzZHZ+4bGIxZkiDAvhrvbSCmu8x7Su19RCeMhZcTHSUzg+d7a6oeR nvLR5bFIvnkagsiGOwm00VdqEAF0nrfGJDfUC941VvFk10qWlwqs0875MKAimzRpAR rtTxARiu2+1XqdAvcxHfHiFxmknplX++PerAu9NwrgX7bBmT5dL9d7ccFojRrzziXO QoczQkp3ViP0w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04B1CC55184; Mon, 3 Aug 2026 16:56:46 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 04 Aug 2026 00:55:55 +0800 Subject: [PATCH RFC v5 7/7] mfd: ls2kbmc: Capture the reset event of BMC through GPIO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260804-ls2kbmc-mod-v5-7-e6bc5cdd9a93@gmail.com> References: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> In-Reply-To: <20260804-ls2kbmc-mod-v5-0-e6bc5cdd9a93@gmail.com> To: Binbin Zhou , Chong Qiao , Lee Jones , Huacai Chen , Corey Minyard , Linus Walleij , Bartosz Golaszewski Cc: Xi Ruoyao , WANG Xuerui , Yinbo Zhu , Jiaxun Yang , mfd@lists.linux.dev, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, openipmi-developer@lists.sourceforge.net, Miao Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8716; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=k8JeTOimLAHg5/j5YnQsU12otCL9zLZnrtg1hbM1eng=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqcMhK5yVam0ft3wH0Rb0rcCIL4VS/8gGRSuYS/ /t1al508cCJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanDISgAKCRCwMePKe/7Z bhIRD/4uYdFXuAdGbBS16E0cOJ/oG/QHDLONGwCXyfp6aC1dfUmjqouBzXNSwx7GVMELM2Jg6O5 XINlY/UZm8TtsVHwt4YcOsssWPu3SlK7QAwOJ24hYL9MXtNRv/KpONgzwSk671JELKxgWO9UMKo iNE+bL7HOq2cRRkHWqrg5bdYklDGPBGn7wPULtOxwJwkXCmaNyX96UykcPNb6r14/Wdv8/YlCCo 11wgmjoXt0Q7FsXNoDPRcVGQ9EtLxNxApBJyuF51HDxzCWmpP51v15mhLGU45YQGdKQ5k8YH4cw RNkyIrFw8hCLDEF27ZQHFNW7omqY7GySZNZ1yrwkYbRnK4qfnvA3xlCwj3dVkY98L3LWg4psKsT YNqlj01wuYRHP8quFlfKEoTwm7Yw2GjK7MZpnkuu8KVUNZbxFGjYT1c/11u0BVCFTkdJwqwCsRC hTbYRkP0WjuOhBTlQCyaBHiKbMAIEfzurkE1JeZdT+27pxk8mm4+IOLFS9bX0Ta4hYNwjAsyIXy +ce/WrAlbIE+6isPBCuJESVe40ToXGvz8l1H7rsUVc4CUu5/tVcfAcsla1YHoLkMET3iFEYSYb/ 08gsL343r0Zg1cNKkSlGgdusohiFNF55axK+haPFBsMcLrcpKGIjV48By+gexqrdGLjkTJMWUuk /O9CqXtJHHOOORg== X-Developer-Key: i=shankerwangmiao@gmail.com; a=openpgp; fpr=6FAEFF06B7D212A774C60BFDFA0D166D6632EF4A X-Endpoint-Received: by B4 Relay for shankerwangmiao@gmail.com/20250715 with auth_id=462 X-Original-From: Miao Wang Reply-To: shankerwangmiao@gmail.com From: Miao Wang The reset event of BMC is captured through GPIO. However, this driver bypasses the GPIO framework and directly accesses the GPIO controller through the fixed address. When the same GPIO controller is also exposed through ACPI and probed by the corresponding GPIO driver, there would be a conflict between the two drivers. This patch will try to find the GPIO through declared GPIO pin in the _CRS resources of the ACPI node. If no such delaration is found, the driver will fall back to search for the correct GPIO controller and pin according to the fixed address and pin number. A possible DSDT declaration for the GPIO pin might be as follows: Device (BMC0) { Name (_ADR, ...) // Match the PCI address of the BMC device // \_SB.GPO1 is the ACPI path of the GPIO controller Name (_CRS, ResourceTemplate () { GpioInt (Edge, ActiveLow, Exclusive, PullNone, 0, "\\_SB.GPO1", 0) { 14 // 14 is the GPIO pin number } } Signed-off-by: Miao Wang --- drivers/mfd/ls2k-bmc-core.c | 163 +++++++++++++++++++++++++++++++---------= ---- 1 file changed, 116 insertions(+), 47 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index e7bebfe696ac4554eb6283279811a27ed865ab73..97a666a136fe41ed4268cb70770= 201533aebb1d5 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -26,6 +26,10 @@ #include #include #include +#include +#include +#include +#include =20 /* LS2K BMC resources */ #define LS2K_DISPLAY_RES_START (SZ_16M + SZ_2M) @@ -81,18 +85,6 @@ =20 #define PCI_REG_STRIDE 0x4 =20 -#define LS2K_BMC_RESET_GPIO 14 -#define LOONGSON_GPIO_REG_BASE 0x1FE00500 -#define LOONGSON_GPIO_REG_SIZE 0x18 -#define LOONGSON_GPIO_OEN 0x0 -#define LOONGSON_GPIO_FUNC 0x4 -#define LOONGSON_GPIO_INTPOL 0x10 -#define LOONGSON_GPIO_INTEN 0x14 - -#define LOONGSON_IO_INT_BASE 16 -#define LS2K_BMC_RESET_GPIO_INT_VEC (LS2K_BMC_RESET_GPIO % 8) -#define LS2K_BMC_RESET_GPIO_GSI (LOONGSON_IO_INT_BASE + LS2K_BMC_RESET_GP= IO_INT_VEC) - enum { LS2K_BMC_DISPLAY, LS2K_BMC_IPMI0, @@ -186,6 +178,7 @@ struct ls2k_bmc_ddata { struct work_struct bmc_reset_work; struct ls2k_bmc_pci_data bmc_pci_data; struct ls2k_bmc_bridge_pci_data bridge_pci_data; + struct gpio_desc *reset_gpio; }; =20 static bool ls2k_bmc_bar0_addr_is_set(struct pci_dev *pdev) @@ -375,6 +368,91 @@ static void ls2k_bmc_save_pci_data(struct pci_dev *pde= v, struct ls2k_bmc_ddata * pci_read_config_dword(pdev, PCI_INTERRUPT_LINE, &ddata->bmc_pci_data.inte= rrupt_line); } =20 +static struct fwnode_handle *gpio_dev_get_fwnode(struct gpio_device *gdev) +{ + struct device *gdev_dev; + + gdev_dev =3D gpio_device_to_device(gdev); + return dev_fwnode(gdev_dev); +} + +static int ls2k_bmc_gpiochip_find(struct gpio_chip *gc, const void *data) +{ + struct acpi_device *adev; + struct list_head resource_list; + struct resource_entry *rentry; + struct fwnode_handle *fwnode =3D gpio_dev_get_fwnode(gc->gpiodev); + phys_addr_t start_addr =3D (phys_addr_t) data; + int ret, found =3D 0; + + if (!is_acpi_node(fwnode)) + goto out; + + adev =3D to_acpi_device_node(fwnode); + if (!adev) + goto out; + + INIT_LIST_HEAD(&resource_list); + + ret =3D acpi_dev_get_memory_resources(adev, &resource_list); + if (ret < 0) + goto out; + /* + * ACPI memory resources are ordered and only the first one is + * considered by the driver of the expected GPIO controller. So + * here we also only check the first one to see if it matches the + * expected address. + */ + rentry =3D list_first_entry_or_null(&resource_list, struct resource_entry= , node); + if (!rentry) + goto free_resource_list; + if (rentry->res->start =3D=3D start_addr) + found =3D 1; + +free_resource_list: + acpi_dev_free_resource_list(&resource_list); +out: + return found; +} + +static struct gpio_desc *ls2k_bmc_find_gpio(struct ls2k_bmc_ddata *ddata) +{ + /* + * In conventional way, the GPIO should be obtained through ACPI or + * device tree. However, when the information is not available, + * we should find the GPIO according to the convention of the server + * boards with LS2K BMC, the gpio signal reflecting the reset event + * of the BMC should be connected to pin 14 of the GPIO input of + * the first CPU node. The address of that GPIO controller is fixed. + */ + static const phys_addr_t LOONGSON_GPIO_REG_BASE =3D 0x1FE00500; + static const unsigned int LS2K_BMC_RESET_GPIO =3D 14; + int ret; + struct gpio_device *gdev __free(gpio_device_put) =3D NULL; + struct property_entry ls2k_bmc_swnode_properties[2] =3D { 0 }; + + dev_dbg(ddata->dev, "Searching for GPIO chip at address %pa\n", &LOONGSON= _GPIO_REG_BASE); + + gdev =3D gpio_device_find((void *)LOONGSON_GPIO_REG_BASE, ls2k_bmc_gpioch= ip_find); + + if (!gdev) { + dev_dbg(ddata->dev, "cannot find GPIO chip at address %pa, deferring\n", + &LOONGSON_GPIO_REG_BASE); + return ERR_PTR(-EPROBE_DEFER); + } + + ls2k_bmc_swnode_properties[0] =3D PROPERTY_ENTRY_GPIO("gpio", + gpio_dev_get_fwnode(gdev), LS2K_BMC_RESET_GPIO, GPIO_ACTIVE_HIGH); + + ret =3D device_create_managed_software_node(ddata->dev, ls2k_bmc_swnode_p= roperties, NULL); + if (ret) { + dev_err(ddata->dev, "Failed to create software node for GPIO reset: %d\n= ", ret); + return ERR_PTR(ret); + } + + return devm_gpiod_get_index(ddata->dev, NULL, 0, GPIOD_IN); +} + static void ls2k_bmc_cancel_wq(void *data) { struct ls2k_bmc_ddata *ddata =3D data; @@ -384,8 +462,7 @@ static void ls2k_bmc_cancel_wq(void *data) static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) { struct pci_dev *pdev =3D to_pci_dev(ddata->dev); - void __iomem *gpio_base; - int gpio_irq, ret, val; + int gpio_irq, ret; =20 ls2k_bmc_save_pci_data(pdev, ddata); =20 @@ -402,44 +479,36 @@ static int ls2k_bmc_init(struct ls2k_bmc_ddata *ddata) return ret; } =20 - gpio_base =3D ioremap(LOONGSON_GPIO_REG_BASE, LOONGSON_GPIO_REG_SIZE); - if (!gpio_base) - return -ENOMEM; - - /* Disable GPIO output */ - val =3D readl(gpio_base + LOONGSON_GPIO_OEN); - writel(val | BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_OEN); - - /* Enable GPIO functionality */ - val =3D readl(gpio_base + LOONGSON_GPIO_FUNC); - writel(val & ~BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_FUNC); - - /* Set GPIO interrupts to low-level active */ - val =3D readl(gpio_base + LOONGSON_GPIO_INTPOL); - writel(val & ~BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_INTPOL); - - /* Enable GPIO interrupts */ - val =3D readl(gpio_base + LOONGSON_GPIO_INTEN); - writel(val | BIT(LS2K_BMC_RESET_GPIO), gpio_base + LOONGSON_GPIO_INTEN); + ddata->reset_gpio =3D devm_gpiod_get_index_optional(&pdev->dev, NULL, 0, = GPIOD_IN); + if (IS_ERR(ddata->reset_gpio)) { + ret =3D PTR_ERR(ddata->reset_gpio); + ddata->reset_gpio =3D NULL; + return dev_err_probe(ddata->dev, ret, "Failed to get GPIO pin for reset = signal\n"); + } + if (ddata->reset_gpio =3D=3D NULL) { + ddata->reset_gpio =3D ls2k_bmc_find_gpio(ddata); + if (IS_ERR(ddata->reset_gpio)) { + ret =3D PTR_ERR(ddata->reset_gpio); + ddata->reset_gpio =3D NULL; + return dev_err_probe(ddata->dev, ret, + "Failed to find GPIO pin for reset signal\n"); + } + } =20 - iounmap(gpio_base); + gpio_irq =3D gpiod_to_irq(ddata->reset_gpio); =20 - /* - * Since gpio_chip->to_irq is not implemented in the Loongson-3 GPIO driv= er, - * acpi_register_gsi() is used to obtain the GPIO IRQ. The GPIO interrupt= is a - * watchdog interrupt that is triggered when the BMC resets. - */ - gpio_irq =3D acpi_register_gsi(NULL, LS2K_BMC_RESET_GPIO_GSI, ACPI_EDGE_S= ENSITIVE, - ACPI_ACTIVE_LOW); if (gpio_irq < 0) - return gpio_irq; + return dev_err_probe(ddata->dev, gpio_irq, + "Failed to get IRQ for GPIO reset signal input\n"); =20 - ret =3D devm_request_irq(ddata->dev, gpio_irq, ls2k_bmc_interrupt, - IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc gpio", ddata); - if (ret) - dev_err(ddata->dev, "Failed to request LS2KBMC GPIO IRQ %d.\n", gpio_irq= ); + ret =3D devm_request_irq(&pdev->dev, gpio_irq, ls2k_bmc_interrupt, + IRQF_SHARED | IRQF_TRIGGER_FALLING, "ls2kbmc reset", ddata); + + if (ret !=3D 0) + return dev_err_probe(ddata->dev, ret, + "Failed to request IRQ %d for GPIO reset signal input.\n", + gpio_irq); =20 - acpi_unregister_gsi(LS2K_BMC_RESET_GPIO_GSI); return ret; } =20 --=20 2.49.0