mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Support for MT7981 and MT7986 has been merged, remove patches. Tested on a couple of MT7986, MT7622 and MT7623 boards. MIPS builds are untested. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From fc0c70a7c6a088072d0c77e5a59d5e9b7754c6db Mon Sep 17 00:00:00 2001
 | |
| From: Weijie Gao <weijie.gao@mediatek.com>
 | |
| Date: Mon, 25 Jul 2022 17:01:20 +0800
 | |
| Subject: [PATCH 61/71] env: ubi: add support to create environment volume if
 | |
|  it does not exist
 | |
| 
 | |
| Add an option to allow environment volume being auto created if not exist.
 | |
| 
 | |
| Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
 | |
| ---
 | |
|  env/Kconfig |  6 ++++++
 | |
|  env/ubi.c   | 20 ++++++++++++++++++++
 | |
|  2 files changed, 26 insertions(+)
 | |
| 
 | |
| --- a/env/Kconfig
 | |
| +++ b/env/Kconfig
 | |
| @@ -666,6 +666,12 @@ config ENV_UBI_VOLUME_REDUND
 | |
|  	help
 | |
|  	  Name of the redundant volume that you want to store the environment in.
 | |
|  
 | |
| +config ENV_UBI_VOLUME_CREATE
 | |
| +	bool "Create UBI volume if not exist"
 | |
| +	depends on ENV_IS_IN_UBI
 | |
| +	help
 | |
| +	  Create the UBI volume if it does not exist.
 | |
| +
 | |
|  config ENV_UBI_VID_OFFSET
 | |
|  	int "ubi environment VID offset"
 | |
|  	depends on ENV_IS_IN_UBI
 | |
| --- a/env/ubi.c
 | |
| +++ b/env/ubi.c
 | |
| @@ -100,6 +100,18 @@ static int env_ubi_save(void)
 | |
|  #endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */
 | |
|  #endif /* CONFIG_CMD_SAVEENV */
 | |
|  
 | |
| +int __weak env_ubi_volume_create(const char *volume)
 | |
| +{
 | |
| +	struct ubi_volume *vol;
 | |
| +
 | |
| +	vol = ubi_find_volume((char *)volume);
 | |
| +	if (vol)
 | |
| +		return 0;
 | |
| +
 | |
| +	return ubi_create_vol((char *)volume, CONFIG_ENV_SIZE, true,
 | |
| +			      UBI_VOL_NUM_AUTO, false);
 | |
| +}
 | |
| +
 | |
|  #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 | |
|  static int env_ubi_load(void)
 | |
|  {
 | |
| @@ -129,6 +141,11 @@ static int env_ubi_load(void)
 | |
|  		return -EIO;
 | |
|  	}
 | |
|  
 | |
| +	if (IS_ENABLED(CONFIG_ENV_UBI_VOLUME_CREATE)) {
 | |
| +		env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME);
 | |
| +		env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME_REDUND);
 | |
| +	}
 | |
| +
 | |
|  	read1_fail = ubi_volume_read(CONFIG_ENV_UBI_VOLUME, (void *)tmp_env1,
 | |
|  				     CONFIG_ENV_SIZE);
 | |
|  	if (read1_fail)
 | |
| @@ -166,6 +183,9 @@ static int env_ubi_load(void)
 | |
|  		return -EIO;
 | |
|  	}
 | |
|  
 | |
| +	if (IS_ENABLED(CONFIG_ENV_UBI_VOLUME_CREATE))
 | |
| +		env_ubi_volume_create(CONFIG_ENV_UBI_VOLUME);
 | |
| +
 | |
|  	if (ubi_volume_read(CONFIG_ENV_UBI_VOLUME, buf, CONFIG_ENV_SIZE)) {
 | |
|  		printf("\n** Unable to read env from %s:%s **\n",
 | |
|  		       CONFIG_ENV_UBI_PART, CONFIG_ENV_UBI_VOLUME);
 |