Commit 2dd074c4 authored by Hans de Goede's avatar Hans de Goede
Browse files

Merge tag 'ib-pdx86-simatic-v6.6' into review-hans

Immutable branch between pdx86 simatic branch and LED due for the v6.6 merge window

v6.5-rc1 + recent pdx86 simatic-ipc patches for
merging into the LED subsystem for v6.6.
parents 38831eaf 8766addf
Loading
Loading
Loading
Loading
+48 −1
Original line number Diff line number Diff line
@@ -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
@@ -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
+5 −1
Original line number Diff line number Diff line
@@ -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
+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>");
+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>");
+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