From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 666A13A6B6A for ; Mon, 4 May 2026 11:34:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777894447; cv=none; b=XaFwouUeCMFwl2kyXxuA4LDywFlsyjZQSH0nIBaZ97ICVrErCM0WfGyd+lwq7exTIpIBD52ewVa4TUBFltu8TYKFlIQ+mcd3+Az+J4k3N0KF+jVIA2NogvsP5G0xHlwagwuy0KSZaHYqiAUdqeK7kozwBktGgHPQNb1tBz8ZALo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777894447; c=relaxed/simple; bh=teWJz0OV8eS9QHdCuehQXJXiHZ/gJsf/+8wEIwLhtIE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XsXy/iahwo/XD0kR7MCN97vuB2MDnYHBu3QTg8AytDbQfjX/kxidNhP+2mJypDzq1kPcbcS/QtpegeZvISUK8dEg2yF6xlbile2Y7frQDd5jLEh+eTCvFuwUkwvt00glYn7p9kaO64HViLo6uH7T9H0dJ/8B+KNgEcmwlRYPcps= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=SYdgNkd5; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="SYdgNkd5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1777894445; x=1809430445; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=teWJz0OV8eS9QHdCuehQXJXiHZ/gJsf/+8wEIwLhtIE=; b=SYdgNkd5qNhGU4igFceX1AbBzqN9foqZ8+BxqsNdRjMoDqSGJdJ5sx6C SK38LR2x6IVw08G02hwru7krlN5x57B+rqRlGAwdTF+2bRNbXXieUIU3H ul0aZWKD5NulrcXspOVkp2S2cafuaUSK9YdpQArtE+kY8sbq1P46VHymW Ukc5Lt8dEeh9OjkFnd81PTu1Xj7lDOUiP3IGQwWg/Re3wPXRdNWfefect Lh+QKmL5hWtfbfzlFR2w91ghyAkl1FfDs4OrTXmo6yFX2GUT9ZDbFOnlu NY2Q1uxNsiMS9wGBD6xlHMvHvnFaOF9mxWQPj67hy5e3AYH7IWJ5xbuMr A==; X-CSE-ConnectionGUID: a6damoHFQoSAjMNBhDMw4g== X-CSE-MsgGUID: 3K5JVuvIRjag8gKAoyNgdg== X-IronPort-AV: E=McAfee;i="6800,10657,11775"; a="81315138" X-IronPort-AV: E=Sophos;i="6.23,215,1770624000"; d="scan'208";a="81315138" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 May 2026 04:34:05 -0700 X-CSE-ConnectionGUID: HUKmFH1vTRSpfOIvS0ncJQ== X-CSE-MsgGUID: HasUU7NGROKR5FngHOQvNA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,215,1770624000"; d="scan'208";a="240478189" Received: from hrotuna-mobl2.ger.corp.intel.com (HELO ahunter6-desk) ([10.245.245.92]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 May 2026 04:34:03 -0700 From: Adrian Hunter To: alexandre.belloni@bootlin.com Cc: Frank.Li@nxp.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH V3 01/16] i3c: mipi-i3c-hci: Fix suspend behavior when bus disable falls back to software reset Date: Mon, 4 May 2026 14:33:37 +0300 Message-ID: <20260504113352.38490-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260504113352.38490-1-adrian.hunter@intel.com> References: <20260504113352.38490-1-adrian.hunter@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: 8bit Software reset was introduced as a fallback if bus disable failed. The change was made in 2 places: the cleanup path and the suspend path. For the cleanup path (i3c_hci_bus_cleanup()), after software reset the function continues to do cleanup for the current I/O mode. For the suspend path (i3c_hci_rpm_suspend()), after software reset the function returns early. However software reset does not reset any Ring Headers in the Host Controller, so returning early is not the right thing to do. Instead, continue to call suspend for the current I/O mode, which for DMA mode will reset any Ring Headers. Note, although Ring Headers should not be active at this stage, performing this reset follows the procedure defined by the specification and keeps the suspend path consistent with the cleanup path. Note also, i3c_hci_sync_irq_inactive() is still called via the PIO and DMA hci->io->suspend() callbacks. Always return 0 because the device is quiesced as much as possible and returning a negative error code would unnecessarily prevent system suspend. Fixes: 9a258d1336f7 ("i3c: mipi-i3c-hci: Fallback to software reset when bus disable fails") Signed-off-by: Adrian Hunter Reviewed-by: Frank Li --- Changes in V3: Add Frank's rev'd-by Changes in V2: Always return 0 from suspend callback Amend commit message drivers/i3c/master/mipi-i3c-hci/core.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c index b781dbed2165..afb0764b5e1f 100644 --- a/drivers/i3c/master/mipi-i3c-hci/core.c +++ b/drivers/i3c/master/mipi-i3c-hci/core.c @@ -762,15 +762,10 @@ static int i3c_hci_reset_and_init(struct i3c_hci *hci) int i3c_hci_rpm_suspend(struct device *dev) { struct i3c_hci *hci = dev_get_drvdata(dev); - int ret; - ret = i3c_hci_bus_disable(hci); - if (ret) { - /* Fall back to software reset to disable the bus */ - ret = i3c_hci_software_reset(hci); - i3c_hci_sync_irq_inactive(hci); - return ret; - } + /* Fall back to software reset to disable the bus */ + if (i3c_hci_bus_disable(hci)) + i3c_hci_software_reset(hci); hci->io->suspend(hci); -- 2.51.0