This patch set adds i2c controller support for the Nuvoton NPCM Baseboard Management Controller (BMC). NPCM7xx includes 16 I2C controllers. This driver operates the controller. This module also includes a slave mode. --- v14 -> v13: - Fix yaml example: add missing include. - Replace all udelay to usleep_range, except one which is called from irq. - Fix compilation error (module_platfrom_init conflict). - debugfs counters always updated. Counting till max value, then stop counting. - Rename bus-frequency to clock-frequency. - Remove unused variables. v13 -> v12: - Fix yaml example. Issue found by an updated dt_binding_check. - remove double spacing. indentation issues. - remove ifdef DEBUG_FS around __init and __exit. - debugfs and counters are always present in bus struct. - Fix npcm_i2c_write_fifo_slave flow. - Remove version number. v12 -> v11: - Fix according to maintainer comments. - debugfs simplified (usedebugfs_create_u64). - slave read fifo split from master read fifo. v11 -> v10: - Fix according to maintainer comments. - Init clk simplified. - Comments in c99 - Split master irq function. - debugfs not mandatory. - yaml file fix. v10 -> v9: - Fix according to maintainer comments. - binding file changed to yaml format. - Shorten recovery flow. - Add support for health monitoring counters. v9 -> v8: - Fix according to maintainer comments. - Split lines of iowrite..(ioread..) to separate lines. - Use readx_poll_timeout_atomic - resolve various style issues. v8 -> v7: - Split to two commits, one for master, one for slave. - Rename smb to i2c. - Remove global vars. v7 -> v6: - Rebased on Linux 5.4-rc8 (was Linux 5.4-rc7). - Fix issue found by kbuild test robot (redundant include). - Note: left a warning related to fall through. This fall through is intentional. v6 -> v5: - Update documentation v5 -> v4: - support recovery - master-slave switch support needed for IPMB v4 -> v3: - typo on cover letter. v3 -> v2: - fix dt binding: compatible name: omit "bus" v2 -> v1: - run check patch in strict mode. - use linux crc. - define regs in constant offset without base. - remove debug prints. - no declarations for local functions. v1: initial version Signed-off-by: Tali Perry <tali.perry1@xxxxxxxxx> Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Reported-by: kbuild test robot <lkp@xxxxxxxxx> --- Tali Perry (3): dt-bindings: i2c: npcm7xx: add NPCM I2C controller documentation i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver i2c: npcm7xx: Add support for slave mode for Nuvoton NPCM BMC I2C controller driver. .../bindings/i2c/nuvoton,npcm7xx-i2c.yaml | 62 + drivers/i2c/busses/Kconfig | 9 + drivers/i2c/busses/Makefile | 1 + drivers/i2c/busses/i2c-npcm7xx.c | 2342 +++++++++++++++++ 4 files changed, 2414 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/nuvoton,npcm7xx-i2c.yaml create mode 100644 drivers/i2c/busses/i2c-npcm7xx.c base-commit: b9bbe6ed63b2b9f2c9ee5cbd0f2c946a2723f4ce -- 2.22.0