From patchwork Tue Apr 5 12:33:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Vostrikov X-Patchwork-Id: 8751171 Return-Path: X-Original-To: patchwork-linux-spi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 20F5AC0553 for ; Tue, 5 Apr 2016 12:33:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3D5792038E for ; Tue, 5 Apr 2016 12:33:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5C66A20382 for ; Tue, 5 Apr 2016 12:33:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758140AbcDEMdv (ORCPT ); Tue, 5 Apr 2016 08:33:51 -0400 Received: from mail-lf0-f50.google.com ([209.85.215.50]:35333 "EHLO mail-lf0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758079AbcDEMdu (ORCPT ); Tue, 5 Apr 2016 08:33:50 -0400 Received: by mail-lf0-f50.google.com with SMTP id c126so9383170lfb.2 for ; Tue, 05 Apr 2016 05:33:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=bDxVbZhCU6EjnpZocsMPYESSS1ED9y/hq7KADEGjuxE=; b=0ufn+267GPM/9ImXESTe3zvfxmG8mW4Go2prHthCx184c1hyKC7/vAVrENlZtPLg9Y SQP5KJeP22BsHdeD6YP0hzDPTTr+wEFW6vFYxrpTYgALywUjbTPiEj25x178WhhlABWt WZP9LEazeG436F9ofzoVBFYRWH1EW/1gxEo5C1mdp8cou46JHnuEf/TMB/cC2fnl5GJ4 4y3Dr+i0d9cZ/b72SDTSD6nBjt+M9AFYMAeBKXHE0wttp2aEOpzDusztRdxV/cYHZtyo YNr2kQIvmyD/izEyTqWdQXKKyBFnYXjEAZK3pNadOJovqlWXV6DrhlCne68Ry8dKEoMU zsCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=bDxVbZhCU6EjnpZocsMPYESSS1ED9y/hq7KADEGjuxE=; b=c6gXP/P19o9Q7YBfvg5IYBwUFtrrufPht6wQ6aWXQ8OPX2CDLBNCUmOKtwbWKPjrQp pMCH8W/TknaNUuSS8mjD7B4eLc0tY/HpO6nbVpfFrNserk1e/xddYey91Gcp0ilcK4+8 XkO3zJs2mFru9tPlwYt4fZoH24XE8zpKNjwydaFu45EENFitcvvY/AkC/d+QbRkLnXGa 87AaswCTKtHcJjNEOAfo5vjR2TIEmDeiPxJ85xuoakAek42FmDr9pC2JSjOxfZnEEql4 +g9sUN3jhg6D/FroQtx26ubsAge9+x3iQr+5t+9bjCZw9a06QxF9JoVvRGOjojsGGBkH 2pQA== X-Gm-Message-State: AD7BkJLIgxzEyTkyTpBk/YDUujHWrlz0WownE9KkRTim1fMLKvWq3PKo5IqCYh6v3V0vlQ== X-Received: by 10.25.147.202 with SMTP id v193mr11041104lfd.162.1459859628640; Tue, 05 Apr 2016 05:33:48 -0700 (PDT) Received: from cogentembedded.com (178-16-155-142.obit.ru. [178.16.155.142]) by smtp.gmail.com with ESMTPSA id i6sm306638lbc.8.2016.04.05.05.33.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 05 Apr 2016 05:33:48 -0700 (PDT) From: Andrey Vostrikov To: Mark Brown , linux-spi@vger.kernel.org Cc: Andrey Vostrikov Subject: [PATCH] spi: spi-fsl-dspi: Fix cs_change handling in message transfer Date: Tue, 5 Apr 2016 15:33:14 +0300 Message-Id: <1459859594-3414-1-git-send-email-andrey.vostrikov@cogentembedded.com> X-Mailer: git-send-email 2.1.4 Sender: linux-spi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-spi@vger.kernel.org X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP There are use cases when chip select should be triggered between transfers in single SPI message. Current implementation does this only on last transfer in message ignoring cs_change value provided in current transfer. Signed-off-by: Andrey Vostrikov --- drivers/spi/spi-fsl-dspi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index 39412c9..c1a2d74 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -385,8 +385,8 @@ static int dspi_transfer_one_message(struct spi_master *master, dspi->cur_chip = spi_get_ctldata(spi); dspi->cs = spi->chip_select; dspi->cs_change = 0; - if (dspi->cur_transfer->transfer_list.next - == &dspi->cur_msg->transfers) + if (list_is_last(&dspi->cur_transfer->transfer_list, + &dspi->cur_msg->transfers) || transfer->cs_change) dspi->cs_change = 1; dspi->void_write_data = dspi->cur_chip->void_write_data;