Hi Wolfram,
This is the first part of the pull request for the merge window.
You will find a detailed description in the tag comment.
Two additional changes need to be submitted as part of a second
pull request:
1. i2c: synquacer: Remove a clk reference from struct synquacer_i2c
** Depends on:
i2c: synquacer: Fix an error handling path in synquacer_i2c_probe()
This commit from Christophe depends on a patch that was
included in fixes.
2. i2c: Remove I2C_CLASS_SPD
** Depends on:
hwmon: jc42: Remove I2C_CLASS_SPD support
This commit breaks compilation as it relies on a patch that
was independently taken by Guenter Rock. Therefore, I need to
ensure that Guenter merges this patch first.
Thanks,
Andi
The following changes since commit dd5a440a31fae6e459c0d6271dddd62825505361:
Linux 6.9-rc7 (2024-05-05 14:06:01 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git tags/i2c-host-6.10
for you to fetch changes up to 61e05bad821cb293418794738e7cc359949f44fe:
i2c: designware: Replace MODULE_ALIAS() with MODULE_DEVICE_TABLE() (2024-05-06 00:56:55 +0200)
----------------------------------------------------------------
Code cleanup:
A substantial code cleanup from Wolfram affects many drivers:
- Removed dev_err() in case of timeout during i2c transfers, as
timeouts are not considered errors and should not be treated
as such.
- For the same reason, 'timeout' variables have been renamed to
'time_left'.
Other cleanups:
- The viperboard driver now omits the "owner = THIS_MODULE"
assignment.
- Finally, we have eliminated the last remnants of
I2C_CLASS_SPD: support for class-based devices has been
completely removed from the mux-gpio driver.
- In the ocore devices, a more standard use of ioport_map() for
8-bit I/O read/write operations has been implemented.
- The mpc driver will be among the first i2c drivers and one of
the first in the kernel to use the __free auto cleanup
routine.
- The designware driver now uses MODULE_DEVICE_TABLE() instead
of MODULE_ALIAS() for better consistency with the ID table.
- Added prefixes to the octeon register macros.
- Fixed some checkpatch errors in the newly created
i2c-viai2c-common.c file.
Code refactoring:
- The riic driver has refactored read/write operations to more
flexibly support new platforms, laying the foundation for new
SoC peculiarities.
- In the i801 driver, a notifier callback has been created for
muxed child segments.
- The lpi2c driver now sets a clock rate during probe instead
of continuously calling clk_get_rate().
- Improvements in the clock divisor logic to accommodate other
clock frequencies.
- Combined some common functionalities during initialization
for the wmt driver and separated others that can be
independently used by different drivers. Now, all the common
functionalities are grouped in the i2c-viai2c-common.c file.
- Improved the clock stretching mechanism in the newly created
i2c-viai2c-common.c file, inherited from the previous
i2c-wmt.c.
Features added:
- The octeon driver now includes watchdog timeout handling.
- Added high-speed support for the octeon driver.
Added support for:
- R9A09G057 SoC in the riic driver.
- Rapids-D I2C controller in the designware driver.
- Cadence driver now also supports RISC-V architectures.
- Added support to the WMT device as a separate driver using the
newly created i2c-viai2c-common.c functionalities.
- Added support for the Zhaoxin I2C controller.
Some improvements in the bindings:
- The pnx driver is converted to dtschema.
- Added documentation for the Qualcomm SC8280XP.
----------------------------------------------------------------
Abhinav Jain (1):
i2c: mpc: Removal of of_node_put with __free for auto cleanup
Alexander Stein (1):
i2c: lpi2c: Avoid calling clk_get_rate during transfer
Andy Shevchenko (1):
i2c: designware: Replace MODULE_ALIAS() with MODULE_DEVICE_TABLE()
Animesh Agarwal (1):
dt-bindings: i2c: nxp,pnx-i2c: Convert to dtschema
Arnd Bergmann (1):
i2c: ocores: convert to ioport_map() for IORESOURCE_IO
Bryan O'Donoghue (1):
dt-bindings: i2c: qcom-cci: Document sc8280xp compatible
Hans Hu (6):
i2c: wmt: create wmt_i2c_init for general init
i2c: wmt: split out common files
i2c: wmt: rename something
i2c: wmt: fix a bug when thread blocked
i2c: wmt: add platform type VIAI2C_PLAT_WMT
i2c: add zhaoxin i2c controller driver
Heiner Kallweit (5):
i2c: i801: Call i2c_register_spd for muxed child segments
i2c: i801: Fix missing Kconfig dependency
i2c: i801: Remove usage of I2C_CLASS_SPD
i2c: mux: gpio: remove support for class-based device instantiation
i2c: i801: Annotate apanel_addr as __ro_after_init
Ji Sheng Teoh (1):
i2c: cadence: Add RISCV architecture support
Krzysztof Kozlowski (1):
i2c: viperboard: drop driver owner assignment
Lad Prabhakar (4):
dt-bindings: i2c: renesas,riic: Document R9A09G057 support
i2c: riic: Introduce helper functions for I2C read/write operations
i2c: riic: Pass register offsets and chip details as OF data
i2c: riic: Add support for R9A09G057 SoC
Lukas Bulwahn (1):
MAINTAINERS: adjust file entry in ARM/LPC32XX SOC SUPPORT
Niklas Schnelle (1):
i2c: add HAS_IOPORT dependencies
Piyush Malgujar (2):
i2c: octeon: Add platform prefix to macros
i2c: thunderx: Adding ioclk support
Shanth Murthy (1):
i2c: designware: Add ACPI ID for Granite Rapids-D I2C controller
Suneel Garapati (3):
i2c: thunderx: Clock divisor logic changes
i2c: thunderx: Support for High speed mode
i2c: octeon: Handle watchdog timeout
Wolfram Sang (36):
i2c: at91-master: remove printout on handled timeouts
i2c: bcm-iproc: remove printout on handled timeouts
i2c: bcm2835: remove printout on handled timeouts
i2c: cadence: remove printout on handled timeouts
i2c: davinci: remove printout on handled timeouts
i2c: img-scb: remove printout on handled timeouts
i2c: ismt: remove printout on handled timeouts
i2c: nomadik: remove printout on handled timeouts
i2c: omap: remove printout on handled timeouts
i2c: qcom-geni: remove printout on handled timeouts
i2c: qup: remove printout on handled timeouts
i2c: rk3x: remove printout on handled timeouts
i2c: sh_mobile: remove printout on handled timeouts
i2c: st: remove printout on handled timeouts
i2c: tegra: remove printout on handled timeouts
i2c: uniphier-f: remove printout on handled timeouts
i2c: uniphier: remove printout on handled timeouts
i2c: i801: remove printout on handled timeouts
i2c: ali1535: remove printout on handled timeouts
i2c: ali1563: remove printout on handled timeouts
i2c: ali15x3: remove printout on handled timeouts
i2c: amd-mp2-plat: use 'time_left' variable with wait_for_completion_timeout()
i2c: digicolor: use 'time_left' variable with wait_for_completion_timeout()
i2c: exynos5: use 'time_left' variable with wait_for_completion_timeout()
i2c: hix5hd2: use 'time_left' variable with wait_for_completion_timeout()
i2c: imx-lpi2c: use 'time_left' variable with wait_for_completion_timeout()
i2c: omap: use 'time_left' variable with wait_for_completion_timeout()
i2c: st: use 'time_left' variable with wait_for_completion_timeout()
i2c: stm32f4: use 'time_left' variable with wait_for_completion_timeout()
i2c: stm32f7: use 'time_left' variable with wait_for_completion_timeout()
i2c: synquacer: use 'time_left' variable with wait_for_completion_timeout()
i2c: jz4780: use 'time_left' variable with wait_for_completion_timeout()
i2c: qcom-geni: use 'time_left' variable with wait_for_completion_timeout()
i2c: rk3x: use 'time_left' variable with wait_event_timeout()
i2c: s3c2410: use 'time_left' variable with wait_event_timeout()
i2c: pxa: use 'time_left' variable with wait_event_timeout()
Documentation/devicetree/bindings/i2c/i2c-pnx.txt | 34 --
.../devicetree/bindings/i2c/nxp,pnx-i2c.yaml | 46 +++
.../devicetree/bindings/i2c/qcom,i2c-cci.yaml | 19 +
.../devicetree/bindings/i2c/renesas,riic.yaml | 19 +-
MAINTAINERS | 12 +-
drivers/i2c/busses/Kconfig | 49 ++-
drivers/i2c/busses/Makefile | 3 +
drivers/i2c/busses/i2c-ali1535.c | 8 +-
drivers/i2c/busses/i2c-ali1563.c | 1 -
drivers/i2c/busses/i2c-ali15x3.c | 4 +-
drivers/i2c/busses/i2c-amd-mp2-plat.c | 8 +-
drivers/i2c/busses/i2c-at91-master.c | 1 -
drivers/i2c/busses/i2c-bcm-iproc.c | 2 -
drivers/i2c/busses/i2c-bcm2835.c | 1 -
drivers/i2c/busses/i2c-cadence.c | 2 -
drivers/i2c/busses/i2c-davinci.c | 1 -
drivers/i2c/busses/i2c-designware-pcidrv.c | 2 -
drivers/i2c/busses/i2c-designware-platdrv.c | 9 +-
drivers/i2c/busses/i2c-digicolor.c | 6 +-
drivers/i2c/busses/i2c-exynos5.c | 12 +-
drivers/i2c/busses/i2c-hix5hd2.c | 8 +-
drivers/i2c/busses/i2c-i801.c | 41 +-
drivers/i2c/busses/i2c-img-scb.c | 5 +-
drivers/i2c/busses/i2c-imx-lpi2c.c | 25 +-
drivers/i2c/busses/i2c-ismt.c | 1 -
drivers/i2c/busses/i2c-jz4780.c | 22 +-
drivers/i2c/busses/i2c-mpc.c | 11 +-
drivers/i2c/busses/i2c-nomadik.c | 7 +-
drivers/i2c/busses/i2c-ocores.c | 21 +-
drivers/i2c/busses/i2c-octeon-core.c | 141 +++++--
drivers/i2c/busses/i2c-octeon-core.h | 53 ++-
drivers/i2c/busses/i2c-omap.c | 11 +-
drivers/i2c/busses/i2c-pxa.c | 14 +-
drivers/i2c/busses/i2c-qcom-geni.c | 10 +-
drivers/i2c/busses/i2c-qup.c | 4 +-
drivers/i2c/busses/i2c-riic.c | 125 ++++--
drivers/i2c/busses/i2c-rk3x.c | 14 +-
drivers/i2c/busses/i2c-s3c2410.c | 6 +-
drivers/i2c/busses/i2c-sh_mobile.c | 1 -
drivers/i2c/busses/i2c-st.c | 11 +-
drivers/i2c/busses/i2c-stm32f4.c | 8 +-
drivers/i2c/busses/i2c-stm32f7.c | 8 +-
drivers/i2c/busses/i2c-synquacer.c | 8 +-
drivers/i2c/busses/i2c-tegra.c | 2 -
drivers/i2c/busses/i2c-thunderx-pcidrv.c | 13 +-
drivers/i2c/busses/i2c-uniphier-f.c | 1 -
drivers/i2c/busses/i2c-uniphier.c | 4 +-
drivers/i2c/busses/i2c-viai2c-common.c | 256 +++++++++++++
drivers/i2c/busses/i2c-viai2c-common.h | 85 +++++
drivers/i2c/busses/i2c-viai2c-wmt.c | 148 ++++++++
drivers/i2c/busses/i2c-viai2c-zhaoxin.c | 298 +++++++++++++++
drivers/i2c/busses/i2c-viperboard.c | 1 -
drivers/i2c/busses/i2c-wmt.c | 421 ---------------------
drivers/i2c/muxes/i2c-mux-gpio.c | 3 +-
include/linux/platform_data/i2c-mux-gpio.h | 2 -
55 files changed, 1295 insertions(+), 733 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/i2c/i2c-pnx.txt
create mode 100644 Documentation/devicetree/bindings/i2c/nxp,pnx-i2c.yaml
create mode 100644 drivers/i2c/busses/i2c-viai2c-common.c
create mode 100644 drivers/i2c/busses/i2c-viai2c-common.h
create mode 100644 drivers/i2c/busses/i2c-viai2c-wmt.c
create mode 100644 drivers/i2c/busses/i2c-viai2c-zhaoxin.c
delete mode 100644 drivers/i2c/busses/i2c-wmt.c