xref: /rk3399_rockchip-uboot/arch/arm/mach-mvebu/include/mach/efuse.h (revision f77309d34325369dbdf0bf62387c9e974f1b37da)
1*a1b6b0a9SMario Six /*
2*a1b6b0a9SMario Six  * Copyright (C) 2015 Reinhard Pfau <reinhard.pfau@gdsys.cc>
3*a1b6b0a9SMario Six  *
4*a1b6b0a9SMario Six  * SPDX-License-Identifier:	GPL-2.0+
5*a1b6b0a9SMario Six  */
6*a1b6b0a9SMario Six 
7*a1b6b0a9SMario Six #ifndef _MVEBU_EFUSE_H
8*a1b6b0a9SMario Six #define _MVEBU_EFUSE_H
9*a1b6b0a9SMario Six 
10*a1b6b0a9SMario Six #include <common.h>
11*a1b6b0a9SMario Six 
12*a1b6b0a9SMario Six struct efuse_val {
13*a1b6b0a9SMario Six 	union {
14*a1b6b0a9SMario Six 		struct {
15*a1b6b0a9SMario Six 			u8 d[8];
16*a1b6b0a9SMario Six 		} bytes;
17*a1b6b0a9SMario Six 		struct {
18*a1b6b0a9SMario Six 			u16 d[4];
19*a1b6b0a9SMario Six 		} words;
20*a1b6b0a9SMario Six 		struct {
21*a1b6b0a9SMario Six 			u32 d[2];
22*a1b6b0a9SMario Six 		} dwords;
23*a1b6b0a9SMario Six 	};
24*a1b6b0a9SMario Six 	u32 lock;
25*a1b6b0a9SMario Six };
26*a1b6b0a9SMario Six 
27*a1b6b0a9SMario Six #if defined(CONFIG_ARMADA_38X)
28*a1b6b0a9SMario Six 
29*a1b6b0a9SMario Six enum efuse_line {
30*a1b6b0a9SMario Six 	EFUSE_LINE_SECURE_BOOT = 24,
31*a1b6b0a9SMario Six 	EFUSE_LINE_PUBKEY_DIGEST_0 = 26,
32*a1b6b0a9SMario Six 	EFUSE_LINE_PUBKEY_DIGEST_1 = 27,
33*a1b6b0a9SMario Six 	EFUSE_LINE_PUBKEY_DIGEST_2 = 28,
34*a1b6b0a9SMario Six 	EFUSE_LINE_PUBKEY_DIGEST_3 = 29,
35*a1b6b0a9SMario Six 	EFUSE_LINE_PUBKEY_DIGEST_4 = 30,
36*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_0_VALID = 31,
37*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_1_VALID = 32,
38*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_2_VALID = 33,
39*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_3_VALID = 34,
40*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_4_VALID = 35,
41*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_5_VALID = 36,
42*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_6_VALID = 37,
43*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_7_VALID = 38,
44*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_8_VALID = 39,
45*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_9_VALID = 40,
46*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_10_VALID = 41,
47*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_11_VALID = 42,
48*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_12_VALID = 43,
49*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_13_VALID = 44,
50*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_14_VALID = 45,
51*a1b6b0a9SMario Six 	EFUSE_LINE_CSK_15_VALID = 46,
52*a1b6b0a9SMario Six 	EFUSE_LINE_FLASH_ID = 47,
53*a1b6b0a9SMario Six 	EFUSE_LINE_BOX_ID = 48,
54*a1b6b0a9SMario Six 
55*a1b6b0a9SMario Six 	EFUSE_LINE_MIN = 0,
56*a1b6b0a9SMario Six 	EFUSE_LINE_MAX = 63,
57*a1b6b0a9SMario Six };
58*a1b6b0a9SMario Six 
59*a1b6b0a9SMario Six #endif
60*a1b6b0a9SMario Six 
61*a1b6b0a9SMario Six int mvebu_efuse_init_hw(void);
62*a1b6b0a9SMario Six 
63*a1b6b0a9SMario Six int mvebu_read_efuse(int nr, struct efuse_val *val);
64*a1b6b0a9SMario Six 
65*a1b6b0a9SMario Six int mvebu_write_efuse(int nr, struct efuse_val *val);
66*a1b6b0a9SMario Six 
67*a1b6b0a9SMario Six int mvebu_lock_efuse(int nr);
68*a1b6b0a9SMario Six 
69*a1b6b0a9SMario Six #endif
70