From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=185.171.202.116 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794493883; b=tQsYwMIceOkzV4B/Yg9RGNQ/K6mWK/V5Z6uSDd2YLMs8zSfx0LwvOSkE/n/bg7mgcVGp vGB6aQB0xUOh4XhqUl7pBJLFz/RCcktLhKrd7ReErdkrkVARZCd7zsPRXT/P+bhLTkCBJ maSBBsw9E8AX05LUc3sx3bXZT5vywWKy2ooY9qC3ltzE0YbkrbkH4Dz2GJReiqH7odYVo tJqa2YRsA0IiLWVTIxa7MnkSwQxqq1tX8tnigkqTxlBFFwbmTJNAq8+3lXPKZsybjpn4e ywokt+K7oa4veYXk59HITnzVoO8SPgFL8rm9Ch/WzTsfLoxkQfG0+BEi83zOTJjqNEQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794493883; h=DMARC-Filter:Received:Received:Received:DKIM-Signature:From:To:Cc: Subject:Date:Message-ID:X-Mailer:In-Reply-To:References:MIME-Version: Content-Transfer-Encoding:X-Last-TLS-Session-Version; bh=D9gX7IQoFmiZn66NpC9/3hlVzyg/M0Vsll6oQ3O0knw=; b=DhZIKAY6Qpq9W+JdgMpDf+ox+jQtRxrOmAzGaS4ZqHCSvetjZ2QXrH2wGXH/L+TRKUGt iGYimec3cFaBbcVTYVwgL5/jGIDBLF4IFAQcR3hGzWfMSxUPzBqYtTaUP1yJ54dAzN55L hUWjNSFnjqNeF2dceoBsGoH0oYH72nTKl1pweHQZJBKF9GMfSG5oqobYIGgujWHv3hylI xSd4eo3cWMg4qgjtB78ZSKq+2J/BRB4IzypdHhqr5hQJTinhIjzuLvdmnLiRPaeguWZNI Jx1HZTYbKUm2OZvIxD3V9RlYMVpzwUkGYWUk4W6+2/1AcT86K5ayjuwPP9CzAfUeb4Q== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=dkim header.b=ibW11s8d; arc=none smtp.remote-ip=185.171.202.116 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF4A760703A0 for ; Thu, 12 Nov 2026 14:31:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org CF4A760703A0 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=dkim header.b=ibW11s8d Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id 0E4D2C79A9E; Thu, 12 Nov 2026 14:31:18 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id CD7D75FF85; Thu, 12 Nov 2026 14:31:15 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 13B5411BC1078; Thu, 12 Nov 2026 15:31:12 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1794493875; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=D9gX7IQoFmiZn66NpC9/3hlVzyg/M0Vsll6oQ3O0knw=; b=ibW11s8dlQJ90A845P0uya5S7PTvyFTUa4Qhwg0t2OBKWHChE9xM9n66FLuysfxNdOda0j qD9mJZ1cqD2uEmtFmTdls3lqKilgKwE0OlSuNJMe5MEgdC7dDQsk6ThTuWuKFaaP+8z7bZ k5H+X1wlJrWyA6pejiYybfIhftk8OH3NICRcXnJepBBishjJnMIlaPDZ4ivdez59j8XqvX bGeFdc0BA+IfugKKs4JqUq//a++CFCXCZKY5FtgYfZMGnVp/N/KrkQMuYEwaDz3aq1h/B5 KxorHkn/qdKGBIMsXQ1xGuA7sF6a6Q8jUfNx3QQiY6iGESsHxGOiaBmzjW/ICA== From: Paul Cercueil To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , Bharat Bhushan , Sunil Kovvuri Goutham , Tanmay Jagdale , Jisheng Zhang , George Cherian , stable@vger.kernel.org, Paul Cercueil Subject: [PATCH v3 2/6] spi: cadence-xspi: Reconfigure to STIG mode before SPI message Date: Thu, 12 Nov 2026 15:30:46 +0100 Message-ID: <20261112143050.53347-3-paul.cercueil@bootlin.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261112143050.53347-1-paul.cercueil@bootlin.com> References: <20261112143050.53347-1-paul.cercueil@bootlin.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Last-TLS-Session-Version: TLSv1.3 From: Tanmay Jagdale The .transfer_one_message() function uses the STIG mode, therefore the xSPI needs to be configured to STIG mode before starting any transfer. Without this, .transfer_one_message() simply won't work, at least on the CN10K SoC. Fixes: 931e389ded0f ("spi: cadence: Add Marvell xfer operation support") Cc: stable@vger.kernel.org Signed-off-by: Tanmay Jagdale Co-developed-by: Paul Cercueil Signed-off-by: Paul Cercueil --- v2: Adapt the code slightly to work on top of [1/6] v3: No change --- drivers/spi/spi-cadence-xspi.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/drivers/spi/spi-cadence-xspi.c b/drivers/spi/spi-cadence-xspi.c index a584a3c395d0..87b986a318f3 100644 --- a/drivers/spi/spi-cadence-xspi.c +++ b/drivers/spi/spi-cadence-xspi.c @@ -367,6 +367,20 @@ static int cdns_xspi_wait_for_controller_idle(struct cdns_xspi_dev *cdns_xspi) 100, 1000); } +static int cdns_xspi_set_stig_mode(struct cdns_xspi_dev *cdns_xspi) +{ + int ret; + + ret = cdns_xspi_wait_for_controller_idle(cdns_xspi); + if (ret < 0) + return -EIO; + + writel(FIELD_PREP(CDNS_XSPI_CTRL_WORK_MODE, CDNS_XSPI_WORK_MODE_STIG), + cdns_xspi->iobase + CDNS_XSPI_CTRL_CONFIG_REG); + + return 0; +} + static void cdns_xspi_trigger_command(struct cdns_xspi_dev *cdns_xspi, u32 cmd_regs[6]) { @@ -536,12 +550,9 @@ static int cdns_xspi_send_stig_command(struct cdns_xspi_dev *cdns_xspi, int ret; int dummybytes = op->dummy.nbytes; - ret = cdns_xspi_wait_for_controller_idle(cdns_xspi); - if (ret < 0) - return -EIO; - - writel(FIELD_PREP(CDNS_XSPI_CTRL_WORK_MODE, CDNS_XSPI_WORK_MODE_STIG), - cdns_xspi->iobase + CDNS_XSPI_CTRL_CONFIG_REG); + ret = cdns_xspi_set_stig_mode(cdns_xspi); + if (ret) + return ret; cdns_xspi->set_interrupts_handler(cdns_xspi, true); cdns_xspi->sdma_error = false; @@ -1112,7 +1123,13 @@ static int cdns_xspi_transfer_one_message_b0(struct spi_controller *controller, int current_transfer_len; int cs = spi_get_chipselect(spi, 0); int cs_change = 0; - int ret = -EIO; + int ret; + + ret = cdns_xspi_set_stig_mode(cdns_xspi); + if (ret) + goto out; + + ret = -EIO; /* Enable xfer state machine */ if (!cdns_xspi->xfer_in_progress) { -- 2.47.3