From nobody Tue Sep 29 08:22:32 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 E96B83E0C67; Mon, 10 Aug 2026 13:04:38 +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=1786367079; cv=none; b=Dt/qun0KGoDs5UXSRGS2JanIaUyb1pAmOrk4UwWyRiCz0u3kwFW5nXIym29yozm5nigxuFiDfBJJEnzE6R0uTXLERjo4dKZJvDUq3R4/lZ5spMn03clP3y+YBDaEQ8TpsJ7Tip+XeDC97bYrHtTEBjEVc5/rNJEs2tbIooZJ5dg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XkWZ6R1WHoj7qDvOf4s9s517mdAI8tEI4EDqOYtcPEZMYCoa7jSvS7rcF7137B76YGr+K1W9dsaqPfpTUkszqwBblCQdFYX9nHVly0YIU9vv5hat088YUkblsqOtnBZeRXW5WmykWhPpngT/89N2l4ZQ1wnVTJy7oKspGNzXcxE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ARfcyZJS; 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="ARfcyZJS" Received: by smtp.kernel.org (Postfix) with ESMTPS id 36803C2BCF4; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=ARfcyZJS6lHuXvwUBl/sclQfm3+i8S3LHR/jVeLMcL8oppsB/X3QotkvKxzvgy99D vn+P2hMkl8EBm6rtVyDx+oJbU1X7oACbwtu/Vzy/aPSNSfnt5mECXnCVW2GFgUF0jp C0uleKYURgK7WgkfxAvDVW18dmfKMPxS/HIyTLXaeJujRQfng40WCSvJRctP7JlL2s 6kKcHXUaeVg668jUfaPecbGJC+XmYCVkch7wzVW4ifXfZ1cdlvMhcDqkL+mD35WPGc WAwbio+ui8EgPiKFBZclegtvc2LGyJEIJMSpIuViPKn1Io3pJPcreMygVk5/IfL17d qN9jpRihnwe4Q== 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 165F3C5AD55; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:24 +0800 Subject: [PATCH RFC v8 1/8] 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: <20260810-ls2kbmc-mod-v8-1-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=2931; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=JAJhKtMfhB8SZK77fsh9uMLhohDQu5vL9aOCwD3CkNk=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxj9QIdpLWoE9Z9Dsl9hN35hVCY/OI7XaOBM 2+8En4V4LSJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z btUPD/4/VDwT7IGvUEmL8w5a403ijm8OAp+jZgirdP6TSJ9AYOH5Zap4sF3K4wZvmgAijkbqLIs xQwDE8amSiVdiB0XiSm+/5rlTPT14zGPL7TSUt6inJ3wqbnKsUXq0O8bzFcGJ5wowxHFKmPf1Jj WbWMVfntMv0NIiIVHjvjNW9A5hesIvo3zOBi2TfAOEXyxWBNZPIMknclwgbu9+TXysOZKcHo1Nr ukbBSO7W34WLg9E9Ny8ZzyW1xaIdc9yzzzEs7yx4XyVdonM34x9rom2K9DfzpCDclGU30cVeP6n DpgLcue5UVQ4LUqjiksAnR8dJ2haFAqQDtxUxv4O0AUI7dZxBe0b9RnxR4jjS1htaV+O1nlUFzm 5oOEzTcHJXfpOUObXuQaZOcCRLCLbQCOmXOZzX+KCfFZqRr9Gd2ELM5jk3lUYxG9ea8UC9TbisR AylDGkA+SHVaFJzn7/cJAPoKCrryOMwQPtWzTJKDcyuaOdfbFcnXuo3jS7XnJd03kuvPAl3SAoL bUSx2dUpZg/50NyU1GrDEa1mK3XGKyqsj0qLfTbBsFRsdCTTKz3V+obdHpzPSq+Fen7P0/ptNYe NjLs7uQBBJgq4NcwUJdZ6UM2He33D9zn7NGkf0T5+BnyLFG6UqvQS7hkjdoSoCkVo8zbW4iZPFk FgBnAFmFMpZVVyA== 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 | 51 +++++++++++++++++++++++++++++++++++++----= ---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 408056bfb2fe757a5bde43775a483a48352e706d..335590392240ba1e13a2bdf6f9f= 4efddec045f40 100644 --- a/drivers/mfd/ls2k-bmc-core.c +++ b/drivers/mfd/ls2k-bmc-core.c @@ -427,34 +427,67 @@ 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". */ + /* The resolution field is required to start with "video=3D". */ if (!strncmp(mode, "video=3D", 6)) mode =3D mode + 6; + else { + ret =3D -EINVAL; + goto invalid_mode; + } =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; + if (depth <=3D 0) { + ret =3D -EINVAL; + goto invalid_mode; + } + if (pd->width > U32_MAX / depth) { + ret =3D -EOVERFLOW; + 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: %*pE\n", + (int)strlen(mode_buf_orig), 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 Tue Sep 29 08:22:32 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 E955737A847; Mon, 10 Aug 2026 13:04:38 +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=1786367079; cv=none; b=GZZo0okZEwn7UWi29hRZNE62ce3ipeo0A6wHz4oHjFdm/gutQr5bMIVn6TXtXKPRnHSUezfNtWjpmWtxvMpPQkJZs1qcIPrkm84xK2kPVzknC3tDOIN5azfBkPikjCqzDFvnzi4KLcDIzL2RweouhG8sTw+XrDwxfiMadidOetU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=Oi4GTcVKmmi1iIXH/BvW+DBC2WkWyHc65XEe4SG8f+4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tj4MbhWgBN3OrXENXzEbWwJ+WBybLzLD8ifmlWiaDwDRx5OnNf+/xCS5H00oLQPZP9RGVM61Cck5ztJLk/6eFnuVhcGHUSMwux5ipsHp6K8gqynD4ShhikSHZ8gXKAja01GQiZvuiC2vxB+k/P+oDH6RiKMrttYV7rgbx7NK+Q8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n68z9EBS; 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="n68z9EBS" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4682DC2BCF7; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=Oi4GTcVKmmi1iIXH/BvW+DBC2WkWyHc65XEe4SG8f+4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=n68z9EBSpPJxiMbNZlgS4Krjl6rZ5o49wzo+P54A0mgbRF8aL9sg6fSiT2C7fJEGk lXrG4bZ1HXta5zUwlaODR7WcLlqmMSyRDEv+r4H0fmX2lAyF1Sno5YBf15blCh054T fvyfWwvHFdJ15+JfuXCxqCHaCuCg5RcJYt8ZjaF9qHH5CakWW28PGtkoVPc4hwKlMW 8jNXBBeu/8DgEz8t0gyYgqprOrfmTxFDWpC/RyETCH4X89MkXl6c+BlymI9oS0M0gj RgIX0jjxnLxPp1bbWgrntEeqVbaTIU1WJ3lgIotAT07DS1/QOoE1IMXSNhL6eQGYGN f2ld1r3eApS1A== 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 25DC9C5B56A; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:25 +0800 Subject: [PATCH RFC v8 2/8] 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: <20260810-ls2kbmc-mod-v8-2-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=/Lr4vPc1caTNdLxJjHXD0ez/C7ATtTCBQ8ReLhje6Eg=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxjWTKnhUVNbEpdlZXhBpWJvFtlOYOE4tBqB rxNqfLbxSKJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bigaD/sEJogHOgHPhc0+ZbcC2O7wX8G6LgQM1YBmOZo3OrHy9Z+dUZDT9UrnljmmcrVzMJvw9s0 2/HL3ZdUy6aSFG1ver0zmZemXLR/HpNSOIerPdPZ17xL7yvtF313LNwGqdQnLn0evbF7kYHGAVQ mHH7lLDz7bk2WgryxlVUKUeAXfln/J+LhthN3QIQogEq5WzgJtjgmNbtnqobI1EIZ6RxxnA+Kgv 7+HpvtgWAm+6xoWzkFans7l9HDQmFbwZmqbpdruuw9bJUd6wXorActjt1LqWxB7H+Ell5/SnPCk euMVq6i4q8//ZEep6tMWu6Q2LgjvScP04FoOYvtVEjv3leb6pOeHGngHe0oeIh4Fg6hgZ3CtjFm M8jBrJ0yZJ2Ho6yd73r4B1OimhEsc7nvc133qasorBewshqRoAlp9SqhF6hyqzfGrkiAQ3I0Q6Z H4cV1fXyBWPo7uDOGhTjilk/CmHyqasQT0oTzu/5CJPEBn1t9ScWaRD8Yky6tYraaCnBCkRWo4B RBobfCUo77uL/UqW2CZnSEHJa7J2qQzyDAScLLwid5VwUgEMSMtbnoa2r3vGbajf9bgKAAdHhhb pVxv2ywUGjOGGkJVhOx9d46VkMLxgtrQdSsy4mhb2jIzJHTECLp0FXt18SOIShrI6s5tDSWQKrR iLT8zOpIkxmdMHQ== 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 335590392240ba1e13a2bdf6f9f4efddec045f40..434db99ee501be8e18de7258af0= f465fc16c0709 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 */ @@ -490,6 +499,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; @@ -501,6 +528,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 Tue Sep 29 08:22:32 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 E0B4B3DEAD3; Mon, 10 Aug 2026 13:04:38 +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=1786367079; cv=none; b=E2L2aWvw4nOZ4CiVU3CmcAl84BGTi9ynCvxEwh6VZBMp0gYjaTvGQENH/dCtqph/uiQgaE08RAHzHQbrtJSPyqi1ATpZxE86vOXI1ZV5thlnNQGPHSyuFzyqbSQh0Y/KavMPGKiwKcC4AF+dXvFhjQnHuwxSRIMtAuOyP03IiHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T689hCYQQ5+XVRjT7ysgPE2yTX28OwwMxaQ7/cmnb33ZfoCrAhQZANXNnVhzgFCX3T3Qp/Rwyyqx08MSs+8JDhSSfYUvJ0DQlVxre49cklI8ZOzbelKrbCWCrc2iUINH/ta3X1H7qy+Nc7d16SEUqHU0VwVpVbWLulQD7XPAZBE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G0SW7pBg; 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="G0SW7pBg" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4FDB7C2BCFC; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=G0SW7pBgrv38cUY5gBbb7FOr2fQXJxdmhOC3/lUIDCdmkpEhgBMkomatmxdAWGpi6 3xX9RaHAaDmcJWytzGOnVG5dPWK+qu8Kdv71V8VjZyUByH+RIqK70ffnpj/99srJao KPRFxKztqjghdCRhVh7wHw8FnOMlrXjzKKLU9/r2Oe1yGCOHvoR5Dgkvzx/1EqCneN PayPPQ/SqXagKujcD+6FPk2qqkR3Sd6fj6zPyfMClsr1EKWeo2asevFjd/2RsBRRRg rxM8s6JaqZmnyPh93Uefp7TgmEGcYthhJPhtgzwaX8hqtcyhtVHwWx7wqE3aTQ1MSE WGe3s8GMpp01A== 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 34A42C5AD7B; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:26 +0800 Subject: [PATCH RFC v8 3/8] 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: <20260810-ls2kbmc-mod-v8-3-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=R0w0JF+qT6VK1lT/PxMrgYCt2zFDY7MivPLY0o0OME8=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxj86Xe/U1Mg25T70Gbq7ySVD/xA3BsUDC8c vGQeX6tyUeJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bka1D/0TuM3JU2aDaQzWsx05MrsGZtoMZYpKoRRuk6ijBONraSsRXY15HFScQGyQ/kokesQQg/L JJpLMHu5VBO8b8pXjge9bLvIDWIcnhiBH4ATnzBaLKNJWKljKt9USjWyORT7Ho8lEQfhx65bmFQ Q+WcLQg2biGXLxLUPPYRhR6RHPYDx9ueh3S0RTmR1YwbWs60kFJ0vdRCfIbFr9tBJ+ATcAMeDjR Z5m2qRoC7Ejv18Xwo5G+3Rh6ZSI4yaQS6v6puGaxPvcbeVRvaSPdyy67OHxuw6QLSCdEW7S9CfX nLRTdSr3EXePmqGcO9398rpj/bKRW7Qhqs3j3WrX+Fdqe5g1di6//zFgzusjGfGipInpGyP+iws l6kEIyhdnFE7qcUr7jGlKxEm6YTEOCfv+LrBW8ckhepSjyPtCUQypo69730j8sEuj7+D2/v7l5Y wKL6DH52nRZh0L0Z9UO7AcWEYSJ6J6rO3eevOCHfXF1waW5xMYBBnzG+Bzl4WWNXPCcoFtzI3Go GR2MshUTpxEa5/kkl7oKWp7XX7ScK0tFpK/2VxFwjNP1Py1xGr+QSxnu8Zj9EqwSN8Ncq58sV7Z i5hSATTkqTA6ottSE63UZrZ1xHJy6vsxfeUPIUP71XFB2V7WECSCfLrXcLMQ0P9Q7lrrpctgvL6 ZO3zK0WcpGhSd1A== 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 434db99ee501be8e18de7258af0f465fc16c0709..06ec8143d8cdbe2c8e5a141020d= 96c21b37fa699 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 Tue Sep 29 08:22:32 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 EBEDE3E1701; Mon, 10 Aug 2026 13:04:38 +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=1786367079; cv=none; b=PkX4UgIdRG7D2cadMVQJ0HIYK/5NIVYzilAJOYSTGsWlZhHh58NcmuHL+du5i9cy53NQpvx8hQs39mcWkKdF/YRXr/qi/EcbQEXOehZKPyWegSX5mxnOmVhztR8YhFiqv9ologLDuSNTT5vVEy9i9EIWhuHppe8mURg8fpGoPFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f8blTKlqvNRlzCrParxJ1QVZxVmxuir1GC0Ol370tunOG3HbPtGhPnEoZlHwcXBIpF9QP8edSVRrK0PrfOr77m/m9VTW4XYUg9E2Hm44cvnWYZMR4cnEOrfKBtnZ/NK1+9wbiBgfH75YhzBSUfao4zu/6tQZ/qrsW6FWIDGwoyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gyrxrkEe; 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="gyrxrkEe" Received: by smtp.kernel.org (Postfix) with ESMTPS id 588D9C2BCFA; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=gyrxrkEeQMgGzC4xD5fAI74EYa80ZqT8s7ziVKdJL1fz7YfwpclL1DAWcXjE4jWYm YemlchSWxDC9j2kD73i85EdfoohIXXKPXvIM5MXXks1zM8IAhzZ6chJY6us4CDOgIA T3m5PTVY/EcQzinMMiCku3/C0oGsfpASS5GWE8nH3hmKRNmrYkoE/USWbJfHyLVK/Q SYvQF+IPtcIbeFGrfqbpZpaOPLR12ogh65Ur0QZmH5pqwYrnlXN0CdOsUSaV3zTaWa KblwpbqQiqM8WccS0NxrHSWVAZdZ0uIpCKDo6vqBjPv4a9a0s2F44d4AMlsoL+sGBF h3CGRv5VNXqgw== 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 44627C5B56D; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:27 +0800 Subject: [PATCH RFC v8 4/8] 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: <20260810-ls2kbmc-mod-v8-4-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=+xbRMJCIp18RIJ0wKO3Pv8PASldwSY769xQI4nSINrw=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxj4OV/0Pm7QIitpGEfowzP6ouB4GgJKDxJQ BmJEcz9T6qJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bjwxD/9H7EDofd33osH4klaf/ITH4ZjogoyHubmAZveD+HHRtd8t+vPYhnwkG+A/8ascX5DeidT NuBqTW1tZ8dG8eLnotmzT0TeYqEQZuw7hufUVOicUjyB+yx53x5mNPwrrC9XZ3yEJS8W3qSc0GN 71yTMDlnqB/64s/l9yxCPy5/zJUlf3p/jz46mWbYAFebloI6bVnU1iRJqA2CGSOfNZCDBQ/LcB7 K2MzmsjI7CcTf+uDVkvC6HXSCWpxirSj4pZSgoWiNPmWs1E0BN78hBiULn7//xzFJFHynrvYFZt ncMPFB3k6kSSs9Og/tdcP/ij3qbIwmZln4dcXdtiULl/BvPc6mg2ZRLDCV/FYrB0iZehRWHEPij qiPgfKOiD/oyboE0KcioxZ6TB80f8kD/1LYcEzhsJ5iVl9Y+CuQYxFXdWxnULMCB5VR25JQEVzq eMQ7B7HWaBDOXHiSCUAZJSuQBDegaoa/R5b3w60hBwcyzIkErN9myUZ9sEewy90ZG6H5mJhIWs3 +BWbuuApmKXA58m04+4WwjbmUITWK6SL7HFjp16UuVHbgfTYlZHTiUbsfgItGJw6Gj8FANKT2DK J1AOaKmzoiuOHJY4ncar3iheMFqPZxxnha8ey5FCcibTAYCfixX5E+kvAIbBktqSQbAXgAqT8Vi uYN3uBlkDwm118w== 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 06ec8143d8cdbe2c8e5a141020d96c21b37fa699..5eea53f134215456e0c14345ae4= ebc5b66bd433d 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 Tue Sep 29 08:22:32 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 6C1223E2AA1; Mon, 10 Aug 2026 13:04:39 +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=1786367079; cv=none; b=Cv0F11AdrZObKYTcw+9O1ApIY0ujPiZUKhhOJsdp7gOown3mbkCIaf9Xbhxk/dka9d64BKyRhQcrXvr0cMv/UptVqUrpgiapzgkTlvSiRxyosBL74+YAISWLVv1nynGUcljEi8vNiZEC3Ra06h18FloWOJZ++AuK1FtkYdngY9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o5Kht5CpnFqqJvcHF/peS+yx8Beln9aJj0FBit8WQxDH67S+oOey4uhh01MUvSmvwwHAeQzL5n0+BgN+A9ATgJ97zEl+sHUApF//zOJ773XhtFnf2R+ouDdOVlkBghwP51YYhuEzDzhTU2Ej9Ctlp+0JyjP7orQpq4AH5MTdmaE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=llEJcBLl; 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="llEJcBLl" Received: by smtp.kernel.org (Postfix) with ESMTPS id 67701C2BCFB; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=llEJcBLlZKrQ2tPOXzJn+QNBCuV/cACRVTteeI86F40VV45soAJEImpjvu1Y8gFeU RpyCZLfdgldO2syD8mTLWL4Hd3+E3s5fqX10028dIg5w+JO0M4foGDTcBiZR/uFesi DyQhhdgMqVzJ4/zdd6oI0hSnss6fDzXbwBkDshnm8MtjX4R2gIYzFd3Av4ydwdElD0 j2LAZTZZjIClkRy4un5g8GclfbQ0JfBM4yBuVJPfqzQlM20cSIUPIhE/QBuSD3BOZH IBkkxpjrRodh5NneAQC2l3JSveqblPLg2k6Q0jpZbP8rUzcj26xIKEwDQf4A02We3x PlP/RKXUSNB1A== 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 541DDC5B56C; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:28 +0800 Subject: [PATCH RFC v8 5/8] ipmi: ls2k: adjust 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: <20260810-ls2kbmc-mod-v8-5-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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 , Corey Minyard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1757; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=5F0h5Qv+XPb37y2d1dKKxcFdJW7AFH0K1WRgvpNasK8=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxjtfQTc0QSSDoPPYG18h1L5VleyAgxbEaO8 5dGidwkSyaJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bjmnD/9VIqtDfpNlgtDQejt/nciwHhy4OH14DSLvuuDuyePD7GGv5X4O2kxhODAKF4pHmsMgMpo pBivCXRcFUvct2PDYNPT0zM3nU2Gee5Vu8ouWLGcIC0WgnFOuIGMnGgiZDXT48mvDmgWOFzJNE7 gnEwTMGJ1N+6k7PJdRrRQffBVt4M8hTuS7MHMNx59x1R361t1Yw41PIofI/ljrSHf+4vL1hciIr 2iFqInO2XfVIrk1E6mF76IrF1lQllzo6fgdwzSeN4L2cqg1jgUySIl/LEf9BvH4TzhBuk4ARofD 2A+r/l4MoJ0m19m1Wvd3X0irfndgiIFKvM/rCYAsb+UqLlzt8p7XioShcrdJ59+MRXTS24xCYaY 2ZwoSs1BJNu9DyPRDmJKLDJ/fhFRvqr2ONoUZnvZ1KUCpOb8c9bvCt/qhfnqfL7vIIRV8A7swWm 7PUIqhKj28FG/0nMsSgrw34jPeYGFNIhsCIdiurDF2s092nYGTzf9cKOtqSOurc3eNEur2d5mBb +gqzIkbED7/fBIRwsgT5F0SHNH0iAknTIgxdPIUiFVPR38CE1gUW6LmkS+hw7B2yZ/oOAMu5Vzd GtmcUyC+Im+7llbl2vWW9z8dtUYbNpQF2Amkx9wy5SS9U3dtgnSG/pgWhmOyEr8MYBcF/UwIc7K afiZYObdvKDvW/A== 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 functional dependency between the IPMI driver and its mfd driver. Previously, the dependency was set to "select" from IPMI_LS2K to MFD_LS2K_BMC_CORE. However, the ipmi driver is actually compiled as a part of the ipmi_si module, and IPMI_LS2K is a bool option. Therefore, the dependency "select" will force the mfd driver to be compiled built-in when the ipmi driver is built as a module. This is not desirable. This patch fixes this by declaring a conditional dependency from IPMI_SI to MFD_LS2K_BMC_CORE if IPMI_LS2K is selected. This will allow the mfd driver to be compiled as a module if the ipmi driver is built as a 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") Acked-by: Corey Minyard 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..07f3308c71616215871a730b87f= 1991d2b502e63 100644 --- a/drivers/char/ipmi/Kconfig +++ b/drivers/char/ipmi/Kconfig @@ -62,6 +62,7 @@ config IPMI_DEVICE_INTERFACE config IPMI_SI tristate 'IPMI System Interface handler' select IPMI_PLAT_DATA + select MFD_LS2K_BMC_CORE if IPMI_LS2K help Provides a driver for System Interfaces (KCS, SMIC, BT). Currently, only KCS and SMIC are supported. If @@ -87,7 +88,6 @@ config IPMI_IPMB config IPMI_LS2K bool 'Loongson-2K IPMI interface' depends on LOONGARCH - select MFD_LS2K_BMC_CORE help Provides a driver for Loongson-2K IPMI interfaces. =20 --=20 2.49.0 From nobody Tue Sep 29 08:22:32 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 92B1A3E7647; Mon, 10 Aug 2026 13:04:39 +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=1786367079; cv=none; b=A4luHoMjn9YEsfUw0EKbjcHI/tZBDFV4yD4eC/i8yayoSZLhvX7wAIXq6Rtr08hC4VUVpJQL1+BW7yNAd9w2RbpNQ+AYnG3E+/HIlqTgWgzllPTp1rzuEMi7GFq0veecvyvi66geu7kYRqYuv5YVuDiXFY+rqBIQJuqJYaOaEm0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=9rgQcPPYZjjypoUXySh5HLkrDxYI2QsEfEd8fBjEO3Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c9HlOhqhBmD8J2+XB1ZO8HL58uE6p9O9rGpeNzC12jUvBWZozEqk2ZZ2sO1A84ush0iSSplRtKN+a1WrL4a2gj9k0FT0qWQufxhalXtlAClOjZwgc1Dmwyj+scRFaH06zgIiF9r4wQyM3lo0nYwtUgBWP0G3pEezcEc6N/+K02A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HWiWoslh; 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="HWiWoslh" Received: by smtp.kernel.org (Postfix) with ESMTPS id 74E67C2BD04; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=9rgQcPPYZjjypoUXySh5HLkrDxYI2QsEfEd8fBjEO3Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=HWiWoslhoNSICkwdpUK/ukfIlsYF43P89hqbf6dx58tukeMGdTAU8Fnkjh/kW4vxG R97C23HirbpM0UFokrLdp3hR7XAcZhZPABq5MqAN0qKHi3xBz+dyCpGrUfgB6FxIiA qgF9MyY6LblLt1UjcB3Le2aPkhbcJYFkdGcOUM0NqA5CAASATlxd1Cr+TozrTHB7y0 IL0JVYkOLutPScvbVZOj5YOehcqH8rBRlnDv2bOx/wNRonGN30jYGkZy9xC/s8n0AT nlYGjDVvz5prdciDJmd+FC5/baN9xkh0AWXw3P/XZtQHZsjPf0bZzrm12d2hikU7qN A7/iErfktO3iQ== 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 62FE4C5AE49; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:29 +0800 Subject: [PATCH RFC v8 6/8] gpiolib: add gpio_device_get_fwnode() helper 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: <20260810-ls2kbmc-mod-v8-6-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=1908; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=TZFM28+jBaBa8iuXdlwWyQ1gE02lWVl9BRxh0Scrj4Y=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxjlULkZ4X60g/XRmeS6crNRMHWhmHGqiM9v wse6/LGD+GJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bkqgD/4x7yxBnYVahId7LUwoDFHlX2WIvHFRTnXw38UTrnQrsXkL4SrKdCVzVzMY6/UfIcWwAq4 I4QG4cP80i17VpuGzgCtk9df2eVcAHJnpbHlAKxgvMDkgSJi0bAlbjdgAzI5s/VdTcN1tPOUuUJ n4SFznBarVBxEKC2r7RctqTKxr+bruVbprr38P5VlMcJwOgw6l6+MVcMnntjQOcdcNhdPZc1g1a hLvMOiLOx1IEw+c28F5HJNrk4HTOjVEDMosi6f3DjdPxIzuujg9krS51kUuWTMtuI6L6kLCnWiE P8XNN5jSJ5yMZvTTam4GUMhFH3zUuGPMuQMwY9sEQdOe4AsIjFvvftLLQB+zmQuDelk3cWKbmtI vfKiTl+DD8qtKgRigjO/1dMctfBPij2+rrM9dnHKvj4Oe5jOy+mbD4OvKUiM7M4pWkziyjjYQjn HqGlDtUYeishnaif1tF3hnqDHXXlqWwKY1MjEfqdjw15DP7KGN45kIady26WI90oPXUlAmpA5Mi BKW+t8ptSbwy/yeTXlAVGN2EqFena4xZIPy40CkDMkNjCXbx3zQeh4f7Xfxoht0FmkzFRsHzWSO qBrR1qditRMfg1VvO8wpt+iZsMsWeN/TdmKRu2s8J+k2Xh2eYFBjPdK/GKHvXjktBjUYWzlgZjG OSxA7CxT185DOYg== 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 Add a helper function to retrieve the fwnode associated with a struct gpio_device. This is useful for drivers that need to access the fwnode of a GPIO device for various purposes, such as creating software nodes or handling GPIOs in a platform-specific manner. Signed-off-by: Miao Wang Acked-by: Bartosz Golaszewski --- drivers/gpio/gpiolib.c | 13 +++++++++++++ include/linux/gpio/driver.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e5fb60111151f6de20b424551acf213fb058e190..3774ebbbe550cdce0989a2d06f2= ab658529c3bab 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1583,6 +1583,19 @@ struct device *gpio_device_to_device(struct gpio_dev= ice *gdev) } EXPORT_SYMBOL_GPL(gpio_device_to_device); =20 +/** + * gpio_device_get_fwnode() - Retrieve the fwnode of the underlying device. + * @gdev: GPIO device for which to return the fwnode. + * + * Returns: + * The fwnode handle of the underlying device. + */ +struct fwnode_handle *gpio_device_get_fwnode(struct gpio_device *gdev) +{ + return dev_fwnode(gpio_device_to_device(gdev)); +} +EXPORT_SYMBOL_GPL(gpio_device_get_fwnode); + #ifdef CONFIG_GPIOLIB_IRQCHIP =20 /* diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 17511434ed077dde8807bd7630c342e146e5230b..4dd9120707ec72a978f5f916cc5= 473a91b65d2b9 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -641,6 +641,7 @@ DEFINE_FREE(gpio_device_put, struct gpio_device *, if (!IS_ERR_OR_NULL(_T)) gpio_device_put(_T)) =20 struct device *gpio_device_to_device(struct gpio_device *gdev); +struct fwnode_handle *gpio_device_get_fwnode(struct gpio_device *gdev); =20 bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset); int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset); --=20 2.49.0 From nobody Tue Sep 29 08:22:32 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 9CEE63E7653; Mon, 10 Aug 2026 13:04:39 +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=1786367079; cv=none; b=VzzZPgtxwHGOe3qZ9OvHhSWpWCFYbC7JsC1+EC/nqc6vuKAG1wsnxZQHehC2lwgCdCwcDakVPWhRjHD7Y/VTf1WSWhh+Me0OxUybbmwPMFJ7vJypbnWoV81GG93IAUVg8E+jZr6hVxwoiHzhyGclOS0QZ21oNaSZ6yGDEhp/Egs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=rRsyQb/Ci2821HYRUkO2bMTKcFwP9VVmlJPeqIhHNq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JbB3h1OQIvs1T7+90ZaBdlZreCuwLNipe6kK4WgNiB0erucWwMjTJSlKQhN7u9Gq8nk3XqMJlwR2uxmOMU/F2nSf+G5/p7OpYmOIlCt3xfZHFEh+Vg2JqIOcoU+MDnd/KhKJ9MQjXTFXUR/9okG3qC4vDYPlNV/BOFW0kPn24+A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e/sqWAHj; 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="e/sqWAHj" Received: by smtp.kernel.org (Postfix) with ESMTPS id 857C6C4AF13; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=rRsyQb/Ci2821HYRUkO2bMTKcFwP9VVmlJPeqIhHNq0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=e/sqWAHjIbFnVHLbjIyMZqc0ZWlZNeKA0QxoQqYuCQToQ2QD14IZgLhtVcFS5H2Zr vQufRQPwYYBY/1XDuhdbnyz+MOapr4uH9ZmrhPQt3ERcA6zCgPFwMZlMY7jf5DEKDq XTPJbqjg1jiXzXTiXL9TobWe+pU+x6fpJzOUPyI+wTqq1K82C26uVAAwnpbXH9JbsC BvO4XQ1JrQ2XVnvubgM6SOC4EoNhxlRjIExGpj3T+5SMAglDTsFdTe7Qf7pP1EWVLB ZXcm3SQoLcKsh+9blxzqdcUHj/W6PNlfL0zjszGPsGeutnBXfSRYbOFnbEyDfSNF95 l0+DcBTmlcsug== 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 72ED9C5B56D; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:30 +0800 Subject: [PATCH RFC v8 7/8] 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: <20260810-ls2kbmc-mod-v8-7-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=8420; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=QLmz/zh1VVVEdTARt1YvlWQaR9Zg8vsl4VlAyFRg65U=; b=kA0DAAoBsDHjynv+2W4ByyZiAGp5zGOjQudUHmMRPJa3UPAZglHupi7djA4neHF3npWysXH3/ YkCMwQAAQoAHRYhBESo9Y+A8kHGW57ME7Ax48p7/tluBQJqecxjAAoJELAx48p7/tluvCcQAJHB oFIR90kVwI0bTkQ9Iv8tIdvN2t/lO4nlWggAgaWox7ZMYreQgjmO5sJUSVJLEjPP7ZPBOwKqCBz QIY6ThFs6qxiqa1ph9Ic+Ri8wag2gN9u76je5gLcJeXaWtNa57s1CMSdgsr7KudBX8ISlDKz+t1 LweSQHiyLq6L6aN4U1oNfo3jSe0fiAFQ4tqat/8aPPm+IQY1oSeeZqiMUNKuFvo8cCbFHL23TYK cmyxOLtqkHUSKzD8IPSsxCO+Zo4RFd2DpmUIBlsU8jBcu9fZHNqRTfsnMzLZip5yqC4ymvHM3PW 2S88bVkTBTzUBFKyFeZSVR+Vh7aBlNPzj82a+UWTRIKP9nETy7p8rlf4ZGk4UEsV+Rzcy7Z9Tss +7jzVlm86tEOPv87YsngEcYvHVxuz3BpDfseSCnsfhLgGWxNsJiIPEVp1FmYH6gj4QyW01CGajt 1z/ToAR51+PFs+MHl/wR7/bVzNxoCb8R/W3i1k0FfTYBtuE+KPuK1LY6XFtZWU0qM6erryxf8Wh xZq2GM/CWu5OiSb+yuC+RQX6uR/mJODDBygMz1COG4xIuZT2rOyArfAX7U7wnca9dOZBcRVSj9a BMIY53NEfVLsUVLWHWRYLN2TlWXiC8I6d4qeftzojpYgVc0jWSBsx7tmLvtFuYSaBXF26KSrTe6 zKupA 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 | 149 ++++++++++++++++++++++++++++++----------= ---- 1 file changed, 102 insertions(+), 47 deletions(-) diff --git a/drivers/mfd/ls2k-bmc-core.c b/drivers/mfd/ls2k-bmc-core.c index 5eea53f134215456e0c14345ae4ebc5b66bd433d..f52f0b772f6e9398164ea6c9b9d= 878b76b075139 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,82 @@ 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 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_device_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 property_entry ls2k_bmc_swnode_properties[2] =3D { }; + + dev_dbg(ddata->dev, "Searching for GPIO chip at address %pa\n", &LOONGSON= _GPIO_REG_BASE); + struct gpio_device *gdev __free(gpio_device_put) =3D + gpio_device_find((void *)LOONGSON_GPIO_REG_BASE, ls2k_bmc_gpiochip_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_device_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) { + return ERR_PTR(dev_err_probe(ddata->dev, ret, + "Failed to create software node for GPIO reset\n")); + } + + 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 +453,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 +470,31 @@ 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)) + return dev_err_probe(ddata->dev, PTR_ERR(ddata->reset_gpio), + "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)) + return dev_err_probe(ddata->dev, PTR_ERR(ddata->reset_gpio), + "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 From nobody Tue Sep 29 08:22:32 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 915CE3E7621; Mon, 10 Aug 2026 13:04:39 +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=1786367079; cv=none; b=FDn5piLlo0VxqRrCno5QSnHrV5SQ4TNNK2TQWiLosyLarIF1i2UC4iu4hgMYAL657wmo9187xV8pP7ZSw5DoIKNpploTLs9y5D3wLWeSe7aTYk55viDxIPhobfFkJ0w2VOGnj1flm5xkpaC/hd0z+BvhK25QJe8DpFos0C5czvg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786367079; c=relaxed/simple; bh=PJ2SYnR4uBlOnCbcUj/L5uulnkl4LU2hhPMleCflk/Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EzTJy9Lam6W5ycQssuCcHse8P0KmBord75RmaO98Bv0OZbVLsKKHxZrjwlLX+m/BQ5Agkl3sZoV11QNrs1+l0Ugk0ierQjCzuBav5AF9MDHjy5eHQ6f8+aNgi2FAsvE9xR3jRdhU1TxFTFcaSw3fnONE/5hN4rbo+1PxGPQvPB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fycDhFZ5; 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="fycDhFZ5" Received: by smtp.kernel.org (Postfix) with ESMTPS id 93557C4AF14; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786367078; bh=PJ2SYnR4uBlOnCbcUj/L5uulnkl4LU2hhPMleCflk/Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fycDhFZ5v9noLj6cfAbcwmOapkrGwvBdlGapF4GDb82806PEnCCrD0USb/dKkCSpx 8KalbbR0gXGJ/WXYAJKizuEqKBQSMLoipdDZ/ubHXDEqLyUtzfeVUYRGrYBg+2W1P6 zcdlE0Sixi6T1iPY85jce4+0M1OoZYJLvnq9CCrttz081VIM1B04nILNifUMU6PAJ9 yrRtJss6r9EK2vqrSWwxxhGqGd2mKripGVzy8oashbbaeelPYAVL1unEq310YIbpIJ bGqVhA/aZXxjGzmj7tA9v0TutdYQlnnB/fdqoEmbXp8Ba+dpFYEcMBMpyxD7GVoQdy a1/fxIPrPcx/A== 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 8155CC5B56C; Mon, 10 Aug 2026 13:04:38 +0000 (UTC) From: Miao Wang via B4 Relay Date: Mon, 10 Aug 2026 21:04:31 +0800 Subject: [PATCH RFC v8 8/8] 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: <20260810-ls2kbmc-mod-v8-8-16e44f7322f4@gmail.com> References: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@gmail.com> In-Reply-To: <20260810-ls2kbmc-mod-v8-0-16e44f7322f4@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=727; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=UkpVPtBCUcqPjbP+E9BhIFiau/5G+QeU7wsp0vFpbTU=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqecxjuLocFhKFEGmvnRkYvp85MXealIssarLZz Sl4dMs4LAWJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCannMYwAKCRCwMePKe/7Z bnlWD/4xgfwlalceBe7M+T02Baov/hJBfeEDrnZ71V7LuqCm04rJwAi40oOmMSXwptRb7Vl5rnZ /FBmYxCz3Zz4QCTTn6s/cE++8hjhoolhaM81DdSAGEdrXb/5wM8owRrlMuUGzr1sKVineRXUri3 0NLNVynA1fJ6pL+oWKK6VV9y+8bPpKp4M5VU6MT+t6QIHt4KfVPELpyozkCSYe8txtTdwfnOH0w llp8N+DZaaHFgiXQuJaOwV9FjdksyRuiFFb4PaaVBKs8HpWeSMqneYwkDRE8XOUidq91eIY4sa3 X+c8VcSpei2h8rv4LPQV8tI7QF7UUqlqQSygNLE81r0jswQZEZsjTzNnkOyYCj3UW5yOGHPnpFq 5B+sgga+t1Yh+Q1+RKQcnHNTJ2nqWx+NMvnmI3heCQ6Ydd1GhbEgi9Q1uHErPTLabpfm5mv36k7 uvGpEX9DyywKkgEsXpIdqY98kIHVgznUlMSA/rSSHjvx1dyFmlJiQqALcl+YyPsLvm+60sumMov FeUo5dfNI/W2kGPwiYAShSGgMVgAM50nKvwRAvmFeqc5xTlONb+P8KMhULsACmnJ2MZyw+C89Me Y0m9ElY9DTA1Kl2mMYI2H9+uFShq52IQlW4z++2OLsF8rDz3J59ZAPQA5pJkfTSY/5IC2I6lBWq +TbRUt9j12MyAiA== 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 ls2kbmc 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