Tom Rini | 10e4779 | 2018-05-06 17:58:06 -0400 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 2 | /* |
| 3 | * Copyright (C) 2015 Freescale Semiconductor, Inc. |
| 4 | * 2015 Toradex AG |
| 5 | * |
Patrick Delaunay | 488b6ac | 2020-02-28 15:18:12 +0100 | [diff] [blame] | 6 | * Refer doc/imx/mkimage/imximage.txt for more details about how-to configure |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 7 | * and create imximage boot image |
| 8 | * |
| 9 | * The syntax is taken as close as possible with the kwbimage |
| 10 | */ |
| 11 | |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 12 | #include <config.h> |
| 13 | |
| 14 | /* image version */ |
| 15 | |
| 16 | IMAGE_VERSION 2 |
| 17 | |
| 18 | /* |
| 19 | * Boot Device : sd |
| 20 | */ |
| 21 | |
| 22 | BOOT_FROM sd |
| 23 | |
| 24 | /* |
| 25 | * Secure boot support |
| 26 | */ |
Stefano Babic | f8b509b | 2019-09-20 08:47:53 +0200 | [diff] [blame] | 27 | #ifdef CONFIG_IMX_HAB |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 28 | CSF CONFIG_CSF_SIZE |
| 29 | #endif |
| 30 | |
| 31 | /* |
| 32 | * Device Configuration Data (DCD) |
| 33 | * |
| 34 | * Each entry must have the format: |
| 35 | * Addr-type Address Value |
| 36 | * |
| 37 | * where: |
| 38 | * Addr-type register length (1,2 or 4 bytes) |
| 39 | * Address absolute address of the register |
| 40 | * value value to be stored in the register |
| 41 | */ |
| 42 | |
| 43 | /* IOMUXC_GPR_GPR1 */ |
| 44 | DATA 4 0x30340004 0x4F400005 |
| 45 | |
| 46 | /* DDR3L */ |
| 47 | /* assuming MEMC_FREQ_RATIO = 2 */ |
| 48 | /* SRC_DDRC_RCR */ |
| 49 | DATA 4 0x30391000 0x00000002 |
| 50 | /* DDRC_MSTR */ |
| 51 | DATA 4 0x307a0000 0x01040001 |
| 52 | /* DDRC_DFIUPD0 */ |
| 53 | DATA 4 0x307a01a0 0x80400003 |
| 54 | /* DDRC_DFIUPD1 */ |
| 55 | DATA 4 0x307a01a4 0x00100020 |
| 56 | /* DDRC_DFIUPD2 */ |
| 57 | DATA 4 0x307a01a8 0x80100004 |
| 58 | /* DDRC_RFSHTMG */ |
Stefan Agner | 13297c3 | 2018-06-26 11:10:52 +0200 | [diff] [blame] | 59 | DATA 4 0x307a0064 0x00400046 |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 60 | /* DDRC_MP_PCTRL_0 */ |
| 61 | DATA 4 0x307a0490 0x00000001 |
| 62 | /* DDRC_INIT0 */ |
| 63 | DATA 4 0x307a00d0 0x00020083 |
| 64 | /* DDRC_INIT1 */ |
| 65 | DATA 4 0x307a00d4 0x00690000 |
| 66 | /* DDRC_INIT3 MR0/MR1 */ |
| 67 | DATA 4 0x307a00dc 0x09300004 |
| 68 | /* DDRC_INIT4 MR2/MR3 */ |
| 69 | DATA 4 0x307a00e0 0x04480000 |
| 70 | /* DDRC_INIT5 */ |
| 71 | DATA 4 0x307a00e4 0x00100004 |
| 72 | /* DDRC_RANKCTL */ |
| 73 | DATA 4 0x307a00f4 0x0000033f |
| 74 | /* DDRC_DRAMTMG0 */ |
Stefan Agner | 13297c3 | 2018-06-26 11:10:52 +0200 | [diff] [blame] | 75 | DATA 4 0x307a0100 0x0910090a |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 76 | /* DDRC_DRAMTMG1 */ |
Stefan Agner | 13297c3 | 2018-06-26 11:10:52 +0200 | [diff] [blame] | 77 | DATA 4 0x307a0104 0x000d020e |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 78 | /* DDRC_DRAMTMG2 */ |
| 79 | DATA 4 0x307a0108 0x03040307 |
| 80 | /* DDRC_DRAMTMG3 */ |
| 81 | DATA 4 0x307a010c 0x00002006 |
| 82 | /* DDRC_DRAMTMG4 */ |
Stefan Agner | 13297c3 | 2018-06-26 11:10:52 +0200 | [diff] [blame] | 83 | DATA 4 0x307a0110 0x04020204 |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 84 | /* DDRC_DRAMTMG5 */ |
| 85 | DATA 4 0x307a0114 0x03030202 |
| 86 | /* DDRC_DRAMTMG8 */ |
| 87 | DATA 4 0x307a0120 0x00000803 |
| 88 | /* DDRC_ZQCTL0 */ |
| 89 | DATA 4 0x307a0180 0x00800020 |
| 90 | /* DDRC_ZQCTL1 */ |
| 91 | DATA 4 0x307a0184 0x02001000 |
| 92 | /* DDRC_DFITMG0 */ |
| 93 | DATA 4 0x307a0190 0x02098204 |
| 94 | /* DDRC_DFITMG1 */ |
| 95 | DATA 4 0x307a0194 0x00030303 |
| 96 | /* DDRC_ADDRMAP0 */ |
| 97 | DATA 4 0x307a0200 0x0000001f |
| 98 | /* DDRC_ADDRMAP1 */ |
| 99 | DATA 4 0x307a0204 0x00080808 |
| 100 | /* DDRC_ADDRMAP5 */ |
| 101 | DATA 4 0x307a0214 0x07070707 |
| 102 | /* DDRC_ADDRMAP6 */ |
| 103 | DATA 4 0x307a0218 0x07070707 |
| 104 | /* DDRC_ODTCFG */ |
| 105 | DATA 4 0x307a0240 0x06000601 |
| 106 | /* DDRC_ODTMAP */ |
Stefan Agner | 13297c3 | 2018-06-26 11:10:52 +0200 | [diff] [blame] | 107 | DATA 4 0x307a0244 0x00000001 |
Stefan Agner | 41f75bb | 2016-07-20 21:27:49 -0700 | [diff] [blame] | 108 | /* SRC_DDRC_RCR */ |
| 109 | DATA 4 0x30391000 0x00000000 |
| 110 | /* DDR_PHY_PHY_CON0 */ |
| 111 | DATA 4 0x30790000 0x17420f40 |
| 112 | /* DDR_PHY_PHY_CON1 */ |
| 113 | DATA 4 0x30790004 0x10210100 |
| 114 | /* DDR_PHY_PHY_CON4 */ |
| 115 | DATA 4 0x30790010 0x00060807 |
| 116 | /* DDR_PHY_MDLL_CON0 */ |
| 117 | DATA 4 0x307900b0 0x1010007e |
| 118 | /* DDR_PHY_DRVDS_CON0 */ |
| 119 | DATA 4 0x3079009c 0x00000d6e |
| 120 | /* DDR_PHY_OFFSET_RD_CON0 */ |
| 121 | DATA 4 0x30790020 0x08080808 |
| 122 | /* DDR_PHY_OFFSET_WR_CON0 */ |
| 123 | DATA 4 0x30790030 0x08080808 |
| 124 | /* DDR_PHY_CMD_SDLL_CON0 */ |
| 125 | DATA 4 0x30790050 0x01000010 |
| 126 | DATA 4 0x30790050 0x00000010 |
| 127 | |
| 128 | /* DDR_PHY_ZQ_CON0 */ |
| 129 | DATA 4 0x307900c0 0x0e407304 |
| 130 | DATA 4 0x307900c0 0x0e447304 |
| 131 | DATA 4 0x307900c0 0x0e447306 |
| 132 | /* DDR_PHY_ZQ_CON1 */ |
| 133 | CHECK_BITS_SET 4 0x307900c4 0x1 |
| 134 | /* DDR_PHY_ZQ_CON0 */ |
| 135 | DATA 4 0x307900c0 0x0e447304 |
| 136 | DATA 4 0x307900c0 0x0e407304 |
| 137 | |
| 138 | /* CCM_CCGRn */ |
| 139 | DATA 4 0x30384130 0x00000000 |
| 140 | /* IOMUXC_GPR_GPR8 */ |
| 141 | DATA 4 0x30340020 0x00000178 |
| 142 | /* CCM_CCGRn */ |
| 143 | DATA 4 0x30384130 0x00000002 |
| 144 | /* DDR_PHY_LP_CON0 */ |
| 145 | DATA 4 0x30790018 0x0000000f |
| 146 | |
| 147 | /* DDRC_STAT */ |
| 148 | CHECK_BITS_SET 4 0x307a0004 0x1 |