From nobody Tue Sep 29 06:58:39 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 5F36135838F; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=ZZlw0PVpibhHeXF+9eGxry0kdUstt+LevqwQZZgT8QHrmLP7ZG/cqnwwHBaBqy0tHWGrrXVsJ1RmJ7qTjeju0EaesQLr9zlxvlyrzM3CJ0jeFEXAxp/WRDm6D9tiAp2n1UNu2z0nydKTQllURM+QPRluM9nxNMLgQdNQTsfsDDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dQZkO3oVI68WyzDec1ddn9Hi8FFeeybChLFjynRwKTgRafaW1NYXZZAvYROdvHoxUzqv6PP4zGxBMm52zYYmcrP3FUN2aBkP3+ugDc11MaTtXsdfbBYVuD1x9xBz6+rJnzXV9R+qjvmvxnWlxLn5Ya+PnMyOgDJAlCqLoEyTdBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iMTQtBHR; 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="iMTQtBHR" Received: by smtp.kernel.org (Postfix) with ESMTPS id 06803C2BCF4; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=lQ97HBSAYhAOD4IPcZzjORKwbgRckHRjegeZhwOb/TQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=iMTQtBHRGgNDJ/S1BK/cqjqXZQ5ahBDpcupIQdVYZWFiEHCgH0iPaOGTlCUUIggGi dRUr4ohHiRFVmlNwOGMzzQjxeQEAwKWMPzkYWl6fQ8znKq1teYrLAery9P3sKWekmd fHpZrZUKrpAIKbLqtxRPNaDoyn9m9z+ubXMgB9pV2JZqYnyNy06qxeCvaUFOozFTlA o/x35/76ZWJuNM+0ZvS60WlDTaQ2Hgx2LrCJTiUH0QOI4QfLL/tHyiD9T4x6hKPfcO CknDkKtRYJ0//CE3UsgJFpekRbI32S3yB/oAiidAIygkpBc2c+uIxfRXRa+abRinJR 5UbbOs48PMJqw== 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 DD15BC5AC67; Tue, 11 Aug 2026 08:07:42 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:25 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-1-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethM5Tw6frJWDr4Hu15fSvxKUyL65VTimNxTS AxxPRNnL9mJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z biTmD/9F+xqO8ncTmdLs+Y3bXQQKsoQQdrjW3It6VkzTOx16OiX7ANlpj+JOxDYnZOAKb22lmqa Nb6D8tRh8xN1kTQSTxVEcXIUr+M/0oNOZO7U2iXPNiV29L8E4DP63oyDFUYiNdAzc8YpIzIZrEE tCdTFqTHqr2hwAaBnOrq5fTrdzHyeP/7zToOefQyWhn1/QThZZkT+Jw2Bq6+oKFNvFDCYbeiwxs qBEdhnkQVIJV4kYrUzWUMC5lyxUjhClhANkjCje6OJfpumNKH0NFjSqOl0oXcxtzxNIWwERQwUp KPYIpLdf8vh39lWeY+14cVGD9RWQL3Ox8iXeqFC+0tcHUMsV9saisy4M5budxW9GdyjwdafpvLa P6PiGPMFyyKVlbwtJ/9KH3/EWKHdggAwFJYOLRTtvUUCHzPKmUXbvr7/YRs5SoRbJER3y08E14P iuJhbmkDxQpGfxUVttS+Dg0yqcFLSmLhK884yD8mU4Kd1Owp2quZwWgk58E0k05xiG6NEg09DBH GHjTgCStfQHwD+PLjwD6IxncMg1N8ZlcGm0U+suJmY33sZfI4a+NKCcO/y+xAc90UnUEtRMbpfG EYVDSZMUFQ/lM67V46iMIwrXfNcLhKHMnBH9mJs02YE5ggONlrhBbLK2u4kppobTgBj2Dl0RW46 MqD/ml+ejr7kenw== 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 06:58:39 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 5F25518859B; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=fA2vyJiN0BMSVD+AssBixu1K1j7qYHuXlxFLSBR22pWU0zmrHngmrlTp7ncbCsHPsofkw/0i8l6Y8x5SX3OTY9nvx4Zc65aTktcM14zCcyqLb5sk2gIJIvkc+Vw1U5LbZjVTe7MuP9GpnCkamoP2l6Nj/9XprBj0qNzA5UkL9ic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; 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=ku9c6NnKAMoueSwG81k63PZqx6+iMPZUdnNx9A9HLQQ/zXBtZXZtzAIzuMs5s3/cOrJKMnRP8QTOmIZbRictyTPZo1b3rXPEVMukUGelj48SQgx2NQz7cp6Kzy9N0ibxAVd8IrkEI97m2yZhYeYg+1mhYjhzW59wdgALeK/gI+4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HWiHZ6YR; 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="HWiHZ6YR" Received: by smtp.kernel.org (Postfix) with ESMTPS id 150BDC2BCF7; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=Oi4GTcVKmmi1iIXH/BvW+DBC2WkWyHc65XEe4SG8f+4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=HWiHZ6YRBEg2Boo99MK29Uhr+enH4M+n95yvhgxzG4BmjGKSipDtURpuVrWSC6yBW x0FGVJukw5TEjCoPvC8hXdw+KtSKDRD5O+ZTZTQdj5nByGCNwofbERIW4bdczcPcqe 1lsbkBP5evM+0eKumHKQ75D0C+lO3eow9/TXzm/jaFbTV6twW+kO6LtCnOJ330AL9T c3hmtAhk/dsF7hh1UaGdzac+9REsMz7rdNoZYZ9EqBgwBUwgKMlCyK83U04rX7CRIa uU+0lR+kItVcUN3eTY2ElPe2OtCA7T0Sq2Iy/yKuMvhCrFdPkK5uj5z4BV0vmh7HCP eQgKwuZQYxUkQ== 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 EB1A2C5CFC1; Tue, 11 Aug 2026 08:07:42 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:26 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-2-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethMrLetKWc+hI+jW2W4gaxQxe+iPmriybijC ckxl/EcdkWJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bnjIEAC1np4Vas5SQMLYsBHeL2Aimch2zm0Vocu5NerJwFGtXOdo3JgdzSfFwAIasGInKZ2GsZa Y4qs7oF7b4XQ4Ic/nlhcePH4yOtNSHFX5hEZkBAAAzvqG5qSZoADFB/tp0zpPn9l4VZ6kDQLpXi dlSExUKS8hGbYNBhWvQyr6IPFamiNb4knG6ZH8WyoY84GuYBZ1iH9JayXWNaNlqlT/jTUhsnVOd bVM4BRFCjd+nQqGFSp00jd/DlwdZ4lETiMwPYIXHxYnfQl3jv14b3liyfYosuLXOsutk++cr/K+ 7lr8rdHuUoesh2b58jf4EyaRUKmVHw8Mb+Xccl4HPQnOZ4vbChRMbcMA8+74iDqoRKIWxGicEJm JKeCRhS7mfiMVJVrjye8WW4GiLc5H6zO/ln/TiwIqCLfBJExMcwwTBOpNhYgyHvD2VImsFxCW3o 0FxNygZudaM4GMzSO43mSM0gOv4agFsRwH/cjeyEPr+oLYFyK014UGmpEyh2h2nWoB/iw3R3gkh U/xGatLXBKwnb8KQW5XnbEvbeB2BqDitfaHTxJt2YBoDJC9WUjk3LYFzGT+PoJhkqpYlO8WbB3Z tC8CIihVMwiEnl3aSNTSegGra8VdyE7dabQh6zg6g10Oo1xCYQFl1Cjy1basUt366jtbwUm5psg SHBfNub0XTTuf6Q== 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 06:58:39 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 6A0123BA249; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=CXmjugmRsXMKXui8iLA8uprunKgNFazi1Iq1jDKQ5wKD72ZM9AyjqmAG+JDmylWOSpRB+jdpPb26cP38bXWkJjMuH+5bIE41NRG0yg2QaYEqiOGW6f7xP788C06uETadzyDCCwaVtRARlIbTsHXhm3q9lyNvvrnQYJdz2uqQ4yA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TnSo+7qIrvwT3nDZrZJ0kRFjbEKEsIbhsJ76NFnJRPlqBxi+f0rXaQcjpjgG5i1/zxlMbDHIgAMjpE+cWDDMns2ZjgRh+pjcTJFkhB44R/z3e76j+3QHE1EWzmV4VoK0FCjGbeqYGjjgUHLago25oUCsC5cRnv8b6Un1wtVC0bI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a3biw5WA; 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="a3biw5WA" Received: by smtp.kernel.org (Postfix) with ESMTPS id 1EC59C2BCFF; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=sE76SDyt9tO/Vc836t642bP0UkgFXewo7SBitySNNUs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=a3biw5WAc2zvJZBDQ/Y0X3TBHpsNqO9hdlSLyo0CL7Temo5t47KKTT9iZAh6ov7cH TDp/xyykOG/iegHB2G0SBRYkLxrY8RYAaT+ee2hddzLegmVgM7cHCT/UknOdotjWkD +h+/gTRw++j+zBwD6hRMCkKhYaHvgBg3fKDHWUKSvi0/E4DitWsxwDLkddPQuiMcpr aa2uJnFF35ojAx4cVEu5Xr7I1tcOIBgIpTabMSA4yNl9KVo2lPDAtt/m92qeB3or2L 6C6Q8F1gT8je396tzwLl8jFM1wZvih1HVPh8kdCsDH7h5QKRdlvw9dvt5oZ14KuA4p EihCMeqLOdGkA== 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 04884C5CFD9; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:27 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-3-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethM12pwfl0638tVKhDruoxf4RKu7faP4vsqt CftP+xnF7SJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bsbJEACv+uHBfrsmOS86sA411iFSex2leZIfSlzqiGLcdzrvuvYfXcpWWXAuwCCaPIkfrWoAd+g kQSuXySA84OymZrGSLkBEKcBxViEMrknMU9eHQHvfoVAlGzas0MlWAkg5/7UVNHpCHxj4DgZCEU /BcqZBNCLScOd3L5O95HD0yeNrnVPr/YPT0WKtn0KS4PrAKuB4CujZfkGMYzhRrh089B0Ku99Dx vHX3c66BAjpq+8r7F3CETCiRdwD6tV9xOrkCucywDknvonvZGtp2Ve8FbN611MG0QCZ97hvFrl/ ud1468W1n3HdIbiSk2gv7GZO50M8q24xCSXtZuYDEGewRMRstrYw/Muo7bozxHjPm/t525JCRua Kr7JTCx5T3tD7zmtjF/QEPX4K++F8DKrN7OjtWLgTpbBBYEh4KblUE/BbaLyrG5oKzGol0XjY7U ATbfzSKcrIKIYNz7tGwxAvSJqyzhcWe1AJaJzrGefozLkG+2FGAGmgVc3uEobk4lqOJaD4Fm6lh 2WGXFwtgYWbgGpDlKxP1VbUsN7QRhRwGCe3uT0xw+9zX0fTUqJlZgwNz48+K9nBlZoHBwtMkDqW tOwut53EX4wx1o2qrMRsa9DeaYUBQx6hmoHYexXq1jyg+uPYGzlh2CJKkt9d07wJbTscbdeWwq6 ieEj73Y76WC0oWw== 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 06:58:39 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 69F793B3880; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=o1HljqywJxja2ZXB15eMWMM4L1auNdw6pc0zE29X38F6cR3laBAz7Fe4pWFtP31oRiteeFwdb3v7axP5NuvnrbE3gc86YaZD8380uuxaJOmVZKSKza9D4FxXrAQ/M9aGnZTxPo7Nqr7gznnZqJ9+s3VCAxgjHl4G1xQJQGr6+g8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FpjPs/38ubcPEQyCQ9432mENiGhR5cBdF6GfLW4dCliGNvOm6ykBhdgmln5I1ygs3UwGG/h8YxIBqj87h+R5ufrGvbzPvbd0SaTHpKYA8YM9M96va70Cr0Un5xJM2Yg+FsE9CBtCp7ggF5FhU+7c0U5OStDwVdkpzrQoKFvPG60= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qo4jxACI; 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="qo4jxACI" Received: by smtp.kernel.org (Postfix) with ESMTPS id 292C1C2BCFB; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=YEphmDzGGrkz1uD24ugQVTF/EK5vpaLTme0OyaAw7Fg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=qo4jxACIJhpGbyIctNc2jiu7YsQliAOaNJcirdVNka5YLyIhK0hgGjHSJnz7YNyoU IkaVqTs1q9EufFsSU2np7tqjKIwL+q01aDzAfKAU4z75s50ygOHgrCBPZM4DQlg3MI Fdpd+IdAxLX6BrNFKLHw3UvGzcWBb5J1GmzbCQhN9jZYkP2B/DEv5tWSkOAACZvl+j 0n7QFBlQuHZ2sMvW0aY6izh3Tef2Wlfj7OORwgF3hbzpccJqzQuNzgyMpkGHC1jvko sThw8MeCPP/u21UmcgJBQl9oj0O60mDcXMohNISxxofnfrZyABfdnemrkOhRXeU33d jXIrMplsqeNFQ== 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 11471C5CFDB; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:28 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-4-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethM+BzvU5ftMBcFMrhDlybb4mi8M03yCPJSV sq6WlFXfzWJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bv9hD/9Rr10sVvCPhlyqBEB2dYb2EMS7wB4XjCdwqZ7wbgI1LeLtp6+Fgr20dpVbrOjlJqc71Zo AwF2qaYRNSvGNm2E5fZqJbMzucfkM3hf8UMjDJhcLd4+gdDyeLZVHbU2NNPTru6MsJfubuX9cp1 Q7vjq9dVRilMETmVNTM8F3kl2WIDfSPAYKQzIw04dZahxAySkLjDZrwEz+pVL60/XCW6aZgSmZp NchGK5w+8vSu2kdAgHc7jC1+Fqs0t+C2GIndAoxP6CteS8Se9idIPI1dXz4jNNHf0d+Vaa+9Hvc Ovm+LrRP/j/+r/L2kLy3RnRH1n04hDkkgV1Gti7JDJESEf12PF4RUDKc15w10qh+75dBwV6s81j R6aZ7O/9kDcvpXyv6jlOKVc7hO/Q/uMRzFl0ZfHesyk+6+rJlpRKEjj0bdCwbaxrmo92AG9hW+3 RkxmKDTBc1SkmWs95QIs8YgNzu/Dn3cLpIs9jAvG1eSyA6XlNw/UaP2Zz3O++a8Qk1aSzv58m7s 2OvZOvSCed1q3UF1djj92EPLKf2FIzYIAMd5Wgk35ITYKYltL5OpoKgQ6hdcOXAm3N2iV3GvFqQ egaG1cgA7ovjriCbWeB/2R950ngmDT2TRj4Of1WqQ1MVnw+XDGmsEQq1dMlonz5J2YD5xJu9IfB 4wx2VSGKgY/uXkw== 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 06:58:39 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 95559412261; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=ZD6cKThY04LUgFEtKXYfmg6JneTOdZWCl2aLDDDcOhHg2cLjyRC/f+2vLRvjknV4g8WrSna1au74bKmliQsVZpZqDKFf+UlcIAYf/hKfejeJo9xMS1SxawrZWI4raOmnL1csn9vd231lQKSeGd4uZKQqJKVo3tkkbbtYsOqucAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iypi+yOrJd/FuNGH57K79VaYkZfPGhAPeINU1G8NFnehMTC+0ydrwQJihjJ5A7o/yjqA0Okl6VAGJ7QIa0lYFwh8Zin0a1XlVVlbzp0XVrxQ1PUkeVKvi22skFWUYy9LdLXW8+RCkj6cYNxilrfQa/LHtWUHeupziwNdi6FFSow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=It1tcnng; 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="It1tcnng" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3A993C32782; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=STrnsz8WNMiuyoiZVYpdv4alg8jAQTH4HexAp5WAsoo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=It1tcnngzPymjeFJDQ8EB7kkv/2jYceKhYCVy7CKDFC0aHWLBsfy21cn62qpL/WMv GSI9oHfwyPcuS/gwJu47DhG6I3FHLN+jHhn2bLMkqn31jVZBhZYhC7Brs+t7VXShsR yMDehkPU7spyrOo6JkqODuHPfdg9AQE3PduDCcpfap+OcF6QofNjqFaz8qsZOniQO3 Z2FR3piEZKTEuRujKP0o9IT2O+f6rxzcThY3n2awLVYzdkOX4crhmjb4IyGcLxwLfk lhFkbK2UEUuQrapjh/SrAS8E309Hk+X8W3FPdNZnBFSNVmljqW8EjuVDR+x2AXsBqu HY9pGtCCFBjBw== 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 1EB67C5CFCF; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:29 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-5-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethMA6i5911fDr9+W56U17mC736BFcdcliqaR WjBcuKyZrWJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z btO/EADRS6R487wlLJzhAluSMrXDJaCqHNoNwBnzmvLdT1tebRA1FN0UEAFctgaZPPJ4aonIZER KSq/uL12UPkS3RSqlq+eGLgTVU9d0HDEXI4wJWY1waWQels20mP0OUP4IbwfORL7WBWteWlFe+h gfMYNCnoCfUXkSrzJNOdf8bJqvr4nAHNYFxWPUTLKyYYT0V4OUvRtQxpPIm8SR2Y+WI7Lj4xU39 3RsmQ2mbSKPPQjVZm8RUMKcV4eVVANkCBRY692RtMu9acmEDVzhqhdIBcolIPhRMR0TrftMF1vR PWLH5eECrn6evnyuoNVByWweTu5o8JiclsAp7IrBfiSF9MeCsGbNedfRzeKnY0oWh7zliFMTicS vipar11pGPKGvNrNk7YWryubmX2yGWAnJecQEnXHXph0DIOAi/st+qkYhCB8BuPl365GwKEj9E0 ddFabpA/kgdCfS9yiF9Nd+XO8eZcAnvZ+emmpUO9G/jKQ9LNN/PWd7OOwbiGzohA63nNg8mRD9H FV/fizAPG7jZ2K6Kxj8FTWWtdSfGnL7kfDlxX1MseE5u25yJ4R22G5h//LX4DM+5KjsSSMQOiGY Qb83kpCBAKl0/0Ft3M7JZThwYa2jZd9L5UDK/qOfCqNwRw+/kerIvGXikEqW4mgjgMqMo8cWZR9 QbEBTn4PjiIRncQ== 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 06:58:39 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 953D3411F8B; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=ESkrU7JYcZhBrj8h50xhpQbDloMrxtIC8BTkMhxt3IKGUmXkrw4PQrSsB4kRd5mYV63TqOuQtfG4fSMmziVNtVkdDxJxKxauwbpUD3NrgsLnMmXIXCT780WWrM26KOrgOlsjo1rR6pjJIslKuwKnlnQkLkuC7If9iM+KMIyvpkc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=Vtc1gFlK8mDkyp9lP3Iwz6kPPnzTZi2pW8iBHWl25Gs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M1fgDXABXzeLmqQBsGwsi4axryhuepAic0svLkF4unoXJCvfxEF/1LLqfu1ZtNn+bUkjmsUtjFDcnALzfTth+T6nTebFjaQgvazfdhBnK3dd1vSQYuMlS2kHz/2uOM4v1vfxDlDLFHYwthQ8fHjkCT/cPl9pFdNhkz8u/Hx/cbU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PjCJyMmq; 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="PjCJyMmq" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3CA7BC32786; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=Vtc1gFlK8mDkyp9lP3Iwz6kPPnzTZi2pW8iBHWl25Gs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PjCJyMmqj6GBo2LCkIyfAPcmbx8By1aylpciz2hyNVt/RKpDpYJ5zUFgmcpMO/Tys Bgz73G6io3Vyi3O/HJQ4L37B5r3j4UHK9JnwYpGfjdAxTIfgZLFRsNRVGgeteniHgD aZtcz73HqVBWvsOUwm5rcV8mOdp+3XHiQtd8meXUdqzkYwjb0jquT+bly3wCa9PJ7u fs43Uhmw8cn5OsJzRedfUw9bgHZLsNCL9typ/chlTm228GOFynqv5S09JXgU8SDPv8 trgrjWkY2Mqf8zAD+Z7e/MD8wNSO6JMa48mxvpY60eavzE7w4CkpxkVAwAG0KufmSr duSpJhcGgwlXw== 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 2AD98C5B574; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:30 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-6-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2209; i=shankerwangmiao@gmail.com; s=20250715; h=from:subject:message-id; bh=xIF+rWpWEtgwD48krsfguxlqXyBIE8iGj6NFoNM/rno=; b=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqethMf+Df3lWmFbxRzzoRdmptHxyd4fYRheAGN bEt5C5tJMaJAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bh4yEADNUya1u2lql3CMHoSEQPNQCdNst7M/AjlZFDVeiEdx5CVX6A3DbhQwGU4DbLxjYKUmUt4 oYDAnXk3paNfH96O3djElU1yWh9/vHFx/BVSSCvbBGy2GcgvPYjZiQsN+L+rvgOph6KZntxzpsQ DPLTujgqhqevwQZcTd9vhF8AFSHnHXO+ahmtL06vPLq7sNsU20wJIx+9Q/xzNLDVIkvckvyDhZF Ehj1vg15tvZk8T2Oyzt872ZIY0C5z/JBX2KzKz3Wce0u8LsBNukJ2qms+AsbR9UjDoOQYm5ory5 xPLqrvXB9vWyyF1Bi7kg8q3Xe7G84ayLTAcaKx+LJrKhnKouMl+8q5Iw+VsFTGe7+tFDJ8qGCEH 7jxi03fmovxEscq2qu5ODOmJac16SQ/snYnjAjmyNo5rCVA5j4Qzrx4j2czrG3upbs8wbwQcfTX EqtO7fU2nZRnj2qwbQbIZ2+P2SA6vO+t5DEbEMkDu6IByTyxP9NfL045tvLHNOWz3lQjCK+7dAN VsjwvlhGYh/fLBsk5dShWra+z4yby3nfERdMmdIqzPEwxkVlc1DUbzn3Kz1thQMHmHt7t2Z5IV1 PqvNzMydnSoBMbXxzOxP0+lpdHK0tYwkPaxz5jArQzqn2Mx9KJTX9EnYxDzWoRos4RpWF07u/2t JVIuyYDHovOPWvQ== 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. Acked-by: Bartosz Golaszewski Signed-off-by: Miao Wang --- drivers/gpio/gpiolib.c | 17 +++++++++++++++++ include/linux/gpio/driver.h | 1 + 2 files changed, 18 insertions(+) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e5fb60111151f6de20b424551acf213fb058e190..bf3e7f67a90f576d137fd7261b0= afc741eea3245 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1583,6 +1583,23 @@ 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. + * + * This does not increase the reference count of the GPIO device nor the + * returned fwnode handle, since the caller is expected to hold a reference + * to the GPIO device, and fwnode_handle_put() is thus not needed. + * + * 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 06:58:39 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 95332411A1C; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=funYwLhOLlVatb4oz1FDpI++dbBrUnAoxQyz6uB350UXxPRNw2E7fyMsfYGIgtQsCKc+0BadKspDXQwqVjWCPAyW9Vi5WCDv4pHR88KrkEgjkN0yU6TGnJdlU8q/vHI1DKlb0em+9wWmh8U9A+Lp8u9FUW6OFBz+XkDLrPUYzbI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=rRsyQb/Ci2821HYRUkO2bMTKcFwP9VVmlJPeqIhHNq0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VK+aLcUSw3l4eLBbCyv0Ox81UNZvoG4e18UpTvFr3gxt18HZzZnK/qwisoLVDqYTEtjebT/uT+JFJmDKHbml0C6rWc5qrZg34Rkt+7yfOl/qZ7iqgCoZfK0n4jo+s9f2v2ItlZ7gG3zPsTmC9yr94lkjDNRNXezq56WMULs1Vqc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cqXqufG1; 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="cqXqufG1" Received: by smtp.kernel.org (Postfix) with ESMTPS id 48642C4AF14; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=rRsyQb/Ci2821HYRUkO2bMTKcFwP9VVmlJPeqIhHNq0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=cqXqufG1fCfUOKSezX/VA3SjFeuU1JgViCgDDKF+TpZQbFlqPmM+2zeflw87/Nwjm NroKZt2De14CWnfD8TeqSIkAeGM8IDfToN9ZA46MCW8SEjxa5yrsQf7TDD4m91rkLK h2YuU0SPl23cNTyWozere5fNNSB8XJNcZMRhJyT23C7oeRItsxsvsrsIqSIWbBnQBq tCnnBeBu2nhIW+jBAJQUc1ZzA63Ixba3shvPecF87sUap3IbWZlnki8NpLfQRXTFLS yaahoDqMUEfNvFnCNGRdsk65ZkzXhLOUvf70wMS7npoXYjFiJLSG9QfvFdFDgrdMZB cB1HeFg4L0TAw== 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 377EBC5CFC1; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:31 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-7-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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=owEBbQKS/ZANAwAKAbAx48p7/tluAcsmYgBqethMxi2EZdpw15j4zCbTQZzXHF5cOTSRjRC9C FpzIrdCim2JAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bpluEACmBsoGQAoaHkcyNtL1wmobzAF29/8pYTdWDxwUL60AjzxyS7+zwow2tLpCUwAHGCPVD3U NHPl52muQv+R6df3MZ/G9JxZWXdTV5wUoFRZvIsOL2kDKZ8JNyH1/jUFxD3dewNEnrkDqBNh2Om NhndGmVtcso9Q/hnxmJjxJL6MaswrkmKSiS9XFT74hrWPRXjzoC9OMDFjNfUKrCprtHOjmxxHrq Q0mVK6sk1LGFCesN0CDO7oqAXsexX9P5HvNTpi/UpLo9/wj0ag7yB3EodJyRUZJ7pXCQ2/EeU9H Q72P9/mEeL94pjV/6GAuMDH1Svgka5rj2ZGa35lWQJerFVKc2zCW1omUzBUYk4tYlz0OgDRNQcA ia/cdRYw6NRR6l69cj4RogzIdNpbFUqizSDckiKvNQhVdPwD72jdgAgxMecRr5XuVx7UefGSzUH uuNCdlVxogaKL6rYMlGLxH7u4dMbT3fhrT3/qWgMxIPan5VJpCG701gleUYWMV9QP1SoxzniYjH edZHOsvPY3rA8PQJ5xpLC/zw0HbBFbao3fWO/EKPwCWfWxwej/gUSMmPyafXMojs5umXgVDW06G BkaCdEKuDaZlQTOVSFNqyxfsijJuECeavO2QVYXyQdOy0lVBS0GA9rzHqeIOhyNd97EdMMjjZ8Q 76x7PQ70SzkWaIQ== 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 06:58:39 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 954BF411F9E; Tue, 11 Aug 2026 08:07:43 +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=1786435663; cv=none; b=UBjskegf9AHvuG18weJ4Ep9YxubHODyoIqwv5ZoNLGdv+w/91vfQVPGpawt8QrVsv59I8m4ZF5EftH4RC05flCDulwIte7DlBHn8ecZZVRbyDDIDMxI6GmVXfkY3YCYUDBHBr6SOaDDcHhmbvEsB9aGmoPUKxan3pT7rWauZU9c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786435663; c=relaxed/simple; bh=PJ2SYnR4uBlOnCbcUj/L5uulnkl4LU2hhPMleCflk/Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XymqPHZqoH1doIT8E3vOeMJEns4eEs8nibcr8AICd8892iBoc20kRVv0Lss54xYnQe8V41FHdluIGJMMU/pbJl3QZrJcyVMapSW8IVHtmau94yYFgb9jwgKjmbYmcO0lLrAnd/Buclytdgnyey9uGf/eQhPhAztTJgdyi3/T8mo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VP2SEf4F; 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="VP2SEf4F" Received: by smtp.kernel.org (Postfix) with ESMTPS id 56044C4AF0B; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1786435663; bh=PJ2SYnR4uBlOnCbcUj/L5uulnkl4LU2hhPMleCflk/Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VP2SEf4FzgCbETPnvg7IUFZXscDP4xLI5mA1ZgiioN+u4xaA90Rymdqq4KppHbNvM UHD9iEBDyj667o3OobGnKQDM4qeBkyRL6Ln6INy+pVNTiz02FA5/haIPbUgzPXitQi JyLctq6v+OZld1ibnZcFGICWhRK+YHnMEMSTfepAct2Boz3uCT/tRh9CN8WuHTkYJ8 yiNmyAHCPt0CAeYp3S6o/nsfQu6ogo0VdeXZIr426H+cf4FOCuMSbyUCQtHMGhmruX y6d2gAw9RAi43hKMwq4cGh1k6zEMxC9VA+sd0/k+gGjy6MpUB+1wNmywrD8sZIJ9d6 PnADLXguoQflA== 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 43C69C5CFD9; Tue, 11 Aug 2026 08:07:43 +0000 (UTC) From: Miao Wang via B4 Relay Date: Tue, 11 Aug 2026 16:07:32 +0800 Subject: [PATCH RFC v9 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: <20260811-ls2kbmc-mod-v9-8-4fa9a5584406@gmail.com> References: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@gmail.com> In-Reply-To: <20260811-ls2kbmc-mod-v9-0-4fa9a5584406@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/tluAcsmYgBqethMWV2qXS58xFfnyVtc9+wioVm8Kh4sBoBiV pryLDceLX6JAjMEAAEKAB0WIQREqPWPgPJBxluezBOwMePKe/7ZbgUCanrYTAAKCRCwMePKe/7Z bueaEACGsvnW1rziCnhuVXB+rj60QbepcXFUhcfymHjD9/vP/7IOUOjdxdre9+WYkp243W9fho/ e5O7tR5FA/4IV087cymr7XZ9CJMUtPE26EmX0eE2qIxWTG4pNkv469yCe2UqEuErPTwHNrZQOoU 7pVc2h+HKdgFXDoimOciguf8yC//dqYeEv8optTX8Ky2LR7AzQ+X9jI0hdXiDFHEpKA96Xj0673 Pc2JCdxIEEzoqeyQSlePezWuqIvtO8IpIiw72iR69fg0zjejqhGjXjbaZcM7j9Juo9GGdqNFfA/ 08CoKL5wgejhkOafxdXjHxLBtBvT+iCgJk8BfQp5snip0gj/nK0kWjmelr+OAEhde3UgOOt4gft YlsIAW9LdX+Yo5IdvnzbSD791Lfh5etds1b+crw2ewCUGDB4B3W49xDxiMVVZpaGsg9SJQ8ZZJY PQJX/+Z72kOONVaId18oLbo16RmJDRO2A1KXFzoF+FAcBdJI+gvY4afZrAklmcMdh6A+zsnh/Wc DwxijvrggBDD9nOhGKcuayEOBl3gJTH75NVuKjahk3TO5baUw0/uAR97Ztuj8nDTJpdMOgNRRd4 CuHewcm7WS6ozePJqCvFvb7TjQYvhKRoUd0z7esjK+ffp4PqUyrWcelPGOY3sG1fm4SVmZ5i3Vf uEFiKeESkHFNKOQ== 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