From patchwork Mon Jul 15 19:47:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Goldschmidt X-Patchwork-Id: 1132236 X-Patchwork-Delegate: simon.k.r.goldschmidt@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="uNz79sza"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45nYxS0nrDz9sDQ for ; Tue, 16 Jul 2019 05:48:43 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id B7621C21F2F; Mon, 15 Jul 2019 19:48:31 +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 F18F5C21F7E; Mon, 15 Jul 2019 19:48:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A3F8CC21FC0; Mon, 15 Jul 2019 19:48:06 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by lists.denx.de (Postfix) with ESMTPS id 54269C21F4D for ; Mon, 15 Jul 2019 19:48:03 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id y4so18408106wrm.2 for ; Mon, 15 Jul 2019 12:48:03 -0700 (PDT) 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 :mime-version:content-transfer-encoding; bh=D7FTBJvY+Z91QKHhIkL89MZvPsQovbZY0kTkCrp+OT0=; b=uNz79szaVP9BaLQlP1j0ByafZXRlaOA44uPGFTAiDPN9NN0m/2efvRRd0NB7z3A+lp dmOQ98SFjUeyrYSipU2HEssVViit06fOMo3NxdrW5A6FskuIMyE5y0bupI6v3mZbaP2V +hzYLaK12lwiiasgv4J1k1dhMdjyg5+MbsYkjpREpuBgnEu1vucRgt6QLXF0TvBuL73n 82lsLjaWzA1Kn3M6wujXW6i6LVf6ryMk1Qh+J/+Z7PJhEy/Opf1QwLraV8i5SfS3ed64 uQAcPLpcU8rW6IfgFZ2xJJ6Qk0sWqs49vuajjzACf13GOx+Xe8ETp/KGvUsykyM4IbPs r2fA== 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:mime-version:content-transfer-encoding; bh=D7FTBJvY+Z91QKHhIkL89MZvPsQovbZY0kTkCrp+OT0=; b=O86tMreAdSkVku3CoNjIK4/E7QzAwaEMqIvjaNbl88+8Yp5rgyzkYmxqTArAm2J3lD AoWI8+5K9vSfkkTr0zoWpZ64QLTYWuibnkggIvxuQuO5uk8EWzB+x4m3Lq3uoOEp5Cye YHMNtKYVYVi0VE01Gu8cbyqqDjvRQHNSv4N3E/tXTCueFopFXfdPpTF7DjWNZJX3ywO+ jOOhVJDw8fG3iFv+zEbshHvXTgOqzBjdusRMO4GwXzlLJLXEvES9IEZt0FXuZ/Khkhr2 fAUWjwkMMWG6uGOGDx48vno4AWsBD80zxRcSojQpiRsgYZ2NY4P+p1QqIT/plmMElcRj YPLw== X-Gm-Message-State: APjAAAUDdoT2BlEu+Grr7xEt8/SyBE3rIA8J52ojZnIitVeZ3I3iMmF0 XfidprhW1Ma/uTx9wN2zP0Mb/crt X-Google-Smtp-Source: APXvYqxB3wXs1HWSQ6IAxEnzAWAnxkPVLOwCp6P4Dt85V7WJoI4vPlJxMKarDmneSM74xD8kyEhXMg== X-Received: by 2002:a5d:5647:: with SMTP id j7mr30141933wrw.191.1563220082823; Mon, 15 Jul 2019 12:48:02 -0700 (PDT) Received: from ubuntu.home ([2a02:8071:6a3:700:e1af:5c69:a16b:945c]) by smtp.gmail.com with ESMTPSA id p18sm15943087wrm.16.2019.07.15.12.48.01 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 15 Jul 2019 12:48:02 -0700 (PDT) From: Simon Goldschmidt To: u-boot@lists.denx.de, Marek Vasut Date: Mon, 15 Jul 2019 21:47:53 +0200 Message-Id: <20190715194755.30428-2-simon.k.r.goldschmidt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190715194755.30428-1-simon.k.r.goldschmidt@gmail.com> References: <20190715194755.30428-1-simon.k.r.goldschmidt@gmail.com> MIME-Version: 1.0 Cc: Ramon Fried , Ryder Lee , Michal Simek , Heinrich Schuchardt , Alexander Graf , Krzysztof Kozlowski , Stefan Roese , Chris Packham Subject: [U-Boot] [PATCH v4 2/4] sysreset: socfpga: gen5: add sysreset driver 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: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" This adds a UCLASS_SYSRESET sysreset driver for socfgpa gen5. Signed-off-by: Simon Goldschmidt --- Changes in v4: - change BIT() instead of open coded shift - add drivers/sysreset/sysreset_socfpga.c to MAINTAINERS Changes in v3: - moved socfpga gen5 sysreset driver to extra patch Changes in v2: None MAINTAINERS | 1 + drivers/sysreset/Kconfig | 7 ++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_socfpga.c | 56 +++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 drivers/sysreset/sysreset_socfpga.c diff --git a/MAINTAINERS b/MAINTAINERS index bc67c49965..8031cc92f5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -94,6 +94,7 @@ M: Simon Goldschmidt S: Maintainted T: git https://gitlab.denx.de/u-boot/custodians/u-boot-socfpga.git F: arch/arm/mach-socfpga/ +F: drivers/sysreset/sysreset_socfpga.c ARM AMLOGIC SOC SUPPORT M: Neil Armstrong diff --git a/drivers/sysreset/Kconfig b/drivers/sysreset/Kconfig index a69b74cee2..4ca635742f 100644 --- a/drivers/sysreset/Kconfig +++ b/drivers/sysreset/Kconfig @@ -55,6 +55,13 @@ config SYSRESET_PSCI Enable PSCI SYSTEM_RESET function call. To use this, PSCI firmware must be running on your system. +config SYSRESET_SOCFPGA + bool "Enable support for Intel SOCFPGA family" + depends on ARCH_SOCFPGA && (TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10) + help + This enables the system reset driver support for Intel SOCFPGA SoCs + (Cyclone 5, Arria 5 and Arria 10). + config SYSRESET_TI_SCI bool "TI System Control Interface (TI SCI) system reset driver" depends on TI_SCI_PROTOCOL diff --git a/drivers/sysreset/Makefile b/drivers/sysreset/Makefile index 8e1c845dfe..180e46301d 100644 --- a/drivers/sysreset/Makefile +++ b/drivers/sysreset/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_SYSRESET_GPIO) += sysreset_gpio.o obj-$(CONFIG_SYSRESET_MCP83XX) += sysreset_mpc83xx.o obj-$(CONFIG_SYSRESET_MICROBLAZE) += sysreset_microblaze.o obj-$(CONFIG_SYSRESET_PSCI) += sysreset_psci.o +obj-$(CONFIG_SYSRESET_SOCFPGA) += sysreset_socfpga.o obj-$(CONFIG_SYSRESET_TI_SCI) += sysreset-ti-sci.o obj-$(CONFIG_SYSRESET_SYSCON) += sysreset_syscon.o obj-$(CONFIG_SYSRESET_WATCHDOG) += sysreset_watchdog.o diff --git a/drivers/sysreset/sysreset_socfpga.c b/drivers/sysreset/sysreset_socfpga.c new file mode 100644 index 0000000000..d6c26a5b23 --- /dev/null +++ b/drivers/sysreset/sysreset_socfpga.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2019 Pepperl+Fuchs + * Simon Goldschmidt + */ + +#include +#include +#include +#include +#include +#include + +struct socfpga_sysreset_data { + struct socfpga_reset_manager *rstmgr_base; +}; + +static int socfpga_sysreset_request(struct udevice *dev, + enum sysreset_t type) +{ + struct socfpga_sysreset_data *data = dev_get_priv(dev); + + switch (type) { + case SYSRESET_WARM: + writel(BIT(RSTMGR_CTRL_SWWARMRSTREQ_LSB), + &data->rstmgr_base->ctrl); + break; + case SYSRESET_COLD: + writel(BIT(RSTMGR_CTRL_SWCOLDRSTREQ_LSB), + &data->rstmgr_base->ctrl); + break; + default: + return -EPROTONOSUPPORT; + } + return -EINPROGRESS; +} + +static int socfpga_sysreset_probe(struct udevice *dev) +{ + struct socfpga_sysreset_data *data = dev_get_priv(dev); + + data->rstmgr_base = devfdt_get_addr_ptr(dev); + return 0; +} + +static struct sysreset_ops socfpga_sysreset = { + .request = socfpga_sysreset_request, +}; + +U_BOOT_DRIVER(sysreset_socfpga) = { + .id = UCLASS_SYSRESET, + .name = "socfpga_sysreset", + .priv_auto_alloc_size = sizeof(struct socfpga_sysreset_data), + .ops = &socfpga_sysreset, + .probe = socfpga_sysreset_probe, +};