mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Refresh uboot-lantiq patches. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> SVN-Revision: 40546
		
			
				
	
	
		
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 36b7400465fe2339f1c78274b3fd258ade3a4c00 Mon Sep 17 00:00:00 2001
 | |
| From: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
 | |
| Date: Sat, 12 Oct 2013 21:30:07 +0200
 | |
| Subject: sf: move malloc of spi_flash to spi_flash_probe()
 | |
| 
 | |
| Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
 | |
| 
 | |
| --- a/drivers/mtd/spi/sf_probe.c
 | |
| +++ b/drivers/mtd/spi/sf_probe.c
 | |
| @@ -153,11 +153,10 @@ static const struct spi_flash_params spi
 | |
|  	 */
 | |
|  };
 | |
|  
 | |
| -static struct spi_flash *spi_flash_validate_params(struct spi_slave *spi,
 | |
| +static int spi_flash_validate_params(struct spi_flash *flash,
 | |
|  		u8 *idcode)
 | |
|  {
 | |
|  	const struct spi_flash_params *params;
 | |
| -	struct spi_flash *flash;
 | |
|  	int i;
 | |
|  	u16 jedec = idcode[1] << 8 | idcode[2];
 | |
|  	u16 ext_jedec = idcode[3] << 8 | idcode[4];
 | |
| @@ -179,20 +178,12 @@ static struct spi_flash *spi_flash_valid
 | |
|  		debug("SF: Unsupported flash IDs: ");
 | |
|  		debug("manuf %02x, jedec %04x, ext_jedec %04x\n",
 | |
|  		       idcode[0], jedec, ext_jedec);
 | |
| -		return NULL;
 | |
| -	}
 | |
| -
 | |
| -	flash = malloc(sizeof(*flash));
 | |
| -	if (!flash) {
 | |
| -		debug("SF: Failed to allocate spi_flash\n");
 | |
| -		return NULL;
 | |
| +		return -1;
 | |
|  	}
 | |
| -	memset(flash, '\0', sizeof(*flash));
 | |
|  
 | |
|  	/* Assign spi data */
 | |
| -	flash->spi = spi;
 | |
|  	flash->name = params->name;
 | |
| -	flash->memory_map = spi->memory_map;
 | |
| +	flash->memory_map = flash->spi->memory_map;
 | |
|  
 | |
|  	/* Assign spi_flash ops */
 | |
|  	flash->write = spi_flash_cmd_write_ops;
 | |
| @@ -239,7 +230,7 @@ static struct spi_flash *spi_flash_valid
 | |
|  		if (spi_flash_read_common(flash, &flash->bank_read_cmd, 1,
 | |
|  					  &curr_bank, 1)) {
 | |
|  			debug("SF: fail to read bank addr register\n");
 | |
| -			return NULL;
 | |
| +			return -1;
 | |
|  		}
 | |
|  		flash->bank_curr = curr_bank;
 | |
|  	} else {
 | |
| @@ -254,7 +245,7 @@ static struct spi_flash *spi_flash_valid
 | |
|  		spi_flash_cmd_write_status(flash, 0);
 | |
|  #endif
 | |
|  
 | |
| -	return flash;
 | |
| +	return 0;
 | |
|  }
 | |
|  
 | |
|  #ifdef CONFIG_OF_CONTROL
 | |
| @@ -289,15 +280,22 @@ struct spi_flash *spi_flash_probe(unsign
 | |
|  		unsigned int max_hz, unsigned int spi_mode)
 | |
|  {
 | |
|  	struct spi_slave *spi;
 | |
| -	struct spi_flash *flash = NULL;
 | |
| +	struct spi_flash *flash;
 | |
|  	u8 idcode[5];
 | |
|  	int ret;
 | |
|  
 | |
| +	flash = malloc(sizeof(*flash));
 | |
| +	if (!flash) {
 | |
| +		debug("SF: Failed to allocate spi_flash\n");
 | |
| +		return NULL;
 | |
| +	}
 | |
| +	memset(flash, 0, sizeof(*flash));
 | |
| +
 | |
|  	/* Setup spi_slave */
 | |
|  	spi = spi_setup_slave(bus, cs, max_hz, spi_mode);
 | |
|  	if (!spi) {
 | |
|  		debug("SF: Failed to set up slave\n");
 | |
| -		return NULL;
 | |
| +		goto err_setup;
 | |
|  	}
 | |
|  
 | |
|  	/* Claim spi bus */
 | |
| @@ -320,8 +318,9 @@ struct spi_flash *spi_flash_probe(unsign
 | |
|  #endif
 | |
|  
 | |
|  	/* Validate params from spi_flash_params table */
 | |
| -	flash = spi_flash_validate_params(spi, idcode);
 | |
| -	if (!flash)
 | |
| +	flash->spi = spi;
 | |
| +	ret = spi_flash_validate_params(flash, idcode);
 | |
| +	if (ret)
 | |
|  		goto err_read_id;
 | |
|  
 | |
|  #ifdef CONFIG_OF_CONTROL
 | |
| @@ -355,6 +354,9 @@ err_read_id:
 | |
|  	spi_release_bus(spi);
 | |
|  err_claim_bus:
 | |
|  	spi_free_slave(spi);
 | |
| +err_setup:
 | |
| +	free(flash);
 | |
| +
 | |
|  	return NULL;
 | |
|  }
 | |
|  
 |