Commit graph

1,385,397 commits

Author SHA1 Message Date
JP Kobryn
f3921fb7fd cgroup: document the rstat per-cpu initialization
The calls to css_rstat_init() occur at different places depending on the
context. Document the conditions that determine which point of
initialization is used.

Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2025-05-19 10:30:02 -10:00
JP Kobryn
93b35663f2 cgroup: helper for checking rstat participation of css
There are a few places where a conditional check is performed to validate a
given css on its rstat participation. This new helper tries to make the
code more readable where this check is performed.

Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2025-05-19 10:29:49 -10:00
JP Kobryn
748922dcfa cgroup: use subsystem-specific rstat locks to avoid contention
It is possible to eliminate contention between subsystems when
updating/flushing stats by using subsystem-specific locks. Let the existing
rstat locks be dedicated to the cgroup base stats and rename them to
reflect that. Add similar locks to the cgroup_subsys struct for use with
individual subsystems.

Lock initialization is done in the new function ss_rstat_init(ss) which
replaces cgroup_rstat_boot(void). If NULL is passed to this function, the
global base stat locks will be initialized. Otherwise, the subsystem locks
will be initialized.

Change the existing lock helper functions to accept a reference to a css.
Then within these functions, conditionally select the appropriate locks
based on the subsystem affiliation of the given css. Add helper functions
for this selection routine to avoid repeated code.

Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2025-05-19 10:29:42 -10:00
Andy Yan
099593a281 drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed
In the function drm_gem_fb_init_with_funcs, the framebuffer (fb)
and its corresponding object ID have already been registered.

So we need to cleanup the drm framebuffer if the subsequent
execution of drm_gem_fb_afbc_init fails.

Directly call drm_framebuffer_put to ensure that all fb related
resources are cleanup.

Fixes: 7707f7227f ("drm/rockchip: Add support for afbc")
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250509031607.2542187-1-andyshrk@163.com
2025-05-19 22:29:16 +02:00
JP Kobryn
5da3bfa029 cgroup: use separate rstat trees for each subsystem
Different subsystems may call cgroup_rstat_updated() within the same
cgroup, resulting in a tree of pending updates from multiple subsystems.
When one of these subsystems is flushed via cgroup_rstat_flushed(), all
other subsystems with pending updates on the tree will also be flushed.

Change the paradigm of having a single rstat tree for all subsystems to
having separate trees for each subsystem. This separation allows for
subsystems to perform flushes without the side effects of other subsystems.
As an example, flushing the cpu stats will no longer cause the memory stats
to be flushed and vice versa.

In order to achieve subsystem-specific trees, change the tree node type
from cgroup to cgroup_subsys_state pointer. Then remove those pointers from
the cgroup and instead place them on the css. Finally, change update/flush
functions to make use of the different node type (css). These changes allow
a specific subsystem to be associated with an update or flush. Separate
rstat trees will now exist for each unique subsystem.

Since updating/flushing will now be done at the subsystem level, there is
no longer a need to keep track of updated css nodes at the cgroup level.
The list management of these nodes done within the cgroup (rstat_css_list
and related) has been removed accordingly.

Conditional guards for checking validity of a given css were placed within
css_rstat_updated/flush() to prevent undefined behavior occuring from kfunc
usage in bpf programs. Guards were also placed within css_rstat_init/exit()
in order to help consolidate calls to them. At call sites for all four
functions, the existing guards were removed.

Signed-off-by: JP Kobryn <inwardvessel@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2025-05-19 10:28:59 -10:00
Feng Wei
c030a41ef8 i2c: mlxbf: Use str_read_write() helper
Remove hard-coded strings by using the str_read_write() helper.

Signed-off-by: Feng Wei <feng.wei8@zte.com.cn>
Signed-off-by: Shao Mingyin <shao.mingyin@zte.com.cn>
Link: https://lore.kernel.org/r/20250401192603311H5OxuFmUSbPc4VnQQkhZr@zte.com.cn
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:58 +02:00
Philipp Stanner
8ae92c691d i2c: thunderx: Use non-hybrid PCI devres API
thunderx enables its PCI device with pcim_enable_device(). This,
implicitly, switches the function pci_request_regions() into managed
mode, where it becomes a devres function.

The PCI subsystem wants to remove this hybrid nature from its
interfaces. To do so, users of the aforementioned combination of
functions must be ported to non-hybrid functions.

Replace the call to sometimes-managed pci_request_regions() with one to
the always-managed pcim_request_all_regions().

Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://lore.kernel.org/r/20250417082511.22272-3-phasta@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Philipp Stanner
db9354b46e i2c: ismt: Use non-hybrid PCI devres API
ismt enables its PCI device with pcim_enable_device(). This,
implicitly, switches the function pci_request_region() into managed
mode, where it becomes a devres function.

