Hello, This is the 3rd spin of the series refactoring the keyboard-controller-style device drivers in the IPMI subsystem. v2 can be found (in two parts because yay patch workflow mistakes) at: Cover letter: https://lore.kernel.org/linux-arm-kernel/20210319061952.145040-1-andrew@xxxxxxxx/ Patches: https://lore.kernel.org/linux-arm-kernel/20210319062752.145730-1-andrew@xxxxxxxx/ Several significant changes in v3: 1. The series is rebased onto v5.13-rc1 2. v5.13-rc1 includes Chiawei's patches reworking the LPC devicetree bindings, so they're no-longer required in the series. 3. After some discussion with Arnd[1] and investigating the serio subsystem, I've replaced the "raw" KCS driver (patch 16/21 in v2) with a serio adaptor (patch 11/16 in this series). The adaptor allows us to take advantage of the existing chardevs provided by serio. [1] https://lore.kernel.org/linux-arm-kernel/37e75b07-a5c6-422f-84b3-54f2bea0b917@xxxxxxxxxxxxxxxx/ Finally, I've also addressed Zev Weiss' review comments where I thought it was required. These comments covered a lot of minor issues across (almost) all the patches, so it's best to review from a clean slate rather than attempt to review the differences between spins. Previously: Changes in v2 include: * A rebase onto v5.12-rc2 * Incorporation of off-list feedback on SerIRQ configuration from Chiawei * Further validation on hardware for ASPEED KCS devices 2, 3 and 4 * Lifting the existing single-open constraint of the IPMI chardev * Fixes addressing Rob's feedback on the conversion of the ASPEED KCS binding to dt-schema * Fixes addressing Rob's feedback on the new aspeed,lpc-interrupts property definition for the ASPEED KCS binding Please test and review! Andrew Andrew Jeffery (16): ipmi: kcs_bmc_aspeed: Use of match data to extract KCS properties ipmi: kcs_bmc: Make status update atomic ipmi: kcs_bmc: Rename {read,write}_{status,data}() functions ipmi: kcs_bmc: Split out kcs_bmc_cdev_ipmi ipmi: kcs_bmc: Turn the driver data-structures inside-out ipmi: kcs_bmc: Split headers into device and client ipmi: kcs_bmc: Strip private client data from struct kcs_bmc ipmi: kcs_bmc: Decouple the IPMI chardev from the core ipmi: kcs_bmc: Allow clients to control KCS IRQ state ipmi: kcs_bmc: Don't enforce single-open policy in the kernel ipmi: kcs_bmc: Add serio adaptor dt-bindings: ipmi: Convert ASPEED KCS binding to schema dt-bindings: ipmi: Add optional SerIRQ property to ASPEED KCS devices ipmi: kcs_bmc_aspeed: Implement KCS SerIRQ configuration ipmi: kcs_bmc_aspeed: Fix IBFIE typo from datasheet ipmi: kcs_bmc_aspeed: Optionally apply status address .../bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml | 106 +++ .../bindings/ipmi/aspeed-kcs-bmc.txt | 33 - drivers/char/ipmi/Kconfig | 27 + drivers/char/ipmi/Makefile | 2 + drivers/char/ipmi/kcs_bmc.c | 526 ++++----------- drivers/char/ipmi/kcs_bmc.h | 92 +-- drivers/char/ipmi/kcs_bmc_aspeed.c | 635 +++++++++++++----- drivers/char/ipmi/kcs_bmc_cdev_ipmi.c | 568 ++++++++++++++++ drivers/char/ipmi/kcs_bmc_client.h | 48 ++ drivers/char/ipmi/kcs_bmc_device.h | 22 + drivers/char/ipmi/kcs_bmc_npcm7xx.c | 94 ++- drivers/char/ipmi/kcs_bmc_serio.c | 151 +++++ 12 files changed, 1582 insertions(+), 722 deletions(-) create mode 100644 Documentation/devicetree/bindings/ipmi/aspeed,ast2400-kcs-bmc.yaml delete mode 100644 Documentation/devicetree/bindings/ipmi/aspeed-kcs-bmc.txt create mode 100644 drivers/char/ipmi/kcs_bmc_cdev_ipmi.c create mode 100644 drivers/char/ipmi/kcs_bmc_client.h create mode 100644 drivers/char/ipmi/kcs_bmc_device.h create mode 100644 drivers/char/ipmi/kcs_bmc_serio.c -- 2.27.0