GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2019, ARM Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdint.h>
|
||||
#include <drivers/arm/sbsa.h>
|
||||
#include <lib/mmio.h>
|
||||
#include <plat/common/platform.h>
|
||||
|
||||
void sbsa_watchdog_offset_reg_write(uintptr_t base, uint64_t value)
|
||||
{
|
||||
assert((value >> SBSA_WDOG_WOR_WIDTH) == 0);
|
||||
mmio_write_32(base + SBSA_WDOG_WOR_LOW_OFFSET,
|
||||
((uint32_t)value & UINT32_MAX));
|
||||
mmio_write_32(base + SBSA_WDOG_WOR_HIGH_OFFSET, (uint32_t)(value >> 32));
|
||||
}
|
||||
|
||||
/*
|
||||
* Start the watchdog timer at base address "base" for a
|
||||
* period of "ms" milliseconds.The watchdog has to be
|
||||
* refreshed within this time period.
|
||||
*/
|
||||
void sbsa_wdog_start(uintptr_t base, uint64_t ms)
|
||||
{
|
||||
uint64_t counter_freq;
|
||||
uint64_t offset_reg_value;
|
||||
|
||||
counter_freq = (uint64_t)plat_get_syscnt_freq2();
|
||||
offset_reg_value = ms * counter_freq / 1000;
|
||||
|
||||
sbsa_watchdog_offset_reg_write(base, offset_reg_value);
|
||||
mmio_write_32(base + SBSA_WDOG_WCS_OFFSET, SBSA_WDOG_WCS_EN);
|
||||
}
|
||||
|
||||
/* Stop the watchdog */
|
||||
void sbsa_wdog_stop(uintptr_t base)
|
||||
{
|
||||
mmio_write_32(base + SBSA_WDOG_WCS_OFFSET, (0x0));
|
||||
}
|
||||
Reference in New Issue
Block a user