The PCI subsystem wants to remove this hybrid nature from its
interfaces. To do so, users of the aforementioned combination of
functions must be ported to non-hybrid functions.

Replace the call to sometimes-managed pci_request_region() with one to
the always-managed pcim_request_region().

Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://lore.kernel.org/r/20250417082511.22272-2-phasta@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Marcus Folkesson
1b5d623e2e i2c: davinci: add I2C_FUNC_PROTOCOL_MANGLING to feature list
The driver do support I2C_M_IGNORE_NAK, so add
I2C_FUNC_PROTOCOL_MANGLING to the feature list.

Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Acked-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Link: https://lore.kernel.org/r/20250326-i2c-v1-1-82409ebe9f2b@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Yao Zi
76648b013c dt-bindings: i2c: i2c-rk3x: Add compatible string for RK3528
Document I2C controllers integrated in RK3528, which are compatible with
the RK3399 variant.

Signed-off-by: Yao Zi <ziyao@disroot.org>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250417120118.17610-4-ziyao@disroot.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Yo-Jung (Leo) Lin
4d6d35d341 i2c: smbus: introduce Write Disable-aware SPD instantiating functions
Some SMBus controllers may restrict writes to addresses where SPD sensors
may reside. This may lead to some SPD sensors not functioning correctly,
and might need extra handling. Introduce new SPD-instantiating functions
that are aware of this, and use them instead.

Signed-off-by: Yo-Jung Lin (Leo) <leo.lin@canonical.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20250430-for-upstream-i801-spd5118-no-instantiate-v2-1-2f54d91ae2c7@canonical.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Lad Prabhakar
8b284979f7 dt-bindings: i2c: renesas,riic: Document RZ/V2N (R9A09G056) support
Document support for the I2C Bus Interface (RIIC) found on the Renesas
RZ/V2N (R9A09G056) SoC. The RIIC IP is identical to that on RZ/V2H(P),
so `renesas,riic-r9a09g057` will be used as a fallback compatible,
enabling reuse of the existing driver without changes.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20250501203310.140137-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Lad Prabhakar
ba9e1b5254 i2c: riic: Implement bus recovery
Implement I2C bus recovery support for the RIIC controller by making use
of software-controlled SCL and SDA line manipulation. The controller allows
forcing SCL and SDA levels through control bits, which enables generation
of manual clock pulses and a stop condition to free a stuck bus.

This implementation wires up the bus recovery mechanism using
i2c_generic_scl_recovery and provides get/set operations for SCL and SDA.

This allows the RIIC driver to recover from bus hang scenarios where SDA
is held low by a slave.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
Link: https://lore.kernel.org/r/20250501204003.141134-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Inochi Amaoto
218d231818 dt-bindings: i2c: dw: Add Sophgo SG2044 SoC I2C controller
Add compatible string for Sophgo SG2044 SoC I2C controller which can be
used specifically for the SG2044 SoC.

Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250413223507.46480-9-inochiama@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Inochi Amaoto
b6c540d740 dt-bindings: i2c: dw: merge duplicate compatible entry.
Each vendor have an items entry of its own compatible, It is needless
and some can be merged as it share the same base "snps,designware-i2c"
compatible.

Merge the duplicate compatible entry into one item entry.

Signed-off-by: Inochi Amaoto <inochiama@gmail.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250413223507.46480-2-inochiama@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Akhil R
a6e04f05ce i2c: tegra: check msg length in SMBUS block read
For SMBUS block read, do not continue to read if the message length
passed from the device is '0' or greater than the maximum allowed bytes.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
Acked-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20250424053320.19211-1-akhilrajeev@nvidia.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Hector Martin
090c3a4a26 i2c: pasemi: Log bus reset causes
This ensures we get all information we need to debug issues when users
forward us their logs.

Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Link: https://lore.kernel.org/r/20250427-pasemi-fixes-v3-4-af28568296c0@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Hector Martin
f4f64fa8a6 i2c: pasemi: Improve error recovery
Add handling for all the missing error condition, and better recovery in
pasemi_smb_clear().

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Hector Martin <marcan@marcan.st>
Co-developed-by: Sven Peter <sven@svenpeter.dev>
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Link: https://lore.kernel.org/r/20250427-pasemi-fixes-v3-3-af28568296c0@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Sven Peter
390b8f5834 i2c: pasemi: Improve timeout handling
The hardware (supposedly) has a 25ms timeout for clock stretching
and the driver uses 100ms which should be plenty.
The interrupt path however misses handling for errors while waiting for
the completion and the polling path uses an open-coded readx_poll_timeout.
Note that we drop reg_write(smbus, REG_SMSTA, status) while fixing those
issues here which will be done anyway whenever the next transaction starts
via pasemi_smb_clear.

