hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/*
 * Freescale i.MX28 OCOTP Register Definitions
 *
 * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
 * on behalf of DENX Software Engineering GmbH
 *
 * Based on code from LTIB:
 * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#ifndef __MX28_REGS_OCOTP_H__
#define __MX28_REGS_OCOTP_H__
 
#include <asm/mach-imx/regs-common.h>
 
#ifndef    __ASSEMBLY__
struct mxs_ocotp_regs {
   mxs_reg_32(hw_ocotp_ctrl)    /* 0x0 */
   mxs_reg_32(hw_ocotp_data)    /* 0x10 */
   mxs_reg_32(hw_ocotp_cust0)    /* 0x20 */
   mxs_reg_32(hw_ocotp_cust1)    /* 0x30 */
   mxs_reg_32(hw_ocotp_cust2)    /* 0x40 */
   mxs_reg_32(hw_ocotp_cust3)    /* 0x50 */
   mxs_reg_32(hw_ocotp_crypto0)    /* 0x60 */
   mxs_reg_32(hw_ocotp_crypto1)    /* 0x70 */
   mxs_reg_32(hw_ocotp_crypto2)    /* 0x80 */
   mxs_reg_32(hw_ocotp_crypto3)    /* 0x90 */
   mxs_reg_32(hw_ocotp_hwcap0)    /* 0xa0 */
   mxs_reg_32(hw_ocotp_hwcap1)    /* 0xb0 */
   mxs_reg_32(hw_ocotp_hwcap2)    /* 0xc0 */
   mxs_reg_32(hw_ocotp_hwcap3)    /* 0xd0 */
   mxs_reg_32(hw_ocotp_hwcap4)    /* 0xe0 */
   mxs_reg_32(hw_ocotp_hwcap5)    /* 0xf0 */
   mxs_reg_32(hw_ocotp_swcap)    /* 0x100 */
   mxs_reg_32(hw_ocotp_custcap)    /* 0x110 */
   mxs_reg_32(hw_ocotp_lock)    /* 0x120 */
   mxs_reg_32(hw_ocotp_ops0)    /* 0x130 */
   mxs_reg_32(hw_ocotp_ops1)    /* 0x140 */
   mxs_reg_32(hw_ocotp_ops2)    /* 0x150 */
   mxs_reg_32(hw_ocotp_ops3)    /* 0x160 */
   mxs_reg_32(hw_ocotp_un0)    /* 0x170 */
   mxs_reg_32(hw_ocotp_un1)    /* 0x180 */
   mxs_reg_32(hw_ocotp_un2)    /* 0x190 */
   mxs_reg_32(hw_ocotp_rom0)    /* 0x1a0 */
   mxs_reg_32(hw_ocotp_rom1)    /* 0x1b0 */
   mxs_reg_32(hw_ocotp_rom2)    /* 0x1c0 */
   mxs_reg_32(hw_ocotp_rom3)    /* 0x1d0 */
   mxs_reg_32(hw_ocotp_rom4)    /* 0x1e0 */
   mxs_reg_32(hw_ocotp_rom5)    /* 0x1f0 */
   mxs_reg_32(hw_ocotp_rom6)    /* 0x200 */
   mxs_reg_32(hw_ocotp_rom7)    /* 0x210 */
   mxs_reg_32(hw_ocotp_srk0)    /* 0x220 */
   mxs_reg_32(hw_ocotp_srk1)    /* 0x230 */
   mxs_reg_32(hw_ocotp_srk2)    /* 0x240 */
   mxs_reg_32(hw_ocotp_srk3)    /* 0x250 */
   mxs_reg_32(hw_ocotp_srk4)    /* 0x260 */
   mxs_reg_32(hw_ocotp_srk5)    /* 0x270 */
   mxs_reg_32(hw_ocotp_srk6)    /* 0x280 */
   mxs_reg_32(hw_ocotp_srk7)    /* 0x290 */
   mxs_reg_32(hw_ocotp_version)    /* 0x2a0 */
};
#endif
 
#define    OCOTP_CTRL_WR_UNLOCK_MASK        (0xffff << 16)
#define    OCOTP_CTRL_WR_UNLOCK_OFFSET        16
#define    OCOTP_CTRL_WR_UNLOCK_KEY        (0x3e77 << 16)
#define    OCOTP_CTRL_RELOAD_SHADOWS        (1 << 13)
#define    OCOTP_CTRL_RD_BANK_OPEN            (1 << 12)
#define    OCOTP_CTRL_ERROR            (1 << 9)
#define    OCOTP_CTRL_BUSY                (1 << 8)
#define    OCOTP_CTRL_ADDR_MASK            0x3f
#define    OCOTP_CTRL_ADDR_OFFSET            0
 
#define    OCOTP_DATA_DATA_MASK            0xffffffff
#define    OCOTP_DATA_DATA_OFFSET            0
 
#define    OCOTP_CUST_BITS_MASK            0xffffffff
#define    OCOTP_CUST_BITS_OFFSET            0
 
#define    OCOTP_CRYPTO_BITS_MASK            0xffffffff
#define    OCOTP_CRYPTO_BITS_OFFSET        0
 
#define    OCOTP_HWCAP_BITS_MASK            0xffffffff
#define    OCOTP_HWCAP_BITS_OFFSET            0
 
