summaryrefslogtreecommitdiff
path: root/src/southbridge/intel
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2024-06-01 03:52:24 +0200
committerFelix Held <felix-coreboot@felixheld.de>2024-07-11 00:18:03 +0000
commit22a25d53e46fd04b87b520d0ccfd35ff33601414 (patch)
treea1251918390189842ca7bed58a006d1d09ad8590 /src/southbridge/intel
parentc4f735105bb4d81eb8a8365bf7ac480676f47608 (diff)
sb/intel/smbus: Implement smbus_send_byte()
Allows to use this driver for the SMBus console without sending an index byte for every sent char (i.e. !CONSOLE_I2C_SMBUS_HAVE_DATA_REGISTER). Tested with WiP VIA CX700-M2 port and FT4222H as receiver. Change-Id: Ic368ef379039b104064c9a91474b188646388dd2 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82763 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/southbridge/intel')
-rw-r--r--src/southbridge/intel/common/smbus.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/southbridge/intel/common/smbus.c b/src/southbridge/intel/common/smbus.c
index 1594e684a6..944e360a0f 100644
--- a/src/southbridge/intel/common/smbus.c
+++ b/src/southbridge/intel/common/smbus.c
@@ -253,7 +253,8 @@ static int smbus_write_cmd(uintptr_t base, u8 ctrl, u8 device, u8 address, u16 d
host_outb(base, SMBHSTCMD, address);
/* Set the data bytes... */
- host_outb(base, SMBHSTDAT0, data & 0xff);
+ if (ctrl >= I801_BYTE_DATA)
+ host_outb(base, SMBHSTDAT0, data & 0xff);
if (ctrl == I801_WORD_DATA)
host_outb(base, SMBHSTDAT1, data >> 8);
@@ -354,6 +355,11 @@ int do_smbus_read_word(uintptr_t base, u8 device, u8 address)
return smbus_read_cmd(base, I801_WORD_DATA, device, address);
}
+int do_smbus_send_byte(uintptr_t base, u8 device, u8 data)
+{
+ return smbus_write_cmd(base, I801_BYTE, device, data, 0x00);
+}
+
int do_smbus_write_byte(uintptr_t base, u8 device, u8 address, u8 data)
{
return smbus_write_cmd(base, I801_BYTE_DATA, device, address, data);