From: Brad Larson <brad@pensando.io>
To: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org,
adrian.hunter@intel.com, alcooperx@gmail.com,
andy.shevchenko@gmail.com, arnd@arndb.de, brad@pensando.io,
blarson@amd.com, brijeshkumar.singh@amd.com,
catalin.marinas@arm.com, gsomlo@gmail.com, gerg@linux-m68k.org,
krzk@kernel.org, krzysztof.kozlowski+dt@linaro.org,
lee.jones@linaro.org, broonie@kernel.org,
yamada.masahiro@socionext.com, p.zabel@pengutronix.de,
piotrs@cadence.com, p.yadav@ti.com, rdunlap@infradead.org,
robh+dt@kernel.org, samuel@sholland.org, fancer.lancer@gmail.com,
suravee.suthikulpanit@amd.com, thomas.lendacky@amd.com,
ulf.hansson@linaro.org, will@kernel.org,
devicetree@vger.kernel.org
Subject: [PATCH v5 15/15] reset: elbasr: Add AMD Pensando Elba SR Reset Controller
Date: Mon, 13 Jun 2022 12:56:58 -0700 [thread overview]
Message-ID: <20220613195658.5607-16-brad@pensando.io> (raw)
In-Reply-To: <20220613195658.5607-1-brad@pensando.io>
From: Brad Larson <blarson@amd.com>
This patch adds the reset controller functionality for the
AMD Pensando Elba System Resource Chip.
Signed-off-by: Brad Larson <blarson@amd.com>
---
drivers/reset/Kconfig | 9 ++
drivers/reset/Makefile | 1 +
drivers/reset/reset-elbasr.c | 94 +++++++++++++++++++
.../reset/amd,pensando-elba-reset.h | 11 +++
4 files changed, 115 insertions(+)
create mode 100644 drivers/reset/reset-elbasr.c
create mode 100644 include/dt-bindings/reset/amd,pensando-elba-reset.h
diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index 93c8d07ee328..13f5a8ca0f03 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -66,6 +66,15 @@ config RESET_BRCMSTB_RESCAL
This enables the RESCAL reset controller for SATA, PCIe0, or PCIe1 on
BCM7216.
+config RESET_ELBASR
+ tristate "Pensando Elba System Resource reset controller"
+ depends on MFD_PENSANDO_ELBASR || COMPILE_TEST
+ help
+ This option enables support for the external reset functions
+ on the Pensando Elba System Resource Chip. Reset control
+ of peripherals is accessed over SPI to the system resource
+ chip device registers using CS0.
+
config RESET_HSDK
bool "Synopsys HSDK Reset Driver"
depends on HAS_IOMEM
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
index a80a9c4008a7..c0fe12b9950e 100644
--- a/drivers/reset/Makefile
+++ b/drivers/reset/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_RESET_BCM6345) += reset-bcm6345.o
obj-$(CONFIG_RESET_BERLIN) += reset-berlin.o
obj-$(CONFIG_RESET_BRCMSTB) += reset-brcmstb.o
obj-$(CONFIG_RESET_BRCMSTB_RESCAL) += reset-brcmstb-rescal.o
+obj-$(CONFIG_RESET_ELBASR) += reset-elbasr.o
obj-$(CONFIG_RESET_HSDK) += reset-hsdk.o
obj-$(CONFIG_RESET_IMX7) += reset-imx7.o
obj-$(CONFIG_RESET_INTEL_GW) += reset-intel-gw.o
diff --git a/drivers/reset/reset-elbasr.c b/drivers/reset/reset-elbasr.c
new file mode 100644
index 000000000000..6e429cb11466
--- /dev/null
+++ b/drivers/reset/reset-elbasr.c
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2022 AMD Pensando
+ */
+
+#include <linux/mfd/pensando-elbasr.h>
+#include <linux/platform_device.h>
+#include <linux/reset-controller.h>
+#include <linux/regmap.h>
+#include <linux/err.h>
+#include <linux/of.h>
+
+#include <dt-bindings/reset/amd,pensando-elba-reset.h>
+
+struct elbasr_reset {
+ struct reset_controller_dev rcdev;
+ struct regmap *regmap;
+};
+
+static inline struct elbasr_reset *to_elbasr_rst(struct reset_controller_dev *rc)
+{
+ return container_of(rc, struct elbasr_reset, rcdev);
+}
+
+static inline int elbasr_reset_shift(unsigned long id)
+{
+ switch (id) {
+ case EMMC_HW_RESET:
+ return 6;
+ default:
+ return -EINVAL;
+ }
+}
+
+static int elbasr_reset_assert(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ struct elbasr_reset *elbar = to_elbasr_rst(rcdev);
+ u32 mask = 1 << elbasr_reset_shift(id);
+
+ return regmap_update_bits(elbar->regmap, ELBASR_CTRL0_REG, mask, mask);
+}
+
+static int elbasr_reset_deassert(struct reset_controller_dev *rcdev,
+ unsigned long id)
+{
+ struct elbasr_reset *elbar = to_elbasr_rst(rcdev);
+ u32 mask = 1 << elbasr_reset_shift(id);
+
+ return regmap_update_bits(elbar->regmap, ELBASR_CTRL0_REG, mask, 0);
+}
+
+static const struct reset_control_ops elbasr_reset_ops = {
+ .assert = elbasr_reset_assert,
+ .deassert = elbasr_reset_deassert,
+};
+
+static int elbasr_reset_probe(struct platform_device *pdev)
+{
+ struct elbasr_data *elbasr = dev_get_drvdata(pdev->dev.parent);
+ struct elbasr_reset *elbar;
+ int ret;
+
+ elbar = devm_kzalloc(&pdev->dev, sizeof(struct elbasr_reset),
+ GFP_KERNEL);
+ if (!elbar)
+ return -ENOMEM;
+
+ elbar->rcdev.owner = THIS_MODULE;
+ elbar->rcdev.nr_resets = ELBASR_NR_RESETS;
+ elbar->rcdev.ops = &elbasr_reset_ops;
+ elbar->rcdev.of_node = pdev->dev.of_node;
+ elbar->regmap = elbasr->elbasr_regs;
+
+ platform_set_drvdata(pdev, elbar);
+
+ ret = devm_reset_controller_register(&pdev->dev, &elbar->rcdev);
+
+ return ret;
+}
+
+static const struct of_device_id elba_reset_dt_match[] = {
+ { .compatible = "amd,pensando-elbasr-reset", },
+ { /* sentinel */ },
+};
+
+static struct platform_driver elbasr_reset_driver = {
+ .probe = elbasr_reset_probe,
+ .driver = {
+ .name = "pensando_elbasr_reset",
+ .of_match_table = elba_reset_dt_match,
+ },
+};
+builtin_platform_driver(elbasr_reset_driver);
diff --git a/include/dt-bindings/reset/amd,pensando-elba-reset.h b/include/dt-bindings/reset/amd,pensando-elba-reset.h
new file mode 100644
index 000000000000..68d69a98e750
--- /dev/null
+++ b/include/dt-bindings/reset/amd,pensando-elba-reset.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright (c) 2022, AMD Pensando
+ */
+
+#ifndef _DT_BINDINGS_RESET_AMD_PENSANDO_ELBA_RESET_H
+#define _DT_BINDINGS_RESET_AMD_PENSANDO_ELBA_RESET_H
+
+#define EMMC_HW_RESET 0
+
+#endif
--
2.17.1
next prev parent reply other threads:[~2022-06-13 20:48 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-13 19:56 [PATCH v5 00/15] Support AMD Pensando Elba SoC Brad Larson
2022-06-13 19:56 ` [PATCH v5 01/15] dt-bindings: arm: add AMD Pensando boards Brad Larson
2022-06-14 21:16 ` Rob Herring
2022-06-20 12:48 ` Krzysztof Kozlowski
2022-06-13 19:56 ` [PATCH v5 02/15] dt-bindings: mmc: cdns: Add AMD Pensando Elba SoC binding Brad Larson
2022-06-14 21:22 ` Rob Herring
2022-07-03 23:08 ` Brad Larson
2022-06-20 12:50 ` Krzysztof Kozlowski
2022-07-03 23:11 ` Brad Larson
2022-06-13 19:56 ` [PATCH v5 03/15] dt-bindings: spi: cdns: Add compatible for AMD Pensando Elba SoC Brad Larson
2022-06-14 21:23 ` Rob Herring
2022-06-20 12:51 ` Krzysztof Kozlowski
2022-06-13 19:56 ` [PATCH v5 04/15] dt-bindings: spi: dw: Add AMD Pensando Elba SoC SPI Controller bindings Brad Larson
2022-06-14 21:23 ` Rob Herring
2022-06-20 19:30 ` Serge Semin
2022-06-20 19:46 ` Krzysztof Kozlowski
2022-06-20 20:04 ` Serge Semin
2022-06-21 7:00 ` Krzysztof Kozlowski
2022-06-21 10:11 ` Serge Semin
2022-07-03 23:58 ` Brad Larson
2022-07-04 13:18 ` Serge Semin
2022-06-13 19:56 ` [PATCH v5 05/15] dt-bindings: mfd: syscon: Add amd,pensando-elba-syscon compatible Brad Larson
2022-06-14 21:24 ` Rob Herring
2022-06-13 19:56 ` [PATCH v5 06/15] dt-bindings: mfd: amd,pensando-elbasr: Add AMD Pensando Elba System Resource chip Brad Larson
2022-06-14 21:30 ` Rob Herring
2022-07-03 23:30 ` Brad Larson
2022-06-20 12:56 ` Krzysztof Kozlowski
2022-07-03 23:41 ` Brad Larson
2022-07-05 9:46 ` Krzysztof Kozlowski
2022-06-13 19:56 ` [PATCH v5 07/15] dt-bindings: reset: amd,pensando-elbasr-reset: Add AMD Pensando SR Reset Controller bindings Brad Larson
2022-06-14 21:32 ` Rob Herring
2022-07-03 23:34 ` Brad Larson
2022-06-20 13:00 ` Krzysztof Kozlowski
2022-07-03 23:50 ` Brad Larson
2022-07-04 6:41 ` Krzysztof Kozlowski
2022-07-05 18:28 ` Brad Larson
2022-07-05 18:30 ` Krzysztof Kozlowski
2022-06-13 19:56 ` [PATCH v5 08/15] MAINTAINERS: Add entry for AMD PENSANDO Brad Larson
2022-06-13 19:56 ` [PATCH v5 09/15] arm64: Add config for AMD Pensando SoC platforms Brad Larson
2022-06-13 19:56 ` [PATCH v5 10/15] arm64: dts: Add AMD Pensando Elba SoC support Brad Larson
2022-06-14 22:44 ` Krzysztof Kozlowski
2022-07-03 23:15 ` Brad Larson
2022-06-13 19:56 ` [PATCH v5 11/15] spi: cadence-quadspi: Add compatible for AMD Pensando Elba SoC Brad Larson
2022-06-14 8:48 ` Pratyush Yadav
2022-07-03 21:05 ` Brad Larson
2022-06-14 12:01 ` Mark Brown
2022-07-03 21:09 ` Brad Larson
2022-06-13 19:56 ` [PATCH v5 12/15] spi: dw: Add support " Brad Larson
2022-06-14 11:10 ` Andy Shevchenko
2022-07-03 21:14 ` Brad Larson
2022-06-13 19:56 ` [PATCH v5 13/15] mmc: sdhci-cadence: Add AMD Pensando Elba SoC support Brad Larson
2022-06-14 11:19 ` Andy Shevchenko
2022-07-03 21:42 ` Brad Larson
2022-06-13 19:56 ` [PATCH v5 14/15] mfd: pensando-elbasr: Add AMD Pensando Elba System Resource chip Brad Larson
2022-06-14 11:42 ` Andy Shevchenko
2022-07-03 21:56 ` Brad Larson
2022-06-13 19:56 ` Brad Larson [this message]
2022-06-14 11:46 ` [PATCH v5 15/15] reset: elbasr: Add AMD Pensando Elba SR Reset Controller Andy Shevchenko
2022-07-03 22:06 ` Brad Larson
2022-06-14 14:49 ` Philipp Zabel
2022-07-03 22:03 ` Brad Larson
2022-06-14 21:34 ` Rob Herring
2022-07-03 23:24 ` Brad Larson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220613195658.5607-16-brad@pensando.io \
--to=brad@pensando.io \
--cc=adrian.hunter@intel.com \
--cc=alcooperx@gmail.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=blarson@amd.com \
--cc=brijeshkumar.singh@amd.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=gerg@linux-m68k.org \
--cc=gsomlo@gmail.com \
--cc=krzk@kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=p.yadav@ti.com \
--cc=p.zabel@pengutronix.de \
--cc=piotrs@cadence.com \
--cc=rdunlap@infradead.org \
--cc=robh+dt@kernel.org \
--cc=samuel@sholland.org \
--cc=suravee.suthikulpanit@amd.com \
--cc=thomas.lendacky@amd.com \
--cc=ulf.hansson@linaro.org \
--cc=will@kernel.org \
--cc=yamada.masahiro@socionext.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®