From patchwork Tue Dec 24 11:40:47 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 3401931 Return-Path: X-Original-To: patchwork-linux-spi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 86A529F314 for ; Tue, 24 Dec 2013 11:41:35 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7B7CA205FA for ; Tue, 24 Dec 2013 11:41:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A0464205B5 for ; Tue, 24 Dec 2013 11:41:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752198Ab3LXLl0 (ORCPT ); Tue, 24 Dec 2013 06:41:26 -0500 Received: from jacques.telenet-ops.be ([195.130.132.50]:40898 "EHLO jacques.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752177Ab3LXLlZ (ORCPT ); Tue, 24 Dec 2013 06:41:25 -0500 Received: from ayla.of.borg ([84.193.72.141]) by jacques.telenet-ops.be with bizsmtp id 5PhQ1n01932ts5g0JPhQXV; Tue, 24 Dec 2013 12:41:24 +0100 Received: from geert by ayla.of.borg with local (Exim 4.76) (envelope-from ) id 1VvQMW-0000qs-HJ; Tue, 24 Dec 2013 12:41:24 +0100 From: Geert Uytterhoeven To: linux-spi@vger.kernel.org Cc: linux-sh@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 7/8] spi: rspi: Add support for specifying CPHA/CPOL Date: Tue, 24 Dec 2013 12:40:47 +0100 Message-Id: <1387885248-28425-8-git-send-email-geert+renesas@linux-m68k.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1387885248-28425-1-git-send-email-geert+renesas@linux-m68k.org> References: <1387885248-28425-1-git-send-email-geert+renesas@linux-m68k.org> 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.4 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable 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 Add support for specifying the SPI clock phase and polarity, based on the SDK reference code. Signed-off-by: Geert Uytterhoeven Acked-by: Laurent Pinchart --- drivers/spi/spi-rspi.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c index 34674fe6df5d..850025278519 100644 --- a/drivers/spi/spi-rspi.c +++ b/drivers/spi/spi-rspi.c @@ -181,6 +181,7 @@ struct rspi_data { u8 spsr; u8 spdcr; u8 data_width; + u16 spcmd; int irq[MAX_NUM_IRQ]; unsigned int numirq; const struct spi_ops *ops; @@ -328,7 +329,7 @@ static int rspi_set_config_register(const struct rspi_data *rspi, rspi_write8(rspi, 0x00, RSPI_SPCR2); /* Sets SPCMD */ - rspi_write16(rspi, SPCMD_SPB_8_TO_16(access_size) | SPCMD_SSLKP, + rspi_write16(rspi, SPCMD_SPB_8_TO_16(access_size) | rspi->spcmd, RSPI_SPCMD0); /* Sets RSPI mode */ @@ -383,7 +384,7 @@ static int qspi_set_config_register(const struct rspi_data *rspi, else spcmd = SPCMD_SPB_32BIT; - spcmd |= SPCMD_SCKDEN | SPCMD_SLNDEN | SPCMD_SSLKP | SPCMD_SPNDEN; + spcmd |= SPCMD_SCKDEN | SPCMD_SLNDEN | rspi->spcmd | SPCMD_SPNDEN; /* Resets transfer data length */ rspi_write32(rspi, 0, QSPI_SPBMUL0); @@ -903,6 +904,12 @@ static int rspi_setup(struct spi_device *spi) spi->bits_per_word = 8; rspi->max_speed_hz = spi->max_speed_hz; + rspi->spcmd = SPCMD_SSLKP; + if (spi->mode & SPI_CPOL) + rspi->spcmd |= SPCMD_CPOL; + if (spi->mode & SPI_CPHA) + rspi->spcmd |= SPCMD_CPHA; + set_config_register(rspi, 8); return 0; @@ -1092,6 +1099,7 @@ static int rspi_probe(struct platform_device *pdev) master->setup = rspi_setup; master->transfer = rspi_transfer; master->cleanup = rspi_cleanup; + master->mode_bits = SPI_CPHA | SPI_CPOL; for (i = 0; i < rspi->numirq; i++) { ret = devm_request_irq(&pdev->dev, rspi->irq[i], rspi_irq, 0,