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