From patchwork Mon Aug 27 13:18:41 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Knut Wohlrab X-Patchwork-Id: 1377441 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id B5B603FC66 for ; Mon, 27 Aug 2012 13:25:23 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1T5zGT-000626-Fs; Mon, 27 Aug 2012 13:22:01 +0000 Received: from smtp2-v.fe.bosch.de ([139.15.237.6]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1T5zGP-00061s-Dd for linux-arm-kernel@lists.infradead.org; Mon, 27 Aug 2012 13:21:58 +0000 Received: from vsmta13.fe.internet.bosch.com (unknown [10.4.98.30]) by imta23.fe.bosch.de (Postfix) with ESMTP id A480328C0218; Mon, 27 Aug 2012 15:21:42 +0200 (CEST) Received: from localhost (vsgw2.fe.internet.bosch.com [10.4.98.13]) by vsmta13.fe.internet.bosch.com (Postfix) with SMTP id B07013840671; Mon, 27 Aug 2012 15:21:42 +0200 (CEST) Received: from [10.34.220.32] (10.35.28.73) by fe-hub05.de.bosch.com (10.3.153.64) with Microsoft SMTP Server id 8.3.264.0; Mon, 27 Aug 2012 15:21:39 +0200 Message-ID: <503B73B1.9010801@de.bosch.com> Date: Mon, 27 Aug 2012 15:18:41 +0200 From: Knut Wohlrab User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 MIME-Version: 1.0 To: "linux-arm-kernel@lists.infradead.org" , Subject: [PATCH] SPI: IMX5/6: Set inactive state of SPI clock (SCLK CTL) according to SPI clock polarity X-Spam-Note: CRM114 invocation failed X-Spam-Score: -6.9 (------) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-6.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/, high trust [139.15.237.6 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org For our SPI device we need a SPI clock with active low polarity and a a high inactive state. We add the setting of the inactive state ECSPIx_CONFIGREG:SCLK CTL according to the clock polarity ECSPIx_CONFIGREG:SCLK POL: Device tree _without_ "spi-cpol" = 0 = clock active high polarity = inactive state low Device tree with "spi-cpol" = 1 = clock active low polarity = inactive state high Are there real world examples for a need of an individual setting of clock polarity/inactive state? From 84b2a00868e4775987dc8ed11f9372eea578f7c3 Mon Sep 17 00:00:00 2001 From: Knut Wohlrab Date: Mon, 27 Aug 2012 13:54:57 +0200 Subject: [PATCH] SPI IMX: Set inactive state of SPI clock (SCLK CTL) according to SPI clock polarity Signed-off-by: Knut Wohlrab --- drivers/spi/spi-imx.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index e834ff8..d64655b 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c @@ -197,6 +197,7 @@ static unsigned int spi_imx_clkdiv_2(unsigned int fin, #define MX51_ECSPI_CONFIG_SCLKPOL(cs) (1 << ((cs) + 4)) #define MX51_ECSPI_CONFIG_SBBCTRL(cs) (1 << ((cs) + 8)) #define MX51_ECSPI_CONFIG_SSBPOL(cs) (1 << ((cs) + 12)) +#define MX51_ECSPI_CONFIG_SCLKCTL(cs) (1 << ((cs) + 20)) #define MX51_ECSPI_INT 0x10 #define MX51_ECSPI_INT_TEEN (1 << 0) @@ -287,9 +288,10 @@ static int __maybe_unused mx51_ecspi_config(struct spi_imx_data *spi_imx, if (config->mode & SPI_CPHA) cfg |= MX51_ECSPI_CONFIG_SCLKPHA(config->cs); - if (config->mode & SPI_CPOL) + if (config->mode & SPI_CPOL) { cfg |= MX51_ECSPI_CONFIG_SCLKPOL(config->cs); - + cfg |= MX51_ECSPI_CONFIG_SCLKCTL(config->cs); + } if (config->mode & SPI_CS_HIGH) cfg |= MX51_ECSPI_CONFIG_SSBPOL(config->cs); -- 1.7.0.4