Hi,
We are working on Netra DM8168 based custom board. Where Watchdog out pin is not gated to reset switch.
My question is, is it possible to reset M3 cores without External watchdog out pin using software? if yes please let me know how and where to do it (in u-boot or linux).
My test case is as below:
case 1:
Executing watchdog kickoff function and doing nothing while rebooting.
./watchdog -t 10
system is reseted and unable to load the HDVICP2 & HDVPSS firmware log is as below
log:---------------------------------------------------------------------------------------------------------------------------
PRCM Initialization completed
SysLink version : 2.10.03.20
SysLink module created on Date:Sep 23 2012 Time:20:24:41
FIRMWARE: Memory map bin file not passed
Usage : firmware_loader <Processor Id>Unhandled fault: Precise External Abort on non-linefetch (0x1808) at 0xf9020000
<Location of FiInternal error: : 1808 [#1]
last sysfs file: /sys/kernel/uevent_seqnum
Modules linked in: syslink ipv6
CPU: 0 Not tainted (2.6.37 #3)
PC is at DM8168DUCATIMMU_enable+0xc0/0x124 [syslink]
LR is at DM8168DUCATIMMU_enable+0x2c/0x124 [syslink]
pc : [<bf06b208>] lr : [<bf06b174>] psr: 20000013
sp : cb4c0fe8 ip : 00000000 fp : cb4c1004
r10: 00000000 r9 : 00000000 r8 : cb4c1ea4
r7 : d4e45000 r6 : d4e3c000 r5 : bf1447b0 r4 : d4e3f000
r3 : 00010000 r2 : f9020000 r1 : 00050000 r0 : bf0e35b5
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c5387d Table: 8b71c019 DAC: 00000015
Process firmware_loader (pid: 1060, stack limit = 0xcb4c02e8)
Stack: (0xcb4c0fe8 to 0xcb4c2000)
0fe0: cb4c1004 cb4c0ff8 d4e3f000 00000000 cb4c102c cb4c1008
1000: bf069e1c bf06b154 00000008 f9020000 bf140000 d4e3c000 097d2000 00000008
1020: cb4c104c cb4c1030 bf050c20 bf069bd8 cb4c1e2c 00000000 d0af4000 cb4c0000
1040: cb4c1e5c cb4c1050 bf04ff08 bf050b30 cb4c1ea4 00000000 00000000 00000000
1060: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
-------------------------------dump shorted here---------------------------------------------------
1fc0: 000458f4 00000000 00008d74 00000036 00000000 00000000 40091000 beeb5acc
1fe0: 00000000 beeb5aa8 000380b4 401faaec 60000010 00000008 00000000 00000000
Backtrace:
[<bf06b148>] (DM8168DUCATIMMU_enable+0x0/0x124 [syslink]) from [<bf069e1c>] (DM8168DUCATIPWR_on+0x250/0x2d4 [syslink])
r5:00000000 r4:d4e3f000
[<bf069bcc>] (DM8168DUCATIPWR_on+0x0/0x2d4 [syslink]) from [<bf050c20>] (PwrMgr_attach+0xfc/0x180 [syslink])
r6:00000008 r5:097d2000 r4:d4e3c000
[<bf050b24>] (PwrMgr_attach+0x0/0x180 [syslink]) from [<bf04ff08>] (ProcMgr_attach+0x190/0x3b0 [syslink])
r5:cb4c0000 r4:d0af4000
[<bf04fd78>] (ProcMgr_attach+0x0/0x3b0 [syslink]) from [<bf051790>] (ProcMgrDrv_ioctl+0x984/0x1c38 [syslink])
[<bf050e0c>] (ProcMgrDrv_ioctl+0x0/0x1c38 [syslink]) from [<c00d1db4>] (vfs_ioctl+0x28/0x44)
r8:beeb5ae8 r7:00000008 r6:00000008 r5:ccbc4000 r4:00000000
[<c00d1d8c>] (vfs_ioctl+0x0/0x44) from [<c00d24c4>] (do_vfs_ioctl+0x500/0x540)
[<c00d1fc4>] (do_vfs_ioctl+0x0/0x540) from [<c00d255c>] (sys_ioctl+0x58/0x7c)
[<c00d2504>] (sys_ioctl+0x0/0x7c) from [<c0044e00>] (ret_fast_syscall+0x0/0x30)
r8:c0044fa8 r7:00000036 r6:00008d74 r5:00000000 r4:000458f4
Code: e3130010 0afffffc e5942010 e3a03801 (e5823000)
rmware> <start|s---[ end trace 889997bb4df8c042 ]---
top> [-mmap <memory_map_file>] [-i2c <0|1>]
===Mandatory arguments===
<Processor Id> 0: DSP, 1: Video-M3, 2: Vpss-M3
<Location of Firmware> firmware binary file
<start|stop> to start/stop the firmware
===Optional arguments===
-mmap input memory map bin file name
-i2c 0: i2c init not done by M3, 1(default): i2c init done by M3
FIRMWARE: isI2cInitRequiredOnM3: 0
FIRMWARE: Default memory configuration is used
MemCfg: DCMM (Dynamically Configurable Memory Map) Version : 2.1.2.1
eth0: no IPv6 routers present
-----------------------------------------------------------------------------------------------------------------
Then system hangs here
Case 2: Executing watchdog kickoff function and reseting some m3 registes in u-boot:
./watchdog -t 10
While device is reseting at u-boot level following register writes or done
# mw 0x48180b10 w 0xff (RM_DEFAULT_RSTCTRL)
# mw 0x48180574 w 0x00 (CM_DEFAULT_DUCATI_CLKSTCTRL)
# mw 0x48180518 w 0x00 (CM_DEFAULT_DUCATI_CLKCTRL)
# mw 0x48180b10 w 0x10 (RM_DEFAULT_RSTCTRL)
#
==> Loads the firmware but unable to start it log is as below.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------