Signed-off-by: Sven Peter <sven@svenpeter.dev>
Link: https://lore.kernel.org/r/20250427-pasemi-fixes-v3-2-af28568296c0@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:57 +02:00
Hector Martin
88fe3078b5 i2c: pasemi: Enable the unjam machine
The I2C bus can get stuck under some conditions (desync between
controller and device). The pasemi controllers include an unjam feature
that is enabled on reset, but was being disabled by the driver. Keep it
enabled by explicitly setting the UJM bit in the CTL register. This
should help recover the bus from certain conditions, which would
otherwise remain stuck forever.

Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Link: https://lore.kernel.org/r/20250427-pasemi-fixes-v3-1-af28568296c0@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
25909e19c2 i2c: iproc: Remove unnecessary double negation
True is true when greater than '0', no need for double negation
inside the if statement.

Link: https://lore.kernel.org/r/20250418211635.2666234-11-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
d7d58a72f5 i2c: iproc: When there's an error treat it as an error
If the xfer fails, it indicates a real error. Log it with an
error message instead of a debug message to reflect its severity.

Link: https://lore.kernel.org/r/20250418211635.2666234-10-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
23c0794194 i2c: iproc: Move function and avoid prototypes
Shuffle a bit the code in order to avoid prototypes.

Link: https://lore.kernel.org/r/20250426201920.272135-1-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
d21836663f i2c: iproc: Fix indentation of bcm_iproc_i2c_slave_init()
Adjust the indentation of the bcm_iproc_i2c_slave_init() function
definition to match standard kernel coding style. Don't end the
line with an open parenthesis.

Link: https://lore.kernel.org/r/20250418211635.2666234-8-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
9f64de0f85 i2c: iproc: Replace udelay() with usleep_range()
Replace udelay(100) with usleep_range(100, 200) as recommended
by kernel documentation. The delay is not in atomic context, so
busy-waiting is unnecessary.

Also update the comment for clarity.

Link: https://lore.kernel.org/r/20250418211635.2666234-7-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
eb9b9b1e19 i2c: iproc: Remove stray blank line in slave ISR
Drop an unnecessary blank line in bcm_iproc_i2c_slave_isr().

Link: https://lore.kernel.org/r/20250418211635.2666234-6-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
9277b5f276 i2c: iproc: Fix alignment to match the open parenthesis
Alignment should match the open parenthesis but in some places it
didn't

Link: https://lore.kernel.org/r/20250418211635.2666234-5-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
f7a2df37da i2c: iproc: Use u32 instead of uint32_t
In the kernel u32 should be used instead of unit32_t.

Link: https://lore.kernel.org/r/20250418211635.2666234-4-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
8f1e88d40c i2c: iproc: Use dev_err_probe in probe
Use dev_err_probe() instead of dev_err() and then return.

Link: https://lore.kernel.org/r/20250418211635.2666234-3-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Andi Shyti
d3e80014e1 i2c: iproc: Drop unnecessary initialisation of 'ret'
The 'ret' variable doesn't need to be initialised, as it is
always assigned before use.

While here, reorder the variable declarations in reverse
Christmas tree style, by line length.

Link: https://lore.kernel.org/r/20250418211635.2666234-2-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
Pratap Nirujogi
d6263c468a i2c: amd-isp: Add ISP i2c-designware driver
The camera sensor is connected via ISP I2C bus in AMD SOC
architectures. Add new I2C designware driver to support
new camera sensors on AMD HW.

Co-developed-by: Venkata Narendra Kumar Gutta <vengutta@amd.com>
Signed-off-by: Venkata Narendra Kumar Gutta <vengutta@amd.com>
Co-developed-by: Bin Du <bin.du@amd.com>
Signed-off-by: Bin Du <bin.du@amd.com>
Signed-off-by: Pratap Nirujogi <pratap.nirujogi@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20250424184952.1290019-1-pratap.nirujogi@amd.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
AngeloGioacchino Del Regno
9cf1a28acb dt-bindings: i2c: i2c-mt65xx: Add MediaTek Dimensity 1200 MT6893
Add support for the MediaTek Dimensity 1200 (MT6893) SoC; this
chip's multiple I2C controller instances are fully compatible
with the ones found in the MT8192 SoC.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250416120303.148017-1-angelogioacchino.delregno@collabora.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:56 +02:00
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
Sven Peter
e1902d658e i2c: pasemi: Sort includes alphabetically
No functional changes.

Signed-off-by: Sven Peter <sven@svenpeter.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Link: https://lore.kernel.org/r/20250415-pasemi-fixes-v2-2-c543bf53151a@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Sven Peter
8e82bca35f i2c: pasemi: Use correct bits.h include
When changing the #defines to use BIT and GENMASK the bitfield.h include
was added instead of the correct bits.h include.

