Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp716637ybt; Fri, 19 Jun 2020 11:52:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxPXW0Z1NsRdU+nkrtzRn3Rbwoe8rgC7n+HRbWDKdf9Bah6/mM7F6OyoxPpjLc5wPg7QvN3 X-Received: by 2002:a05:6402:1d0d:: with SMTP id dg13mr4674478edb.146.1592592730257; Fri, 19 Jun 2020 11:52:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592592730; cv=none; d=google.com; s=arc-20160816; b=DngBu51JLcJCM0QHiQ59PVPDaNhNsnPPw/trpzbfz7FpMU22l8paR89X2X1a7K+Swe ewbStHShGxHX9UhL8YYfi9mSXITE6e9+T4Xp1Er2uGbSRzleXJcRvLeeKSvDjH3iZzPH MVJ6QJL+8buJitcDtfvvkVxcPghF5AtAGExCXJc6Vscp2sbopLFvxf3pzfCvh+rA1wHo KmQvalV/S/VAOrsqVuaPFiCJcU6um7VddmtLFwhnF1cu5E2BvvaUDHav1r8spr1n5JaG RblLJcp5USEEwYGGeYpPvMW25wrzg/zKwMut6F4Hvt3HNmtJDnPBkhrBz4bz0S4YfcPM 3siw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=aVIpVwe6CrsGRSVRjPvt/p5u5tXi50l2420cU6ioyVM=; b=hL8GQ2fNgsQeV7oamJwPmgc/O1obv5u2JlEejzVYXhNbNAf21Khw5lnbCOeuGRJyGd dzWcjD1iOtNeqaVKr6SGCdmoXFFt2er9gy0ayxTTf/bLtmvsaxeyuwUqw+o6wEJcBYlH n4ozvX+ynxiFdZrZHcizY9EwU6cn1fv0nsXo/xa/nVtTQ6gY78bayD93QU9PAfEk40Mr UZumOMOSghU1rNhkQ38NCbk7i/nbKEEX/5/RUMAYYoY/2VL9802Gk2hXLC6Shoe7bbyx E0brELBQRCnNMx45KgzDwp1CTN2m+N9vofZt/1uzbhUphC7qBI41C8WCY8R83HGdiNTI Ff1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PG4Dl7Jv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d20si4482621edr.177.2020.06.19.11.51.48; Fri, 19 Jun 2020 11:52:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PG4Dl7Jv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388619AbgFSOo4 (ORCPT + 99 others); Fri, 19 Jun 2020 10:44:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:35896 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388586AbgFSOog (ORCPT ); Fri, 19 Jun 2020 10:44:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9C66921707; Fri, 19 Jun 2020 14:44:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592577876; bh=lvQ+bcB6cEpRPiSbA/wKi1GRebdzeNiwC254qZjqBME=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PG4Dl7Jv7XF7Ku1vQEp1Byhm4RsCyYOLcS9hiZ95fd0hO4ZTqRqQvE3ykNXrUYruT B2UVRFHgmw+1B3j1+/RuQ/3sZBFuuDDCPwG46Rz9WV2fEbzIgXQbmiXeuposI/g9Qg DPT/fCeNDdpcoy7HFVtDZRfam1kWKXVUbnlcplgA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Serge Semin , Georgy Vlasov , Ramil Zaripov , Alexey Malahov , Thomas Bogendoerfer , Arnd Bergmann , Andy Shevchenko , Feng Tang , Rob Herring , linux-mips@vger.kernel.org, devicetree@vger.kernel.org, Mark Brown , Sasha Levin Subject: [PATCH 4.9 095/128] spi: dw: Return any value retrieved from the dma_transfer callback Date: Fri, 19 Jun 2020 16:33:09 +0200 Message-Id: <20200619141625.159284957@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141620.148019466@linuxfoundation.org> References: <20200619141620.148019466@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Serge Semin [ Upstream commit f0410bbf7d0fb80149e3b17d11d31f5b5197873e ] DW APB SSI DMA-part of the driver may need to perform the requested SPI-transfer synchronously. In that case the dma_transfer() callback will return 0 as a marker of the SPI transfer being finished so the SPI core doesn't need to wait and may proceed with the SPI message trasnfers pumping procedure. This will be needed to fix the problem when DMA transactions are finished, but there is still data left in the SPI Tx/Rx FIFOs being sent/received. But for now make dma_transfer to return 1 as the normal dw_spi_transfer_one() method. Signed-off-by: Serge Semin Cc: Georgy Vlasov Cc: Ramil Zaripov Cc: Alexey Malahov Cc: Thomas Bogendoerfer Cc: Arnd Bergmann Cc: Andy Shevchenko Cc: Feng Tang Cc: Rob Herring Cc: linux-mips@vger.kernel.org Cc: devicetree@vger.kernel.org Link: https://lore.kernel.org/r/20200529131205.31838-3-Sergey.Semin@baikalelectronics.ru Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- drivers/spi/spi-dw-mid.c | 2 +- drivers/spi/spi-dw.c | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/spi/spi-dw-mid.c b/drivers/spi/spi-dw-mid.c index fe0ca3848d35..c079ab36275f 100644 --- a/drivers/spi/spi-dw-mid.c +++ b/drivers/spi/spi-dw-mid.c @@ -274,7 +274,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, struct spi_transfer *xfer) dma_async_issue_pending(dws->txchan); } - return 0; + return 1; } static void mid_spi_dma_stop(struct dw_spi *dws) diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index c5a2f369941c..91f44e3e1930 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c @@ -384,11 +384,8 @@ static int dw_spi_transfer_one(struct spi_master *master, spi_enable_chip(dws, 1); - if (dws->dma_mapped) { - ret = dws->dma_ops->dma_transfer(dws, transfer); - if (ret < 0) - return ret; - } + if (dws->dma_mapped) + return dws->dma_ops->dma_transfer(dws, transfer); if (chip->poll_mode) return poll_transfer(dws); -- 2.25.1