Hi, On 12/13/21 13:04, Henning Schild wrote: > changes since v4: > - make everything around GPIO memory usage more verbose > - commit messages, FIXME in p1, cover-letter > > changes since v3: > > - fix io access width and region reservations > - fix style in p1 > > changes since v2: > > - remove "simatic-ipc" prefix from LED names > - fix style issues found in v2, mainly LED driver > - fix OEM specific dmi code, and remove magic numbers > - more "simatic_ipc" name prefixing > - improved pmc quirk code using callbacks > > changes since v1: > > - fixed lots of style issues found in v1 > - (debug) printing > - header ordering > - fixed license issues GPLv2 and SPDX in all files > - module_platform_driver instead of __init __exit > - wdt simplifications cleanup > - lots of fixes in wdt driver, all that was found in v1 > - fixed dmi length in dmi helper > - changed LED names to allowed ones > - move led driver to simple/ > - switched pmc_atom to dmi callback with global variable > > > This series adds support for watchdogs and leds of several x86 devices > from Siemens. > > It is structured with a platform driver that mainly does identification > of the machines. It might trigger loading of the actual device drivers > by attaching devices to the platform bus. > > The identification is vendor specific, parsing a special binary DMI > entry. The implementation of that platform identification is applied on > pmc_atom clock quirks in the final patch. > > It is all structured in a way that we can easily add more devices and > more platform drivers later. Internally we have some more code for > hardware monitoring, more leds, watchdogs etc. This will follow some > day. > > The LED as well as the watchdog drivers access GPIO memory directly. > Using pinctrl is not possible because the machines lack ACPI entries for > the pinctrl drivers. Updates to the ACPI tables are not expected. So we > can rule out a conflict where two drivers would try and access that GPIO > memory. > So we do not use those pins as "general purpose" but as "Siemens > purpose", after having identified the devices very clearly. > > Henning Schild (4): > platform/x86: simatic-ipc: add main driver for Siemens devices > leds: simatic-ipc-leds: add new driver for Siemens Industial PCs > watchdog: simatic-ipc-wdt: add new driver for Siemens Industrial PCs > platform/x86: pmc_atom: improve critclk_systems matching for Siemens > PCs Thank you for your patch-series, I've applied the series to my review-hans branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans Note it will show up in my review-hans branch once I've pushed my local branch there, which might take a while. Once I've run some tests on this branch the patches there will be added to the platform-drivers-x86/for-next branch and eventually will be included in the pdx86 pull-request to Linus for the next merge-window. Regards, Hans > > drivers/leds/Kconfig | 3 + > drivers/leds/Makefile | 3 + > drivers/leds/simple/Kconfig | 11 + > drivers/leds/simple/Makefile | 2 + > drivers/leds/simple/simatic-ipc-leds.c | 202 ++++++++++++++++ > drivers/platform/x86/Kconfig | 12 + > drivers/platform/x86/Makefile | 3 + > drivers/platform/x86/pmc_atom.c | 54 +++-- > drivers/platform/x86/simatic-ipc.c | 176 ++++++++++++++ > drivers/watchdog/Kconfig | 11 + > drivers/watchdog/Makefile | 1 + > drivers/watchdog/simatic-ipc-wdt.c | 228 ++++++++++++++++++ > .../platform_data/x86/simatic-ipc-base.h | 29 +++ > include/linux/platform_data/x86/simatic-ipc.h | 72 ++++++ > 14 files changed, 786 insertions(+), 21 deletions(-) > create mode 100644 drivers/leds/simple/Kconfig > create mode 100644 drivers/leds/simple/Makefile > create mode 100644 drivers/leds/simple/simatic-ipc-leds.c > create mode 100644 drivers/platform/x86/simatic-ipc.c > create mode 100644 drivers/watchdog/simatic-ipc-wdt.c > create mode 100644 include/linux/platform_data/x86/simatic-ipc-base.h > create mode 100644 include/linux/platform_data/x86/simatic-ipc.h >