Commit 3183444a authored by Tomer Maimon's avatar Tomer Maimon Committed by Arnd Bergmann
Browse files

reset: npcm: using syscon instead of device data



Using syscon device tree property instead of device data to handle the
NPCM general control registers.

In case the syscon not found the code still search for nuvoton,npcm750-gcr
to support DTS backward compatibility.

Signed-off-by: default avatarTomer Maimon <tmaimon77@gmail.com>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent 8f73a173
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -138,8 +138,7 @@ static int npcm_reset_xlate(struct reset_controller_dev *rcdev,
}

static const struct of_device_id npcm_rc_match[] = {
	{ .compatible = "nuvoton,npcm750-reset",
		.data = (void *)"nuvoton,npcm750-gcr" },
	{ .compatible = "nuvoton,npcm750-reset" },
	{ }
};

@@ -160,11 +159,16 @@ static int npcm_usb_reset(struct platform_device *pdev, struct npcm_rc_data *rc)
	gcr_dt = (const char *)
	of_match_device(dev->driver->of_match_table, dev)->data;

	gcr_regmap = syscon_regmap_lookup_by_compatible(gcr_dt);
	gcr_regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "nuvoton,sysgcr");
	if (IS_ERR(gcr_regmap)) {
		dev_err(&pdev->dev, "Failed to find %s\n", gcr_dt);
		dev_warn(&pdev->dev, "Failed to find nuvoton,sysgcr property, please update the device tree\n");
		dev_info(&pdev->dev, "Using nuvoton,npcm750-gcr for Poleg backward compatibility\n");
		gcr_regmap = syscon_regmap_lookup_by_compatible("nuvoton,npcm750-gcr");
		if (IS_ERR(gcr_regmap)) {
			dev_err(&pdev->dev, "Failed to find nuvoton,npcm750-gcr");
			return PTR_ERR(gcr_regmap);
		}
	}

	/* checking which USB device is enabled */
	regmap_read(gcr_regmap, NPCM_MDLR_OFFSET, &mdlr);