Lines Matching +full:write +full:- +full:protect

6  * SPDX-License-Identifier:	GPL-2.0+
53 writel(nvmop, &nvm_regs_p->ctrl.raw); in flash_initiate_operation()
55 /* enable flash write */ in flash_initiate_operation()
56 writel(NVM_WREN, &nvm_regs_p->ctrl.set); in flash_initiate_operation()
59 writel(LOCK_KEY, &nvm_regs_p->key.raw); in flash_initiate_operation()
60 writel(UNLOCK_KEY1, &nvm_regs_p->key.raw); in flash_initiate_operation()
61 writel(UNLOCK_KEY2, &nvm_regs_p->key.raw); in flash_initiate_operation()
64 writel(NVM_WR, &nvm_regs_p->ctrl.set); in flash_initiate_operation()
69 int ret = wait_for_bit_le32(&nvm_regs_p->ctrl.raw, in flash_wait_till_busy()
79 tmp = readl(&nvm_regs_p->ctrl.raw); in flash_complete_operation()
81 printf("Error in Block Erase - Lock Bit may be set!\n"); in flash_complete_operation()
87 printf("Error in Block Erase - low-vol detected!\n"); in flash_complete_operation()
92 /* disable flash write or erase operation */ in flash_complete_operation()
93 writel(NVM_WREN, &nvm_regs_p->ctrl.clr); in flash_complete_operation()
100 * ERR_OK - OK
101 * ERR_INVAL - invalid sector arguments
102 * ERR_TIMEOUT - write timeout
103 * ERR_NOT_ERASED - Flash not erased
104 * ERR_UNKNOWN_FLASH_VENDOR - incorrect flash
112 if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_MCHP) { in flash_erase()
113 printf("Can't erase unknown flash type %08lx - aborted\n", in flash_erase()
114 info->flash_id); in flash_erase()
119 printf("- no sectors to erase\n"); in flash_erase()
125 if (info->protect[sect]) in flash_erase()
130 printf("- Warning: %d protected sectors will not be erased!\n", in flash_erase()
137 if (info->protect[sect]) in flash_erase()
143 /* write destination page address (physical) */ in flash_erase()
144 sect_start = CPHYSADDR(info->start[sect]); in flash_erase()
145 writel(sect_start, &nvm_regs_p->addr.raw); in flash_erase()
154 /* re-enable interrupts if necessary */ in flash_erase()
169 sect_end = info->start[sect] + info->size / info->sector_count; in flash_erase()
170 invalidate_dcache_range(info->start[sect], sect_end); in flash_erase()
182 /* Write a word to flash */
198 writel(CPHYSADDR(dest), &nvm_regs_p->addr.raw); in write_word()
199 writel(word, &nvm_regs_p->data.raw); in write_word()
201 /* word write */ in write_word()
207 /* re-enable interrupts if necessary */ in write_word()
219 * ERR_OK - OK
220 * ERR_TIMEOUT - write timeout
221 * ERR_NOT_ERASED - Flash not erased
233 l = addr - dst; in write_buff()
239 for (; (i < 4) && (cnt > 0); ++i, ++src, --cnt, ++cp) in write_buff()
260 cnt -= 4; in write_buff()
272 --cnt; in write_buff()
294 if (info->flash_id == FLASH_UNKNOWN) { in flash_print_info()
299 switch (info->flash_id & FLASH_VENDMASK) { in flash_print_info()
308 switch (info->flash_id & FLASH_TYPEMASK) { in flash_print_info()
318 info->size >> 20, info->sector_count); in flash_print_info()
321 for (i = 0; i < info->sector_count; ++i) { in flash_print_info()
325 printf(" %08lX%s", info->start[i], in flash_print_info()
326 info->protect[i] ? " (RO)" : " "); in flash_print_info()
357 info->flash_id = FLASH_MAN_MCHP | FLASH_MCHP100T; in pic32_flash_bank_init()
358 info->sector_count = CONFIG_SYS_MAX_FLASH_SECT; in pic32_flash_bank_init()
359 info->size = size; in pic32_flash_bank_init()
362 sect_size = info->size / info->sector_count; in pic32_flash_bank_init()
363 for (sect = 0; sect < info->sector_count; sect++) { in pic32_flash_bank_init()
364 info->start[sect] = base; in pic32_flash_bank_init()
365 /* protect each sector by default */ in pic32_flash_bank_init()
366 info->protect[sect] = 1; in pic32_flash_bank_init()
373 void *blob = (void *)gd->fdt_blob; in pic32_flash_probe()
384 * match with reg-names. in pic32_flash_probe()
388 list = fdt_getprop(blob, node, "reg-names", &len); in pic32_flash_probe()
390 return -ENOENT; in pic32_flash_probe()
395 return -ENOENT; in pic32_flash_probe()
413 /* disable flash write/erase operations */ in pic32_flash_probe()
414 writel(NVM_WREN, &nvm_regs_p->ctrl.clr); in pic32_flash_probe()
420 CONFIG_SYS_MONITOR_BASE + monitor_flash_len - 1, in pic32_flash_probe()
428 CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1, in pic32_flash_probe()
435 { .compatible = "microchip,pic32mzda-flash" },