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

Frank Li Frank.Li at oss.nxp.com
Mon Jun 8 10:33:06 PDT 2026


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 <adrian.hunter at intel.com>
> ---

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

>
>
> 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
>



More information about the linux-i3c mailing list