From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 0/6] i2c: designeware: Add Baikal-T1 SoC DW I2C specifics support Date: Fri, 6 Mar 2020 16:19:49 +0300 Message-ID: <20200306132001.1B875803087C@mail.baikalelectronics.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT Return-path: Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Serge Semin , Serge Semin , Alexey Malahov , Maxim Kaurkin , Pavel Parkhomenko , Ramil Zaripov , Ekaterina Skachko , Vadim Vlasov , Thomas Bogendoerfer , Paul Burton , Ralf Baechle , Jarkko Nikula , Andy Shevchenko , Mika Westerberg , Rob Herring , Mark Rutland , Wolfram List-Id: linux-i2c@vger.kernel.org From: Serge Semin There are three DW I2C controllers embedded into the Baikal-T1 SoC. Two of them are normal with standard DW I2C IP-core configurations and registers accessible over normal MMIO space - so they are acceptable by the available DW I2C driver with no modification. But there is a third, which is a bit different. Its registers are indirectly accessed be means of "command/data in/data out" registers tuple. In order to have it also supported by the DW I2C driver, we must modify the code a bit. This is a main purpose of this patchset. First of all traditionally we replaced the legacy plain text-based dt-binding file with yaml-based one. Then we found and fixed a bug in the DW I2C FIFO size detection algorithm which tried to do it too early before dw_readl/dw_writel methods could be used. Finally we introduced a platform-specific flag ACCESS_INDIRECT, which would enable the indirect access to the DW I2C registers implemented for one of the Baikal-T1 SoC DW I2C controllers. See the commit message of the corresponding patch for details. This patchset is rebased and tested on the mainline Linux kernel 5.6-rc4: commit 98d54f81e36b ("Linux 5.6-rc4"). Signed-off-by: Serge Semin Signed-off-by: Alexey Malahov Cc: Maxim Kaurkin Cc: Pavel Parkhomenko Cc: Ramil Zaripov Cc: Ekaterina Skachko Cc: Vadim Vlasov Cc: Thomas Bogendoerfer Cc: Paul Burton Cc: Ralf Baechle Cc: Jarkko Nikula Cc: Andy Shevchenko Cc: Mika Westerberg Cc: Rob Herring Cc: Mark Rutland Cc: Wolfram Sang Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Serge Semin (6): scripts/dtc: check: Add additional i2c reg flags support dt-bindings: i2c: Replace DW I2C legacy bindings with YAML-based one dt-bindings: i2c: dw: Add Baikal-T1 SoC I2C controller i2c: designware: Detect the FIFO size in the common code i2c: designware: Discard i2c_dw_read_comp_param() function i2c: designware: Add Baikal-T1 SoC I2C controller support .../bindings/i2c/i2c-designware.txt | 73 -------- .../bindings/i2c/snps,designware-i2c.yaml | 158 ++++++++++++++++++ drivers/i2c/busses/i2c-designware-common.c | 107 ++++++++++-- drivers/i2c/busses/i2c-designware-core.h | 16 +- drivers/i2c/busses/i2c-designware-master.c | 3 + drivers/i2c/busses/i2c-designware-platdrv.c | 25 +-- drivers/i2c/busses/i2c-designware-slave.c | 3 + scripts/dtc/checks.c | 13 +- 8 files changed, 280 insertions(+), 118 deletions(-) delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-designware.txt create mode 100644 Documentation/devicetree/bindings/i2c/snps,designware-i2c.yaml -- 2.25.1