From patchwork Thu Feb 21 21:43:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Goldschmidt X-Patchwork-Id: 1046471 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eWnqbAP4"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 4457Ny23vRz9s2R for ; Fri, 22 Feb 2019 08:47:30 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 0CB88C21F3E; Thu, 21 Feb 2019 21:45:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 335E1C21EBB; Thu, 21 Feb 2019 21:44:03 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6ACFBC21F8A; Thu, 21 Feb 2019 21:43:49 +0000 (UTC) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by lists.denx.de (Postfix) with ESMTPS id 52AA0C21F27 for ; Thu, 21 Feb 2019 21:43:45 +0000 (UTC) Received: by mail-wr1-f66.google.com with SMTP id i12so154252wrw.0 for ; Thu, 21 Feb 2019 13:43:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LrLqWSKP704/HlNGbY4pZn8VN6Ri9oX+Xw48vtDcxhk=; b=eWnqbAP4pi+rgCnOOodGhF40m5VorCb3ha5QNV66GDAPFZ7vRnVfZtuDmXpztVd0Wy d6QSCInsJUrmArbNy5bFhNRKk5Bytkph0fIyP0D+NMr+ahTLA5EB5qDciOfIgz4PEQYH Zitg5txsmE4AW+Zy/ZIIVSCLbSUmR4tAvB7SWsJ99KdQJcC3zSVMkjLWM20Nr2DlFljk Ts07N3BCqw7yvUBiDye3ygDx41IzxRAFpnB3AXW9dt8nKGjhQ/grpdBPLLVbPqrMwj7X FVRO04r1c+yTa8KhwwWyUZ6IfekuHOerP+WBuUG+IS8MBIb/cIYtWMaEQkhCCWFsJbR8 xRdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LrLqWSKP704/HlNGbY4pZn8VN6Ri9oX+Xw48vtDcxhk=; b=OdO7Z0q5lgZBklb+3NFzzyxEDkfzsBwznwQu79CNMU9MCe2oV+PL3/hg0aVfSwiO1u 0NFUVd0vVy3UCDuPmQAXZxYYG8DVH85YAhv2OOdzWs9eOdYfXPEAGuQdGTgK+e3CCiQC 64IpZJrS3dnyYOVzZRw/CEd3GuJ53zgu++AxGjsZ+VcOuYN84eEw9EjGmvSyQTxbStRx jEe4sgBMfE7242KKnSItcaoAjNl219VSno6LiWnWsC6KC8YjvaeeOwGs7RqKjmBLFvE8 W8s0Z3V4Npx/e8eO4+55QuUcpJfemie45LppiQP8DyaRirSI4pGCAMfjsRbgvElsg5Gn nuuw== X-Gm-Message-State: AHQUAuabYymQZGeqqV9QRjlCCdkYS/8k0xlkSA0m2k5TAHGnnQTifYfP JkMse3tM+6Ilfaq1kBqyCAYf7PWY X-Google-Smtp-Source: AHgI3IaxKah+txhhhFBeIcHXloVTUnotayKGzIYrb4CQGRHXrZWRAwsMZkJOywVZZ3YEZPQT2ycvkQ== X-Received: by 2002:a5d:540f:: with SMTP id g15mr464316wrv.126.1550785424951; Thu, 21 Feb 2019 13:43:44 -0800 (PST) Received: from ubuntu.home ([2a02:8071:6a3:700:9065:254c:ff38:3288]) by smtp.gmail.com with ESMTPSA id m26sm4308wmg.13.2019.02.21.13.43.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 Feb 2019 13:43:44 -0800 (PST) From: Simon Goldschmidt To: Marek Vasut , u-boot@lists.denx.de Date: Thu, 21 Feb 2019 22:43:29 +0100 Message-Id: <20190221214332.4246-6-simon.k.r.goldschmidt@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190221214332.4246-1-simon.k.r.goldschmidt@gmail.com> References: <20190221214332.4246-1-simon.k.r.goldschmidt@gmail.com> Cc: Jagan Teki Subject: [U-Boot] [PATCH v2 5/8] spi: cadence_qspi: add reset handling X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This adds reset handling to the cadence qspi driver. For backwards compatibility, only a warning is printed when failing to get reset handles. Signed-off-by: Simon Goldschmidt --- Changes in v2: - add .remove callback to release the resets drivers/spi/cadence_qspi.c | 16 ++++++++++++++++ drivers/spi/cadence_qspi.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 11fce9c4fe..3bfa0201c4 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include "cadence_qspi.h" @@ -154,10 +155,17 @@ static int cadence_spi_probe(struct udevice *bus) { struct cadence_spi_platdata *plat = bus->platdata; struct cadence_spi_priv *priv = dev_get_priv(bus); + int ret; priv->regbase = plat->regbase; priv->ahbbase = plat->ahbbase; + ret = reset_get_bulk(bus, &priv->resets); + if (ret) + dev_warn(bus, "Can't get reset: %d\n", ret); + else + reset_deassert_bulk(&priv->resets); + if (!priv->qspi_is_init) { cadence_qspi_apb_controller_init(plat); priv->qspi_is_init = 1; @@ -166,6 +174,13 @@ static int cadence_spi_probe(struct udevice *bus) return 0; } +static int cadence_spi_remove(struct udevice *dev) +{ + struct cadence_spi_priv *priv = dev_get_priv(dev); + + return reset_release_bulk(&priv->resets); +} + static int cadence_spi_set_mode(struct udevice *bus, uint mode) { struct cadence_spi_priv *priv = dev_get_priv(bus); @@ -342,4 +357,5 @@ U_BOOT_DRIVER(cadence_spi) = { .platdata_auto_alloc_size = sizeof(struct cadence_spi_platdata), .priv_auto_alloc_size = sizeof(struct cadence_spi_priv), .probe = cadence_spi_probe, + .remove = cadence_spi_remove, }; diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h index 055900def0..d4ede6e15e 100644 --- a/drivers/spi/cadence_qspi.h +++ b/drivers/spi/cadence_qspi.h @@ -7,6 +7,8 @@ #ifndef __CADENCE_QSPI_H__ #define __CADENCE_QSPI_H__ +#include + #define CQSPI_IS_ADDR(cmd_len) (cmd_len > 1 ? 1 : 0) #define CQSPI_NO_DECODER_MAX_CS 4 @@ -42,6 +44,8 @@ struct cadence_spi_priv { unsigned int qspi_calibrated_hz; unsigned int qspi_calibrated_cs; unsigned int previous_hz; + + struct reset_ctl_bulk resets; }; /* Functions call declaration */