summaryrefslogtreecommitdiffstats
path: root/drivers/reset
diff options
context:
space:
mode:
authorTomer Maimon <tmaimon77@gmail.com>2022-07-17 11:16:00 +0200
committerArnd Bergmann <arnd@arndb.de>2022-07-19 15:41:02 +0200
commit3183444aee63a5c564dd75abec9adf693698d36a (patch)
treefb2b33dd7ee1a727e72dcb3d987fb066828016f8 /drivers/reset
parentARM: dts: nuvoton: add reset syscon property (diff)
downloadlinux-3183444aee63a5c564dd75abec9adf693698d36a.tar.xz
linux-3183444aee63a5c564dd75abec9adf693698d36a.zip
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: Tomer Maimon <tmaimon77@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/reset')
-rw-r--r--drivers/reset/reset-npcm.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/reset/reset-npcm.c b/drivers/reset/reset-npcm.c
index 2ea4d3136e15..b08f8d8a1d63 100644
--- a/drivers/reset/reset-npcm.c
+++ b/drivers/reset/reset-npcm.c
@@ -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,10 +159,15 @@ 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);
- return PTR_ERR(gcr_regmap);
+ 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 */