eeprom: Add device model based I2C support to eeprom command
After this change the 'eeprom' command can be used with DM aware boards. Signed-off-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
		
							parent
							
								
									8ce7f2c115
								
							
						
					
					
						commit
						0c07a9b407
					
				
							
								
								
									
										24
									
								
								cmd/eeprom.c
								
								
								
								
							
							
						
						
									
										24
									
								
								cmd/eeprom.c
								
								
								
								
							|  | @ -137,6 +137,23 @@ static int eeprom_rw_block(unsigned offset, uchar *addr, unsigned alen, | ||||||
| 		spi_write(addr, alen, buffer, len); | 		spi_write(addr, alen, buffer, len); | ||||||
| #else	/* I2C */ | #else	/* I2C */ | ||||||
| 
 | 
 | ||||||
|  | #if defined(CONFIG_DM_I2C) && defined(CONFIG_SYS_I2C_EEPROM_BUS) | ||||||
|  | 	struct udevice *dev; | ||||||
|  | 
 | ||||||
|  | 	ret = i2c_get_chip_for_busnum(CONFIG_SYS_I2C_EEPROM_BUS, addr[0], | ||||||
|  | 				      alen - 1, &dev); | ||||||
|  | 	if (ret) { | ||||||
|  | 		printf("%s: Cannot find udev for a bus %d\n", __func__, | ||||||
|  | 		       CONFIG_SYS_I2C_EEPROM_BUS); | ||||||
|  | 		return CMD_RET_FAILURE; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if (read) | ||||||
|  | 		ret = dm_i2c_read(dev, offset, buffer, len); | ||||||
|  | 	else | ||||||
|  | 		ret = dm_i2c_write(dev, offset, buffer, len); | ||||||
|  | 
 | ||||||
|  | #else /* Non DM I2C support - will be removed */ | ||||||
| #if defined(CONFIG_SYS_I2C_EEPROM_BUS) | #if defined(CONFIG_SYS_I2C_EEPROM_BUS) | ||||||
| 	i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS); | 	i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS); | ||||||
| #endif | #endif | ||||||
|  | @ -145,10 +162,11 @@ static int eeprom_rw_block(unsigned offset, uchar *addr, unsigned alen, | ||||||
| 		ret = i2c_read(addr[0], offset, alen - 1, buffer, len); | 		ret = i2c_read(addr[0], offset, alen - 1, buffer, len); | ||||||
| 	else | 	else | ||||||
| 		ret = i2c_write(addr[0], offset, alen - 1, buffer, len); | 		ret = i2c_write(addr[0], offset, alen - 1, buffer, len); | ||||||
| 
 |  | ||||||
| 	if (ret) |  | ||||||
| 		ret = 1; |  | ||||||
| #endif | #endif | ||||||
|  | #endif /* CONFIG_DM_I2C && CONFIG_SYS_I2C_EEPROM_BUS */ | ||||||
|  | 	if (ret) | ||||||
|  | 		ret = CMD_RET_FAILURE; | ||||||
|  | 
 | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue