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
111 def __getitem__(self, efuse_name): argument
113 for e in self.efuses:
117 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES:
121 self.efuses += [
122 EfuseField.convert(self, efuse)
123 for efuse in self.Fields.BLOCK2_CALIBRATION_EFUSES
127 for e in self.efuses:
132 def read_coding_scheme(self): argument
133 self.coding_scheme = self.REGS.CODING_SCHEME_RS
135 def print_status_regs(self): argument
137 self.blocks[0].print_block(self.blocks[0].err_bitarray, "err__regs", debug=True)
140 "EFUSE_RD_RS_ERR_REG", self.read_reg(self.REGS.EFUSE_RD_RS_ERR_REG)
144 def efuse_controller_setup(self): argument
145 self.set_efuse_timing()
146 self.clear_pgm_registers()
147 self.wait_efuse_idle()
149 def write_efuses(self, block): argument
150 self.efuse_program(block)
151 return self.get_coding_scheme_warnings(silent=True)
153 def clear_pgm_registers(self): argument
154 self.wait_efuse_idle()
156 self.REGS.EFUSE_PGM_DATA0_REG, self.REGS.EFUSE_PGM_DATA0_REG + 32, 4
158 self.write_reg(r, 0)
160 def wait_efuse_idle(self): argument
161 deadline = time.time() + self.REGS.EFUSE_BURN_TIMEOUT
163 cmds = self.REGS.EFUSE_PGM_CMD | self.REGS.EFUSE_READ_CMD
164 if self.read_reg(self.REGS.EFUSE_CMD_REG) & cmds == 0:
165 if self.read_reg(self.REGS.EFUSE_CMD_REG) & cmds == 0:
174 def efuse_program(self, block): argument
175 self.wait_efuse_idle()
176 self.write_reg(self.REGS.EFUSE_CONF_REG, self.REGS.EFUSE_WRITE_OP_CODE)
177 self.write_reg(self.REGS.EFUSE_CMD_REG, self.REGS.EFUSE_PGM_CMD | (block << 2))
178 self.wait_efuse_idle()
179 self.clear_pgm_registers()
180 self.efuse_read()
182 def efuse_read(self): argument
183 self.wait_efuse_idle()
184 self.write_reg(self.REGS.EFUSE_CONF_REG, self.REGS.EFUSE_READ_OP_CODE)
189 self.write_reg(
190 self.REGS.EFUSE_CMD_REG, self.REGS.EFUSE_READ_CMD, delay_after_us=1000
192 self.wait_efuse_idle()
194 secure_download_mode_before = self._esp.secure_download_mode
197 self._esp = self.reconnect_chip(self._esp)
200 if not self["DIS_DOWNLOAD_MODE"].get() and self[
213 if self._esp.secure_download_mode and not secure_download_mode_before:
215 if not self["ENABLE_SECURITY_DOWNLOAD"].get() and self[
226 def set_efuse_timing(self): argument
229 xtal_freq = self.get_crystal_freq()
235 self.update_reg(self.REGS.EFUSE_DAC_CONF_REG, self.REGS.EFUSE_DAC_NUM_M, 0xFF)
236 self.update_reg(
237 self.REGS.EFUSE_DAC_CONF_REG, self.REGS.EFUSE_DAC_CLK_DIV_M, 0x28
239 self.update_reg(
240 self.REGS.EFUSE_WR_TIM_CONF1_REG, self.REGS.EFUSE_PWR_ON_NUM_M, 0x3000
242 self.update_reg(
243 self.REGS.EFUSE_WR_TIM_CONF2_REG, self.REGS.EFUSE_PWR_OFF_NUM_M, 0x190
247 self.update_reg(
248 self.REGS.EFUSE_WR_TIM_CONF0_REG,
249 self.REGS.EFUSE_TPGM_INACTIVE_M,
253 def get_coding_scheme_warnings(self, silent=False): argument
258 for block in self.blocks:
261 self.read_reg(self.REGS.EFUSE_RD_REPEAT_ERR_REG + offs * 4)
270 addr_reg, err_num_mask, err_num_offs, fail_bit = self.REGS.BLOCK_ERRORS[
277 reg_value = self.read_reg(addr_reg)
286 if (self.debug or ret_fail) and not silent:
287 self.print_status_regs()
290 def summary(self): argument
307 def get(self, from_read=True): argument
308 value = self.get_bitstring(from_read)
314 def get(self, from_read=True): argument
316 value = self.get_bitstring(from_read)
322 def check_format(self, new_value_str): argument
346 def check(self): argument
347 errs, fail = self.parent.get_block_errors(self.block)
349 output = "Block%d has ERRORS:%d FAIL:%d" % (self.block, errs, fail)
354 def get(self, from_read=True): argument
355 if self.name == "CUSTOM_MAC":
356 mac = self.get_raw(from_read)[::-1]
358 mac = self.get_raw(from_read)
359 return "%s %s" % (util.hexify(mac, ":"), self.check())
361 def save(self, new_value): argument
369 if self.name == "CUSTOM_MAC":
370 bitarray_mac = self.convert_to_bitstring(new_value)
371 print_field(self, bitarray_mac)
372 super(EfuseMacField, self).save(new_value)