Messages in this thread | | | From | <> | Subject | [PATCH 0/6] i2c: designeware: Add Baikal-T1 SoC DW I2C specifics support | Date | Fri, 6 Mar 2020 16:19:49 +0300 |
| |
From: Serge Semin <fancer.lancer@gmail.com>
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 <Sergey.Semin@baikalelectronics.ru> Signed-off-by: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru> Cc: Maxim Kaurkin <Maxim.Kaurkin@baikalelectronics.ru> Cc: Pavel Parkhomenko <Pavel.Parkhomenko@baikalelectronics.ru> Cc: Ramil Zaripov <Ramil.Zaripov@baikalelectronics.ru> Cc: Ekaterina Skachko <Ekaterina.Skachko@baikalelectronics.ru> Cc: Vadim Vlasov <V.Vlasov@baikalelectronics.ru> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Paul Burton <paulburton@kernel.org> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Jarkko Nikula <jarkko.nikula@linux.intel.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Wolfram Sang <wsa@the-dreams.de> Cc: linux-i2c@vger.kernel.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.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
| |