Lines Matching refs:state
52 #define BOOT_COPY_REGION(state, fap_pri, fap_sec, pri_off, sec_off, sz, sector_off) \ argument
53 boot_copy_region(state, fap_pri, fap_sec, pri_off, sec_off, sz, sector_off)
55 #define BOOT_COPY_REGION(state, fap_pri, fap_sec, pri_off, sec_off, sz, sector_off) \ argument
56 boot_copy_region(state, fap_pri, fap_sec, pri_off, sec_off, sz)
59 uint32_t find_last_idx(struct boot_loader_state *state, uint32_t swap_size) in find_last_idx() argument
65 sector_sz = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, 0); in find_last_idx()
80 int boot_read_image_header(struct boot_loader_state *state, int slot, argument
93 (void)state;
97 area_id = flash_area_id_from_multi_image_slot(BOOT_CURR_IMG(state), slot);
100 boot_swap_type_multi(BOOT_CURR_IMG(state)) != BOOT_SWAP_TYPE_REVERT) {
101 off = boot_img_sector_size(state, BOOT_SECONDARY_SLOT, 0);
106 boot_find_status(BOOT_CURR_IMG(state), &fap);
114 last_idx = find_last_idx(state, swap_size);
115 sz = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, 0);
122 boot_swap_type_multi(BOOT_CURR_IMG(state)) == BOOT_SWAP_TYPE_REVERT) {
126 bs->state == BOOT_STATUS_STATE_1))) {
136 bs->state == BOOT_STATUS_STATE_2)) {
147 (bs->idx == BOOT_STATUS_IDX_0 && bs->state == BOOT_STATUS_STATE_1)) &&
166 area_id = flash_area_id_from_multi_image_slot(BOOT_CURR_IMG(state), slot);
168 area_id = flash_area_id_from_multi_image_slot(BOOT_CURR_IMG(state), slot);
171 boot_swap_type_multi(BOOT_CURR_IMG(state)) == BOOT_SWAP_TYPE_REVERT) {
175 off = boot_img_sector_size(state, BOOT_SECONDARY_SLOT, 0);
194 if (boot_swap_type_multi(BOOT_CURR_IMG(state)) != BOOT_SWAP_TYPE_REVERT) {
197 off = boot_img_sector_size(state, BOOT_SECONDARY_SLOT, 0);
208 if (out_hdr->ih_magic == IMAGE_MAGIC && (bs != NULL || state->bootstrap_secondary_offset_set[
209 BOOT_CURR_IMG(state)] == false) &&
211 state->bootstrap_secondary_offset_set[BOOT_CURR_IMG(state)] = true;
215 state->secondary_offset[BOOT_CURR_IMG(state)] = off;
231 int swap_read_status_bytes(const struct flash_area *fap, struct boot_loader_state *state, argument
244 max_entries = boot_status_entries(BOOT_CURR_IMG(state), fap);
254 write_sz = BOOT_WRITE_SZ(state);
295 bs->state = (found_idx % BOOT_STATUS_SWAP_STATE_COUNT) + BOOT_STATUS_STATE_0;
308 (bs->state - BOOT_STATUS_STATE_0) * elem_sz;
313 static int app_max_sectors(struct boot_loader_state *state) argument
320 sector_sz = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, 0);
321 trailer_sz = boot_trailer_sz(BOOT_WRITE_SZ(state));
322 first_trailer_idx = boot_img_num_sectors(state, BOOT_PRIMARY_SLOT);
337 int boot_slots_compatible(struct boot_loader_state *state) argument
346 num_sectors_pri = boot_img_num_sectors(state, BOOT_PRIMARY_SLOT);
347 num_sectors_sec = boot_img_num_sectors(state, BOOT_SECONDARY_SLOT);
348 num_usable_sectors_pri = app_max_sectors(state);
370 sector_sz_pri = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, i);
371 sector_sz_sec = boot_img_sector_size(state, BOOT_SECONDARY_SLOT, i);
392 if (!swap_write_block_size_check(state)) {
399 if (sector_sz_pri != boot_img_sector_size(state, BOOT_PRIMARY_SLOT, i)) {
408 #define BOOT_LOG_SWAP_STATE(area, state) \ argument
412 ((state)->magic == BOOT_MAGIC_GOOD ? "good" : \
413 (state)->magic == BOOT_MAGIC_UNSET ? "unset" : \
415 (state)->swap_type, \
416 (state)->copy_done, \
417 (state)->image_ok)
419 int swap_status_source(struct boot_loader_state *state) argument
428 (void)state;
431 image_index = BOOT_CURR_IMG(state);
455 static void boot_swap_sectors(int idx, uint32_t sz, struct boot_loader_state *state, argument
465 pri_off = boot_img_sector_off(state, BOOT_PRIMARY_SLOT, idx);
466 sec_off = boot_img_sector_off(state, BOOT_SECONDARY_SLOT, idx);
467 sec_up_off = boot_img_sector_off(state, BOOT_PRIMARY_SLOT, (idx + 1));
469 if (bs->state == BOOT_STATUS_STATE_0) {
480 rc = BOOT_COPY_REGION(state, fap_pri, fap_sec, pri_off, sec_off, sz, 0);
484 rc = boot_write_status(state, bs);
485 bs->state = BOOT_STATUS_STATE_1;
489 if (bs->state == BOOT_STATUS_STATE_1) {
502 rc = BOOT_COPY_REGION(state, fap_sec, fap_pri, sec_up_off, pri_off, sz, 0);
506 rc = boot_write_status(state, bs);
508 bs->state = BOOT_STATUS_STATE_0;
513 static void boot_swap_sectors_revert(int idx, uint32_t sz, struct boot_loader_state *state, argument
526 pri_off = boot_img_sector_off(state, BOOT_PRIMARY_SLOT, idx);
527 sec_off = boot_img_sector_off(state, BOOT_SECONDARY_SLOT, idx + 1);
528 sec_up_off = boot_img_sector_off(state, BOOT_PRIMARY_SLOT, idx);
530 if (bs->state == BOOT_STATUS_STATE_0) {
541 rc = BOOT_COPY_REGION(state, fap_pri, fap_sec, pri_off, sec_off, sz, sector_sz);
545 rc = boot_write_status(state, bs);
546 bs->state = BOOT_STATUS_STATE_1;
550 if (bs->state == BOOT_STATUS_STATE_1) {
563 rc = BOOT_COPY_REGION(state, fap_sec, fap_pri, sec_up_off, pri_off, sz, 0);
567 rc = boot_write_status(state, bs);
569 bs->state = BOOT_STATUS_STATE_0;
584 void fixup_revert(const struct boot_loader_state *state, struct boot_status *bs, argument
591 (void)state;
606 rc = swap_erase_trailer_sectors(state, fap_sec);
612 rc = swap_status_init(state, fap_sec, bs);
617 void swap_run(struct boot_loader_state *state, struct boot_status *bs, argument
635 last_idx = find_last_idx(state, copy_size);
636 sector_sz = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, 0);
641 trailer_sz = boot_trailer_sz(BOOT_WRITE_SZ(state));
642 first_trailer_idx = boot_img_num_sectors(state, BOOT_PRIMARY_SLOT) - 1;
662 image_index = BOOT_CURR_IMG(state);
670 fixup_revert(state, bs, fap_sec);
677 rc = swap_erase_trailer_sectors(state, fap_pri);
680 rc = swap_status_init(state, fap_pri, bs);
684 rc = swap_erase_trailer_sectors(state, fap_sec);
690 used_sectors_pri = ((state->imgs[BOOT_CURR_IMG(state)][BOOT_PRIMARY_SLOT].hdr.ih_hdr_size +
691 state->imgs[BOOT_CURR_IMG(state)][BOOT_PRIMARY_SLOT].hdr.ih_protect_tlv_size +
692 state->imgs[BOOT_CURR_IMG(state)][BOOT_PRIMARY_SLOT].hdr.ih_img_size) + sector_sz - 1) /
694 used_sectors_sec = ((state->imgs[BOOT_CURR_IMG(state)][BOOT_SECONDARY_SLOT].hdr.ih_hdr_size +
695 state->imgs[BOOT_CURR_IMG(state)][BOOT_SECONDARY_SLOT].hdr.ih_protect_tlv_size +
696 state->imgs[BOOT_CURR_IMG(state)][BOOT_SECONDARY_SLOT].hdr.ih_img_size) + sector_sz - 1) /
700 boot_swap_type_multi(BOOT_CURR_IMG(state)) == BOOT_SWAP_TYPE_REVERT) {
705 boot_swap_sectors_revert(mirror_idx, sector_sz, state, bs, fap_pri, fap_sec,
718 rc = boot_erase_region(fap_sec, boot_img_sector_off(state, BOOT_SECONDARY_SLOT, 0),
721 rc = swap_erase_trailer_sectors(state, fap_sec);
726 boot_swap_sectors(idx, sector_sz, state, bs, fap_pri, fap_sec,
739 int app_max_size(struct boot_loader_state *state) argument
746 sector_sz_primary = boot_img_sector_size(state, BOOT_PRIMARY_SLOT, 0);
747 sector_sz_secondary = boot_img_sector_size(state, BOOT_SECONDARY_SLOT, 0);
750 sz_primary = app_max_sectors(state) * sector_sz_primary;
751 sz_secondary = boot_img_num_sectors(state, BOOT_SECONDARY_SLOT) * sector_sz_secondary -
758 int boot_read_image_size(struct boot_loader_state *state, int slot, uint32_t *size) argument
769 (void)state;
772 area_id = flash_area_id_from_multi_image_slot(BOOT_CURR_IMG(state), slot);
779 off = BOOT_TLV_OFF(boot_img_hdr(state, slot));
783 secondary_slot_off = state->secondary_offset[BOOT_CURR_IMG(state)];
791 protect_tlv_size = boot_img_hdr(state, slot)->ih_protect_tlv_size;