From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8659FC04FF3 for ; Fri, 21 May 2021 20:21:19 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 536AF61164 for ; Fri, 21 May 2021 20:21:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 536AF61164 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=runtux.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Gf7ZVo/3ZWjCEXnc7o/+CVIzYNj62StG2lvOKr0pA5c=; b=S//8lahfTJzG6ORL7XXKLv/17j hM/d3JYJvZoTE2LXG5HGOSvBWcrMV+RCvy9srnR0KT2cFzTlkjkGkG8h8V8Ncb9IvX+nYForBN8qU IlDzkvH86Uh4PmCX1Eyra8OI1nBCwEzofiGw9+GcB6kPMZUTcTd4UdreU7QoKE69XA8zxHuNsX803 Dr5O9ELlqglh/uNxQdqm5/ClO9FDnwxfnG0jeRdxAVub7KEOMD4nMYkJ5lDAXbBNbZb3L5lE/v8Ay 8QpSf9T08sfyWUUT9c+IgYqnnCsSihOLutxh7P1ThllikwQ7bORs0KkNIycqaVwmHp49lZ1wqDXOA 3Hl0sSqA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lkBcB-0010go-Nu; Fri, 21 May 2021 20:19:23 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lkBc8-0010gJ-6z for linux-arm-kernel@desiato.infradead.org; Fri, 21 May 2021 20:19:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=Sdba+QsRi5D+9K59pj6sZQeyS78V/gkF6zH3cr02ETI=; b=KrFCdKNiy7DiR7ZOm0Maf+e6TL yz9LdtTftL+o0ssurvqYuc0X1OfXn5tlIjlpfJftaiEYx3BXcx6bPRaMPnDwTxMja4eEDc11qGctu Rxuk+0YwLDT2E4832SB2T8rY3cmAsQ8tC1d5Lo0eb+y9Oa+73xcKJ+I9+SaOhHybBTN+W5VBdKMwv purYDJZnhCi78vQN1a9orX6EubAYAp9cANq2147Ej/Tsvi4dJ+etzY94tRcBrsp403Z12Nz/v9jpE xMvF2Oh1vZjrQ4vrqxccL718UmnokBYDxxdgYArsLSGcXQNgKx/NIJT9Cs96C5CyWrLkGAQHOwhYM qWZDCLbQ==; Received: from tux.runtux.com ([176.9.82.136]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lkBc5-00HP8N-DK for linux-arm-kernel@lists.infradead.org; Fri, 21 May 2021 20:19:18 +0000 Received: from localhost (localhost [127.0.0.1]) by tux.runtux.com (Postfix) with ESMTP id DE1E96F00A; Fri, 21 May 2021 22:19:15 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at tux.runtux.com Received: from tux.runtux.com ([127.0.0.1]) by localhost (tux2.runtux.com [127.0.0.1]) (amavisd-new, port 10026) with LMTP id idEQAUquvFTc; Fri, 21 May 2021 22:19:14 +0200 (CEST) Received: from bee.priv.zoo (62-99-217-90.static.upcbusiness.at [62.99.217.90]) (Authenticated sender: postmaster@runtux.com) by tux.runtux.com (Postfix) with ESMTPSA id EBA096EF63; Fri, 21 May 2021 22:19:13 +0200 (CEST) Received: by bee.priv.zoo (Postfix, from userid 1002) id 9233046E; Fri, 21 May 2021 22:19:13 +0200 (CEST) Date: Fri, 21 May 2021 22:19:13 +0200 From: Ralf Schlatterbeck To: Andre Przywara Cc: Mark Brown , Maxime Ripard , Chen-Yu Tsai , Jernej Skrabec , linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Mirko Vogt Subject: [PATCH 1/1] spi-sun6i: Fix chipselect/clock bug Message-ID: <20210521201913.2gapcmrzynxekro7@runtux.com> References: <20210520100656.rgkdexdvrddt3upy@runtux.com> <20210521173011.1c602682@slackpad.fritz.box> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210521173011.1c602682@slackpad.fritz.box> X-ray: beware User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210521_131917_625090_BEB0292D X-CRM114-Status: GOOD ( 13.49 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Mirko Vogt The current sun6i SPI implementation initializes the transfer too early, resulting in SCK going high before the transfer. When using an additional (gpio) chipselect with sun6i, the chipselect is asserted at a time when clock is high, making the SPI transfer fail. This is due to SUN6I_GBL_CTL_BUS_ENABLE being written into SUN6I_GBL_CTL_REG at an early stage. Moving that to the transfer function, hence, right before the transfer starts, mitigates that problem. Signed-off-by: Mirko Vogt Signed-off-by: Ralf Schlatterbeck --- Updated patch with suggested improvements by Andre Przywara For oscilloscope screenshots with/without the patch, see my blog post https://blog.runtux.com/posts/2019/04/18/ or the discussion in the armbian forum at https://forum.armbian.com/topic/4330-spi-gpio-chip-select-support/ (my logo there is a penguin). drivers/spi/spi-sun6i.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c index cc8401980125..23ad052528db 100644 --- a/drivers/spi/spi-sun6i.c +++ b/drivers/spi/spi-sun6i.c @@ -379,6 +379,10 @@ static int sun6i_spi_transfer_one(struct spi_master *master, } sun6i_spi_write(sspi, SUN6I_CLK_CTL_REG, reg); + /* Finally enable the bus - doing so before might raise SCK to HIGH */ + reg = sun6i_spi_read(sspi, SUN6I_GBL_CTL_REG); + reg |= SUN6I_GBL_CTL_BUS_ENABLE; + sun6i_spi_write(sspi, SUN6I_GBL_CTL_REG, reg); /* Setup the transfer now... */ if (sspi->tx_buf) @@ -504,7 +508,7 @@ static int sun6i_spi_runtime_resume(struct device *dev) } sun6i_spi_write(sspi, SUN6I_GBL_CTL_REG, - SUN6I_GBL_CTL_BUS_ENABLE | SUN6I_GBL_CTL_MASTER | SUN6I_GBL_CTL_TP); + SUN6I_GBL_CTL_MASTER | SUN6I_GBL_CTL_TP); return 0; -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel