1*c2cde27dSStefan Roese/* 2*c2cde27dSStefan Roese * Projectiondesign AS 3*c2cde27dSStefan Roese * Derived from ./board/freescale/mx6qsabrelite/imximage.cfg 4*c2cde27dSStefan Roese * 5*c2cde27dSStefan Roese * Copyright (C) 2011 Freescale Semiconductor, Inc. 6*c2cde27dSStefan Roese * Jason Liu <r64343@freescale.com> 7*c2cde27dSStefan Roese * 8*c2cde27dSStefan Roese * SPDX-License-Identifier: GPL-2.0+ 9*c2cde27dSStefan Roese * 10*c2cde27dSStefan Roese * Refer docs/README.imxmage for more details about how-to configure 11*c2cde27dSStefan Roese * and create imximage boot image 12*c2cde27dSStefan Roese * 13*c2cde27dSStefan Roese * The syntax is taken as close as possible with the kwbimage 14*c2cde27dSStefan Roese */ 15*c2cde27dSStefan Roese 16*c2cde27dSStefan Roese/* image version */ 17*c2cde27dSStefan Roese 18*c2cde27dSStefan RoeseIMAGE_VERSION 2 19*c2cde27dSStefan Roese 20*c2cde27dSStefan Roese/* 21*c2cde27dSStefan Roese * Boot Device : one of 22*c2cde27dSStefan Roese * sd, nand 23*c2cde27dSStefan Roese */ 24*c2cde27dSStefan RoeseBOOT_FROM nand 25*c2cde27dSStefan Roese 26*c2cde27dSStefan Roese/* 27*c2cde27dSStefan Roese * Device Configuration Data (DCD) 28*c2cde27dSStefan Roese * 29*c2cde27dSStefan Roese * Each entry must have the format: 30*c2cde27dSStefan Roese * Addr-type Address Value 31*c2cde27dSStefan Roese * 32*c2cde27dSStefan Roese * where: 33*c2cde27dSStefan Roese * Addr-type register length (1,2 or 4 bytes) 34*c2cde27dSStefan Roese * Address absolute address of the register 35*c2cde27dSStefan Roese * value value to be stored in the register 36*c2cde27dSStefan Roese */ 37*c2cde27dSStefan Roese 38*c2cde27dSStefan Roese#define __ASSEMBLY__ 39*c2cde27dSStefan Roese#include <config.h> 40*c2cde27dSStefan Roese#include "asm/arch/mx6-ddr.h" 41*c2cde27dSStefan Roese#include "asm/arch/iomux.h" 42*c2cde27dSStefan Roese#include "asm/arch/crm_regs.h" 43*c2cde27dSStefan Roese 44*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030 45*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030 46*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030 47*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030 48*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030 49*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030 50*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030 51*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030 52*c2cde27dSStefan Roese 53*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM0, 0x00020030 54*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM1, 0x00020030 55*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM2, 0x00020030 56*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM3, 0x00020030 57*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM4, 0x00020030 58*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM5, 0x00020030 59*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM6, 0x00020030 60*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_DQM7, 0x00020030 61*c2cde27dSStefan Roese 62*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_CAS, 0x00020030 63*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_RAS, 0x00020030 64*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00020030 65*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00020030 66*c2cde27dSStefan Roese 67*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_RESET, 0x00020030 68*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000 69*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000 70*c2cde27dSStefan Roese 71*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000 72*c2cde27dSStefan Roese 73*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030 74*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030 75*c2cde27dSStefan Roese 76*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B0DS, 0x00000030 77*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B1DS, 0x00000030 78*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B2DS, 0x00000030 79*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B3DS, 0x00000030 80*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B4DS, 0x00000030 81*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B5DS, 0x00000030 82*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B6DS, 0x00000030 83*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_B7DS, 0x00000030 84*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_ADDDS, 0x00000030 85*c2cde27dSStefan Roese 86*c2cde27dSStefan Roese/* (differential input) */ 87*c2cde27dSStefan RoeseDATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000 88*c2cde27dSStefan Roese/* disable ddr pullups */ 89*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000 90*c2cde27dSStefan Roese/* (differential input) */ 91*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000 92*c2cde27dSStefan Roese/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ 93*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_CTLDS, 0x00000030 94*c2cde27dSStefan Roese/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ 95*c2cde27dSStefan RoeseDATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000 96*c2cde27dSStefan Roese 97*c2cde27dSStefan Roese/* Read data DQ Byte0-3 delay */ 98*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333 99*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333 100*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333 101*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333 102*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333 103*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333 104*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333 105*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333 106*c2cde27dSStefan Roese 107*c2cde27dSStefan Roese/* 108*c2cde27dSStefan Roese * MDMISC mirroring interleaved (row/bank/col) 109*c2cde27dSStefan Roese */ 110*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDMISC, 0x00081740 111*c2cde27dSStefan Roese 112*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x00008000 113*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDCFG0, 0x555A7975 114*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDCFG1, 0xFF538E64 115*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB 116*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDRWD, 0x000026D2 117*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDOR, 0x005B0E21 118*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDOTC, 0x09444040 119*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDPDC, 0x00025576 120*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDASP, 0x00000017 121*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDCTL, 0x83190000 122*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x04088032 123*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x0408803A 124*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x00008033 125*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x0000803B 126*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x00428031 127*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x00428039 128*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x09408030 129*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x09408038 130*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x04008040 131*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x04008048 132*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xA1380003 133*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xA1380003 134*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDREF, 0x00005800 135*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00022227 136*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00022227 137*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x434B0350 138*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x034C0359 139*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x434B0350 140*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03650348 141*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x4436383B 142*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x39393341 143*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x35373933 144*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x48254A36 145*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x001F001F 146*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x001F001F 147*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00440044 148*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00440044 149*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800 150*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800 151*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MDSCR, 0x00000000 152*c2cde27dSStefan RoeseDATA 4, MX6_MMDC_P0_MAPSR, 0x00011006 153*c2cde27dSStefan Roese 154*c2cde27dSStefan Roese/* set the default clock gate to save power */ 155*c2cde27dSStefan RoeseDATA 4, CCM_CCGR0, 0x00C03F3F 156*c2cde27dSStefan RoeseDATA 4, CCM_CCGR1, 0x0030FC03 157*c2cde27dSStefan RoeseDATA 4, CCM_CCGR2, 0x0FFFC000 158*c2cde27dSStefan RoeseDATA 4, CCM_CCGR3, 0x3FF00000 159*c2cde27dSStefan RoeseDATA 4, CCM_CCGR4, 0xFFFFF300 /* enable NAND/GPMI/BCH clocks */ 160*c2cde27dSStefan RoeseDATA 4, CCM_CCGR5, 0x0F0000C3 161*c2cde27dSStefan RoeseDATA 4, CCM_CCGR6, 0x000003FF 162*c2cde27dSStefan Roese 163*c2cde27dSStefan Roese/* enable AXI cache for VDOA/VPU/IPU */ 164*c2cde27dSStefan RoeseDATA 4, MX6_IOMUXC_GPR4, 0xF00000CF 165*c2cde27dSStefan Roese/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */ 166*c2cde27dSStefan RoeseDATA 4, MX6_IOMUXC_GPR6, 0x007F007F 167*c2cde27dSStefan RoeseDATA 4, MX6_IOMUXC_GPR7, 0x007F007F 168