#define    OCOTP_SWCAP_BITS_MASK            0xffffffff
#define    OCOTP_SWCAP_BITS_OFFSET            0
 
#define    OCOTP_CUSTCAP_RTC_XTAL_32768_PRESENT    (1 << 2)
#define    OCOTP_CUSTCAP_RTC_XTAL_32000_PRESENT    (1 << 1)
 
#define    OCOTP_LOCK_ROM7                (1 << 31)
#define    OCOTP_LOCK_ROM6                (1 << 30)
#define    OCOTP_LOCK_ROM5                (1 << 29)
#define    OCOTP_LOCK_ROM4                (1 << 28)
#define    OCOTP_LOCK_ROM3                (1 << 27)
#define    OCOTP_LOCK_ROM2                (1 << 26)
#define    OCOTP_LOCK_ROM1                (1 << 25)
#define    OCOTP_LOCK_ROM0                (1 << 24)
#define    OCOTP_LOCK_HWSW_SHADOW_ALT        (1 << 23)
#define    OCOTP_LOCK_CRYPTODCP_ALT        (1 << 22)
#define    OCOTP_LOCK_CRYPTOKEY_ALT        (1 << 21)
#define    OCOTP_LOCK_PIN                (1 << 20)
#define    OCOTP_LOCK_OPS                (1 << 19)
#define    OCOTP_LOCK_UN2                (1 << 18)
#define    OCOTP_LOCK_UN1                (1 << 17)
#define    OCOTP_LOCK_UN0                (1 << 16)
#define    OCOTP_LOCK_SRK                (1 << 15)
#define    OCOTP_LOCK_UNALLOCATED_MASK        (0x7 << 12)
#define    OCOTP_LOCK_UNALLOCATED_OFFSET        12
#define    OCOTP_LOCK_SRK_SHADOW            (1 << 11)
#define    OCOTP_LOCK_ROM_SHADOW            (1 << 10)
#define    OCOTP_LOCK_CUSTCAP            (1 << 9)
#define    OCOTP_LOCK_HWSW                (1 << 8)
#define    OCOTP_LOCK_CUSTCAP_SHADOW        (1 << 7)
#define    OCOTP_LOCK_HWSW_SHADOW            (1 << 6)
#define    OCOTP_LOCK_CRYPTODCP            (1 << 5)
#define    OCOTP_LOCK_CRYPTOKEY            (1 << 4)
#define    OCOTP_LOCK_CUST3            (1 << 3)
#define    OCOTP_LOCK_CUST2            (1 << 2)
#define    OCOTP_LOCK_CUST1            (1 << 1)
#define    OCOTP_LOCK_CUST0            (1 << 0)
 
#define    OCOTP_OPS_BITS_MASK            0xffffffff
#define    OCOTP_OPS_BITS_OFFSET            0
 
#define    OCOTP_UN_BITS_MASK            0xffffffff
#define    OCOTP_UN_BITS_OFFSET            0
 
#define    OCOTP_ROM_BOOT_MODE_MASK        (0xff << 24)
#define    OCOTP_ROM_BOOT_MODE_OFFSET        24
#define    OCOTP_ROM_SD_MMC_MODE_MASK        (0x3 << 22)
#define    OCOTP_ROM_SD_MMC_MODE_OFFSET        22
#define    OCOTP_ROM_SD_POWER_GATE_GPIO_MASK    (0x3 << 20)
#define    OCOTP_ROM_SD_POWER_GATE_GPIO_OFFSET    20
#define    OCOTP_ROM_SD_POWER_UP_DELAY_MASK    (0x3f << 14)
#define    OCOTP_ROM_SD_POWER_UP_DELAY_OFFSET    14
#define    OCOTP_ROM_SD_BUS_WIDTH_MASK        (0x3 << 12)
#define    OCOTP_ROM_SD_BUS_WIDTH_OFFSET        12
#define    OCOTP_ROM_SSP_SCK_INDEX_MASK        (0xf << 8)
#define    OCOTP_ROM_SSP_SCK_INDEX_OFFSET        8
#define    OCOTP_ROM_EMMC_USE_DDR            (1 << 7)
#define    OCOTP_ROM_DISABLE_SPI_NOR_FAST_READ    (1 << 6)
#define    OCOTP_ROM_ENABLE_USB_BOOT_SERIAL_NUM    (1 << 5)
#define    OCOTP_ROM_ENABLE_UNENCRYPTED_BOOT    (1 << 4)
#define    OCOTP_ROM_SD_MBR_BOOT            (1 << 3)
 
#define    OCOTP_SRK_BITS_MASK            0xffffffff
#define    OCOTP_SRK_BITS_OFFSET            0
 
#define    OCOTP_VERSION_MAJOR_MASK        (0xff << 24)
#define    OCOTP_VERSION_MAJOR_OFFSET        24
#define    OCOTP_VERSION_MINOR_MASK        (0xff << 16)
#define    OCOTP_VERSION_MINOR_OFFSET        16
#define    OCOTP_VERSION_STEP_MASK            0xffff
#define    OCOTP_VERSION_STEP_OFFSET        0
 
#endif /* __MX28_REGS_OCOTP_H__ */