linux/drivers
Aryan Srivastava 63ef02da5d i2c: octeon: add block-mode i2c operations
Add functions to perform block read and write operations. This applies
for cases where the requested operation is for >8 bytes of data.

When not using the block mode transfer, the driver will attempt a series
of 8 byte i2c operations until it reaches the desired total. For
example, for a 40 byte request the driver will complete 5 separate
transactions. This results in large transactions taking a significant
amount of time to process.

Add block mode such that the driver can request larger transactions, up
to 1024 bytes per transfer.

Many aspects of the block mode transfer is common with the regular 8
byte operations. Use generic functions for parts of the message
construction and sending the message. The key difference for the block
mode is the usage of separate FIFO buffer to store data.

Write to this buffer in the case of a write (before command send).
Read from this buffer in the case of a read (after command send).

Data is written into this buffer by placing data into the MSB onwards.
This means the bottom 8 bits of the data will match the top 8 bits, and
so on and so forth.

Set specific bits in message for block mode, enable block mode transfers
from global i2c management registers, construct message, send message,
read or write from FIFO buffer as required.

The block-mode transactions result in a significant speed increase in
large i2c requests.

Signed-off-by: Aryan Srivastava <aryan.srivastava@alliedtelesis.co.nz>
Link: https://lore.kernel.org/r/20250324192946.3078712-2-aryan.srivastava@alliedtelesis.co.nz
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
..
accel accel/ivpu: Use effective buffer size for zero terminator 2025-05-12 15:12:44 +02:00
accessibility treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
acpi ACPI: PPTT: Fix processor subtable walk 2025-05-08 20:23:16 +02:00
amba iommu: Get DT/ACPI parsing into the proper probe path 2025-03-11 14:05:43 +01:00
android binder: fix offset calculation in debug log 2025-04-15 15:11:12 +02:00
ata ata: libata-scsi: Improve CDL control 2025-04-22 16:06:05 +09:00
atm treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
auxdisplay treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
base * Mitigate Indirect Target Selection (ITS) issue 2025-05-11 17:23:03 -07:00
bcma
block block-6.15-20250515 2025-05-16 10:21:25 -07:00
bluetooth Bluetooth: btintel_pcie: Add additional to checks to clear TX/RX paths 2025-04-25 15:03:19 -04:00
bus treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
cache
cdrom
cdx Merge branches 'apple/dart', 'arm/smmu/updates', 'arm/smmu/bindings', 'rockchip', 's390', 'core', 'intel/vt-d' and 'amd/amd-vi' into next 2025-03-20 09:11:09 +01:00
char tpm: tis: Double the timeout B to 4s 2025-05-15 04:49:15 +03:00
clk ARM and clkdev updates for 6.15-rc1 2025-04-03 12:21:44 -07:00
clocksource clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable() 2025-05-05 15:34:49 +02:00
comedi comedi: jr3_pci: Fix synchronous deletion of timer 2025-04-15 15:18:55 +02:00
connector
counter Char/Misc fixes for 6.15-rc1 2025-04-02 18:03:34 -07:00
cpufreq cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode 2025-04-30 16:27:34 +02:00
cpuidle pmdomain core: 2025-03-25 20:40:51 -07:00
crypto crypto: atmel-sha204a - Set hwrng quality to lowest possible 2025-04-23 09:32:57 +08:00
cxl cxl/core/regs.c: Skip Memory Space Enable check for RCD and RCH Ports 2025-04-21 08:30:13 -07:00
dax device/dax: properly refcount device dax pages when mapping 2025-03-17 22:06:41 -07:00
dca
devfreq
dio
dma dmaengine: mediatek: drop unused variable 2025-05-15 11:42:13 +01:00
dma-buf dma-buf: insert memory barrier before updating num_fences 2025-05-14 15:31:23 +02:00
dpll Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2025-03-20 21:38:01 +01:00
edac EDAC/altera: Set DDR and SDMMC interrupt mask before registration 2025-04-28 12:38:53 +02:00
eisa
extcon
firewire treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
firmware soc: fixes for 6.14 2025-05-05 08:07:24 -07:00
fpga fpga: tests: add module descriptions 2025-04-11 17:32:38 -07:00
fsi
fwctl fwctl: Fix repeated device word in log message 2025-04-11 20:47:45 -03:00
gnss
gpio gpio: virtuser: fix potential out-of-bound write 2025-05-13 12:59:30 +02:00
gpu Core Changes: 2025-05-16 11:21:35 +10:00
greybus treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hid hid-for-linus-2025051501 2025-05-15 10:57:24 -07:00
hsi treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hte treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hv Including fixes from Bluetooth and wireless. 2025-05-15 10:40:49 -07:00
hwmon treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
hwspinlock hwspinlock: Remove unused hwspin_lock_get_id() 2025-03-21 17:12:04 -05:00
hwtracing intel_th: avoid using deprecated page->mapping, index fields 2025-04-15 13:29:03 +02:00
i2c i2c: octeon: add block-mode i2c operations 2025-05-19 22:23:55 +02:00
i3c i3c: Add NULL pointer check in i3c_master_queue_ibi() 2025-03-31 11:44:00 +02:00
idle Power management updates for 6.15-rc1 2025-03-25 15:00:18 -07:00
iio IIO: 1st set of fixes for the 6.15 cycle. 2025-05-01 17:47:49 +02:00
infiniband RDMA/core: Fix "KASAN: slab-use-after-free Read in ib_register_device" problem 2025-05-06 14:36:57 -03:00
input Input updates for v6.15-rc5 2025-05-11 10:29:29 -07:00
interconnect
iommu IOMMU Fixes for Linux v6.15-rc4: 2025-05-02 08:57:00 -07:00
ipack
irqchip irqchip/riscv-imsic: Start local sync timer on correct CPU 2025-05-15 16:01:50 +02:00
isdn treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
leds treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
macintosh treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mailbox treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mcb mcb: fix a double free bug in chameleon_parse_gdd() 2025-04-15 18:21:39 +02:00
md - dm: fix reading past the end of allocated memory 2025-05-06 08:14:20 -07:00
media media: cec: tda9950: add back i2c dependency 2025-04-07 08:12:12 +02:00
memory treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
memstick treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
message SCSI misc on 20250326 2025-03-26 19:57:34 -07:00
mfd * Maxim MAX77705: 2025-03-29 14:33:13 -07:00
misc pci-v6.15-fixes-3 2025-04-26 13:02:36 -07:00
mmc mmc: renesas_sdhi: disable clocks if registering regulator failed 2025-04-07 17:58:41 +02:00
most treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
mtd mtd: rawnand: Add status chack in r852_ready() 2025-04-07 09:02:49 +02:00
mux
net tsnep: fix timestamping with a stacked DSA driver 2025-05-15 07:58:18 -07:00
nfc treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
ntb Bug fixes for NTB Switchtec driver mw negative shift, Intel NTB link 2025-04-04 14:23:07 -07:00
nubus
nvdimm libnvdimm additions for 6.15 2025-04-02 20:27:18 -07:00
nvme block-6.15-20250515 2025-05-16 10:21:25 -07:00
nvmem nvmem: qfprom: switch to 4-byte aligned reads 2025-04-11 14:41:22 +02:00
of Devicetree for v6.15: 2025-03-29 11:23:16 -07:00
opp
parisc parisc: led: Use scnprintf() to avoid string truncation warning 2025-03-09 22:27:54 +01:00
parport treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
pci s390 fixes for 6.15-rc6 2025-05-08 08:29:13 -07:00
pcmcia treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
peci
perf pci-v6.15-changes 2025-03-28 19:36:53 -07:00
phy phy: Fix error handling in tegra_xusb_port_init 2025-05-14 12:28:43 +01:00
pinctrl pinctrl: qcom: Fix PINGROUP definition for sm8750 2025-04-29 10:27:25 +02:00
platform platform/x86: asus-wmi: Fix wlan_ctrl_by_user detection 2025-05-07 15:46:34 +03:00
pmdomain pmdomain: arm: scmi_pm_domain: Remove redundant state verification 2025-03-17 11:12:01 +01:00
pnp Staging driver updates for 6.15-rc1 2025-04-02 18:09:17 -07:00
power gcc-15: get rid of misc extra NUL character padding 2025-04-20 11:57:54 -07:00
powercap Power management updates for 6.15-rc1 2025-03-25 15:00:18 -07:00
pps pps: generators: tio: fix platform_set_drvdata() 2025-04-15 18:22:32 +02:00
ps3
ptp ptp: ocp: Fix NULL dereference in Adva board SMA sysfs operations 2025-05-01 07:01:31 -07:00
pwm pwm: A set of fixes for pwm core and various drivers 2025-04-12 08:11:19 -07:00
rapidio Linux 6.14-rc6 2025-03-10 17:37:25 +01:00
ras RAS/AMD/FMPM: Get masked address 2025-04-08 19:30:58 +02:00
regulator regulator: max20086: fix invalid memory access 2025-05-14 11:16:52 +02:00
remoteproc remoteproc: qcom_q6v5_pas: Make single-PD handling more robust 2025-03-22 08:42:39 -05:00
reset remoteproc updates for v6.15 2025-03-29 17:18:50 -07:00
rpmsg
rtc treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
s390 s390/dcssblk: Fix build error with CONFIG_DAX=m and CONFIG_DCSSBLK=y 2025-05-05 15:46:34 +02:00
sbus
scsi SCSI fixes on 20250516 2025-05-16 10:28:22 -07:00
sh sh: remove duplicate ioread/iowrite helpers 2025-03-11 10:41:18 +01:00
siox
slimbus
soc soc: drivers for 6.15, part 2 2025-04-04 09:06:32 -07:00
soundwire soundwire fix for 6.15 2025-05-17 12:04:19 -07:00
spi spi: spi-sun4i: fix early activation 2025-05-14 10:56:43 +02:00
spmi
ssb
staging Staging driver fixes for 6.15-rc6 2025-05-10 09:08:19 -07:00
target scsi: target: iscsi: Fix timeout on deleted connection 2025-04-11 22:13:00 -04:00
tc
tee
thermal thermal: intel: int340x: Fix Panther Lake DLVR support 2025-04-15 18:57:25 +02:00
thunderbolt USB/Thunderbolt update for 6.15-rc1 2025-04-02 18:23:31 -07:00
tty serial: sifive: lock port in startup()/shutdown() callbacks 2025-04-15 15:02:39 +02:00
ufs scsi: ufs: core: Remove redundant query_complete trace 2025-04-28 21:23:29 -04:00
uio uio_hv_generic: Fix sysfs creation path for ring buffer 2025-05-02 13:59:02 +02:00
usb sound fixes for 6.15-rc7 2025-05-16 09:06:12 -07:00
vdpa
vfio vfio/pci: Align huge faults to order 2025-05-06 12:59:12 -06:00
vhost vhost-scsi: Fix vhost_scsi_send_status() 2025-04-18 10:08:11 -04:00
video treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
virt treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
virtio virtgpu: don't reset on shutdown 2025-04-18 10:05:49 -04:00
w1
watchdog treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
xen xenbus: Use kref to track req lifetime 2025-05-07 16:21:41 +02:00
zorro
Kconfig fwctl: Add basic structure for a class subsystem with a cdev 2025-03-06 15:11:30 -04:00
Makefile fwctl: Add basic structure for a class subsystem with a cdev 2025-03-06 15:11:30 -04:00