Lines Matching refs:otp

35 static uint32_t bsec_shadow_register(uint32_t otp);
40 static uint32_t bsec_read_permanent_lock(uint32_t otp, bool *value);
83 static void enable_non_secure_access(uint32_t otp) in enable_non_secure_access() argument
85 otp_nsec_access[otp / __WORD_BIT] |= BIT(otp % __WORD_BIT); in enable_non_secure_access()
87 if (bsec_shadow_register(otp) != BSEC_OK) { in enable_non_secure_access()
92 static bool non_secure_can_access(uint32_t otp) in non_secure_can_access() argument
94 return (otp_nsec_access[otp / __WORD_BIT] & in non_secure_can_access()
95 BIT(otp % __WORD_BIT)) != 0U; in non_secure_can_access()
104 uint32_t otp; in bsec_dt_otp_nsec_access() local
119 otp = offset / sizeof(uint32_t); in bsec_dt_otp_nsec_access()
121 if (otp < STM32MP1_UPPER_OTP_START) { in bsec_dt_otp_nsec_access()
131 otp = STM32MP1_UPPER_OTP_START; in bsec_dt_otp_nsec_access()
156 for (i = otp; i < (otp + size); i++) { in bsec_dt_otp_nsec_access()
185 static uint32_t otp_bank_offset(uint32_t otp) in otp_bank_offset() argument
187 assert(otp <= STM32MP1_OTP_MAX_ID); in otp_bank_offset()
189 return ((otp & ~BSEC_OTP_MASK) >> BSEC_OTP_BANK_SHIFT) * in otp_bank_offset()
193 static uint32_t otp_bit_mask(uint32_t otp) in otp_bit_mask() argument
195 return BIT(otp & BSEC_OTP_MASK); in otp_bit_mask()
205 static uint32_t bsec_check_error(uint32_t otp, bool check_disturbed) in bsec_check_error() argument
207 uint32_t bit = otp_bit_mask(otp); in bsec_check_error()
208 uint32_t bank = otp_bank_offset(otp); in bsec_check_error()
260 static uint32_t bsec_shadow_register(uint32_t otp) in bsec_shadow_register() argument
270 result = bsec_read_sr_lock(otp, &value); in bsec_shadow_register()
272 ERROR("BSEC: %u Sticky-read bit read Error %u\n", otp, result); in bsec_shadow_register()
278 otp); in bsec_shadow_register()
293 mmio_write_32(BSEC_BASE + BSEC_OTP_CTRL_OFF, otp | BSEC_READ); in bsec_shadow_register()
299 result = bsec_check_error(otp, true); in bsec_shadow_register()
318 uint32_t bsec_read_otp(uint32_t *val, uint32_t otp) in bsec_read_otp() argument
324 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_read_otp()
329 (otp * sizeof(uint32_t))); in bsec_read_otp()
340 uint32_t bsec_write_otp(uint32_t val, uint32_t otp) in bsec_write_otp() argument
349 result = bsec_read_sw_lock(otp, &value); in bsec_write_otp()
351 ERROR("BSEC: %u Sticky-write bit read Error %u\n", otp, result); in bsec_write_otp()
357 otp); in bsec_write_otp()
364 (otp * sizeof(uint32_t)), val); in bsec_write_otp()
378 uint32_t bsec_program_otp(uint32_t val, uint32_t otp) in bsec_program_otp() argument
389 result = bsec_read_sp_lock(otp, &sp_lock); in bsec_program_otp()
391 ERROR("BSEC: %u Sticky-prog bit read Error %u\n", otp, result); in bsec_program_otp()
395 result = bsec_read_permanent_lock(otp, &perm_lock); in bsec_program_otp()
397 ERROR("BSEC: %u permanent bit read Error %u\n", otp, result); in bsec_program_otp()
424 mmio_write_32(BSEC_BASE + BSEC_OTP_CTRL_OFF, otp | BSEC_WRITE); in bsec_program_otp()
433 result = bsec_check_error(otp, true); in bsec_program_otp()
453 uint32_t bsec_permanent_lock_otp(uint32_t otp) in bsec_permanent_lock_otp() argument
464 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_permanent_lock_otp()
478 if (otp < STM32MP1_UPPER_OTP_START) { in bsec_permanent_lock_otp()
479 addr = otp >> ADDR_LOWER_OTP_PERLOCK_SHIFT; in bsec_permanent_lock_otp()
481 ((otp & DATA_LOWER_OTP_PERLOCK_MASK) << 1U); in bsec_permanent_lock_otp()
483 addr = (otp >> ADDR_UPPER_OTP_PERLOCK_SHIFT) + 2U; in bsec_permanent_lock_otp()
485 (otp & DATA_UPPER_OTP_PERLOCK_MASK); in bsec_permanent_lock_otp()
502 result = bsec_check_error(otp, false); in bsec_permanent_lock_otp()
574 uint32_t bsec_set_sr_lock(uint32_t otp) in bsec_set_sr_lock() argument
576 uint32_t bank = otp_bank_offset(otp); in bsec_set_sr_lock()
577 uint32_t otp_mask = otp_bit_mask(otp); in bsec_set_sr_lock()
583 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_set_sr_lock()
600 uint32_t bsec_read_sr_lock(uint32_t otp, bool *value) in bsec_read_sr_lock() argument
602 uint32_t bank = otp_bank_offset(otp); in bsec_read_sr_lock()
603 uint32_t otp_mask = otp_bit_mask(otp); in bsec_read_sr_lock()
606 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_read_sr_lock()
622 uint32_t bsec_set_sw_lock(uint32_t otp) in bsec_set_sw_lock() argument
624 uint32_t bank = otp_bank_offset(otp); in bsec_set_sw_lock()
625 uint32_t otp_mask = otp_bit_mask(otp); in bsec_set_sw_lock()
631 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_set_sw_lock()
648 uint32_t bsec_read_sw_lock(uint32_t otp, bool *value) in bsec_read_sw_lock() argument
650 uint32_t bank = otp_bank_offset(otp); in bsec_read_sw_lock()
651 uint32_t otp_mask = BIT(otp & BSEC_OTP_MASK); in bsec_read_sw_lock()
654 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_read_sw_lock()
670 uint32_t bsec_set_sp_lock(uint32_t otp) in bsec_set_sp_lock() argument
672 uint32_t bank = otp_bank_offset(otp); in bsec_set_sp_lock()
673 uint32_t otp_mask = otp_bit_mask(otp); in bsec_set_sp_lock()
679 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_set_sp_lock()
696 uint32_t bsec_read_sp_lock(uint32_t otp, bool *value) in bsec_read_sp_lock() argument
698 uint32_t bank = otp_bank_offset(otp); in bsec_read_sp_lock()
699 uint32_t otp_mask = BIT(otp & BSEC_OTP_MASK); in bsec_read_sp_lock()
702 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_read_sp_lock()
719 static uint32_t bsec_read_permanent_lock(uint32_t otp, bool *value) in bsec_read_permanent_lock() argument
721 uint32_t bank = otp_bank_offset(otp); in bsec_read_permanent_lock()
722 uint32_t otp_mask = otp_bit_mask(otp); in bsec_read_permanent_lock()
725 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_read_permanent_lock()
785 uint32_t bsec_shadow_read_otp(uint32_t *val, uint32_t otp) in bsec_shadow_read_otp() argument
789 result = bsec_shadow_register(otp); in bsec_shadow_read_otp()
791 ERROR("BSEC: %u Shadowing Error %u\n", otp, result); in bsec_shadow_read_otp()
795 result = bsec_read_otp(val, otp); in bsec_shadow_read_otp()
797 ERROR("BSEC: %u Read Error %u\n", otp, result); in bsec_shadow_read_otp()
809 uint32_t bsec_check_nsec_access_rights(uint32_t otp) in bsec_check_nsec_access_rights() argument
811 if (otp > STM32MP1_OTP_MAX_ID) { in bsec_check_nsec_access_rights()
815 if (otp >= STM32MP1_UPPER_OTP_START) { in bsec_check_nsec_access_rights()
816 if (!non_secure_can_access(otp)) { in bsec_check_nsec_access_rights()