All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Li <Frank.li@nxp.com>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 7/8] i3c: master: Export i3c_master_enec_disec_locked()
Date: Tue, 12 May 2026 12:31:23 -0400	[thread overview]
Message-ID: <agNV24RoAugbDU2m@lizhi-Precision-Tower-5810> (raw)
In-Reply-To: <20260512121732.406009-8-adrian.hunter@intel.com>

On Tue, May 12, 2026 at 03:17:31PM +0300, Adrian Hunter wrote:
> The existing i3c_master_enec_locked() wrapper always treats a NACKed
> ENEC CCC as a failure (M2 error).  However, broadcasting ENEC to enable
> Hot-Join is legitimately useful even when no I3C devices are currently
> present on the bus, in which case the broadcast will be NACKed and
> should not be reported as an error.
>
> The underlying helper i3c_master_enec_disec_locked() already accepts a
> suppress_m2 flag that lets callers ignore such NACKs.  Expose it so that
> a subsequent patch enabling Hot-Join events can issue ENEC with M2
> suppression.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/i3c/master.c       | 27 ++++++++++++++++++++++++---
>  include/linux/i3c/master.h |  2 ++
>  2 files changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> index 1eb157c8091d..db46cc12c7db 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -1121,9 +1121,29 @@ int i3c_master_entdaa_locked(struct i3c_master_controller *master)
>  }
>  EXPORT_SYMBOL_GPL(i3c_master_entdaa_locked);
>
> -static int i3c_master_enec_disec_locked(struct i3c_master_controller *master,
> -					u8 addr, bool enable, u8 evts,
> -					bool suppress_m2)
> +/**
> + * i3c_master_enec_disec_locked() - send an ENEC or DISEC CCC command
> + * @master: master used to send frames on the bus
> + * @addr: a valid I3C slave address or %I3C_BROADCAST_ADDR
> + * @enable: true to send ENEC, false to send DISEC
> + * @evts: events to enable or disable
> + * @suppress_m2: if true, treat an M2 (NACK) error from the CCC as success
> + *
> + * Send an ENEC or DISEC CCC command to enable or disable some or all events
> + * coming from a specific slave, or all devices if @addr is
> + * %I3C_BROADCAST_ADDR.
> + *
> + * When @suppress_m2 is true, a NACK of the broadcast (which can happen when
> + * no devices are present on the bus) is not reported as an error. This is
> + * useful for callers that want to configure event reporting unconditionally,
> + * regardless of whether any devices are currently on the bus.
> + *
> + * This function must be called with the bus lock held in write mode.
> + *
> + * Return: 0 in case of success, or a negative error code otherwise.
> + */
> +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr,
> +				 bool enable, u8 evts, bool suppress_m2)
>  {
>  	struct i3c_ccc_events *events;
>  	struct i3c_ccc_cmd_dest dest;
> @@ -1148,6 +1168,7 @@ static int i3c_master_enec_disec_locked(struct i3c_master_controller *master,
>
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(i3c_master_enec_disec_locked);
>
>  /**
>   * i3c_master_disec_locked() - send a DISEC CCC command
> diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> index 8cdd7be505d3..e2c831fb5354 100644
> --- a/include/linux/i3c/master.h
> +++ b/include/linux/i3c/master.h
> @@ -607,6 +607,8 @@ int i3c_master_disec_locked(struct i3c_master_controller *master, u8 addr,
>  			    u8 evts);
>  int i3c_master_enec_locked(struct i3c_master_controller *master, u8 addr,
>  			   u8 evts);
> +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr,
> +				 bool enable, u8 evts, bool suppress_m2);
>  int i3c_master_entdaa_locked(struct i3c_master_controller *master);
>  int i3c_master_defslvs_locked(struct i3c_master_controller *master);
>
> --
> 2.51.0
>

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

WARNING: multiple messages have this Message-ID (diff)
From: Frank Li <Frank.li@nxp.com>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: alexandre.belloni@bootlin.com, linux-i3c@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 7/8] i3c: master: Export i3c_master_enec_disec_locked()
Date: Tue, 12 May 2026 12:31:23 -0400	[thread overview]
Message-ID: <agNV24RoAugbDU2m@lizhi-Precision-Tower-5810> (raw)
In-Reply-To: <20260512121732.406009-8-adrian.hunter@intel.com>

On Tue, May 12, 2026 at 03:17:31PM +0300, Adrian Hunter wrote:
> The existing i3c_master_enec_locked() wrapper always treats a NACKed
> ENEC CCC as a failure (M2 error).  However, broadcasting ENEC to enable
> Hot-Join is legitimately useful even when no I3C devices are currently
> present on the bus, in which case the broadcast will be NACKed and
> should not be reported as an error.
>
> The underlying helper i3c_master_enec_disec_locked() already accepts a
> suppress_m2 flag that lets callers ignore such NACKs.  Expose it so that
> a subsequent patch enabling Hot-Join events can issue ENEC with M2
> suppression.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---

Reviewed-by: Frank Li <Frank.Li@nxp.com>

>  drivers/i3c/master.c       | 27 ++++++++++++++++++++++++---
>  include/linux/i3c/master.h |  2 ++
>  2 files changed, 26 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> index 1eb157c8091d..db46cc12c7db 100644
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c
> @@ -1121,9 +1121,29 @@ int i3c_master_entdaa_locked(struct i3c_master_controller *master)
>  }
>  EXPORT_SYMBOL_GPL(i3c_master_entdaa_locked);
>
> -static int i3c_master_enec_disec_locked(struct i3c_master_controller *master,
> -					u8 addr, bool enable, u8 evts,
> -					bool suppress_m2)
> +/**
> + * i3c_master_enec_disec_locked() - send an ENEC or DISEC CCC command
> + * @master: master used to send frames on the bus
> + * @addr: a valid I3C slave address or %I3C_BROADCAST_ADDR
> + * @enable: true to send ENEC, false to send DISEC
> + * @evts: events to enable or disable
> + * @suppress_m2: if true, treat an M2 (NACK) error from the CCC as success
> + *
> + * Send an ENEC or DISEC CCC command to enable or disable some or all events
> + * coming from a specific slave, or all devices if @addr is
> + * %I3C_BROADCAST_ADDR.
> + *
> + * When @suppress_m2 is true, a NACK of the broadcast (which can happen when
> + * no devices are present on the bus) is not reported as an error. This is
> + * useful for callers that want to configure event reporting unconditionally,
> + * regardless of whether any devices are currently on the bus.
> + *
> + * This function must be called with the bus lock held in write mode.
> + *
> + * Return: 0 in case of success, or a negative error code otherwise.
> + */
> +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr,
> +				 bool enable, u8 evts, bool suppress_m2)
>  {
>  	struct i3c_ccc_events *events;
>  	struct i3c_ccc_cmd_dest dest;
> @@ -1148,6 +1168,7 @@ static int i3c_master_enec_disec_locked(struct i3c_master_controller *master,
>
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(i3c_master_enec_disec_locked);
>
>  /**
>   * i3c_master_disec_locked() - send a DISEC CCC command
> diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h
> index 8cdd7be505d3..e2c831fb5354 100644
> --- a/include/linux/i3c/master.h
> +++ b/include/linux/i3c/master.h
> @@ -607,6 +607,8 @@ int i3c_master_disec_locked(struct i3c_master_controller *master, u8 addr,
>  			    u8 evts);
>  int i3c_master_enec_locked(struct i3c_master_controller *master, u8 addr,
>  			   u8 evts);
> +int i3c_master_enec_disec_locked(struct i3c_master_controller *master, u8 addr,
> +				 bool enable, u8 evts, bool suppress_m2);
>  int i3c_master_entdaa_locked(struct i3c_master_controller *master);
>  int i3c_master_defslvs_locked(struct i3c_master_controller *master);
>
> --
> 2.51.0
>

  reply	other threads:[~2026-05-12 16:31 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-12 12:17 [PATCH 0/8] i3c: Hot-Join improvements and MIPI HCI Hot-Join support Adrian Hunter
2026-05-12 12:17 ` Adrian Hunter
2026-05-12 12:17 ` [PATCH 1/8] i3c: master: Make hot-join workqueue freezable to block hot-join during suspend Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:09   ` Frank Li
2026-05-12 16:09     ` Frank Li
2026-05-12 12:17 ` [PATCH 2/8] i3c: master: Serialize i3c_set_hotjoin() with the maintenance lock Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:11   ` Frank Li
2026-05-12 16:11     ` Frank Li
2026-05-12 19:42     ` David Nyström
2026-05-12 19:42       ` David Nyström
2026-05-13  5:01       ` Adrian Hunter
2026-05-13  5:01         ` Adrian Hunter
2026-05-13 10:21         ` David Nyström
2026-05-13 10:21           ` David Nyström
2026-05-13  5:09     ` Adrian Hunter
2026-05-13  5:09       ` Adrian Hunter
2026-05-12 12:17 ` [PATCH 3/8] i3c: master: Consolidate Hot-Join DAA work in the core Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:16   ` Frank Li
2026-05-12 16:16     ` Frank Li
2026-05-12 12:17 ` [PATCH 4/8] i3c: master: Ensure Hot-Join operations are stopped on shutdown Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:27   ` Frank Li
2026-05-12 16:27     ` Frank Li
2026-05-13  5:31     ` Adrian Hunter
2026-05-13  5:31       ` Adrian Hunter
2026-05-13 19:04       ` Frank Li
2026-05-13 19:04         ` Frank Li
2026-05-12 12:17 ` [PATCH 5/8] i3c: dw: Drop redundant Hot-Join cancel_work_sync() in shutdown Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:30   ` Frank Li
2026-05-12 16:30     ` Frank Li
2026-05-12 12:17 ` [PATCH 6/8] i3c: master: Defer new-device registration out of DAA caller context Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:39   ` Frank Li
2026-05-12 16:39     ` Frank Li
2026-05-13  5:45     ` Adrian Hunter
2026-05-13  5:45       ` Adrian Hunter
2026-05-13 10:20       ` David Nyström
2026-05-13 10:20         ` David Nyström
2026-05-13 19:03       ` Frank Li
2026-05-13 19:03         ` Frank Li
2026-05-15 16:42         ` Adrian Hunter
2026-05-15 16:42           ` Adrian Hunter
2026-05-12 12:17 ` [PATCH 7/8] i3c: master: Export i3c_master_enec_disec_locked() Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:31   ` Frank Li [this message]
2026-05-12 16:31     ` Frank Li
2026-05-12 12:17 ` [PATCH 8/8] i3c: mipi-i3c-hci: Add Hot-Join support Adrian Hunter
2026-05-12 12:17   ` Adrian Hunter
2026-05-12 16:34   ` Frank Li
2026-05-12 16:34     ` Frank Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=agNV24RoAugbDU2m@lizhi-Precision-Tower-5810 \
    --to=frank.li@nxp.com \
    --cc=adrian.hunter@intel.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=linux-i3c@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.