update IXP42x target / XBA board config
[openocd.git] / tcl / target / ixp42x.cfg
index 6d2ecb70401fc36726144dff726a184f72ff8090..6e5857a57e36f8868ddc197f04c1389a25fda87c 100644 (file)
@@ -1,6 +1,5 @@
 #xscale ixp42x CPU
 
-
 if { [info exists CHIPNAME] } {
    set  _CHIPNAME $CHIPNAME
 } else {
@@ -17,16 +16,92 @@ if { [info exists ENDIAN] } {
 if { [info exists CPUTAPID ] } {
    set _CPUTAPID $CPUTAPID
 } else {
-  # force an error till we get a good number
-   set _CPUTAPID 0xffffffff
+   set _CPUTAPID 0x19274013
 }
+set _CPUTAPID2 0x19275013
+set _CPUTAPID3 0x19277013
+set _CPUTAPID4 0x29274013
+set _CPUTAPID5 0x29275013
+set _CPUTAPID6 0x29277013
 
-#use combined on interfaces or targets that can?t set TRST/SRST separately
-reset_config srst_only srst_pulls_trst
-#jtag scan chain
-
-jtag newtap $_CHIPNAME cpu -irlen 7 -ircapture 0x1 -irmask 0x7f -expected-id $_CPUTAPID
+jtag newtap $_CHIPNAME cpu -irlen 7 -ircapture 0x1 -irmask 0x7f -expected-id $_CPUTAPID -expected-id $_CPUTAPID2 -expected-id $_CPUTAPID3 -expected-id $_CPUTAPID4 -expected-id $_CPUTAPID5 -expected-id $_CPUTAPID6
 
 set _TARGETNAME $_CHIPNAME.cpu
 target create $_TARGETNAME xscale -endian $_ENDIAN -chain-position $_TARGETNAME -variant ixp42x
 
+
+# register constants for IXP42x SDRAM controller
+global IXP425_SDRAM_IR_MODE_SET_CAS2_CMD
+global IXP425_SDRAM_IR_MODE_SET_CAS3_CMD
+set IXP425_SDRAM_IR_MODE_SET_CAS2_CMD  0x0000
+set IXP425_SDRAM_IR_MODE_SET_CAS3_CMD  0x0001
+
+global IXP42x_SDRAM_CL3                        
+global IXP42x_SDRAM_CL2                        
+set IXP42x_SDRAM_CL3                   0x0008
+set IXP42x_SDRAM_CL2                   0x0000
+
+global IXP42x_SDRAM_8MB_2Mx32_1BANK    
+global IXP42x_SDRAM_16MB_2Mx32_2BANK   
+global IXP42x_SDRAM_16MB_4Mx16_1BANK   
+global IXP42x_SDRAM_32MB_4Mx16_2BANK   
+global IXP42x_SDRAM_32MB_8Mx16_1BANK   
+global IXP42x_SDRAM_64MB_8Mx16_2BANK   
+global IXP42x_SDRAM_64MB_16Mx16_1BANK  
+global IXP42x_SDRAM_128MB_16Mx16_2BANK 
+global IXP42x_SDRAM_128MB_32Mx16_1BANK 
+global IXP42x_SDRAM_256MB_32Mx16_2BANK 
+
+set IXP42x_SDRAM_8MB_2Mx32_1BANK       0x0030
+set IXP42x_SDRAM_16MB_2Mx32_2BANK      0x0031
+set IXP42x_SDRAM_16MB_4Mx16_1BANK      0x0032
+set IXP42x_SDRAM_32MB_4Mx16_2BANK      0x0033
+set IXP42x_SDRAM_32MB_8Mx16_1BANK      0x0010
+set IXP42x_SDRAM_64MB_8Mx16_2BANK      0x0011
+set IXP42x_SDRAM_64MB_16Mx16_1BANK     0x0012
+set IXP42x_SDRAM_128MB_16Mx16_2BANK    0x0013
+set IXP42x_SDRAM_128MB_32Mx16_1BANK    0x0014
+set IXP42x_SDRAM_256MB_32Mx16_2BANK    0x0015
+
+
+# helper function to init SDRAM on IXP42x.
+# SDRAM_CFG: one of IXP42X_SDRAM_xxx
+# REFRESH: refresh counter reload value (integer) 
+# CASLAT: 2 or 3 
+proc ixp42x_init_sdram { SDRAM_CFG REFRESH CASLAT } {
+
+    switch $CASLAT {
+       2 { 
+           set SDRAM_CFG [expr $SDRAM_CFG | $::IXP42x_SDRAM_CL2 ] 
+           set CASCMD $::IXP425_SDRAM_IR_MODE_SET_CAS2_CMD 
+       }
+       3 {
+           set SDRAM_CFG [expr $SDRAM_CFG | $::IXP42x_SDRAM_CL3 ] 
+           set CASCMD $::IXP425_SDRAM_IR_MODE_SET_CAS3_CMD 
+       }
+       default { error [format "unsupported cas latency \"%s\" " $CASLAT] }
+    }
+    echo [format "\tIXP42x SDRAM Config: 0x%x, Refresh %d " $SDRAM_CFG $REFRESH]
+
+    mww 0xCC000000 $SDRAM_CFG ;# SDRAM_CFG: 0x2A: 64MBit, CL3
+    mww 0xCC000004          0 ;# disable refresh
+    mww 0xCC000008          3 ;# NOP
+    sleep 100
+    mww 0xCC000004   $REFRESH ;# set refresh counter
+    mww 0xCC000008          2 ;# Precharge All Banks
+    sleep 100
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008          4 ;# Auto Refresh
+    mww 0xCC000008    $CASCMD ;# Mode Select CL2/CL3
+}
+
+proc ixp42x_set_bigendian { } {
+    reg XSCALE_CTRL 0xF8
+}
+

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)