Reported-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Link: https://lore.kernel.org/r/20250415-pasemi-fixes-v2-1-c543bf53151a@svenpeter.dev
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Andy Shevchenko
688d389cdf i2c: designware: Use better constants from units.h
When we use constants in a time or frequency related contexts,
it's better to utilise the respective definitions that have
encoded units in them. This will make code better to read and
understand.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Acked-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Link: https://lore.kernel.org/r/20250416101702.2128740-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
6df65313ed i2c: scx200_acb: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-11-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
e7d8a0de70 i2c: i2c-xiic: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-10-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
26e3e92e13 i2c: virtio: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-8-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
a070c9e07a i2c: viperboard: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-7-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
61e26ca692 i2c: viapro: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-6-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
05ac621b1e i2c: via: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-4-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
c4f62651f2 i2c: uniphier: Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-3-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Enrico Zanda
ca0585ac9e i2c: uniphier(-f): Replace dev_err() with dev_err_probe() in probe function
This simplifies the code while improving log.

Signed-off-by: Enrico Zanda <e.zanda1@gmail.com>
Link: https://lore.kernel.org/r/20250415183447.396277-2-e.zanda1@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:55 +02:00
Tali Perry
38010591a0 i2c: npcm: Add clock toggle recovery
During init of the bus, the module checks that the bus is idle.
If one of the lines are stuck try to recover them first before failing.
Sometimes SDA and SCL are low if improper reset occurs (e.g., reboot).

Signed-off-by: Tali Perry <tali.perry1@gmail.com>
Signed-off-by: Mohammed Elbadry <mohammed.0.elbadry@gmail.com>
Reviewed-by: Mukesh Kumar Savaliya <quic_msavaliy@quicinc.com>
Link: https://lore.kernel.org/r/20250328193252.1570811-1-mohammed.0.elbadry@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00
Christophe JAILLET
504cb3ce52 i2c: rzv2m: Constify struct i2c_algorithm
'struct i2c_algorithm' is not modified in this driver.

Constifying this structure moves some data to a read-only section, so
increase overall security, especially when the structure holds some
function pointers.

On a x86_64, with allmodconfig, as an example:
Before:
======
   text	   data	    bss	    dec	    hex	filename
  11027	    646	     16	  11689	   2da9	drivers/i2c/busses/i2c-rzv2m.o

After:
=====
   text	   data	    bss	    dec	    hex	filename
  11107	    566	     16	  11689	   2da9	drivers/i2c/busses/i2c-rzv2m.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
Link: https://lore.kernel.org/r/537d93441ced53bffa6553b8ec93d007e64cb9a5.1743258995.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00
Alexander Stein
f4a5f88152 i2c: imx: add some dev_err_probe calls
Add corresponding error messages if DMA channels are not available during
probe. Using dev_err_probe adds deferred probe messages as well.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20250408100300.556703-1-alexander.stein@ew.tq-group.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00
Sudeep Holla
7b17412612 i2c: xgene-slimpro: Simplify PCC shared memory region handling
The PCC driver now handles mapping and unmapping of shared memory
areas as part of pcc_mbox_{request,free}_channel(). Without these before,
this xgene-slimpro I2C driver did handling of those mappings like several
other PCC mailbox client drivers.

There were redundant operations, leading to unnecessary code. Maintaining
the consistency across these driver was harder due to scattered handling
of shmem.

Just use the mapped shmem and remove all redundant operations from this
driver.

Cc: Andi Shyti <andi.shyti@kernel.org>
Cc: linux-i2c@vger.kernel.org
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250411112303.1149086-1-sudeep.holla@arm.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00
Chenyuan Yang
b7a886e7e9 i2c: lpc2k: Add check for clk_enable()
Add check for the return value of clk_enable() to catch
the potential error.

This is similar to the commit 8332e66709
("spi: zynq-qspi: Add check for clk_enable()").

Signed-off-by: Chenyuan Yang <chenyuan0y@gmail.com>
Link: https://lore.kernel.org/r/20250412193713.105838-1-chenyuan0y@gmail.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00
Zhang Songyi
5a1934f1c2 i2c: npcm7xx: Remove redundant ret variable
Return value from npcm_i2c_get_slave_addr() directly instead of taking
this in another redundant variable.

This improvement has been suggested by Zeal Robot <zealci@zte.com.cn>

Signed-off-by: Zhang Songyi <zhang.songyi@zte.com.cn>
Link: https://lore.kernel.org/r/20250320004321.1914366-1-andi.shyti@kernel.org
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2025-05-19 22:23:54 +02:00