common/block/cse: Add Kconfig to support ME specification version 21
[coreboot.git] / src / soc / intel / common / block / imc / spd_access.c
blob31cc484f95d2a1c8dde77b16c5de45d23c99f686
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 #include <commonlib/bsd/cb_err.h>
4 #include <intelblocks/imc.h>
5 #include <soc/pci_devs.h>
6 #include <spd_bin.h>
8 #include "imclib.h"
10 int spd_read_byte(u8 slave_addr, u8 bus_addr)
12 uint8_t value;
14 if (imc_smbus_spd_xfer(IMC_SPD_DEV, slave_addr, bus_addr, IMC_DEVICE_EEPROM, IMC_DATA_BYTE,
15 IMC_CONTROLLER_ID0, IMC_READ, &value) == CB_SUCCESS) {
16 return value;
19 return -1;
22 int spd_read_word(u8 slave_addr, u8 bus_addr)
24 uint16_t value = 0;
26 if (imc_smbus_spd_xfer(IMC_SPD_DEV, slave_addr, bus_addr, IMC_DEVICE_EEPROM, IMC_DATA_WORD,
27 IMC_CONTROLLER_ID0, IMC_READ, &value) == CB_SUCCESS) {
28 return value;
31 return -1;
34 void spd_write_byte(u8 slave_addr, u8 bus_addr, u8 value)
36 imc_smbus_spd_xfer(IMC_SPD_DEV, slave_addr, bus_addr, IMC_DEVICE_WP_EEPROM,
37 IMC_DATA_BYTE, IMC_CONTROLLER_ID0, IMC_WRITE, &value);