1*a0a868b2SWalter Schweizer# Synology DS109 2*a0a868b2SWalter Schweizer 3*a0a868b2SWalter Schweizerinterface ftdi 4*a0a868b2SWalter Schweizerftdi_vid_pid 0x0403 0x6010 5*a0a868b2SWalter Schweizer 6*a0a868b2SWalter Schweizerftdi_layout_init 0x0008 0x000b 7*a0a868b2SWalter Schweizerftdi_layout_signal nTRST -data 0x0010 -oe 0x0010 8*a0a868b2SWalter Schweizerftdi_layout_signal nSRST -data 0x0040 -oe 0x0040 9*a0a868b2SWalter Schweizer 10*a0a868b2SWalter Schweizeradapter_khz 2000 11*a0a868b2SWalter Schweizer 12*a0a868b2SWalter Schweizer# length of reset signal: [ms] 13*a0a868b2SWalter Schweizeradapter_nsrst_assert_width 1000 14*a0a868b2SWalter Schweizer 15*a0a868b2SWalter Schweizer# don't talk to JTAG after reset for: [ms] 16*a0a868b2SWalter Schweizeradapter_nsrst_delay 200 17*a0a868b2SWalter Schweizer 18*a0a868b2SWalter Schweizersource [find target/feroceon.cfg] 19*a0a868b2SWalter Schweizer 20*a0a868b2SWalter Schweizerreset_config trst_and_srst srst_nogate 21*a0a868b2SWalter Schweizer 22*a0a868b2SWalter Schweizerproc ds109_init { } { 23*a0a868b2SWalter Schweizer 24*a0a868b2SWalter Schweizer # We need to assert DBGRQ while holding nSRST down. 25*a0a868b2SWalter Schweizer # However DBGACK will be set only when nSRST is released. 26*a0a868b2SWalter Schweizer # Furthermore, the JTAG interface doesn't respond at all when 27*a0a868b2SWalter Schweizer # the CPU is in the WFI (wait for interrupts) state, so it is 28*a0a868b2SWalter Schweizer # possible that initial tap examination failed. So let's 29*a0a868b2SWalter Schweizer # re-examine the target again here when nSRST is asserted which 30*a0a868b2SWalter Schweizer # should then succeed. 31*a0a868b2SWalter Schweizer jtag_reset 0 1 32*a0a868b2SWalter Schweizer feroceon.cpu arp_examine 33*a0a868b2SWalter Schweizer halt 0 34*a0a868b2SWalter Schweizer jtag_reset 0 0 35*a0a868b2SWalter Schweizer wait_halt 36*a0a868b2SWalter Schweizer #reset run 37*a0a868b2SWalter Schweizer #soft_reset_halt 38*a0a868b2SWalter Schweizer 39*a0a868b2SWalter Schweizer arm mcr 15 0 0 1 0 0x00052078 40*a0a868b2SWalter Schweizer 41*a0a868b2SWalter Schweizer mww 0xD00100e0 0x1b1b1b9b ;# 42*a0a868b2SWalter Schweizer mww 0xD0020134 0xbbbbbbbb ;# 43*a0a868b2SWalter Schweizer mww 0xD0020138 0x00bbbbbb ;# 44*a0a868b2SWalter Schweizer mww 0xD0001400 0x43000C30 ;# DDR SDRAM Configuration Register 45*a0a868b2SWalter Schweizer mww 0xD0001404 0x39743000 ;# Dunit Control Low Register 46*a0a868b2SWalter Schweizer mww 0xD0001408 0x22125551 ;# DDR SDRAM Timing (Low) Register 47*a0a868b2SWalter Schweizer mww 0xD000140C 0x00000833 ;# DDR SDRAM Timing (High) Register 48*a0a868b2SWalter Schweizer mww 0xD0001410 0x0000000d ;# DDR SDRAM Address Control Register 49*a0a868b2SWalter Schweizer mww 0xD0001414 0x00000000 ;# DDR SDRAM Open Pages Control Register 50*a0a868b2SWalter Schweizer mww 0xD0001418 0x00000000 ;# DDR SDRAM Operation Register 51*a0a868b2SWalter Schweizer mww 0xD000141C 0x00000C62 ;# DDR SDRAM Mode Register 52*a0a868b2SWalter Schweizer mww 0xD0001420 0x00000042 ;# DDR SDRAM Extended Mode Register 53*a0a868b2SWalter Schweizer mww 0xD0001424 0x0000F1FF ;# Dunit Control High Register 54*a0a868b2SWalter Schweizer mww 0xD0001428 0x00085520 ;# Dunit Control High Register 55*a0a868b2SWalter Schweizer mww 0xD000147c 0x00008552 ;# Dunit Control High Register 56*a0a868b2SWalter Schweizer mww 0xD0001500 0x00000000 ;# 57*a0a868b2SWalter Schweizer mww 0xD0001504 0x07FFFFF1 ;# CS0n Size Register 58*a0a868b2SWalter Schweizer mww 0xD0001508 0x10000000 ;# CS1n Base Register 59*a0a868b2SWalter Schweizer mww 0xD000150C 0x00000000 ;# CS1n Size Register 60*a0a868b2SWalter Schweizer mww 0xD0001510 0x20000000 ;# 61*a0a868b2SWalter Schweizer mww 0xD0001514 0x00000000 ;# CS2n Size Register 62*a0a868b2SWalter Schweizer mww 0xD000151C 0x00000000 ;# CS3n Size Register 63*a0a868b2SWalter Schweizer mww 0xD0001494 0x003C0000 ;# DDR2 SDRAM ODT Control (Low) Register 64*a0a868b2SWalter Schweizer mww 0xD0001498 0x00000000 ;# DDR2 SDRAM ODT Control (High) REgister 65*a0a868b2SWalter Schweizer mww 0xD000149C 0x0000F80F ;# DDR2 Dunit ODT Control Register 66*a0a868b2SWalter Schweizer mww 0xD0001480 0x00000001 ;# DDR SDRAM Initialization Control Register 67*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# Main IRQ Interrupt Mask Register 68*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 69*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 70*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 71*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 72*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 73*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 74*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 75*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 76*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 77*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 78*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 79*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 80*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 81*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 82*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 83*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 84*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 85*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 86*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 87*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 88*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 89*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 90*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 91*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 92*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 93*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 94*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 95*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 96*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 97*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 98*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 99*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 100*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 101*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 102*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 103*a0a868b2SWalter Schweizer mww 0xD0020204 0x00000000 ;# " 104*a0a868b2SWalter Schweizer 105*a0a868b2SWalter Schweizer mww 0xD0010000 0x01111111 ;# MPP 0 to 7 106*a0a868b2SWalter Schweizer mww 0xD0010004 0x11113322 ;# MPP 8 to 15 107*a0a868b2SWalter Schweizer mww 0xD0010008 0x00001111 ;# MPP 16 to 23 108*a0a868b2SWalter Schweizer} 109*a0a868b2SWalter Schweizer 110*a0a868b2SWalter Schweizerproc ds109_load { } { 111*a0a868b2SWalter Schweizer # load u-Boot into RAM and execute it 112*a0a868b2SWalter Schweizer ds109_init 113*a0a868b2SWalter Schweizer load_image u-boot.bin 0x00600000 bin 114*a0a868b2SWalter Schweizer resume 0x00600000 115*a0a868b2SWalter Schweizer} 116