target: Add LS1046A
[fw/openocd] / tcl / target / bluenrg-x.cfg
index b0dd61ae903d241af200dfc968ac9c14c54c83b3..ea94be9628779608a78c83b98a7836d4019718ce 100644 (file)
@@ -1,8 +1,9 @@
 #
-# bluenrg-1/2 devices support only SWD transports.
+# bluenrg-1/2 and bluenrg-lp devices support only SWD transports.
 #
 
 source [find target/swj-dp.tcl]
+source [find mem_helper.tcl]
 
 if { [info exists CHIPNAME] } {
    set _CHIPNAME $CHIPNAME
@@ -20,15 +21,9 @@ if { [info exists WORKAREASIZE] } {
    set _WORKAREASIZE 0x5F00
 }
 
-adapter_khz 4000
+adapter speed 4000
 
-if { [info exists CPUTAPID] } {
-   set _CPUTAPID $CPUTAPID
-} else {
-   set _CPUTAPID 0x0bb11477
-}
-
-swj_newdap $_CHIPNAME cpu -expected-id $_CPUTAPID
+swj_newdap $_CHIPNAME cpu -expected-id 0x0bb11477 -expected-id 0x0bc11477
 dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
 
 set _TARGETNAME $_CHIPNAME.cpu
@@ -53,22 +48,27 @@ if {![using_hla]} {
 }
 
 $_TARGETNAME configure -event halted {
-       global WDOG_VALUE
-       global WDOG_VALUE_SET
-       # Stop watchdog during halt, if enabled
-       mem2array value 32 0x40700008 1
-       set WDOG_VALUE [expr ($value(0))]
-       if [expr ($value(0) & (1 << 1))] {
-               set WDOG_VALUE_SET 1
-               mww 0x40700008 [expr ($value(0) & 0xFFFFFFFD)]
-       }
+    global WDOG_VALUE
+    global WDOG_VALUE_SET
+    set _JTAG_IDCODE [mrw 0x40000004]
+    if {$_JTAG_IDCODE != 0x0201E041} {
+        # Stop watchdog during halt, if enabled. Only Bluenrg-1/2
+        set WDOG_VALUE [mrw 0x40700008]
+        if [expr {$WDOG_VALUE & (1 << 1)}] {
+            set WDOG_VALUE_SET 1
+            mww 0x40700008 [expr {$WDOG_VALUE & 0xFFFFFFFD}]
+        }
+    }
 }
 $_TARGETNAME configure -event resumed {
-       global WDOG_VALUE
-       global WDOG_VALUE_SET
-       if [expr $WDOG_VALUE_SET] {
-               # Restore watchdog enable value after resume
-               mww 0x40700008 $WDOG_VALUE
-               set WDOG_VALUE_SET 0
-       }
+    global WDOG_VALUE
+    global WDOG_VALUE_SET
+    set _JTAG_IDCODE [mrw 0x40000004]
+    if {$_JTAG_IDCODE != 0x0201E041} {
+        if {$WDOG_VALUE_SET} {
+            # Restore watchdog enable value after resume. Only Bluenrg-1/2
+            mww 0x40700008 $WDOG_VALUE
+            set WDOG_VALUE_SET 0
+           }
+   }
 }