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_MINOR"].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.REGS.EFUSE_PROGRAMMING_TIMING_PARAMETERS[apb_freq]
244 self.update_reg(
245 self.REGS.EFUSE_WR_TIM_CONF1_REG, self.REGS.EFUSE_TSUP_A_M, EFUSE_TSUP_A
247 self.update_reg(
248 self.REGS.EFUSE_WR_TIM_CONF0_REG, self.REGS.EFUSE_TPGM_M, EFUSE_TPGM
250 self.update_reg(
251 self.REGS.EFUSE_WR_TIM_CONF0_REG, self.REGS.EFUSE_THP_A_M, EFUSE_THP_A
253 self.update_reg(
254 self.REGS.EFUSE_WR_TIM_CONF0_REG,
255 self.REGS.EFUSE_TPGM_INACTIVE_M,
263 ) = self.REGS.VDDQ_TIMING_PARAMETERS[apb_freq]
264 self.update_reg(
265 self.REGS.EFUSE_DAC_CONF_REG,
266 self.REGS.EFUSE_DAC_CLK_DIV_M,
269 self.update_reg(
270 self.REGS.EFUSE_WR_TIM_CONF1_REG,
271 self.REGS.EFUSE_PWR_ON_NUM_M,
274 self.update_reg(
275 self.REGS.EFUSE_WR_TIM_CONF2_REG,
276 self.REGS.EFUSE_PWR_OFF_NUM_M,
280 EFUSE_TSUR_A, EFUSE_TRD, EFUSE_THR_A = self.REGS.EFUSE_READING_PARAMETERS[
286 self.update_reg(
287 self.REGS.EFUSE_RD_TIM_CONF_REG, self.REGS.EFUSE_TRD_M, EFUSE_TRD
289 self.update_reg(
290 self.REGS.EFUSE_RD_TIM_CONF_REG, self.REGS.EFUSE_THR_A_M, EFUSE_THR_A
293 def get_coding_scheme_warnings(self, silent=False): argument
298 for block in self.blocks:
301 self.read_reg(self.REGS.EFUSE_RD_REPEAT_ERR0_REG + offs * 4)
310 addr_reg, err_num_mask, err_num_offs, fail_bit = self.REGS.BLOCK_ERRORS[
317 reg_value = self.read_reg(addr_reg)
326 if (self.debug or ret_fail) and not silent:
327 self.print_status_regs()
330 def summary(self): argument
331 if self["VDD_SPI_FORCE"].get() == 0:
337 elif self["VDD_SPI_XPD"].get() == 0:
339 elif self["VDD_SPI_TIEH"].get() == 0:
359 def get(self, from_read=True): argument
360 hi_bits = self.parent["WAFER_VERSION_MINOR_HI"].get(from_read)
361 assert self.parent["WAFER_VERSION_MINOR_HI"].bit_len == 1
362 lo_bits = self.parent["WAFER_VERSION_MINOR_LO"].get(from_read)
363 assert self.parent["WAFER_VERSION_MINOR_LO"].bit_len == 3
366 def save(self, new_value): argument
367 raise esptool.FatalError("Burning %s is not supported" % self.name)
371 def get(self, from_read=True): argument
372 value = self.get_bitstring(from_read)
378 def get(self, from_read=True): argument
380 value = self.get_bitstring(from_read)
386 def check_format(self, new_value_str): argument
410 def check(self): argument
411 errs, fail = self.parent.get_block_errors(self.block)
413 output = "Block%d has ERRORS:%d FAIL:%d" % (self.block, errs, fail)
418 def get(self, from_read=True): argument
419 if self.name == "CUSTOM_MAC":
420 mac = self.get_raw(from_read)[::-1]
422 mac = self.get_raw(from_read)
423 return "%s %s" % (util.hexify(mac, ":"), self.check())
425 def save(self, new_value): argument
433 if self.name == "CUSTOM_MAC":
434 bitarray_mac = self.convert_to_bitstring(new_value)
435 print_field(self, bitarray_mac)
436 super(EfuseMacField, self).save(new_value)
465 def check_format(self, new_value_str): argument
469 for purpose_name in self.KEY_PURPOSES:
474 if int(raw_val) not in [p[1] for p in self.KEY_PURPOSES if p[1] > 0]:
480 def need_reverse(self, new_key_purpose): argument
481 for key in self.KEY_PURPOSES:
485 def need_rd_protect(self, new_key_purpose): argument
486 for key in self.KEY_PURPOSES:
490 def get(self, from_read=True): argument
491 for p in self.KEY_PURPOSES:
492 if p[1] == self.get_raw(from_read):
496 def save(self, new_value): argument
497 raw_val = int(self.check_format(str(new_value)))
498 return super(EfuseKeyPurposeField, self).save(raw_val)