1*0d6140beSAndroid Build Coastguard Worker /* 2*0d6140beSAndroid Build Coastguard Worker * This file is part of the flashrom project. 3*0d6140beSAndroid Build Coastguard Worker * 4*0d6140beSAndroid Build Coastguard Worker * Copyright (C) 2022 Aarya Chaumal 5*0d6140beSAndroid Build Coastguard Worker * 6*0d6140beSAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify 7*0d6140beSAndroid Build Coastguard Worker * it under the terms of the GNU General Public License as published by 8*0d6140beSAndroid Build Coastguard Worker * the Free Software Foundation; either version 2 of the License, or 9*0d6140beSAndroid Build Coastguard Worker * (at your option) any later version. 10*0d6140beSAndroid Build Coastguard Worker * 11*0d6140beSAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, 12*0d6140beSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*0d6140beSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*0d6140beSAndroid Build Coastguard Worker * GNU General Public License for more details. 15*0d6140beSAndroid Build Coastguard Worker */ 16*0d6140beSAndroid Build Coastguard Worker 17*0d6140beSAndroid Build Coastguard Worker #ifndef __ERASURE_LAYOUT_H__ 18*0d6140beSAndroid Build Coastguard Worker #define __ERASURE_LAYOUT_H__ 1 19*0d6140beSAndroid Build Coastguard Worker 20*0d6140beSAndroid Build Coastguard Worker struct eraseblock_data { 21*0d6140beSAndroid Build Coastguard Worker chipoff_t start_addr; 22*0d6140beSAndroid Build Coastguard Worker chipoff_t end_addr; 23*0d6140beSAndroid Build Coastguard Worker bool selected; 24*0d6140beSAndroid Build Coastguard Worker size_t block_num; 25*0d6140beSAndroid Build Coastguard Worker size_t first_sub_block_index; 26*0d6140beSAndroid Build Coastguard Worker size_t last_sub_block_index; 27*0d6140beSAndroid Build Coastguard Worker }; 28*0d6140beSAndroid Build Coastguard Worker 29*0d6140beSAndroid Build Coastguard Worker struct erase_layout { 30*0d6140beSAndroid Build Coastguard Worker struct eraseblock_data* layout_list; 31*0d6140beSAndroid Build Coastguard Worker size_t block_count; 32*0d6140beSAndroid Build Coastguard Worker const struct block_eraser *eraser; 33*0d6140beSAndroid Build Coastguard Worker }; 34*0d6140beSAndroid Build Coastguard Worker 35*0d6140beSAndroid Build Coastguard Worker void free_erase_layout(struct erase_layout *layout, unsigned int erasefn_count); 36*0d6140beSAndroid Build Coastguard Worker int create_erase_layout(struct flashctx *const flashctx, struct erase_layout **erase_layout); 37*0d6140beSAndroid Build Coastguard Worker int erase_write(struct flashctx *const flashctx, chipoff_t region_start, chipoff_t region_end, 38*0d6140beSAndroid Build Coastguard Worker uint8_t* curcontents, uint8_t* newcontents, 39*0d6140beSAndroid Build Coastguard Worker struct erase_layout *erase_layout, bool *all_skipped); 40*0d6140beSAndroid Build Coastguard Worker 41*0d6140beSAndroid Build Coastguard Worker #endif /* !__ERASURE_LAYOUT_H__ */ 42