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