From nobody Mon Feb 9 06:31:21 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C367C001DE for ; Mon, 31 Jul 2023 07:33:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231657AbjGaHd1 (ORCPT ); Mon, 31 Jul 2023 03:33:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230212AbjGaHcv (ORCPT ); Mon, 31 Jul 2023 03:32:51 -0400 Received: from m12.mail.163.com (m12.mail.163.com [220.181.12.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 50A281BFB; Mon, 31 Jul 2023 00:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=4QzEY IktEA2+sOlnGV7rZYJnYleI7xYKEEZG31RhhOY=; b=SjA7izv8EbXsrjF7antlF wongP/KnyRu9bisW7vU2CmecVYp+YPevp3tOXGyh4jbJaCgIV7OQrheYZNtEWc41 hlXvUz797PghwUMbG3oBWDX90lTZoqWJ7iQBBk1HL0dHRAWtQ0UbSEyH+0tJn0qU VIWZTIPjZyyeyhTN5lxMb4= Received: from localhost.localdomain (unknown [39.144.138.187]) by zwqz-smtp-mta-g3-1 (Coremail) with SMTP id _____wBHp79qX8dkyjkSBw--.38597S3; Mon, 31 Jul 2023 15:14:53 +0800 (CST) From: xingtong_wu@163.com To: hdegoede@redhat.com, markgross@kernel.org, henning.schild@siemens.com, andriy.shevchenko@linux.intel.com, lee@kernel.org, xingtong.wu@siemens.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] platform/x86: simatic-ipc: add new models BX-56A/BX-59A Date: Mon, 31 Jul 2023 15:14:24 +0800 Message-Id: <20230731071424.4663-2-xingtong_wu@163.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230731071424.4663-1-xingtong_wu@163.com> References: <20230731071424.4663-1-xingtong_wu@163.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wBHp79qX8dkyjkSBw--.38597S3 X-Coremail-Antispam: 1Uf129KBjvJXoWxAFWDWry3JFW5tF43Kry7GFg_yoW5KFW7pF n5ArW8AFW3Wa40ywn3Ga9rZFZxZwsIkr47GayUArnrA3sFgrsYqF9rAF4fJFy3Jw45W3y3 W3Z5trW7WF4DZrUanT9S1TB71UUUUjUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jyQ6JUUUUU= X-Originating-IP: [39.144.138.187] X-CM-SenderInfo: p0lqw35rqjs4rx6rljoofrz/xtbCfge90GDcO8jJkQAAsD Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: "xingtong.wu" This adds support for the Siemens Simatic IPC models BX-56A/BX-59A, led/watchdog/battery on these models are same, actual drivers for models will be sent in separate patches. Signed-off-by: xingtong.wu --- drivers/platform/x86/siemens/simatic-ipc.c | 12 ++++++++++-- include/linux/platform_data/x86/simatic-ipc-base.h | 1 + include/linux/platform_data/x86/simatic-ipc.h | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/siemens/simatic-ipc.c b/drivers/platform/= x86/siemens/simatic-ipc.c index 13c857316c7f..02c540cf4070 100644 --- a/drivers/platform/x86/siemens/simatic-ipc.c +++ b/drivers/platform/x86/siemens/simatic-ipc.c @@ -78,6 +78,12 @@ static struct { {SIMATIC_IPC_IPCBX_21A, SIMATIC_IPC_DEVICE_BX_21A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_B= X_21A, { "emc1403", NULL }}, + {SIMATIC_IPC_IPCBX_56A, + SIMATIC_IPC_DEVICE_BX_59A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_B= X_59A, + { "emc1403", "w83627hf_wdt" }}, + {SIMATIC_IPC_IPCBX_59A, + SIMATIC_IPC_DEVICE_BX_59A, SIMATIC_IPC_DEVICE_NONE, SIMATIC_IPC_DEVICE_B= X_59A, + { "emc1403", "w83627hf_wdt" }}, }; =20 static int register_platform_devices(u32 station_id) @@ -103,7 +109,9 @@ static int register_platform_devices(u32 station_id) pdevname =3D KBUILD_MODNAME "_batt_apollolake"; if (battmode =3D=3D SIMATIC_IPC_DEVICE_BX_21A) pdevname =3D KBUILD_MODNAME "_batt_elkhartlake"; - if (battmode =3D=3D SIMATIC_IPC_DEVICE_227G || battmode =3D=3D SIMATIC_I= PC_DEVICE_BX_39A) + if (battmode =3D=3D SIMATIC_IPC_DEVICE_227G || + battmode =3D=3D SIMATIC_IPC_DEVICE_BX_39A || + battmode =3D=3D SIMATIC_IPC_DEVICE_BX_59A) pdevname =3D KBUILD_MODNAME "_batt_f7188x"; platform_data.devmode =3D battmode; ipc_batt_platform_device =3D @@ -121,7 +129,7 @@ static int register_platform_devices(u32 station_id) pdevname =3D KBUILD_MODNAME "_leds"; if (ledmode =3D=3D SIMATIC_IPC_DEVICE_127E) pdevname =3D KBUILD_MODNAME "_leds_gpio_apollolake"; - if (ledmode =3D=3D SIMATIC_IPC_DEVICE_227G) + if (ledmode =3D=3D SIMATIC_IPC_DEVICE_227G || SIMATIC_IPC_DEVICE_BX_59A) pdevname =3D KBUILD_MODNAME "_leds_gpio_f7188x"; if (ledmode =3D=3D SIMATIC_IPC_DEVICE_BX_21A) pdevname =3D KBUILD_MODNAME "_leds_gpio_elkhartlake"; diff --git a/include/linux/platform_data/x86/simatic-ipc-base.h b/include/l= inux/platform_data/x86/simatic-ipc-base.h index 4ca21065c862..2d7f7120ba6b 100644 --- a/include/linux/platform_data/x86/simatic-ipc-base.h +++ b/include/linux/platform_data/x86/simatic-ipc-base.h @@ -22,6 +22,7 @@ #define SIMATIC_IPC_DEVICE_227G 5 #define SIMATIC_IPC_DEVICE_BX_21A 6 #define SIMATIC_IPC_DEVICE_BX_39A 7 +#define SIMATIC_IPC_DEVICE_BX_59A 8 =20 struct simatic_ipc_platform { u8 devmode; diff --git a/include/linux/platform_data/x86/simatic-ipc.h b/include/linux/= platform_data/x86/simatic-ipc.h index f2eafa43a605..8d8b3b919674 100644 --- a/include/linux/platform_data/x86/simatic-ipc.h +++ b/include/linux/platform_data/x86/simatic-ipc.h @@ -36,6 +36,8 @@ enum simatic_ipc_station_ids { SIMATIC_IPC_IPCBX_39A =3D 0x00001001, SIMATIC_IPC_IPCPX_39A =3D 0x00001002, SIMATIC_IPC_IPCBX_21A =3D 0x00001101, + SIMATIC_IPC_IPCBX_56A =3D 0x00001201, + SIMATIC_IPC_IPCBX_59A =3D 0x00001202, }; =20 static inline u32 simatic_ipc_get_station_id(u8 *data, int max_len) --=20 2.25.1 From nobody Mon Feb 9 06:31:21 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A3A6C04A94 for ; Mon, 31 Jul 2023 08:08:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231849AbjGaIIh (ORCPT ); Mon, 31 Jul 2023 04:08:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232030AbjGaIID (ORCPT ); Mon, 31 Jul 2023 04:08:03 -0400 Received: from m12.mail.163.com (m12.mail.163.com [220.181.12.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B213C2111; Mon, 31 Jul 2023 01:04:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=OvDeU hri4hMYcdVAW/0ip7PXQ5yfuGa2bCViMpSRGnM=; b=eL+EBubr9NeQNaH0ugcfk z+Us5EfSb9fKASSSdkLMFHcIqyEeEfZtXLW05EhHfdTumWlq22Bw19M8DNiy6MG1 fptlcSVmBDN2KefBqZ5dUCG204vVlJqbe1J/euke2IBEu0ejfUqaGm3Am3pa13iZ l9k9oORuJVwkOd5y1Y5hYM= Received: from localhost.localdomain (unknown [39.144.138.187]) by zwqz-smtp-mta-g3-3 (Coremail) with SMTP id _____wBXyzBNYMdkPmzZBg--.18258S2; Mon, 31 Jul 2023 15:18:38 +0800 (CST) From: xingtong_wu@163.com To: pavel@ucw.cz, lee@kernel.org, henning.schild@siemens.com, hdegoede@redhat.com, xingtong.wu@siemens.com, linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] leds: simatic-ipc-leds-gpio: add support for module BX-59A Date: Mon, 31 Jul 2023 15:18:33 +0800 Message-Id: <20230731071833.4725-1-xingtong_wu@163.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230731071424.4663-1-xingtong_wu@163.com> References: <20230731071424.4663-1-xingtong_wu@163.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wBXyzBNYMdkPmzZBg--.18258S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxXr1kurWUJw15XF13XFykAFb_yoWrXFy5pF nrJ39YkFW5JF17tw13CFW7ZF93u3WxKr97tFZrGa90q3Wjvr10qF9rAFW3XFZ5J3ykuF17 GF4rtFyUuF4DAwUanT9S1TB71UUUUUJqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jHg4hUUUUU= X-Originating-IP: [39.144.138.187] X-CM-SenderInfo: p0lqw35rqjs4rx6rljoofrz/xtbCfhO90GDcO8jYDwAAsY Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: "xingtong.wu" This is used for the Siemens Simatic IPC BX-59A, which has its LEDs connected to GPIOs provided by the Nuvoton NCT6126D Signed-off-by: xingtong.wu --- .../leds/simple/simatic-ipc-leds-gpio-core.c | 1 + .../simple/simatic-ipc-leds-gpio-f7188x.c | 42 ++++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c b/drivers/led= s/simple/simatic-ipc-leds-gpio-core.c index c552ea73ed9d..10dca208d8cc 100644 --- a/drivers/leds/simple/simatic-ipc-leds-gpio-core.c +++ b/drivers/leds/simple/simatic-ipc-leds-gpio-core.c @@ -58,6 +58,7 @@ int simatic_ipc_leds_gpio_probe(struct platform_device *p= dev, case SIMATIC_IPC_DEVICE_127E: case SIMATIC_IPC_DEVICE_227G: case SIMATIC_IPC_DEVICE_BX_21A: + case SIMATIC_IPC_DEVICE_BX_59A: break; default: return -ENODEV; diff --git a/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c b/drivers/l= eds/simple/simatic-ipc-leds-gpio-f7188x.c index 583a6b6c7c22..a5b544b20857 100644 --- a/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c +++ b/drivers/leds/simple/simatic-ipc-leds-gpio-f7188x.c @@ -17,7 +17,10 @@ =20 #include "simatic-ipc-leds-gpio.h" =20 -static struct gpiod_lookup_table simatic_ipc_led_gpio_table =3D { +static struct gpiod_lookup_table *led_lookup_table; +static struct gpiod_lookup_table *led_lookup_table_extra; + +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_227g =3D { .dev_id =3D "leds-gpio", .table =3D { GPIO_LOOKUP_IDX("gpio-f7188x-2", 0, NULL, 0, GPIO_ACTIVE_LOW), @@ -30,7 +33,7 @@ static struct gpiod_lookup_table simatic_ipc_led_gpio_tab= le =3D { }, }; =20 -static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra =3D { +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra_227g =3D= { .dev_id =3D NULL, /* Filled during initialization */ .table =3D { GPIO_LOOKUP_IDX("gpio-f7188x-3", 6, NULL, 6, GPIO_ACTIVE_HIGH), @@ -39,16 +42,43 @@ static struct gpiod_lookup_table simatic_ipc_led_gpio_t= able_extra =3D { }, }; =20 +static struct gpiod_lookup_table simatic_ipc_led_gpio_table_bx_59a =3D { + .dev_id =3D "leds-gpio", + .table =3D { + GPIO_LOOKUP_IDX("gpio-f7188x-2", 0, NULL, 0, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("gpio-f7188x-2", 3, NULL, 1, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("gpio-f7188x-5", 3, NULL, 2, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("gpio-f7188x-5", 2, NULL, 3, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("gpio-f7188x-7", 7, NULL, 4, GPIO_ACTIVE_LOW), + GPIO_LOOKUP_IDX("gpio-f7188x-7", 4, NULL, 5, GPIO_ACTIVE_LOW), + {} /* Terminating entry */ + } +}; + static int simatic_ipc_leds_gpio_f7188x_probe(struct platform_device *pdev) { - return simatic_ipc_leds_gpio_probe(pdev, &simatic_ipc_led_gpio_table, - &simatic_ipc_led_gpio_table_extra); + const struct simatic_ipc_platform *plat =3D pdev->dev.platform_data; + + switch (plat->devmode) { + case SIMATIC_IPC_DEVICE_227G: + led_lookup_table =3D &simatic_ipc_led_gpio_table_227g; + led_lookup_table_extra =3D &simatic_ipc_led_gpio_table_extra_227g; + break; + case SIMATIC_IPC_DEVICE_BX_59A: + led_lookup_table =3D &simatic_ipc_led_gpio_table_bx_59a; + break; + default: + return -ENODEV; + } + + return simatic_ipc_leds_gpio_probe(pdev, led_lookup_table, + led_lookup_table_extra); } =20 static int simatic_ipc_leds_gpio_f7188x_remove(struct platform_device *pde= v) { - return simatic_ipc_leds_gpio_remove(pdev, &simatic_ipc_led_gpio_table, - &simatic_ipc_led_gpio_table_extra); + return simatic_ipc_leds_gpio_remove(pdev, led_lookup_table, + led_lookup_table_extra); } =20 static struct platform_driver simatic_ipc_led_gpio_driver =3D { --=20 2.25.1 From nobody Mon Feb 9 06:31:21 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 23D15C001DE for ; Mon, 31 Jul 2023 07:38:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231152AbjGaHip (ORCPT ); Mon, 31 Jul 2023 03:38:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231654AbjGaHid (ORCPT ); Mon, 31 Jul 2023 03:38:33 -0400 Received: from m12.mail.163.com (m12.mail.163.com [220.181.12.216]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EC8441A4 for ; Mon, 31 Jul 2023 00:38:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=QbnVs MkSAD3R0QYKdOtGNDxONWdkJlBwGzEf4SY7bg4=; b=C+x9SK7Hd0VLPkx6kuNQw MdD5/rU/bqHDaj4sFN8gwo1IUbMammFFhh4NnM0RoCEdmj9lbYRDGkcrieuQyGJ6 zUTPWGhSZRrg0lZ65HuSExgzn8rS0iIHhapYN8tTsLrbRwmCltD0HMaf0EpfuAuR ktJllN1hO0NwuREXXjXf1U= Received: from localhost.localdomain (unknown [39.144.138.187]) by zwqz-smtp-mta-g4-3 (Coremail) with SMTP id _____wAHF+cOYcdkXWxVBw--.36239S2; Mon, 31 Jul 2023 15:21:51 +0800 (CST) From: xingtong_wu@163.com To: hdegoede@redhat.com, markgross@kernel.org, henning.schild@siemens.com, xingtong.wu@siemens.com, platform-driver-x86@vger.kernel.or, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] batt: simatic-ipc-batt: add support for module BX-59A Date: Mon, 31 Jul 2023 15:21:48 +0800 Message-Id: <20230731072148.4781-1-xingtong_wu@163.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230731071424.4663-1-xingtong_wu@163.com> References: <20230731071424.4663-1-xingtong_wu@163.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: _____wAHF+cOYcdkXWxVBw--.36239S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxtF1fAFy8GFy7AF1fJF4xWFg_yoW7GrW7pF n8JayFkFW5Ww4Yyr43G3y7urnxZa1IkrW7GFZrGw1ava4qvr10qa47AFWfXFsxJrW5Wa45 JFsayFWUuF4DZrUanT9S1TB71UUUUUDqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j-XocUUUUU= X-Originating-IP: [39.144.138.187] X-CM-SenderInfo: p0lqw35rqjs4rx6rljoofrz/xtbBEBG90GNfuZpm9QAAsg Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: "xingtong.wu" This is used for the Siemens Simatic IPC BX-59A, which can monitor the voltage of the CMOS battery with two bits that indicate low or empty state Signed-off-by: xingtong.wu --- drivers/platform/x86/siemens/Kconfig | 1 + .../x86/siemens/simatic-ipc-batt-f7188x.c | 37 ++++++++++++++----- .../platform/x86/siemens/simatic-ipc-batt.c | 3 +- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/drivers/platform/x86/siemens/Kconfig b/drivers/platform/x86/si= emens/Kconfig index 9c227a19432f..2ee36e33b03d 100644 --- a/drivers/platform/x86/siemens/Kconfig +++ b/drivers/platform/x86/siemens/Kconfig @@ -53,6 +53,7 @@ config SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE config SIEMENS_SIMATIC_IPC_BATT_F7188X tristate "CMOS Battery monitoring for Simatic IPCs based on Nuvoton GPIO" depends on GPIO_F7188X + depends on PINCTRL_ALDERLAKE depends on SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help diff --git a/drivers/platform/x86/siemens/simatic-ipc-batt-f7188x.c b/drive= rs/platform/x86/siemens/simatic-ipc-batt-f7188x.c index ed330f6a8ea8..a66107e0fe1e 100644 --- a/drivers/platform/x86/siemens/simatic-ipc-batt-f7188x.c +++ b/drivers/platform/x86/siemens/simatic-ipc-batt-f7188x.c @@ -17,6 +17,8 @@ =20 #include "simatic-ipc-batt.h" =20 +static struct gpiod_lookup_table *batt_lookup_table; + static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_227g =3D { .table =3D { GPIO_LOOKUP_IDX("gpio-f7188x-7", 6, NULL, 0, GPIO_ACTIVE_HIGH), @@ -34,24 +36,39 @@ static struct gpiod_lookup_table simatic_ipc_batt_gpio_= table_bx_39a =3D { }, }; =20 +static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_bx_59a =3D { + .table =3D { + GPIO_LOOKUP_IDX("gpio-f7188x-7", 6, NULL, 0, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP_IDX("gpio-f7188x-7", 5, NULL, 1, GPIO_ACTIVE_HIGH), + GPIO_LOOKUP_IDX("INTC1056:00", 438, NULL, 2, GPIO_ACTIVE_HIGH), + {} /* Terminating entry */ + } +}; + static int simatic_ipc_batt_f7188x_remove(struct platform_device *pdev) { - const struct simatic_ipc_platform *plat =3D pdev->dev.platform_data; - - if (plat->devmode =3D=3D SIMATIC_IPC_DEVICE_227G) - return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_227g); - - return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_bx_39a); + return simatic_ipc_batt_remove(pdev, batt_lookup_table); } =20 static int simatic_ipc_batt_f7188x_probe(struct platform_device *pdev) { const struct simatic_ipc_platform *plat =3D pdev->dev.platform_data; =20 - if (plat->devmode =3D=3D SIMATIC_IPC_DEVICE_227G) - return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_227g); + switch (plat->devmode) { + case SIMATIC_IPC_DEVICE_227G: + batt_lookup_table =3D &simatic_ipc_batt_gpio_table_227g; + break; + case SIMATIC_IPC_DEVICE_BX_39A: + batt_lookup_table =3D &simatic_ipc_batt_gpio_table_bx_39a; + break; + case SIMATIC_IPC_DEVICE_BX_59A: + batt_lookup_table =3D &simatic_ipc_batt_gpio_table_bx_59a; + break; + default: + return -ENODEV; + } =20 - return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_bx_39a); + return simatic_ipc_batt_probe(pdev, batt_lookup_table); } =20 static struct platform_driver simatic_ipc_batt_driver =3D { @@ -66,5 +83,5 @@ module_platform_driver(simatic_ipc_batt_driver); =20 MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); -MODULE_SOFTDEP("pre: simatic-ipc-batt gpio_f7188x platform:elkhartlake-pin= ctrl"); +MODULE_SOFTDEP("pre: simatic-ipc-batt gpio_f7188x platform:elkhartlake-pin= ctrl platform:alderlake-pinctrl"); MODULE_AUTHOR("Henning Schild "); diff --git a/drivers/platform/x86/siemens/simatic-ipc-batt.c b/drivers/plat= form/x86/siemens/simatic-ipc-batt.c index e34417ca9e13..d66b9969234b 100644 --- a/drivers/platform/x86/siemens/simatic-ipc-batt.c +++ b/drivers/platform/x86/siemens/simatic-ipc-batt.c @@ -169,6 +169,7 @@ int simatic_ipc_batt_probe(struct platform_device *pdev= , struct gpiod_lookup_tab case SIMATIC_IPC_DEVICE_227G: case SIMATIC_IPC_DEVICE_BX_39A: case SIMATIC_IPC_DEVICE_BX_21A: + case SIMATIC_IPC_DEVICE_BX_59A: table->dev_id =3D dev_name(dev); gpiod_add_lookup_table(table); break; @@ -193,7 +194,7 @@ int simatic_ipc_batt_probe(struct platform_device *pdev= , struct gpiod_lookup_tab =20 if (table->table[2].key) { flags =3D GPIOD_OUT_HIGH; - if (priv.devmode =3D=3D SIMATIC_IPC_DEVICE_BX_21A) + if (priv.devmode =3D=3D SIMATIC_IPC_DEVICE_BX_21A || SIMATIC_IPC_DEVICE_= BX_59A) flags =3D GPIOD_OUT_LOW; priv.gpios[2] =3D devm_gpiod_get_index(dev, "CMOSBattery meter", 2, flag= s); if (IS_ERR(priv.gpios[2])) { --=20 2.25.1