From patchwork Tue Jan 24 06:51:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenyou Yang X-Patchwork-Id: 718922 X-Patchwork-Delegate: andreas.biessmann@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3v6zc015B0z9t0k for ; Tue, 24 Jan 2017 18:01:04 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 36B464AAA7; Tue, 24 Jan 2017 08:01:02 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3HtrCmW6unJ1; Tue, 24 Jan 2017 08:01:01 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5827D4A068; Tue, 24 Jan 2017 08:01:01 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 617774A068 for ; Tue, 24 Jan 2017 08:00:57 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eAtvawC8Yvug for ; Tue, 24 Jan 2017 08:00:57 +0100 (CET) X-Greylist: delayed 324 seconds by postgrey-1.34 at theia; Tue, 24 Jan 2017 08:00:57 CET X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from eusmtp01.atmel.com (eusmtp01.atmel.com [212.144.249.242]) by theia.denx.de (Postfix) with ESMTPS id 28CE64A05F for ; Tue, 24 Jan 2017 08:00:57 +0100 (CET) Received: from apsmtp01.atmel.com (10.168.254.30) by eusmtp01.atmel.com (10.145.145.30) with Microsoft SMTP Server id 14.3.235.1; Tue, 24 Jan 2017 07:55:28 +0100 Received: from shaarm01.corp.atmel.com (10.168.254.13) by apsmtp01.corp.atmel.com (10.168.254.30) with Microsoft SMTP Server id 14.3.235.1; Tue, 24 Jan 2017 14:58:58 +0800 From: Wenyou Yang To: U-Boot Mailing List Date: Tue, 24 Jan 2017 14:51:28 +0800 Message-ID: <20170124065128.30280-1-wenyou.yang@atmel.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Subject: [U-Boot] [PATCH] spi: atmel: check the GPIO validity before using cs_gpios X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Before using the cs_gpio, check if the GPIO is valid. Signed-off-by: Wenyou Yang --- drivers/spi/atmel_spi.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c index 7649114231..8d29f7c4eb 100644 --- a/drivers/spi/atmel_spi.c +++ b/drivers/spi/atmel_spi.c @@ -296,7 +296,8 @@ static void atmel_spi_cs_activate(struct udevice *dev) struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); u32 cs = slave_plat->cs; - dm_gpio_set_value(&priv->cs_gpios[cs], 0); + if (dm_gpio_is_valid(&priv->cs_gpios[cs])) + dm_gpio_set_value(&priv->cs_gpios[cs], 0); } static void atmel_spi_cs_deactivate(struct udevice *dev) @@ -306,7 +307,8 @@ static void atmel_spi_cs_deactivate(struct udevice *dev) struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); u32 cs = slave_plat->cs; - dm_gpio_set_value(&priv->cs_gpios[cs], 1); + if (dm_gpio_is_valid(&priv->cs_gpios[cs])) + dm_gpio_set_value(&priv->cs_gpios[cs], 1); } static int atmel_spi_xfer(struct udevice *dev, unsigned int bitlen, @@ -473,8 +475,11 @@ static int atmel_spi_probe(struct udevice *bus) } for(i = 0; i < ARRAY_SIZE(priv->cs_gpios); i++) { - dm_gpio_set_dir_flags(&priv->cs_gpios[i], - GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE); + if (dm_gpio_is_valid(&priv->cs_gpios[i])) { + dm_gpio_set_dir_flags(&priv->cs_gpios[i], + GPIOD_IS_OUT | + GPIOD_IS_OUT_ACTIVE); + } } writel(ATMEL_SPI_CR_SWRST, &bus_plat->regs->cr);