drivers/smbus: add smbus console driver

This patch adds a new smbus console driver and Kconfig
options to enable the driver.

Change-Id: Ife77fb2c3e1cc77678a4972701317d50624ceb95
Signed-off-by: Husni Faiz <ahamedhusni73@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67339
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Husni Faiz 2022-09-05 15:23:15 +05:30 committed by Martin L Roth
parent c5d0761dea
commit 67300f88cd
4 changed files with 69 additions and 0 deletions

View File

@ -297,6 +297,30 @@ config CONSOLE_SPI_FLASH_BUFFER_SIZE
value (128K or 0x20000 bytes) is large enough to accommodate
even the BIOS_SPEW level.
config CONSOLE_I2C_SMBUS
bool "SMBus console output"
depends on SOUTHBRIDGE_INTEL_COMMON_SMBUS
help
Send coreboot debug output to the SMBus.
The output can be read with an I2C slave device connected
the SMBus. Please refer to the technotes section of the
coreboot documentation for more details.
if CONSOLE_I2C_SMBUS
comment "Set logging device address and data register address"
config CONSOLE_I2C_SMBUS_SLAVE_ADDRESS
hex "I2C slave address of the logging device"
help
I2C address of the device which logs the data.
config CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER
hex "Data register address of the I2C logging device"
help
This an 8-bit data register.
endif # CONSOLE_I2C_SMBUS
config CONSOLE_QEMU_DEBUGCON
bool "QEMU debug console output"
depends on CPU_QEMU_X86

View File

@ -0,0 +1,3 @@
ifeq ($(CONFIG_CONSOLE_I2C_SMBUS),y)
all-y += i2c_smbus_console.c
endif

View File

@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <console/i2c_smbus.h>
#include <device/smbus_host.h>
#include <southbridge/intel/bd82x6x/pch.h>
void i2c_smbus_console_init(void) {}
void i2c_smbus_console_tx_byte(unsigned char c)
{
do_smbus_write_byte(CONFIG_FIXED_SMBUS_IO_BASE,
CONFIG_CONSOLE_I2C_SMBUS_SLAVE_ADDRESS,
CONFIG_CONSOLE_I2C_SMBUS_SLAVE_DATA_REGISTER, c);
}

View File

@ -0,0 +1,28 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef CONSOLE_I2C_SMBUS_H
#define CONSOLE_I2C_SMBUS_H
#include <stdint.h>
void i2c_smbus_console_init(void);
void i2c_smbus_console_tx_byte(unsigned char c);
#define __CONSOLE_SMBUS_ENABLE__ CONFIG(CONSOLE_I2C_SMBUS)
#if __CONSOLE_SMBUS_ENABLE__
static inline void __i2c_smbus_console_init(void)
{
i2c_smbus_console_init();
}
static inline void __i2c_smbus_console_tx_byte(u8 data)
{
i2c_smbus_console_tx_byte(data);
}
#else
static inline void __i2c_smbus_console_init(void) {}
static inline void __i2c_smbus_console_tx_byte(u8 data) {}
#endif /* __CONSOLE_SMBUS_ENABLE__ */
#endif /* CONSOLE_I2C_SMBUS_H */