2021-10-28 12:54:15

by Horatiu Vultur

[permalink] [raw]
Subject: [PATCH v2 0/2] i2c-mux-gpmux: Support settle-time-us property

Add support for settle-time-us property. If this is defined in device
tree then add this delay to mux APIs.

v1->v2:
- add the changes to i2c-mux-gpmux instead of i2c-mux-gpio to be able
to use mux_control_select_delay

Horatiu Vultur (2):
dt-bindings: i2c-mux-gpmux: Add property for settle time
i2c-mux-gpmux: Support settle-time-us property

Documentation/devicetree/bindings/i2c/i2c-mux-gpmux.yaml | 5 +++++
drivers/i2c/muxes/i2c-mux-gpmux.c | 6 +++++-
2 files changed, 10 insertions(+), 1 deletion(-)

--
2.33.0


2021-10-28 12:55:40

by Horatiu Vultur

[permalink] [raw]
Subject: [PATCH v2 2/2] i2c-mux-gpmux: Support settle-time-us property

Add support for settle-time-us property. If this is defined in device
tree then add this delay to mux APIs.

Signed-off-by: Lars Povlsen <[email protected]>
Signed-off-by: Horatiu Vultur <[email protected]>
---
drivers/i2c/muxes/i2c-mux-gpmux.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/i2c/muxes/i2c-mux-gpmux.c b/drivers/i2c/muxes/i2c-mux-gpmux.c
index d3acd8d66c32..569de1d8fdc1 100644
--- a/drivers/i2c/muxes/i2c-mux-gpmux.c
+++ b/drivers/i2c/muxes/i2c-mux-gpmux.c
@@ -16,6 +16,7 @@

struct mux {
struct mux_control *control;
+ u32 delay_us;

bool do_not_deselect;
};
@@ -25,7 +26,7 @@ static int i2c_mux_select(struct i2c_mux_core *muxc, u32 chan)
struct mux *mux = i2c_mux_priv(muxc);
int ret;

- ret = mux_control_select(mux->control, chan);
+ ret = mux_control_select_delay(mux->control, chan, mux->delay_us);
mux->do_not_deselect = ret < 0;

return ret;
@@ -89,6 +90,9 @@ static int i2c_mux_probe(struct platform_device *pdev)
return dev_err_probe(dev, PTR_ERR(mux->control),
"failed to get control-mux\n");

+ mux->delay_us = 0;
+ of_property_read_u32(np, "settle-time-us", &mux->delay_us);
+
parent = mux_parent_adapter(dev);
if (IS_ERR(parent))
return dev_err_probe(dev, PTR_ERR(parent),
--
2.33.0

2021-10-30 22:34:24

by Peter Rosin

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] i2c-mux-gpmux: Support settle-time-us property

On 2021-10-28 14:53, Horatiu Vultur wrote:
> Add support for settle-time-us property. If this is defined in device
> tree then add this delay to mux APIs.
>
> Signed-off-by: Lars Povlsen <[email protected]>
> Signed-off-by: Horatiu Vultur <[email protected]>
> ---
> drivers/i2c/muxes/i2c-mux-gpmux.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i2c/muxes/i2c-mux-gpmux.c b/drivers/i2c/muxes/i2c-mux-gpmux.c
> index d3acd8d66c32..569de1d8fdc1 100644
> --- a/drivers/i2c/muxes/i2c-mux-gpmux.c
> +++ b/drivers/i2c/muxes/i2c-mux-gpmux.c
> @@ -16,6 +16,7 @@
>
> struct mux {
> struct mux_control *control;
> + u32 delay_us;
>
> bool do_not_deselect;
> };
> @@ -25,7 +26,7 @@ static int i2c_mux_select(struct i2c_mux_core *muxc, u32 chan)
> struct mux *mux = i2c_mux_priv(muxc);
> int ret;
>
> - ret = mux_control_select(mux->control, chan);
> + ret = mux_control_select_delay(mux->control, chan, mux->delay_us);
> mux->do_not_deselect = ret < 0;
>
> return ret;
> @@ -89,6 +90,9 @@ static int i2c_mux_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(mux->control),
> "failed to get control-mux\n");
>
> + mux->delay_us = 0;
> + of_property_read_u32(np, "settle-time-us", &mux->delay_us);

Some nitpicks, zeroing out the variable is not needed (the memory has
been cleared already) and I would like this a bit further down next
to digging out the mux-locked property.

Cheers,
Peter

> +
> parent = mux_parent_adapter(dev);
> if (IS_ERR(parent))
> return dev_err_probe(dev, PTR_ERR(parent),
>