From patchwork Tue Dec 24 11:40:46 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 3401951 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 8736A9F314 for ; Tue, 24 Dec 2013 11:41:37 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 87693205F5 for ; Tue, 24 Dec 2013 11:41:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 95153205B5 for ; Tue, 24 Dec 2013 11:41:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752193Ab3LXLl0 (ORCPT ); Tue, 24 Dec 2013 06:41:26 -0500 Received: from juliette.telenet-ops.be ([195.130.137.74]:39625 "EHLO juliette.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751972Ab3LXLlZ (ORCPT ); Tue, 24 Dec 2013 06:41:25 -0500 Received: from ayla.of.borg ([84.193.72.141]) by juliette.telenet-ops.be with bizsmtp id 5PhQ1n00732ts5g06PhQri; Tue, 24 Dec 2013 12:41:24 +0100 Received: from geert by ayla.of.borg with local (Exim 4.76) (envelope-from ) id 1VvQMV-0000qp-Sw; Tue, 24 Dec 2013 12:41:23 +0100 From: Geert Uytterhoeven To: linux-spi@vger.kernel.org Cc: linux-sh@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 6/8] spi: rspi: Add support for missing SPCR2 register Date: Tue, 24 Dec 2013 12:40:46 +0100 Message-Id: <1387885248-28425-7-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 RSPI variants lacking the RSPI Control Register 2, based on the SDK reference code. This is needed for RZ/A1H. The availability of this register is passed using platform data, defaulting to true for legacy RSPI. QSPI never has this register. If the register is not available, it should not be touched. Signed-off-by: Geert Uytterhoeven Acked-by: Laurent Pinchart --- drivers/spi/spi-rspi.c | 17 ++++++++++++----- include/linux/spi/rspi.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c index 92aaa1eac5a9..34674fe6df5d 100644 --- a/drivers/spi/spi-rspi.c +++ b/drivers/spi/spi-rspi.c @@ -192,6 +192,7 @@ struct rspi_data { unsigned dma_width_16bit:1; unsigned dma_callbacked:1; unsigned txmode:1; + unsigned spcr2:1; }; static void rspi_write8(const struct rspi_data *rspi, u8 data, u16 offset) @@ -290,10 +291,14 @@ static int rspi_parse_platform_data(struct rspi_data *rspi, rspi->spdcr = 0; } - if (rspi_pd) + if (rspi_pd) { rspi->txmode = rspi_pd->txmode; - else - rspi->txmode = 1; /* legacy RSPI defaults to true */ + rspi->spcr2 = rspi_pd->spcr2; + } else { + /* legacy RSPI defaults to true */ + rspi->txmode = 1; + rspi->spcr2 = 1; + } return 0; } @@ -319,7 +324,8 @@ static int rspi_set_config_register(const struct rspi_data *rspi, rspi_write8(rspi, 0x00, RSPI_SPND); /* Sets parity, interrupt mask */ - rspi_write8(rspi, 0x00, RSPI_SPCR2); + if (rspi->spcr2) + rspi_write8(rspi, 0x00, RSPI_SPCR2); /* Sets SPCMD */ rspi_write16(rspi, SPCMD_SPB_8_TO_16(access_size) | SPCMD_SSLKP, @@ -341,8 +347,9 @@ static int qspi_parse_platform_data(struct rspi_data *rspi, rspi->data_width = 8; rspi->spdcr = 0; - /* No TX only mode */ + /* No TX only mode, no parity register */ rspi->txmode = 0; + rspi->spcr2 = 0; return 0; } diff --git a/include/linux/spi/rspi.h b/include/linux/spi/rspi.h index 0f5f612f0092..08d217f25413 100644 --- a/include/linux/spi/rspi.h +++ b/include/linux/spi/rspi.h @@ -29,6 +29,7 @@ struct rspi_plat_data { unsigned dma_width_16bit:1; /* DMAC read/write width = 16-bit */ unsigned txmode:1; /* TX only mode */ + unsigned spcr2:1; /* Set parity register */ u16 num_chipselect; };