coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
smbus.c File Reference
#include <inttypes.h>
#include <console/console.h>
#include <device/smbus_host.h>
#include <amdblocks/acpimmio.h>
#include <amdblocks/smbus.h>
#include <soc/southbridge.h>
Include dependency graph for smbus.c:

Go to the source code of this file.

Macros

#define SMBUS_TIMEOUT   (100 * 1000 * 10)
 

Functions

static u8 controller_read8 (const uintptr_t base, const u8 reg)
 
static void controller_write8 (const uintptr_t base, const u8 reg, const u8 val)
 
static int smbus_wait_until_ready (uintptr_t mmio)
 
static int smbus_wait_until_done (uintptr_t mmio)
 
int do_smbus_recv_byte (uintptr_t mmio, u8 device)
 
int do_smbus_send_byte (uintptr_t mmio, u8 device, u8 val)
 
int do_smbus_read_byte (uintptr_t mmio, u8 device, u8 address)
 
int do_smbus_write_byte (uintptr_t mmio, u8 device, u8 address, u8 val)
 

Macro Definition Documentation

◆ SMBUS_TIMEOUT

#define SMBUS_TIMEOUT   (100 * 1000 * 10)

Definition at line 14 of file smbus.c.

Function Documentation

◆ controller_read8()

static u8 controller_read8 ( const uintptr_t  base,
const u8  reg 
)
static

Definition at line 19 of file smbus.c.

References base, and read8().

Referenced by do_smbus_read_byte(), do_smbus_recv_byte(), do_smbus_send_byte(), do_smbus_write_byte(), smbus_wait_until_done(), and smbus_wait_until_ready().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ controller_write8()

static void controller_write8 ( const uintptr_t  base,
const u8  reg,
const u8  val 
)
static

Definition at line 24 of file smbus.c.

References base, val, and write8().

Referenced by do_smbus_read_byte(), do_smbus_recv_byte(), do_smbus_send_byte(), do_smbus_write_byte(), smbus_wait_until_done(), and smbus_wait_until_ready().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_smbus_read_byte()

int do_smbus_read_byte ( uintptr_t  mmio,
u8  device,
u8  address 
)

Definition at line 121 of file smbus.c.

Referenced by lsmbus_read_byte().

Here is the caller graph for this function:

◆ do_smbus_recv_byte()

int do_smbus_recv_byte ( uintptr_t  mmio,
u8  device 
)

Definition at line 71 of file smbus.c.

References controller_read8(), controller_write8(), SMBHST_CTRL_BTE_RW, SMBHST_CTRL_MODE_BITS, SMBHST_CTRL_STRT, SMBHSTADDR, SMBHSTCTRL, SMBHSTDAT0, smbus_wait_until_done(), and smbus_wait_until_ready().

Referenced by lsmbus_recv_byte(), and readspd().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_smbus_send_byte()

int do_smbus_send_byte ( uintptr_t  mmio,
u8  device,
u8  val 
)

Definition at line 96 of file smbus.c.

References controller_read8(), controller_write8(), SMBHST_CTRL_BTE_RW, SMBHST_CTRL_MODE_BITS, SMBHST_CTRL_STRT, SMBHSTADDR, SMBHSTCTRL, SMBHSTDAT0, smbus_wait_until_done(), smbus_wait_until_ready(), and val.

Referenced by lsmbus_send_byte().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_smbus_write_byte()

int do_smbus_write_byte ( uintptr_t  mmio,
u8  device,
u8  address,
u8  val 
)

Definition at line 149 of file smbus.c.

◆ smbus_wait_until_done()

static int smbus_wait_until_done ( uintptr_t  mmio)
static

Definition at line 51 of file smbus.c.

References controller_read8(), controller_write8(), SMBHST_STAT_ERROR_BITS, SMBHST_STAT_INTERRUPT, SMBHST_STAT_VAL_BITS, SMBHSTSTAT, SMBUS_TIMEOUT, and val.

Referenced by do_smbus_read_byte(), do_smbus_recv_byte(), do_smbus_send_byte(), and do_smbus_write_byte().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ smbus_wait_until_ready()

static int smbus_wait_until_ready ( uintptr_t  mmio)
static

Definition at line 29 of file smbus.c.

References acpimmio_asf, acpimmio_smbus, BIOS_ERR, controller_read8(), controller_write8(), printk, PRIxPTR, SMBHST_STAT_VAL_BITS, SMBHSTSTAT, SMBUS_TIMEOUT, and val.

Referenced by do_smbus_read_byte(), do_smbus_recv_byte(), do_smbus_send_byte(), and do_smbus_write_byte().

Here is the call graph for this function:
Here is the caller graph for this function: