diff options
author | Michal Simek <michal.simek@xilinx.com> | 2018-07-11 08:30:07 +0200 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2018-07-19 10:49:55 +0200 |
commit | 1fbca0db5d4785eb1e3e4e914bcd4a9864df3e53 (patch) | |
tree | 24a6681c4125cbfea92e0de95f2dcda9e896f13d | |
parent | 0d6fabb82df100d709cef306a7d8c05025d5fa39 (diff) | |
download | u-boot-1fbca0db5d4785eb1e3e4e914bcd4a9864df3e53.tar.gz u-boot-1fbca0db5d4785eb1e3e4e914bcd4a9864df3e53.tar.bz2 u-boot-1fbca0db5d4785eb1e3e4e914bcd4a9864df3e53.zip |
arm64: zynqmp: Try to enable the first watchdog via aliases
Add support for enabling the first watchdog pointed via aliases.
DT fragment:
aliases {
...
watchdog0 = &watchdog0;
watchdog1 = &watchdog_lpd;
...
};
dm tree fragment for above configuration with patch applied:
ZynqMP> dm tree
Class index Probed Driver Name
-----------------------------------------
...
watchdog 0 [ ] cdns_wdt | |-- watchdog@ff150000
watchdog 1 [ + ] cdns_wdt | `-- watchdog@fd4d0000
...
dm uclass fragment:
ZynqMP> dm uclass
...
uclass 75: watchdog
0 watchdog@ff150000 @ 7df02f40, seq -1, (req 1)
1 * watchdog@fd4d0000 @ 7df02ff0, seq 0, (req 0)
...
It is visible that index 1 is IP with seq 0 which means that FPD
watchdog (@fd4d0000) is in DT below LPD watchdog (@ff150000).
Till this patch the first watchdog found in DT was used and started
which is not enabling all possible configuration based on user request.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
-rw-r--r-- | board/xilinx/zynqmp/zynqmp.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c index 81c10fcf8a..06cdcbdba6 100644 --- a/board/xilinx/zynqmp/zynqmp.c +++ b/board/xilinx/zynqmp/zynqmp.c @@ -312,12 +312,16 @@ int board_init(void) #endif #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT) - if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) { - puts("Watchdog: Not found!\n"); - } else { - wdt_start(watchdog_dev, 0, 0); - puts("Watchdog: Started\n"); + if (uclass_get_device_by_seq(UCLASS_WDT, 0, &watchdog_dev)) { + debug("Watchdog: Not found by seq!\n"); + if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) { + puts("Watchdog: Not found!\n"); + return 0; + } } + + wdt_start(watchdog_dev, 0, 0); + puts("Watchdog: Started\n"); #endif return 0; |