+static int qcom_wdt_get_restart_reason(struct qcom_wdt *wdt)That's not how you express dependencies between devices.
+{
+ struct device_node *np;
+ struct resource imem;
+ void __iomem *base;
+ int ret;
+
+ np = of_find_compatible_node(NULL, NULL, "qcom,restart-reason-info");
+ if (!np)
+ return -ENOENT;All this is wrong usage of syscon API, missing devlinks, messing up with
+
+ ret = of_address_to_resource(np, 0, &imem);
+ of_node_put(np);
+ if (ret < 0) {
+ dev_err(wdt->wdd.parent, "can't translate OF node address\n");
+ return ret;
+ }
+
+ base = ioremap(imem.start, resource_size(&imem));
+ if (!base) {
+ dev_err(wdt->wdd.parent, "failed to map restart reason info region\n");
+ return -ENOMEM;
+ }
+
+ memcpy_fromio(&ret, base, sizeof(ret));
+ iounmap(base);
other device's address space.