mbox series

[v6,00/10] i2c: riic: Add support for I2C bus recovery, along with driver cleanup and improvements

Message ID 20250113122643.819379-1-prabhakar.mahadev-lad.rj@bp.renesas.com (mailing list archive)
Headers show
Series i2c: riic: Add support for I2C bus recovery, along with driver cleanup and improvements | expand

Message

Lad, Prabhakar Jan. 13, 2025, 12:26 p.m. UTC
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Hi All,

This patch series introduces support for I2C bus recovery in the RIIC
driver, which is utilized in RZ series SoCs. The addition of bus recovery
functionality enhances the reliability of the I2C interface by allowing it
to recover from error conditions that might leave the bus in an unusable
state.

Alongside the bus recovery implementation, the series includes several
cleanup and improvement patches that simplify and modernize the driver
code. These include replacing `dev_err` calls with `dev_err_probe`,
consistent usage of the `BIT` and `GENMASK` macros, leveraging devres
helpers for reset management, and improving code readability by marking
static data as `const`.

v5->v6
- Swicthed to use `linux/bits.h` in patch 4/10
- Dropped `linux/bits.h` in patch 5/10
- Swicthed to use `linux/time.h` in patch 8/10
- Included RB/TB tags
- Included I2C bus recovery patch

v4->v5
- Only patch 1/10 was sent out to ML

v3->v4
-> Created new patch 1/9
-> Dropped RB/TB tags from patch 8/9
-> Dropped `unsigned long` cast and updated the format specifier while
   printing bus frequency
-> Included required headers
-> Propogated the error

v1->v2
- Fixed review comments and collected RB tags from Geert

v1:
https://lore.kernel.org/all/20241213175828.909987-1-prabhakar.mahadev-lad.rj@bp.renesas.com/

Cheers,
Prabhakar

Lad Prabhakar (10):
  i2c: riic: Introduce a separate variable for IRQ
  i2c: riic: Use dev_err_probe in probe and riic_init_hw functions
  i2c: riic: Use local `dev` pointer in `dev_err_probe()`
  i2c: riic: Use BIT macro consistently
  i2c: riic: Use GENMASK() macro for bitmask definitions
  i2c: riic: Make use of devres helper to request deasserted reset line
  i2c: riic: Mark riic_irqs array as const
  i2c: riic: Use predefined macro and simplify clock tick calculation
  i2c: riic: Add `riic_bus_barrier()` to check bus availability
  i2c: riic: Implement bus recovery

 drivers/i2c/busses/i2c-riic.c | 234 +++++++++++++++++++++++-----------
 1 file changed, 162 insertions(+), 72 deletions(-)

Comments

Andy Shevchenko Jan. 13, 2025, 7:20 p.m. UTC | #1
On Mon, Jan 13, 2025 at 2:26 PM Prabhakar <prabhakar.csengg@gmail.com> wrote:
>
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> Hi All,
>
> This patch series introduces support for I2C bus recovery in the RIIC
> driver, which is utilized in RZ series SoCs. The addition of bus recovery
> functionality enhances the reliability of the I2C interface by allowing it
> to recover from error conditions that might leave the bus in an unusable
> state.
>
> Alongside the bus recovery implementation, the series includes several
> cleanup and improvement patches that simplify and modernize the driver
> code. These include replacing `dev_err` calls with `dev_err_probe`,
> consistent usage of the `BIT` and `GENMASK` macros, leveraging devres
> helpers for reset management, and improving code readability by marking
> static data as `const`.

Looks very good to me now, thank you.
FWIW,
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Wolfram Sang Jan. 14, 2025, 10:53 a.m. UTC | #2
> This patch series introduces support for I2C bus recovery in the RIIC
> driver, which is utilized in RZ series SoCs. The addition of bus recovery
> functionality enhances the reliability of the I2C interface by allowing it
> to recover from error conditions that might leave the bus in an unusable
> state.
> 
> Alongside the bus recovery implementation, the series includes several
> cleanup and improvement patches that simplify and modernize the driver
> code. These include replacing `dev_err` calls with `dev_err_probe`,
> consistent usage of the `BIT` and `GENMASK` macros, leveraging devres
> helpers for reset management, and improving code readability by marking
> static data as `const`.

Applied patches 1-9 to for-next, thank you! Patch 10 needs a separate
look.
Lad, Prabhakar Jan. 14, 2025, 1:05 p.m. UTC | #3
Hi Wolfram,

On Tue, Jan 14, 2025 at 10:53 AM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
>
>
> > This patch series introduces support for I2C bus recovery in the RIIC
> > driver, which is utilized in RZ series SoCs. The addition of bus recovery
> > functionality enhances the reliability of the I2C interface by allowing it
> > to recover from error conditions that might leave the bus in an unusable
> > state.
> >
> > Alongside the bus recovery implementation, the series includes several
> > cleanup and improvement patches that simplify and modernize the driver
> > code. These include replacing `dev_err` calls with `dev_err_probe`,
> > consistent usage of the `BIT` and `GENMASK` macros, leveraging devres
> > helpers for reset management, and improving code readability by marking
> > static data as `const`.
>
> Applied patches 1-9 to for-next, thank you! Patch 10 needs a separate
> look.
>
Thank you. I'll resend patch 10/10 after the merge window.

Cheers,
Prabhakar