From: Gary McGee <gary.mc...@intel.com> Signed-off-by: Gary McGee <gary.mc...@intel.com> --- arch/arm64/boot/dts/intel/axm56xx.dtsi | 2 +- drivers/power/reset/axxia-reset.c | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/arch/arm64/boot/dts/intel/axm56xx.dtsi b/arch/arm64/boot/dts/intel/axm56xx.dtsi index 2576fa8..413551d 100644 --- a/arch/arm64/boot/dts/intel/axm56xx.dtsi +++ b/arch/arm64/boot/dts/intel/axm56xx.dtsi @@ -97,7 +97,7 @@ }; reset: reset@2010031000 { - compatible = "lsi,axm55xx-reset"; + compatible = "intel,axm56xx-reset"; syscon = <&syscon>; }; diff --git a/drivers/power/reset/axxia-reset.c b/drivers/power/reset/axxia-reset.c index b23a6dc..a4957fc 100644 --- a/drivers/power/reset/axxia-reset.c +++ b/drivers/power/reset/axxia-reset.c @@ -26,6 +26,7 @@ #include <linux/reboot.h> #include <linux/regmap.h> +#define SC_PSCRATCH 0x00dc #define SC_CRIT_WRITE_KEY 0x2000 #define SC_RESET_CONTROL 0x2008 #define RSTCTL_RST_CHIP (1<<1) @@ -35,25 +36,19 @@ static struct regmap *syscon; static int ddr_retention_enabled; -#define SYSCON_PHYS_ADDR 0x8002c00000ULL - void initiate_retention_reset(void) { - void __iomem *syscon; - if (0 == ddr_retention_enabled) { pr_info("DDR Retention Reset is Not Enabled\n"); return; } - syscon = ioremap(SYSCON_PHYS_ADDR, SZ_64K); - if (WARN_ON(!syscon)) return; /* set retention reset bit in pscratch */ - writel(0x00000001, syscon + 0xdc); /* Access Key */ + regmap_write(syscon, SC_PSCRATCH, 1); /* trap into secure monitor to do the reset */ machine_restart(NULL); @@ -143,7 +138,7 @@ static struct platform_driver axxia_reset_driver = { .probe = axxia_reset_probe, .driver = { .name = "axxia-reset", - .of_match_table = of_match_ptr(of_axxia_reset_match), + .of_match_table = of_axxia_reset_match, }, }; -- 2.7.4 -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto