Hi folks,
This is a v3 of the series to add support for protected PMU registers found
on gs101 and derivative SoCs. In v2 and later it was re-worked to be based on
a regmap abstraction that I think leads to a much neater overall solution.
The advantage of the regmap abstraction is that most leaf drivers that
read/write PMU registers need minimal changes.
Example of Exynos drivers that require PMU register access are:
* watchdog
* usb phy
* mipi phy
* ufs phy
This series has been tested on Pixel 6 / gs101. If the various maintainers/
contributors of other Exynos SoCs like exynos850, exynosautov9, exynos5422
etc can test these patches on your respective systems that would be most
appreciated!
The expectation is this series would be merged via Krzysztofs Samsung Exynos
tree.
regards,
Peter
Changes since v2
- Add select REGMAP to Kconfig
- Add constant for SET/CLEAR bits
- Replace kerneldoc with one line comment
- Fix kerneldoc for EXPORT_SYMBOL_GPL funcs
- remove superflous extern keyword
- dev_err_probe() on probe error
- shorten regmcfg name
- no compatibles inside probe, use match data
- don't mix declarations with/without initializations
- tensor_sec_reg_read() use mmio to avoid access restrictions
- Collect up Reviewed-by
- const for regmap_config structs
Changes since v1:
- Refactor to use custom regmap to abstract SMC register access (Sam / Guenter)
- Add deferred probing support (Saravana / Krzysztof)
v2 lore: https://lore.kernel.org/lkml/[email protected]/
v1 lore: https://lore.kernel.org/all/[email protected]/
Peter Griffin (2):
soc: samsung: exynos-pmu: Add regmap support for SoCs that protect PMU
regs
watchdog: s3c2410_wdt: use exynos_get_pmu_regmap_by_phandle() for PMU
regs
drivers/soc/samsung/Kconfig | 1 +
drivers/soc/samsung/exynos-pmu.c | 233 ++++++++++++++++++++++++-
drivers/soc/samsung/exynos-pmu.h | 1 +
drivers/watchdog/Kconfig | 1 -
drivers/watchdog/s3c2410_wdt.c | 8 +-
include/linux/soc/samsung/exynos-pmu.h | 11 +-
6 files changed, 245 insertions(+), 10 deletions(-)
--
2.43.0.594.gd9cf4e227d-goog
Obtain the PMU regmap using the new API added to exynos-pmu driver rather
than syscon_regmap_lookup_by_phandle(). As this driver no longer depends
on mfd syscon remove that header and Kconfig dependency.
Reviewed-by: Sam Protsenko <[email protected]>
Signed-off-by: Peter Griffin <[email protected]>
---
drivers/watchdog/Kconfig | 1 -
drivers/watchdog/s3c2410_wdt.c | 8 ++++----
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 7d22051b15a2..d78fe7137799 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -512,7 +512,6 @@ config S3C2410_WATCHDOG
tristate "S3C6410/S5Pv210/Exynos Watchdog"
depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
select WATCHDOG_CORE
- select MFD_SYSCON if ARCH_EXYNOS
help
Watchdog timer block in the Samsung S3C64xx, S5Pv210 and Exynos
SoCs. This will reboot the system when the timer expires with
diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c
index 349d30462c8c..686cf544d0ae 100644
--- a/drivers/watchdog/s3c2410_wdt.c
+++ b/drivers/watchdog/s3c2410_wdt.c
@@ -24,9 +24,9 @@
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/of.h>
-#include <linux/mfd/syscon.h>
#include <linux/regmap.h>
#include <linux/delay.h>
+#include <linux/soc/samsung/exynos-pmu.h>
#define S3C2410_WTCON 0x00
#define S3C2410_WTDAT 0x04
@@ -699,11 +699,11 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
return ret;
if (wdt->drv_data->quirks & QUIRKS_HAVE_PMUREG) {
- wdt->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node,
- "samsung,syscon-phandle");
+ wdt->pmureg = exynos_get_pmu_regmap_by_phandle(dev->of_node,
+ "samsung,syscon-phandle");
if (IS_ERR(wdt->pmureg))
return dev_err_probe(dev, PTR_ERR(wdt->pmureg),
- "syscon regmap lookup failed.\n");
+ "PMU regmap lookup failed.\n");
}
wdt_irq = platform_get_irq(pdev, 0);
--
2.43.0.594.gd9cf4e227d-goog