smbus: add a smbus_eeprom_init_one() routine
This is an helper routine to add a single EEPROM on an I2C bus. It can be directly used by smbus_eeprom_init() which adds a certain number of EEPROMs on mips and x86 machines. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20180530064049.27976-5-clg@kaod.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									6c4567c730
								
							
						
					
					
						commit
						e222421413
					
				| @ -139,6 +139,16 @@ static void smbus_eeprom_register_types(void) | ||||
| 
 | ||||
| type_init(smbus_eeprom_register_types) | ||||
| 
 | ||||
| void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom_buf) | ||||
| { | ||||
|     DeviceState *dev; | ||||
| 
 | ||||
|     dev = qdev_create((BusState *) smbus, "smbus-eeprom"); | ||||
|     qdev_prop_set_uint8(dev, "address", address); | ||||
|     qdev_prop_set_ptr(dev, "data", eeprom_buf); | ||||
|     qdev_init_nofail(dev); | ||||
| } | ||||
| 
 | ||||
| void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, | ||||
|                        const uint8_t *eeprom_spd, int eeprom_spd_size) | ||||
| { | ||||
| @ -149,10 +159,6 @@ void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, | ||||
|     } | ||||
| 
 | ||||
|     for (i = 0; i < nb_eeprom; i++) { | ||||
|         DeviceState *eeprom; | ||||
|         eeprom = qdev_create((BusState *)smbus, "smbus-eeprom"); | ||||
|         qdev_prop_set_uint8(eeprom, "address", 0x50 + i); | ||||
|         qdev_prop_set_ptr(eeprom, "data", eeprom_buf + (i * 256)); | ||||
|         qdev_init_nofail(eeprom); | ||||
|         smbus_eeprom_init_one(smbus, 0x50 + i, eeprom_buf + (i * 256)); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -76,6 +76,7 @@ int smbus_read_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data); | ||||
| int smbus_write_block(I2CBus *bus, uint8_t addr, uint8_t command, uint8_t *data, | ||||
|                       int len); | ||||
| 
 | ||||
| void smbus_eeprom_init_one(I2CBus *smbus, uint8_t address, uint8_t *eeprom_buf); | ||||
| void smbus_eeprom_init(I2CBus *smbus, int nb_eeprom, | ||||
|                        const uint8_t *eeprom_spd, int size); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Cédric Le Goater
						Cédric Le Goater