Thread (2 messages) 2 messages, 2 authors, 2017-08-03

Re: [PATCH v8 10/16] reset: Add a reset controller driver for the Lantiq XWAY based SoCs

From: Philipp Zabel <p.zabel@pengutronix.de>
Date: 2017-08-03 08:33:42
Also in: linux-devicetree, linux-spi, linux-watchdog

Hi Hauke,

On Thu, 2017-08-03 at 00:57 +0200, Hauke Mehrtens wrote:
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>

The reset controllers (on xRX200 and newer SoCs have two of them) are
provided by the RCU module. This was initially implemented as a simple
reset controller. However, the RCU module provides more functionality
(ethernet GPHYs, USB PHY, etc.), which makes it a MFD device.
The old reset controller driver implementation from
arch/mips/lantiq/xway/reset.c did not honor this fact.

For some devices the request and the status bits are different.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Andy Shevchenko <redacted>
---
 .../devicetree/bindings/reset/lantiq,reset.txt     |  30 +++
 drivers/reset/Kconfig                              |   6 +
 drivers/reset/Makefile                             |   1 +
 drivers/reset/reset-lantiq.c                       | 224 +++++++++++++++++++++
 4 files changed, 261 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/reset/lantiq,reset.txt
 create mode 100644 drivers/reset/reset-lantiq.c
[...]
quoted hunk
diff --git a/drivers/reset/reset-lantiq.c b/drivers/reset/reset-lantiq.c
new file mode 100644
index 000000000000..b84c45e7e6b8
--- /dev/null
+++ b/drivers/reset/reset-lantiq.c
@@ -0,0 +1,224 @@
[...]
+static int lantiq_rcu_reset_of_probe(struct platform_device *pdev,
+			       struct lantiq_rcu_reset_priv *priv)
+{
+	struct device *dev = &pdev->dev;
+	struct resource *res;
+	struct resource res_parent;
+	int ret;
+
+	priv->regmap = syscon_node_to_regmap(dev->of_node->parent);
+	if (IS_ERR(priv->regmap)) {
+		dev_err(&pdev->dev, "Failed to lookup RCU regmap\n");
+		return PTR_ERR(priv->regmap);
+	}
+
+	ret = of_address_to_resource(dev->of_node->parent, 0, &res_parent);
+	if (ret)
+		return ret;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		dev_err(&pdev->dev, "Failed to get RCU reset offset\n");
+		return ret;
This should return -EINVAL instead of 0.
+	}
+
+	if (res->start < res_parent.start)
+		return -ENOENT;
+	priv->reset_offset = res->start - res_parent.start;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+	if (!res) {
+		dev_err(&pdev->dev, "Failed to get RCU status offset\n");
+		return ret;
Same here.

With this fixed,
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>

regards
Philipp
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help