mbox series

[v4,0/2] pca954x: Add DT bindings and driver changes for reset after timeout

Message ID DB6PR07MB3509B9378807A7968E272D959D652@DB6PR07MB3509.eurprd07.prod.outlook.com
Headers show
Series pca954x: Add DT bindings and driver changes for reset after timeout | expand

Message

Wojciech Siudy Sept. 13, 2024, 10:36 a.m. UTC
From: Wojciech Siudy <wojciech.siudy@nokia.com>

The pca954x mux might not respond under certain cicumstances, like device behind
it holding SDA after recovery loop or some internal issue in mux itself. Those
situations are indicated by ETIMEDOUT returned from I2C transaction attempting
selecting or deselecting the channel. According to device documentation the
reset pulse restores I2C subsystem of the mux and deselects the channel.

Since the mux switches using transistors, the failure of line behind mux that
is currently conneted prevents sending commands to mux itself, so external reset
signal is required. 

The following series of patches implements the reset functionality if it was
selected in devicetree, beceuse the reset line might not be dedivated in some
applications and such reset pulse would break other chips.


Wojciech Siudy (2):
  dt-bindings: i2c: pca954x: Add timeout reset property
  pca954x: Reset if channel select fails

 .../bindings/i2c/i2c-mux-pca954x.yaml         |  8 +++
 drivers/i2c/muxes/i2c-mux-pca954x.c           | 51 +++++++++++++++----
 2 files changed, 48 insertions(+), 11 deletions(-)

Comments

Conor Dooley Sept. 13, 2024, 5:53 p.m. UTC | #1
On Fri, Sep 13, 2024 at 10:36:43AM +0000, Wojciech Siudy (Nokia) wrote:
> From: Wojciech Siudy <wojciech.siudy@nokia.com>
> 
> The pca954x mux might not respond under certain cicumstances, like device behind
> it holding SDA after recovery loop or some internal issue in mux itself. Those
> situations are indicated by ETIMEDOUT returned from I2C transaction attempting
> selecting or deselecting the channel. According to device documentation the
> reset pulse restores I2C subsystem of the mux and deselects the channel.
> 
> Since the mux switches using transistors, the failure of line behind mux that
> is currently conneted prevents sending commands to mux itself, so external reset
> signal is required. 
> 
> The following series of patches implements the reset functionality if it was
> selected in devicetree, beceuse the reset line might not be dedivated in some
> applications and such reset pulse would break other chips.

FYI, something went a bit wrong with this series, and it has not been
threaded correctly. How did you send it?