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,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 D369CC433ED for ; Thu, 20 May 2021 10:08:42 +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 8DB7A61D5A for ; Thu, 20 May 2021 10:08:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8DB7A61D5A 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:MIME-Version:Message-ID:Subject:To:From:Date: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=JiQiSUrs3YiP2vIiwRFiiAC9fiD+kBW3Twes1M+07HE=; b=EM6fv6Tvv09wTG HrMYiyy417aovrBf6QCgKLE04cGXqxx+79WtfekHApl5jpzgvKZsElcfccJANsBxM76ICoJ9ladQp Ljm/09ok7wyC1cdkZAr8zQBOHJErT23Cx6Bthx/hIN6wk1ggtLDyiCwBHQV0At6EWQcEJFZMJeJLl sE2HObwiaF54vq/SEm9hlks1fn/xuTwQ4DVQ3Z750sgx1AUxDhJKsU94dJi+3dSckowaOmSgfFFN1 44LBVVtDCieZvazevfW1T49s++dFZ5wVk/mn+TDvMTnNCv5CR+Mcq4MPsoO8yn7p3YcWnmL9mwp+L NSVPoImTjdW6Kyk95djA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljfa7-0004UP-9v; Thu, 20 May 2021 10:07:07 +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 1ljfa4-0004U6-Lt for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 10:07:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Type:MIME-Version:Message-ID: Subject:To:From:Date:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=vuHkKg1MBKlgquQRzGuBIfvPrxp4ghpN1xJ4YqiPUJ0=; b=xOWUFCRs2fGzvcF6UpUfUZTHkz 4Pb9FS0vhUSkXdnalWQxFRpwOxbNKMaLLpLqwLEzIgAvTNzOMn5EQGx4QPUvyQhvx0t6Y+yp1/i1M cTLZXQncxS5KtADBZ2GKHpBkoACjUkpW/MTWhpuId92Q508v3PjNjdxh0s/I4MhbpEiR6MGwWrHqz B6vTZ9Bz9Sd5kuzS56kbfC6PAp6UI1JIR1HhRXImMoK6deDuuFQwlppU3ubPY8+He79FCoU+8Ukqw 5A9pBmBE7xbmsV5yOTEnCOK2bMySJnWtkMsIj7VjnOOzsfdhnb93kTZg1ppSk3wHO95n80u9KBJEI 4aQ03GuA==; Received: from tux.runtux.com ([176.9.82.136]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljfa1-00G9Md-TW for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 10:07:03 +0000 Received: from localhost (localhost [127.0.0.1]) by tux.runtux.com (Postfix) with ESMTP id 90D2F6F0C7; Thu, 20 May 2021 12:06:58 +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 SlQcJyNvDttS; Thu, 20 May 2021 12:06:57 +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 099B66EFFE; Thu, 20 May 2021 12:06:57 +0200 (CEST) Received: by bee.priv.zoo (Postfix, from userid 1002) id 8D429471; Thu, 20 May 2021 12:06:56 +0200 (CEST) Date: Thu, 20 May 2021 12:06:56 +0200 From: Ralf Schlatterbeck To: 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: <20210520100656.rgkdexdvrddt3upy@runtux.com> MIME-Version: 1.0 Content-Disposition: inline X-ray: beware User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_030702_125638_E0E59D03 X-CRM114-Status: GOOD ( 12.98 ) 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 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: Ralf Schlatterbeck Signed-off-by: Mirko Vogt --- 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..2db075c87f51 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 */ + sun6i_spi_write(sspi, SUN6I_GBL_CTL_REG, + sun6i_spi_read(sspi, SUN6I_GBL_CTL_REG) + | SUN6I_GBL_CTL_BUS_ENABLE); /* 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