Newer
Older
barebox / Documentation / boards / imx / zii-imx6-rdu2 / openocd.cfg
#
# Board configuration file for the Zodiac RDU2 boards (6Q/6Q+ based)
#
interface ftdi
ftdi_vid_pid 0x0403 0x6011

ftdi_layout_init 0x0038 0x003b
ftdi_layout_signal nSRST -data 0x0010
ftdi_layout_signal LED -data 0x0020

# select JTAG
transport select jtag

reset_config srst_only srst_push_pull connect_deassert_srst

# set a slow default JTAG clock, can be overridden later
adapter_khz 1000

# delay after SRST goes inactive
adapter_nsrst_delay 30

# board has i.MX6Q(+) with 4 Cortex-A9 cores
set CHIPNAME imx6q
set IMX_FLAVOUR q

source [find target/imx6.cfg]
source [find mem_helper.tcl]

proc disable_wdog { } {
	echo "Bootstrap: Disabling SoC watchdog"
	mwh phys 0x020bc000 0x30
}

proc ddr_init_imx6q { } {
	echo "Bootstrap: Initializing DDR for i.MX6Q"

	mww phys 0x020e0798 0x000C0000
	mww phys 0x020e0758 0x00000000
	mww phys 0x020e0588 0x00000030
	mww phys 0x020e0594 0x00000030
	mww phys 0x020e056c 0x00000030
	mww phys 0x020e0578 0x00000030
	mww phys 0x020e074c 0x00000030
	mww phys 0x020e057c 0x00000030
	mww phys 0x020e058c 0x00000000
	mww phys 0x020e059c 0x00000030
	mww phys 0x020e05a0 0x00000030
	mww phys 0x020e078c 0x00000030
	mww phys 0x020e0750 0x00020000
	mww phys 0x020e05a8 0x00000028
	mww phys 0x020e05b0 0x00000028
	mww phys 0x020e0524 0x00000028
	mww phys 0x020e051c 0x00000028
	mww phys 0x020e0518 0x00000028
	mww phys 0x020e050c 0x00000028
	mww phys 0x020e05b8 0x00000028
	mww phys 0x020e05c0 0x00000028
	mww phys 0x020e0774 0x00020000
	mww phys 0x020e0784 0x00000028
	mww phys 0x020e0788 0x00000028
	mww phys 0x020e0794 0x00000028
	mww phys 0x020e079c 0x00000028
	mww phys 0x020e07a0 0x00000028
	mww phys 0x020e07a4 0x00000028
	mww phys 0x020e07a8 0x00000028
	mww phys 0x020e0748 0x00000028
	mww phys 0x020e05ac 0x00000028
	mww phys 0x020e05b4 0x00000028
	mww phys 0x020e0528 0x00000028
	mww phys 0x020e0520 0x00000028
	mww phys 0x020e0514 0x00000028
	mww phys 0x020e0510 0x00000028
	mww phys 0x020e05bc 0x00000028
	mww phys 0x020e05c4 0x00000028
	mww phys 0x021b0800 0xa1390003
	mww phys 0x021b080c 0x001F001F
	mww phys 0x021b0810 0x001F001F
	mww phys 0x021b480c 0x001F001F
	mww phys 0x021b4810 0x001F001F
	mww phys 0x021b083c 0x43260335
	mww phys 0x021b0840 0x031A030B
	mww phys 0x021b483c 0x4323033B
	mww phys 0x021b4840 0x0323026F
	mww phys 0x021b0848 0x483D4545
	mww phys 0x021b4848 0x44433E48
	mww phys 0x021b0850 0x41444840
	mww phys 0x021b4850 0x4835483E
	mww phys 0x021b081c 0x33333333
	mww phys 0x021b0820 0x33333333
	mww phys 0x021b0824 0x33333333
	mww phys 0x021b0828 0x33333333
	mww phys 0x021b481c 0x33333333
	mww phys 0x021b4820 0x33333333
	mww phys 0x021b4824 0x33333333
	mww phys 0x021b4828 0x33333333
	mww phys 0x021b08b8 0x00000800
	mww phys 0x021b48b8 0x00000800
	mww phys 0x021b0004 0x00020036
	mww phys 0x021b0008 0x09444040
	mww phys 0x021b000c 0x8A8F7955
	mww phys 0x021b0010 0xFF328F64
	mww phys 0x021b0014 0x01FF00DB
	mww phys 0x021b0018 0x00001740
	mww phys 0x021b001c 0x00008000
	mww phys 0x021b002c 0x000026d2
	mww phys 0x021b0030 0x008F1023
	mww phys 0x021b0040 0x00000047
	mww phys 0x021b0000 0x841A0000
	mww phys 0x021b001c 0x04088032
	mww phys 0x021b001c 0x00008033
	mww phys 0x021b001c 0x00048031
	mww phys 0x021b001c 0x09408030
	mww phys 0x021b001c 0x04008040
	mww phys 0x021b0020 0x00005800
	mww phys 0x021b0818 0x00011117
	mww phys 0x021b4818 0x00011117
	mww phys 0x021b0004 0x00025576
	mww phys 0x021b0404 0x00011006
	mww phys 0x021b001c 0x00000000

	# set the default clock gate to save power
	mww phys 0x020c4068 0x00C03F3F
	mww phys 0x020c406c 0x0030FC03
	mww phys 0x020c4070 0x0FFFC000
	mww phys 0x020c4074 0x3FF00000
	mww phys 0x020c4078 0xFFFFF300
	mww phys 0x020c407c 0x0F0000F3
	mww phys 0x020c4080 0x00000FFF

	# enable AXI cache for VDOA/VPU/IPU
	mww phys 0x020e0010 0xF00000CF
	# set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7
	mww phys 0x020e0018 0x007F007F
	mww phys 0x020e001c 0x007F007F
}

