Re: [PATCH V2 2/7] i3c: mipi-i3c-hci: Ignore DISEC failures when disabling IBIs

Frank Li <[email protected]>
Newsgroups org.infradead.lists.linux-i3c,org.kernel.vger.linux-kernel
Message-ID <aib80opvhKCILTKr@lizhi-Precision-Tower-5810>
On Mon, Jun 08, 2026 at 10:57:55AM +0300, Adrian Hunter wrote:
> Disabling IBIs currently returns the result of the DISEC CCC, causing
> i3c_hci_disable_ibi() to fail if the transfer errors out.
>
> However, the controller has already been programmed to reject IBIs by
> setting DAT_0_SIR_REJECT, so the target’s IBIs are effectively disabled
> from the host side regardless of the outcome of the DISEC command.  At
> this point, teardown of the IBI infrastructure can safely proceed even
> if DISEC fails.
>
> Note, from then on, the MIPI I3C HCI not only NACKs the target's IBI but
> automatically sends another DISEC command.
>
> Make i3c_hci_disable_ibi() resilient by ignoring the return value of
> i3c_master_disec_locked() and always returning success.
>
> Signed-off-by: Adrian Hunter <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>
>
> Changes in V2:
>
> 	Re-base due to changes in previous patch.
>
>
>  drivers/i3c/master/mipi-i3c-hci/core.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index 1e1f05aff092..fffbc1775ef9 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/core.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c
> @@ -697,7 +697,13 @@ static int i3c_hci_disable_ibi(struct i3c_dev_desc *dev)
>  	struct i3c_hci *hci = to_i3c_hci(m);
>
>  	__i3c_hci_disable_ibi(hci, dev);
> -	return i3c_master_disec_locked(m, dev->info.dyn_addr, I3C_CCC_EVENT_SIR);
> +	/*
> +	 * The DAT entry is now set to NACK and DISEC this target's IBIs, so
> +	 * the IBI teardown can proceed even if DISEC below fails, so ignore
> +	 * errors.
> +	 */
> +	i3c_master_disec_locked(m, dev->info.dyn_addr, I3C_CCC_EVENT_SIR);
> +	return 0;
>  }
>
>  static void i3c_hci_recycle_ibi_slot(struct i3c_dev_desc *dev,
> --
> 2.51.0
>

-- 
linux-i3c mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-i3c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.