Lines Matching refs:self

24     def len_of_burn_unit(self):  argument
29 def __init__(self, parent, param, skip_read=False): argument
31 super(EfuseBlock, self).__init__(parent, param, skip_read=skip_read)
33 def apply_coding_scheme(self): argument
34 data = self.get_raw(from_read=False)[::-1]
35 if len(data) < self.len_of_burn_unit():
36 add_empty_bytes = self.len_of_burn_unit() - len(data)
38 if self.get_coding_scheme() == self.parent.REGS.CODING_SCHEME_RS:
62 self, argument
69 self.Blocks = EfuseDefineBlocks()
70 self.Fields = EfuseDefineFields(extend_efuse_table)
71 self.REGS = EfuseDefineRegisters
72 self.BURN_BLOCK_DATA_NAMES = self.Blocks.get_burn_block_data_names()
73 self.BLOCKS_FOR_KEYS = self.Blocks.get_blocks_for_keys()
74 self._esp = esp
75 self.debug = debug
76 self.do_not_confirm = do_not_confirm
83 flags = self._esp.get_security_info()["flags"]
89 self.blocks = [
90 EfuseBlock(self, self.Blocks.get(block), skip_read=skip_connect)
91 for block in self.Blocks.BLOCKS
94 self.get_coding_scheme_warnings()
95 self.efuses = [EfuseField.convert(self, efuse) for efuse in self.Fields.EFUSES]
96 self.efuses += [
97 EfuseField.convert(self, efuse) for efuse in self.Fields.KEYBLOCKS
100 self.efuses += [
101 EfuseField.convert(self, efuse)
102 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES
105 if self["BLK_VERSION_MAJOR"].get() == 1:
106 self.efuses += [
107 EfuseField.convert(self, efuse)
108 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES
110 self.efuses += [
111 EfuseField.convert(self, efuse) for efuse in self.Fields.CALC
114 def __getitem__(self, efuse_name): argument
116 for e in self.efuses:
120 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES:
124 self.efuses += [
125 EfuseField.convert(self, efuse)
126 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES
130 for e in self.efuses:
135 def read_coding_scheme(self): argument
136 self.coding_scheme = self.REGS.CODING_SCHEME_RS
138 def print_status_regs(self): argument
140 self.blocks[0].print_block(self.blocks[0].err_bitarray, "err__regs", debug=True)
143 "EFUSE_RD_RS_ERR0_REG", self.read_reg(self.REGS.EFUSE_RD_RS_ERR0_REG)
148 "EFUSE_RD_RS_ERR1_REG", self.read_reg(self.REGS.EFUSE_RD_RS_ERR1_REG)
152 def efuse_controller_setup(self): argument
153 self.set_efuse_timing()
154 self.clear_pgm_registers()
155 self.wait_efuse_idle()
157 def write_efuses(self, block): argument
158 self.efuse_program(block)
159 return self.get_coding_scheme_warnings(silent=True)
161 def clear_pgm_registers(self): argument
162 self.wait_efuse_idle()
164 self.REGS.EFUSE_PGM_DATA0_REG, self.REGS.EFUSE_PGM_DATA0_REG + 32, 4
166 self.write_reg(r, 0)
168 def wait_efuse_idle(self): argument
169 deadline = time.time() + self.REGS.EFUSE_BURN_TIMEOUT
171 cmds = self.REGS.EFUSE_PGM_CMD | self.REGS.EFUSE_READ_CMD
172 if self.read_reg(self.REGS.EFUSE_CMD_REG) & cmds == 0:
173 if self.read_reg(self.REGS.EFUSE_CMD_REG) & cmds == 0:
182 def efuse_program(self, block): argument
183 self.wait_efuse_idle()
184 self.write_reg(self.REGS.EFUSE_CONF_REG, self.REGS.EFUSE_WRITE_OP_CODE)
185 self.write_reg(self.REGS.EFUSE_CMD_REG, self.REGS.EFUSE_PGM_CMD | (block << 2))
186 self.wait_efuse_idle()
187 self.clear_pgm_registers()
188 self.efuse_read()
190 def efuse_read(self): argument
191 self.wait_efuse_idle()
192 self.write_reg(self.REGS.EFUSE_CONF_REG, self.REGS.EFUSE_READ_OP_CODE)
197 self.write_reg(
198 self.REGS.EFUSE_CMD_REG, self.REGS.EFUSE_READ_CMD, delay_after_us=1000
200 self.wait_efuse_idle()
202 secure_download_mode_before = self._esp.secure_download_mode
205 self._esp = self.reconnect_chip(self._esp)
208 if not self["DIS_DOWNLOAD_MODE"].get() and self[
221 if self._esp.secure_download_mode and not secure_download_mode_before:
223 if not self["ENABLE_SECURITY_DOWNLOAD"].get() and self[
234 def set_efuse_timing(self): argument
237 apb_freq = self.get_crystal_freq()
243 self.update_reg(self.REGS.EFUSE_DAC_CONF_REG, self.REGS.EFUSE_DAC_NUM_M, 0xFF)
244 self.update_reg(
245 self.REGS.EFUSE_DAC_CONF_REG, self.REGS.EFUSE_DAC_CLK_DIV_M, 0x28
247 self.update_reg(
248 self.REGS.EFUSE_WR_TIM_CONF1_REG, self.REGS.EFUSE_PWR_ON_NUM_M, 0x3000
250 self.update_reg(
251 self.REGS.EFUSE_WR_TIM_CONF2_REG, self.REGS.EFUSE_PWR_OFF_NUM_M, 0x190
254 def get_coding_scheme_warnings(self, silent=False): argument
257 for block in self.blocks:
260 self.read_reg(self.REGS.EFUSE_RD_REPEAT_ERR0_REG + offs * 4)
269 addr_reg_f, fail_bit = self.REGS.BLOCK_FAIL_BIT[block.id]
273 block.fail = self.read_reg(addr_reg_f) & (1 << fail_bit) != 0
275 addr_reg_n, num_mask, num_offs = self.REGS.BLOCK_NUM_ERRORS[block.id]
280 self.read_reg(addr_reg_n) >> num_offs
289 if (self.debug or ret_fail) and not silent:
290 self.print_status_regs()
293 def summary(self): argument
311 def get(self, from_read=True): argument
312 hi_bits = self.parent["WAFER_VERSION_MINOR_HI"].get(from_read)
313 assert self.parent["WAFER_VERSION_MINOR_HI"].bit_len == 1
314 lo_bits = self.parent["WAFER_VERSION_MINOR_LO"].get(from_read)
315 assert self.parent["WAFER_VERSION_MINOR_LO"].bit_len == 3
318 def save(self, new_value): argument
319 raise esptool.FatalError("Burning %s is not supported" % self.name)
323 def get(self, from_read=True): argument
324 value = self.get_bitstring(from_read)
330 def get(self, from_read=True): argument
332 value = self.get_bitstring(from_read)
338 def check_format(self, new_value_str): argument
362 def check(self): argument
363 errs, fail = self.parent.get_block_errors(self.block)
365 output = "Block%d has ERRORS:%d FAIL:%d" % (self.block, errs, fail)
370 def get(self, from_read=True): argument
371 if self.name == "CUSTOM_MAC":
372 mac = self.get_raw(from_read)[::-1]
374 mac = self.get_raw(from_read)
375 return "%s %s" % (util.hexify(mac, ":"), self.check())
377 def save(self, new_value): argument
385 if self.name == "CUSTOM_MAC":
386 bitarray_mac = self.convert_to_bitstring(new_value)
387 print_field(self, bitarray_mac)
388 super(EfuseMacField, self).save(new_value)
413 def check_format(self, new_value_str): argument
417 for purpose_name in self.KEY_PURPOSES:
422 if int(raw_val) not in [p[1] for p in self.KEY_PURPOSES if p[1] > 0]:
428 def need_reverse(self, new_key_purpose): argument
429 for key in self.KEY_PURPOSES:
433 def need_rd_protect(self, new_key_purpose): argument
434 for key in self.KEY_PURPOSES:
438 def get(self, from_read=True): argument
439 for p in self.KEY_PURPOSES:
440 if p[1] == self.get_raw(from_read):
444 def get_name(self, raw_val): argument
445 for key in self.KEY_PURPOSES:
449 def save(self, new_value): argument
450 raw_val = int(self.check_format(str(new_value)))
451 str_new_value = self.get_name(raw_val)
452 if self.name == "KEY_PURPOSE_5" and str_new_value.startswith("XTS_AES"):
454 return super(EfuseKeyPurposeField, self).save(raw_val)