drivers/spi/spi_flash: add flash region protection to controller
Provide a spi controller specific protection callback to take advantage of special spi flash controllers that have internal protection registers built into the implementation. It's an optional callback for spi controllers. BUG=b:69614064 Change-Id: Ie50a6ce3bbda32620a25dd26fda1af944940bf28 Signed-off-by: Aaron Durbn <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/22879 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
		@@ -459,3 +459,29 @@ void lb_spi_flash(struct lb_header *header)
 | 
			
		||||
		flash->erase_cmd = CMD_BLOCK_ERASE;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int spi_flash_ctrlr_protect_region(const struct spi_flash *flash,
 | 
			
		||||
					const struct region *region)
 | 
			
		||||
{
 | 
			
		||||
	const struct spi_ctrlr *ctrlr;
 | 
			
		||||
	struct region flash_region = { 0 };
 | 
			
		||||
 | 
			
		||||
	if (!flash)
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
	flash_region.size = flash->size;
 | 
			
		||||
 | 
			
		||||
	if (!region_is_subregion(&flash_region, region))
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
	ctrlr = flash->spi.ctrlr;
 | 
			
		||||
 | 
			
		||||
	if (!ctrlr)
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
	if (ctrlr->flash_protect)
 | 
			
		||||
		return ctrlr->flash_protect(flash, region);
 | 
			
		||||
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user