proc ddr_init_imx6qp { } {
	echo "Bootstrap: Initializing DDR for i.MX6Q+"

	mww phys 0x020e0798 0x000C0000
	mww phys 0x020e0758 0x00000000
	mww phys 0x020e0588 0x00000030
	mww phys 0x020e0594 0x00000030
	mww phys 0x020e056c 0x00000030
	mww phys 0x020e0578 0x00000030
	mww phys 0x020e074c 0x00000030
	mww phys 0x020e057c 0x00000030
	mww phys 0x020e058c 0x00000000
	mww phys 0x020e059c 0x00000030
	mww phys 0x020e05a0 0x00000030
	mww phys 0x020e078c 0x00000030
	mww phys 0x020e0750 0x00020000
	mww phys 0x020e05a8 0x00000030
	mww phys 0x020e05b0 0x00000030
	mww phys 0x020e0524 0x00000030
	mww phys 0x020e051c 0x00000030
	mww phys 0x020e0518 0x00000030
	mww phys 0x020e050c 0x00000030
	mww phys 0x020e05b8 0x00000030
	mww phys 0x020e05c0 0x00000030
	mww phys 0x020e0774 0x00020000
	mww phys 0x020e0784 0x00000030
	mww phys 0x020e0788 0x00000030
	mww phys 0x020e0794 0x00000030
	mww phys 0x020e079c 0x00000030
	mww phys 0x020e07a0 0x00000030
	mww phys 0x020e07a4 0x00000030
	mww phys 0x020e07a8 0x00000030
	mww phys 0x020e0748 0x00000030
	mww phys 0x020e05ac 0x00000030
	mww phys 0x020e05b4 0x00000030
	mww phys 0x020e0528 0x00000030
	mww phys 0x020e0520 0x00000030
	mww phys 0x020e0514 0x00000030
	mww phys 0x020e0510 0x00000030
	mww phys 0x020e05bc 0x00000030
	mww phys 0x020e05c4 0x00000030
	mww phys 0x021b0800 0xa1390003
	mww phys 0x021b080c 0x001b001e
	mww phys 0x021b0810 0x002e0029
	mww phys 0x021b480c 0x001b002a
	mww phys 0x021b4810 0x0019002c
	mww phys 0x021b083c 0x43240334
	mww phys 0x021b0840 0x0324031a
	mww phys 0x021b483c 0x43340344
	mww phys 0x021b4840 0x03280276
	mww phys 0x021b0848 0x44383A3E
	mww phys 0x021b4848 0x3C3C3846
	mww phys 0x021b0850 0x2e303230
	mww phys 0x021b4850 0x38283E34
	mww phys 0x021b081c 0x33333333
	mww phys 0x021b0820 0x33333333
	mww phys 0x021b0824 0x33333333
	mww phys 0x021b0828 0x33333333
	mww phys 0x021b481c 0x33333333
	mww phys 0x021b4820 0x33333333
	mww phys 0x021b4824 0x33333333
	mww phys 0x021b4828 0x33333333
	mww phys 0x021b08c0 0x24912492
	mww phys 0x021b48c0 0x24912492
	mww phys 0x021b08b8 0x00000800
	mww phys 0x021b48b8 0x00000800
	mww phys 0x021b0004 0x00020036
	mww phys 0x021b0008 0x09444040
	mww phys 0x021b000c 0x898E7955
	mww phys 0x021b0010 0xFF328F64
	mww phys 0x021b0014 0x01FF00DB
	mww phys 0x021b0018 0x00001740
	mww phys 0x021b001c 0x00008000

	mww phys 0x021b002c 0x000026d2
	mww phys 0x021b0030 0x008E1023
	mww phys 0x021b0040 0x00000047
	mww phys 0x021b0400 0x14420000
	mww phys 0x021b0000 0x841A0000
	mww phys 0x00bb0008 0x00000004
	mww phys 0x00bb000c 0x2891E41A
	mww phys 0x00bb0038 0x00000564
	mww phys 0x00bb0014 0x00000040
	mww phys 0x00bb0028 0x00000020
	mww phys 0x00bb002c 0x00000020
	mww phys 0x021b001c 0x04088032
	mww phys 0x021b001c 0x00008033
	mww phys 0x021b001c 0x00048031
	mww phys 0x021b001c 0x09408030
	mww phys 0x021b001c 0x04008040
	mww phys 0x021b0020 0x00005800
	mww phys 0x021b0818 0x00011117
	mww phys 0x021b4818 0x00011117
	mww phys 0x021b0004 0x00025576
	mww phys 0x021b0404 0x00011006
	mww phys 0x021b001c 0x00000000

	# set the default clock gate to save power
	mww phys 0x020c4068 0x00C03F3F
	mww phys 0x020c406c 0x0030FC03
	mww phys 0x020c4070 0x0FFFC000
	mww phys 0x020c4074 0x3FF00000
	mww phys 0x020c4078 0xFFFFF300
	mww phys 0x020c407c 0x0F0000F3
	mww phys 0x020c4080 0x00000FFF

	# enable AXI cache for VDOA/VPU/IPU
	mww phys 0x020e0010 0xF00000CF
	# set IPU AXI-id1 Qos=0x1 AXI-id0/2/3 Qos=0x7
	mww phys 0x020e0018 0x77177717
	mww phys 0x020e001c 0x77177717
}

proc ddr_init { } {
	#
	# Steps to detect 6Q vs 6Q+ are borrowed from
	# arch/arm/mach-imx/inclue/mach/imx6.h
	#
	set MX6_ANATOP_BASE_ADDR 0x020c8000
	set IMX6_ANATOP_SI_REV   0x260
	set si_rev [mrw [expr $MX6_ANATOP_BASE_ADDR + $IMX6_ANATOP_SI_REV]]
	set rev_major [expr ($si_rev >> 8) & 0xF]

	if { $rev_major >= 1 } {
		ddr_init_imx6qp
	} else {
		ddr_init_imx6q
	}
}

proc start_barebox { } {
	set MX6_DDR_BASE_ADDR 0x10000000
	echo "Bootstrap: Loading Barebox"
	halt
	load_image images/barebox-zii-imx6-rdu2.img $MX6_DDR_BASE_ADDR bin
	arm core_state arm
	echo [format "Bootstrap: Jumping to 0x%08x" $MX6_DDR_BASE_ADDR]
	resume $MX6_DDR_BASE_ADDR
}

proc board_init { } {
	disable_wdog
	ddr_init
}

${_TARGETNAME}.0 configure -event reset-init { board_init }