i2c: mux: Fix the crash when the i2c-arbitrator node is present
authorVenkatesh Yadav Abbarapu <venkatesh.abbarapu@amd.com>
Mon, 23 Jun 2025 08:06:07 +0000 (13:36 +0530)
committerTom Rini <trini@konsulko.com>
Tue, 24 Jun 2025 14:18:08 +0000 (08:18 -0600)
commit903eb123236ccbd8ef05d43507a2a910b785bd56
tree8a8755a28b3b651d9bb83323513f98c9f02943f4
parentf3ee5872bf67e8e15b3a3f131b8eb64251508c08
i2c: mux: Fix the crash when the i2c-arbitrator node is present

Observing the crash when we add the i2c-arbitrator node in the device
tree as per the DT bindings. The issue is with the child node of
i2c-arbitrator@72 i.e., i2c@f1950000->i2c-arbitrator@72->i2c-arb, as the
arbitrator uses the uclass of mux(UCLASS_I2C_MUX) and the mux uclass driver
checks for the "reg" property using the i2c_mux_child_post_bind() function,
if it won't find the "reg" property it will return -EINVAL which is leading
to the crash.
So, add the logic to check whether the  child node has the "reg" property,
if the "reg" property exists then read the "reg" and update the channel.

https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-arb.txt

Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu@amd.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
drivers/i2c/muxes/i2c-mux-uclass.c