Re: [PATCH v4 6/6] i3c: add API i3c_dev_gettstatus_format1() to get target device status

Miquel Raynal
2023-11-30T10:20:10Z

Hi Frank,

Frank.Li@nxp.com wrote on Wed, 29 Nov 2023 17:12:25 -0500:

> I3C standard 5.1.9.3.15 Get Device Status (GETSTATUS):
> Get request for one I3C Target Device to return its current status.
>
> Add API to fetch it with format1.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> drivers/i3c/device.c | 24 ++++++++++++++++++++++++
> drivers/i3c/internals.h | 1 +
> drivers/i3c/master.c | 26 ++++++++++++++++++++++++++
> include/linux/i3c/device.h | 1 +
> 4 files changed, 52 insertions(+)
>
> diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c
> index 1a6a8703dbc3a..aa26cf50ab9c6 100644
> --- a/drivers/i3c/device.c
> +++ b/drivers/i3c/device.c
> @@ -196,6 +196,30 @@ void i3c_device_free_ibi(struct i3c_device *dev)
> }
> EXPORT_SYMBOL_GPL(i3c_device_free_ibi);
>
> +/**
> + * i3c_device_getstatus_format1() - Get device status with format 1.
> + * @dev: device for which you want to get status.
> + * @status: I3C status format 1
> + *
> + * Return: 0 in case of success, a negative error core otherwise.
> + */
> +int i3c_device_getstatus_format1(struct i3c_device *dev, u16 *status)

I'm not a big fan of the opposition between "i3c_device" and "i3c_dev".
Could we clarify the prefixes?

> +{
> + int ret = -EINVAL;

Init not useful

> +
> + if (!status)
> + return -EINVAL;
> +
> + i3c_bus_normaluse_lock(dev->bus);
> + if (dev->desc)
> + ret = i3c_dev_getstatus_format1_locked(dev->desc, status);
> +
> + i3c_bus_normaluse_unlock(dev->bus);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(i3c_device_getstatus_format1);

There is no user yet. Maybe this needs to be done in another series?
Same below.

...

> +int i3c_dev_getstatus_format1_locked(struct i3c_dev_desc *dev, u16 *status)

...

Thanks,
Miquèl