Loading drivers/platform/x86/Kconfig +48 −1 Original line number Diff line number Diff line Loading @@ -1076,7 +1076,6 @@ config INTEL_SCU_IPC_UTIL config SIEMENS_SIMATIC_IPC tristate "Siemens Simatic IPC Class driver" depends on PCI help This Simatic IPC class driver is the central of several drivers. It is mainly used for system identification, after which drivers in other Loading @@ -1086,6 +1085,54 @@ config SIEMENS_SIMATIC_IPC To compile this driver as a module, choose M here: the module will be called simatic-ipc. config SIEMENS_SIMATIC_IPC_BATT tristate "CMOS battery driver for Siemens Simatic IPCs" depends on HWMON depends on SIEMENS_SIMATIC_IPC default SIEMENS_SIMATIC_IPC help This option enables support for monitoring the voltage of the CMOS batteries of several Industrial PCs from Siemens. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt. config SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE tristate "CMOS Battery monitoring for Simatic IPCs based on Apollo Lake GPIO" depends on PINCTRL_BROXTON depends on SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Apollo Lake GPIO. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt-apollolake. config SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE tristate "CMOS Battery monitoring for Simatic IPCs based on Elkhart Lake GPIO" depends on PINCTRL_ELKHARTLAKE depends on SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Elkhart Lake GPIO. To compile this driver as a module, choose M here: the module will be called 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 SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Nuvoton GPIO. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt-elkhartlake. config WINMATE_FM07_KEYS tristate "Winmate FM07/FM07P front-panel keys driver" depends on INPUT Loading drivers/platform/x86/Makefile +5 −1 Original line number Diff line number Diff line Loading @@ -132,6 +132,10 @@ obj-$(CONFIG_X86_INTEL_LPSS) += pmc_atom.o # Siemens Simatic Industrial PCs obj-$(CONFIG_SIEMENS_SIMATIC_IPC) += simatic-ipc.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT) += simatic-ipc-batt.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE) += simatic-ipc-batt-apollolake.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE) += simatic-ipc-batt-elkhartlake.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_F7188X) += simatic-ipc-batt-f7188x.o # Winmate obj-$(CONFIG_WINMATE_FM07_KEYS) += winmate-fm07-keys.o drivers/platform/x86/simatic-ipc-batt-apollolake.c 0 → 100644 +51 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_127e = { .table = { GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 55, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 61, NULL, 1, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("apollolake-pinctrl.1", 41, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_apollolake_remove(struct platform_device *pdev) { return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_127e); } static int simatic_ipc_batt_apollolake_probe(struct platform_device *pdev) { return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_127e); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_apollolake_probe, .remove = simatic_ipc_batt_apollolake_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt platform:apollolake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>"); drivers/platform/x86/simatic-ipc-batt-elkhartlake.c 0 → 100644 +51 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_bx_21a = { .table = { GPIO_LOOKUP_IDX("INTC1020:04", 18, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("INTC1020:04", 19, NULL, 1, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("INTC1020:01", 66, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_elkhartlake_remove(struct platform_device *pdev) { return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_bx_21a); } static int simatic_ipc_batt_elkhartlake_probe(struct platform_device *pdev) { return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_bx_21a); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_elkhartlake_probe, .remove = simatic_ipc_batt_elkhartlake_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt platform:elkhartlake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>"); drivers/platform/x86/simatic-ipc-batt-f7188x.c 0 → 100644 +70 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/platform_data/x86/simatic-ipc-base.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_227g = { .table = { 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("INTC1020:01", 66, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_bx_39a = { .table = { GPIO_LOOKUP_IDX("gpio-f7188x-6", 4, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("gpio-f7188x-6", 3, NULL, 1, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_f7188x_remove(struct platform_device *pdev) { const struct simatic_ipc_platform *plat = pdev->dev.platform_data; if (plat->devmode == 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); } static int simatic_ipc_batt_f7188x_probe(struct platform_device *pdev) { const struct simatic_ipc_platform *plat = pdev->dev.platform_data; if (plat->devmode == SIMATIC_IPC_DEVICE_227G) return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_227g); return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_bx_39a); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_f7188x_probe, .remove = simatic_ipc_batt_f7188x_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt gpio_f7188x platform:elkhartlake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>"); Loading
drivers/platform/x86/Kconfig +48 −1 Original line number Diff line number Diff line Loading @@ -1076,7 +1076,6 @@ config INTEL_SCU_IPC_UTIL config SIEMENS_SIMATIC_IPC tristate "Siemens Simatic IPC Class driver" depends on PCI help This Simatic IPC class driver is the central of several drivers. It is mainly used for system identification, after which drivers in other Loading @@ -1086,6 +1085,54 @@ config SIEMENS_SIMATIC_IPC To compile this driver as a module, choose M here: the module will be called simatic-ipc. config SIEMENS_SIMATIC_IPC_BATT tristate "CMOS battery driver for Siemens Simatic IPCs" depends on HWMON depends on SIEMENS_SIMATIC_IPC default SIEMENS_SIMATIC_IPC help This option enables support for monitoring the voltage of the CMOS batteries of several Industrial PCs from Siemens. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt. config SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE tristate "CMOS Battery monitoring for Simatic IPCs based on Apollo Lake GPIO" depends on PINCTRL_BROXTON depends on SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Apollo Lake GPIO. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt-apollolake. config SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE tristate "CMOS Battery monitoring for Simatic IPCs based on Elkhart Lake GPIO" depends on PINCTRL_ELKHARTLAKE depends on SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Elkhart Lake GPIO. To compile this driver as a module, choose M here: the module will be called 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 SIEMENS_SIMATIC_IPC_BATT default SIEMENS_SIMATIC_IPC_BATT help This option enables CMOS battery monitoring for Simatic Industrial PCs from Siemens based on Nuvoton GPIO. To compile this driver as a module, choose M here: the module will be called simatic-ipc-batt-elkhartlake. config WINMATE_FM07_KEYS tristate "Winmate FM07/FM07P front-panel keys driver" depends on INPUT Loading
drivers/platform/x86/Makefile +5 −1 Original line number Diff line number Diff line Loading @@ -132,6 +132,10 @@ obj-$(CONFIG_X86_INTEL_LPSS) += pmc_atom.o # Siemens Simatic Industrial PCs obj-$(CONFIG_SIEMENS_SIMATIC_IPC) += simatic-ipc.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT) += simatic-ipc-batt.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE) += simatic-ipc-batt-apollolake.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE) += simatic-ipc-batt-elkhartlake.o obj-$(CONFIG_SIEMENS_SIMATIC_IPC_BATT_F7188X) += simatic-ipc-batt-f7188x.o # Winmate obj-$(CONFIG_WINMATE_FM07_KEYS) += winmate-fm07-keys.o
drivers/platform/x86/simatic-ipc-batt-apollolake.c 0 → 100644 +51 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_127e = { .table = { GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 55, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 61, NULL, 1, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("apollolake-pinctrl.1", 41, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_apollolake_remove(struct platform_device *pdev) { return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_127e); } static int simatic_ipc_batt_apollolake_probe(struct platform_device *pdev) { return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_127e); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_apollolake_probe, .remove = simatic_ipc_batt_apollolake_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt platform:apollolake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>");
drivers/platform/x86/simatic-ipc-batt-elkhartlake.c 0 → 100644 +51 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_bx_21a = { .table = { GPIO_LOOKUP_IDX("INTC1020:04", 18, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("INTC1020:04", 19, NULL, 1, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("INTC1020:01", 66, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_elkhartlake_remove(struct platform_device *pdev) { return simatic_ipc_batt_remove(pdev, &simatic_ipc_batt_gpio_table_bx_21a); } static int simatic_ipc_batt_elkhartlake_probe(struct platform_device *pdev) { return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_bx_21a); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_elkhartlake_probe, .remove = simatic_ipc_batt_elkhartlake_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt platform:elkhartlake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>");
drivers/platform/x86/simatic-ipc-batt-f7188x.c 0 → 100644 +70 −0 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 /* * Siemens SIMATIC IPC driver for CMOS battery monitoring * * Copyright (c) Siemens AG, 2023 * * Authors: * Henning Schild <henning.schild@siemens.com> */ #include <linux/gpio/machine.h> #include <linux/gpio/consumer.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/platform_data/x86/simatic-ipc-base.h> #include "simatic-ipc-batt.h" static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_227g = { .table = { 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("INTC1020:01", 66, NULL, 2, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static struct gpiod_lookup_table simatic_ipc_batt_gpio_table_bx_39a = { .table = { GPIO_LOOKUP_IDX("gpio-f7188x-6", 4, NULL, 0, GPIO_ACTIVE_HIGH), GPIO_LOOKUP_IDX("gpio-f7188x-6", 3, NULL, 1, GPIO_ACTIVE_HIGH), {} /* Terminating entry */ }, }; static int simatic_ipc_batt_f7188x_remove(struct platform_device *pdev) { const struct simatic_ipc_platform *plat = pdev->dev.platform_data; if (plat->devmode == 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); } static int simatic_ipc_batt_f7188x_probe(struct platform_device *pdev) { const struct simatic_ipc_platform *plat = pdev->dev.platform_data; if (plat->devmode == SIMATIC_IPC_DEVICE_227G) return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_227g); return simatic_ipc_batt_probe(pdev, &simatic_ipc_batt_gpio_table_bx_39a); } static struct platform_driver simatic_ipc_batt_driver = { .probe = simatic_ipc_batt_f7188x_probe, .remove = simatic_ipc_batt_f7188x_remove, .driver = { .name = KBUILD_MODNAME, }, }; module_platform_driver(simatic_ipc_batt_driver); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:" KBUILD_MODNAME); MODULE_SOFTDEP("pre: simatic-ipc-batt gpio_f7188x platform:elkhartlake-pinctrl"); MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>");