console/i2c_smbus: Allow to send data w/o register offset
Not every I2C target requires a register address. Not sending one for every console char saves us a lot of overhead. Change-Id: I1c714768fdd4aea4885e40a85d21fa42414ce32c Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82762 Reviewed-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		@@ -318,8 +318,16 @@ config CONSOLE_I2C_SMBUS_SLAVE_ADDRESS
 | 
				
			|||||||
	help
 | 
						help
 | 
				
			||||||
	  I2C address of the device which logs the data.
 | 
						  I2C address of the device which logs the data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config CONSOLE_I2C_SMBUS_HAVE_DATA_REGISTER
 | 
				
			||||||
 | 
						bool "Write to a specific data register"
 | 
				
			||||||
 | 
						default y if SC16IS7XX_INIT
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  Select this to provide a register address that will
 | 
				
			||||||
 | 
						  be sent before every data byte.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER
 | 
					config CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER
 | 
				
			||||||
	hex "Data register address of the I2C logging device"
 | 
						hex "Data register address of the I2C logging device"
 | 
				
			||||||
 | 
						depends on CONSOLE_I2C_SMBUS_HAVE_DATA_REGISTER
 | 
				
			||||||
	default 0x00 if SC16IS7XX_INIT
 | 
						default 0x00 if SC16IS7XX_INIT
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
	  This an 8-bit data register.
 | 
						  This an 8-bit data register.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,12 @@ void i2c_smbus_console_init(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void i2c_smbus_console_tx_byte(unsigned char c)
 | 
					void i2c_smbus_console_tx_byte(unsigned char c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	do_smbus_write_byte(CONFIG_FIXED_SMBUS_IO_BASE,
 | 
						if (CONFIG(CONSOLE_I2C_SMBUS_HAVE_DATA_REGISTER)) {
 | 
				
			||||||
		CONFIG_CONSOLE_I2C_SMBUS_SLAVE_ADDRESS,
 | 
							do_smbus_write_byte(CONFIG_FIXED_SMBUS_IO_BASE,
 | 
				
			||||||
		CONFIG_CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER, c);
 | 
								CONFIG_CONSOLE_I2C_SMBUS_SLAVE_ADDRESS,
 | 
				
			||||||
 | 
								CONFIG_CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER, c);
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							do_smbus_send_byte(CONFIG_FIXED_SMBUS_IO_BASE,
 | 
				
			||||||
 | 
								CONFIG_CONSOLE_I2C_SMBUS_SLAVE_ADDRESS, c);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user