Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | /* |
| 3 | * Copyright (C) 2017 PHYTEC America, LLC |
| 4 | * |
| 5 | * Refer doc/imx/mkimage/imximage.txt for more details about how-to configure |
| 6 | * and create imximage boot image |
| 7 | * |
| 8 | * The syntax is taken as close as possible with the kwbimage |
| 9 | */ |
| 10 | |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 11 | #include <config.h> |
| 12 | |
| 13 | IMAGE_VERSION 2 |
| 14 | #ifdef CONFIG_IMX_HAB |
| 15 | CSF CONFIG_CSF_SIZE |
| 16 | #endif |
| 17 | |
| 18 | BOOT_FROM sd |
| 19 | |
| 20 | /* |
| 21 | * Device Configuration Data (DCD) |
| 22 | * |
| 23 | * Each entry must have the format: |
| 24 | * Addr-type Address Value |
| 25 | * |
| 26 | * where: |
| 27 | * Addr-type register length (1,2 or 4 bytes) |
| 28 | * Address absolute address of the register |
| 29 | * value value to be stored in the register |
| 30 | */ |
| 31 | |
| 32 | /* |
| 33 | * Device Configuration Data (DCD) |
| 34 | * |
| 35 | * Each entry must have the format: |
| 36 | * Addr-type Address Value |
| 37 | * |
| 38 | * where: |
| 39 | * Addr-type register length (1,2 or 4 bytes) |
| 40 | * Address absolute address of the register |
| 41 | * value value to be stored in the register |
| 42 | */ |
| 43 | |
| 44 | /* DDR initialization came from Phytec */ |
| 45 | DATA 4 0x30340004 0x4F400005 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 46 | /* Clear then set bit30 to ensure exit from DDR retention */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 47 | DATA 4 0x30360388 0x40000000 |
| 48 | DATA 4 0x30360384 0x40000000 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 49 | |
| 50 | /* deassert presetn */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 51 | DATA 4 0x30391000 0x00000002 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 52 | |
| 53 | /* DDR Controller Regs */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 54 | DATA 4 0x307a0000 0x01040001 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 55 | DATA 4 0x307a0064 0x00400046 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 56 | DATA 4 0x307a0490 0x00000001 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 57 | DATA 4 0x307a00d4 0x00690000 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 58 | DATA 4 0x307a00d0 0x00020083 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 59 | DATA 4 0x307a00dc 0x09300004 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 60 | DATA 4 0x307a00e0 0x04480000 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 61 | DATA 4 0x307a00e4 0x00100004 |
| 62 | DATA 4 0x307a00f4 0x0000033f |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 63 | DATA 4 0x307a0100 0x090e110a |
| 64 | DATA 4 0x307a0104 0x0007020e |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 65 | DATA 4 0x307a0108 0x03040407 |
| 66 | DATA 4 0x307a010c 0x00002006 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 67 | DATA 4 0x307a0110 0x04020304 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 68 | DATA 4 0x307a0114 0x03030202 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 69 | DATA 4 0x307a0120 0x00000803 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 70 | DATA 4 0x307a0180 0x00800020 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 71 | DATA 4 0x307a0190 0x02098204 |
| 72 | DATA 4 0x307a0194 0x00030303 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 73 | DATA 4 0x307a01a0 0x80400003 |
| 74 | DATA 4 0x307a01a4 0x00100020 |
| 75 | DATA 4 0x307a01a8 0x80100004 |
| 76 | DATA 4 0x307a0200 0x0000001f |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 77 | DATA 4 0x307a0204 0x00080808 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 78 | DATA 4 0x307a020c 0x00000000 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 79 | DATA 4 0x307a0210 0x00000f0f |
| 80 | DATA 4 0x307a0214 0x07070707 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 81 | DATA 4 0x307a0218 0x0f070707 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 82 | DATA 4 0x307a0240 0x06000604 |
| 83 | DATA 4 0x307a0244 0x00000001 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 84 | |
| 85 | /* deassert presetn */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 86 | DATA 4 0x30391000 0x00000000 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 87 | |
| 88 | /* PHY Controller Regs */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 89 | DATA 4 0x30790000 0x17420f40 |
| 90 | DATA 4 0x30790004 0x10210100 |
| 91 | DATA 4 0x30790010 0x00060807 |
| 92 | DATA 4 0x307900b0 0x1010007e |
| 93 | DATA 4 0x3079009c 0x00000d6e |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 94 | /* write leveling values for each byte lane */ |
| 95 | DATA 4 0x3079006c 0x06090108 |
| 96 | /* write leveling resync cycle */ |
| 97 | DATA 4 0x30790078 0x00000001 |
| 98 | DATA 4 0x30790078 0x00000000 |
| 99 | DATA 4 0x30790030 0x08080808 |
| 100 | DATA 4 0x30790020 0x08080808 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 101 | DATA 4 0x30790050 0x01000010 |
| 102 | DATA 4 0x30790050 0x00000010 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 103 | DATA 4 0x30790018 0x0000000f |
| 104 | |
| 105 | /* start manual ZQ */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 106 | DATA 4 0x307900c0 0x0e407304 |
| 107 | DATA 4 0x307900c0 0x0e447304 |
| 108 | DATA 4 0x307900c0 0x0e447306 |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 109 | DATA 4 0x307900c0 0x0e447304 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 110 | |
| 111 | CHECK_BITS_SET 4 0x307900c4 0x1 |
| 112 | |
| 113 | /* end manual ZQ */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 114 | DATA 4 0x307900c0 0x0e407304 |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 115 | |
| 116 | /* final init sequence */ |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 117 | DATA 4 0x30384130 0x00000000 |
| 118 | DATA 4 0x30340020 0x00000178 |
| 119 | DATA 4 0x30384130 0x00000002 |
| 120 | DATA 4 0x30790018 0x0000000f |
Fabio Estevam | 8af8432 | 2022-01-18 17:39:50 -0300 | [diff] [blame] | 121 | |
Fabio Estevam | db1aa29 | 2021-05-28 10:26:57 -0300 | [diff] [blame] | 122 | CHECK_BITS_SET 4 0x307a0004 0x1 |