mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	This is now replaced by some other mtd partition parsing which was merged into upstream. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Tim Harvey <tharvey@gateworks.com>
 | |
| Subject: mtd: allow partial block unlock
 | |
| 
 | |
| This allows sysupgrade for devices such as the Gateworks Avila/Cambria
 | |
| product families based on the ixp4xx using the redboot bootloader with
 | |
| combined FIS directory and RedBoot config partitions on larger FLASH
 | |
| devices with larger eraseblocks.
 | |
| 
 | |
| This second iteration of this patch addresses previous issues:
 | |
| - whitespace breakage fixed
 | |
| - unlock in all scenarios
 | |
| - simplification and fix logic bug
 | |
| 
 | |
| [john@phrozen.org: this should be moved to the ixp4xx folder]
 | |
| 
 | |
| Signed-off-by: Tim Harvey <tharvey@gateworks.com>
 | |
| ---
 | |
|  drivers/mtd/mtdpart.c | 11 ++++++++++-
 | |
|  1 file changed, 10 insertions(+), 1 deletion(-)
 | |
| 
 | |
| --- a/drivers/mtd/mtdpart.c
 | |
| +++ b/drivers/mtd/mtdpart.c
 | |
| @@ -306,7 +306,16 @@ static int part_lock(struct mtd_info *mt
 | |
|  static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 | |
|  {
 | |
|  	struct mtd_part *part = mtd_to_part(mtd);
 | |
| -	return part->parent->_unlock(part->parent, ofs + part->offset, len);
 | |
| +
 | |
| +	ofs += part->offset;
 | |
| +
 | |
| +	if (mtd->flags & MTD_ERASE_PARTIAL) {
 | |
| +		/* round up len to next erasesize and round down offset to prev block */
 | |
| +		len = (mtd_div_by_eb(len, part->parent) + 1) * part->parent->erasesize;
 | |
| +		ofs &= ~(part->parent->erasesize - 1);
 | |
| +	}
 | |
| +
 | |
| +	return part->parent->_unlock(part->parent, ofs, len);
 | |
|  }
 | |
|  
 | |
|  static int part_is_locked(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 |