Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp773738ybt; Fri, 19 Jun 2020 13:24:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3PTxMnf4aVl341700w9at96q1Z3WyOV2rqkrJU0wUjrlGz0V0SURD0Jsk+XqXH8wJwBpA X-Received: by 2002:a05:6402:1767:: with SMTP id da7mr5247805edb.90.1592598299020; Fri, 19 Jun 2020 13:24:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592598299; cv=none; d=google.com; s=arc-20160816; b=m+rj+ETB/AIOijurZOeJfxgty81h+s54mVWT5tBquK7b+pL8YNvhf6rmj0BBsb38Hl f6jzft5JvXxUeR8edG50E9LVrCnXj/4Yfm4TKiV0iHWvnYmSvotNswu9E7Ao62zCaMy+ aQSEEu5e9v7IA8JNZEFQ4c3WmzJbEZkyNw/yoUTyNhaAHX22awhz/Fq3E05M5jXc3Yvs yYaNpwW2ERLNsyC9LkG2sPuuXq6I7rYfbAdST6655cOf1yV1/ifoJFKZrRaRNRwdMIK2 tm1RxRPMrXMmRuW8sgtHOrAXRfrTK3Uei4Kq4wu9ODfnHC73vjKcOfp0+oyc0bhBnRky y6/A== 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=iM/xbNqKd2aK05YTv00Yd8FU7dL/RtbiTCikRh5Jegk=; b=CfiKfcUbbpfBobZOTisE8zsu4qUPuHI4RCTm/1RozCJ3KtDf0tDhI1Za0gTE+bnwCH u1f0i4VNGbRA/4wzWc33yR9wXtMlYbSHiqtLF5fofCu5+Hwro4QDAKsdMIY38xcsV2tA ZSPfUeiqyqdBHINjGLwQRrbED6Rgj1y8lfyYlbGG6HmkxqKSHC7syxx48Gck1iJ5cIcQ 2uSvN4yy+MXic/8Ya+xQvQZddN/ZDI2esQX8dy/iWosjpAkFz6ZzAuGzD1ks+Ryvp2fa GH/Tdyfqc9pIgGjuFlY/mly9vkUnXzHPNWetZ4aS6f+NXqPF2nQHZaBj86zeIaJpUTLZ 1G/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=e0QJxnrT; 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 a11si4736343eds.271.2020.06.19.13.24.35; Fri, 19 Jun 2020 13:24:59 -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=e0QJxnrT; 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 S2389375AbgFSOux (ORCPT + 99 others); Fri, 19 Jun 2020 10:50:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:43580 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389311AbgFSOuf (ORCPT ); Fri, 19 Jun 2020 10:50:35 -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 417B120DD4; Fri, 19 Jun 2020 14:50:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592578235; bh=zwlOws2GadoztOB2aiNuInG59VzfDeL+ZhRhdn78KxI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e0QJxnrTIWGMl+dzxSYQnG1KxK/T6/JhYSl2sb9RZU4Xh0SBLDmXuGrTPdkfOf0JV aoKyUrur3P6ZGJg9dbcU3H13HiGXfUgx9v517e6dBDnz0W2Md0hsVXjLuXtE4bhFBS MWyQvm6gqLZqDHHJkhkIeQ8dfUJiHux5ahGzTM0U= 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.14 136/190] spi: dw: Return any value retrieved from the dma_transfer callback Date: Fri, 19 Jun 2020 16:33:01 +0200 Message-Id: <20200619141640.426662883@linuxfoundation.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200619141633.446429600@linuxfoundation.org> References: <20200619141633.446429600@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 c4244d2f1ee3..cb268cc4ba2b 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 9fcee7273a79..d2428a8809c1 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