Skip to content
Open
4 changes: 3 additions & 1 deletion meta-facebook/sb-rb/boards/npcm400f_evb.overlay
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,9 @@
};

&i2c6a {
clock-frequency = <I2C_BITRATE_STANDARD>;
clock-frequency = <I2C_BITRATE_FAST>;
scllt = <65>;
sclht = <60>;
status = "okay";
multi-master = <1>;
wait_free_time = <1000>;
Expand Down
2 changes: 1 addition & 1 deletion meta-facebook/sb-rb/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ CONFIG_FLASH_SHELL=y
CONFIG_SENSOR=y
CONFIG_SENSOR_SHELL=n
CONFIG_HWINFO=y
CONFIG_MINIMAL_LIBC_MALLOC_ARENA_SIZE=133120
CONFIG_MINIMAL_LIBC_MALLOC_ARENA_SIZE=131072
CONFIG_REBOOT=y
CONFIG_POSIX_CLOCK=y
CONFIG_STACK_SENTINEL=y
Expand Down
2 changes: 1 addition & 1 deletion meta-facebook/sb-rb/src/platform/plat_adc.c
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ void ads7066_mode_init()
ads7066_write_reg(0, 0x1, i);
// if rainbow board revid >= EVT1B, disable internal Volt reference
if (get_asic_board_id() == ASIC_BOARD_ID_RAINBOW &&
get_board_rev_id() >= REV_ID_DVT)
get_board_rev_id() >= REV_ID_DVT_FAB3)
ads7066_write_reg(0x1, 0x2, i);
else
ads7066_write_reg(0x1, 0x82, i);
Expand Down
76 changes: 67 additions & 9 deletions meta-facebook/sb-rb/src/platform/plat_class.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,19 @@
#include "plat_util.h"
#include "plat_mctp.h"
#include "plat_hook.h"
#include "plat_gpio.h"

LOG_MODULE_REGISTER(plat_class);

static uint8_t vr_module = VR_MODULE_UNKNOWN;
static uint8_t ubc_module = UBC_MODULE_UNKNOWN;
static uint8_t tmp_module = TMP_TMP432;
static uint8_t vr_vendor_module = VENDOR_TYPE_UNKNOWN;
static uint8_t mmc_slot = 0;
static uint8_t asic_board_id = 0;
static uint8_t tray_location = 0;
static uint8_t board_rev_id = 0;
static uint8_t tmp_type = TMP_TYPE_UNKNOWN;
static uint8_t asic_type = ASIC_TYPE_UNKNOWN;

bool plat_cpld_eerprom_read(uint8_t *data, uint16_t offset, uint8_t len)
{
Expand Down Expand Up @@ -99,6 +101,46 @@ void init_vr_vendor_module(void)
LOG_INF("vr_vendor_module=%d (ubc=%d, vr=%d)", vr_vendor_module, ubc_module, vr_module);
}

void init_tmp_type()
{
I2C_MSG i2c_msg = { 0 };
uint8_t retry = 5;
i2c_msg.bus = I2C_BUS3;
i2c_msg.target_addr = ASIC_MEDHA0_SENSOR0_ADDR; //tmp sensor address
i2c_msg.tx_len = 1;
i2c_msg.rx_len = 1;
i2c_msg.data[0] = 0xFE; //MFG ID REG

if (i2c_master_read(&i2c_msg, retry)) {
LOG_INF("Assume TMP is EMC1413 by address check");
tmp_type = TMP_EMC1413;
return;
} else {
LOG_INF("Assume TMP is TMP432 by register check");
tmp_type = TMP_TMP432;
return;
}
}

void init_asic_type()
{
uint8_t rev_id = get_board_rev_id();
if (rev_id <= REV_ID_DVT_FAB3) {
asic_type = ASIC_TYPE_QCP1;
} else {
// after FAB3: gpio ASIC_TYPE_ID1 and ASIC_TYPE_ID0: 01: qcp1, 10: qcp2
if (gpio_get(ASIC_TYPE_ID1) == GPIO_LOW && gpio_get(ASIC_TYPE_ID0) == GPIO_HIGH) {
asic_type = ASIC_TYPE_QCP1;
} else if (gpio_get(ASIC_TYPE_ID1) == GPIO_HIGH &&
gpio_get(ASIC_TYPE_ID0) == GPIO_LOW) {
asic_type = ASIC_TYPE_QCP2;
} else {
asic_type = ASIC_TYPE_UNKNOWN;
}
}
return;
}

void init_plat_config()
{
uint8_t module = 0;
Expand All @@ -113,6 +155,9 @@ void init_plat_config()
asic_board_id = board_id & 0x03;
init_vr_vendor_module();
change_sensor_cfg(asic_board_id, vr_module, ubc_module, board_rev_id);
// check temp sensor
init_tmp_type();
check_temp_sensor(tmp_type);
// cpld fru offset 0: slot
plat_cpld_eerprom_read(&mmc_slot, 0, 1);
// mmc slot 1-4 * 0x0A
Expand All @@ -121,6 +166,7 @@ void init_plat_config()
// cpld fru offset 0x3FF: tray location
plat_cpld_eerprom_read(&tray_location, 1023, 1);
set_delta_ubc_time_of_vout_rise();
init_asic_type();
LOG_INF("init_plat_eid: 0x%x", init_plat_eid);
}

Expand Down Expand Up @@ -154,6 +200,11 @@ uint8_t get_tray_location()
return tray_location;
}

uint8_t get_asic_type()
{
return asic_type;
}

// clang-format off

void pal_show_board_types(const struct shell *shell)
Expand All @@ -171,18 +222,20 @@ void pal_show_board_types(const struct shell *shell)
(board_rev_id == REV_ID_EVT1A) ? "REV_ID_EVT1A" :
(board_rev_id == REV_ID_EVT1B) ? "REV_ID_EVT1B" :
(board_rev_id == REV_ID_EVT2) ? "REV_ID_EVT2" :
(board_rev_id == REV_ID_DVT) ? "REV_ID_DVT" :
(board_rev_id == REV_ID_PVT) ? "REV_ID_PVT" :
(board_rev_id == REV_ID_MP) ? "REV_ID_MP" :
(board_rev_id == REV_ID_DVT_FAB3) ? "REV_ID_DVT_FAB3" :
(board_rev_id == REV_ID_DVT_FAB4) ? "REV_ID_DVT_FAB4" :
(board_rev_id == REV_ID_PVT) ? "REV_ID_PVT" :
(board_rev_id == REV_ID_MP) ? "REV_ID_MP" :
"not supported");
} else if (asic_board_id == ASIC_BOARD_ID_RAINBOW) {
shell_print(shell, "* BOARD_STAGE: (0x%02X)%s", board_rev_id,
(board_rev_id == REV_ID_EVT1A) ? "REV_ID_EVT1A" :
(board_rev_id == REV_ID_EVT1B) ? "REV_ID_EVT1B" :
(board_rev_id == REV_ID_EVT2) ? "REV_ID_EVT2" :
(board_rev_id == REV_ID_DVT) ? "REV_ID_DVT" :
(board_rev_id == REV_ID_PVT) ? "REV_ID_PVT" :
(board_rev_id == REV_ID_MP) ? "REV_ID_MP" :
(board_rev_id == REV_ID_DVT_FAB3) ? "REV_ID_DVT_FAB3" :
(board_rev_id == REV_ID_DVT_FAB4) ? "REV_ID_DVT_FAB4" :
(board_rev_id == REV_ID_PVT) ? "REV_ID_PVT" :
(board_rev_id == REV_ID_MP) ? "REV_ID_MP" :
"not supported");
}

Expand All @@ -205,12 +258,17 @@ void pal_show_board_types(const struct shell *shell)
(vr_module == VR_MODULE_RNS) ? "VR_RNS_RAA229140_RAA228249" :
"not supported");

shell_print(shell, "* TMP_TYPE: (0x%02X)%s", tmp_module,
(tmp_module == TMP_TMP432) ? "TMP_TMP75_TMP432" : "not supported");
shell_print(shell, "* TMP_TYPE: (0x%02X)%s", tmp_type,
(tmp_type == TMP_TMP432) ? "TMP_TMP75_TMP432" :
(tmp_type == TMP_EMC1413) ? "TMP_TMP75_EMC1413" : "not supported");

shell_print(shell, "* ADC_TYPE: (0x%02X)%s", adc_type,
(adc_type == ADI_AD4058) ? "ADI_AD4058" :
(adc_type == TIC_ADS7066) ? "TI_ADS7066" : "not supported");

shell_print(shell, "* ASIC_TYPE: (0x%02X)%s", asic_type,
(asic_type == ASIC_TYPE_QCP1) ? "ASIC_TYPE_QCP1" :
(asic_type == ASIC_TYPE_QCP2) ? "ASIC_TYPE_QCP2" : "not supported");

shell_print(shell, "* I2C connection for MEDHA0/1 to MMC: Enable");
return;
Expand Down
13 changes: 10 additions & 3 deletions meta-facebook/sb-rb/src/platform/plat_class.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ enum UBC_MODULE {

enum TMP_MODULE {
TMP_TMP432,
TMP_EMC1413,
TMP_TYPE_UNKNOWN,
};

Expand All @@ -56,15 +57,20 @@ enum ASIC_BOARD_ID {
ASIC_BOARD_ID_UNKNOWN,
};

enum ASIC_TYPE {
ASIC_TYPE_QCP1,
ASIC_TYPE_QCP2,
ASIC_TYPE_UNKNOWN,
};

enum REV_ID {
REV_ID_EVT1A,
REV_ID_EVT1B,
REV_ID_EVT2,
REV_ID_DVT,
REV_ID_DVT_FAB3,
REV_ID_DVT_FAB4,
REV_ID_PVT,
REV_ID_MP,
REV_ID_RSVD1,
REV_ID_RSVD2,
MAX_REV_ID,
};

Expand All @@ -75,5 +81,6 @@ uint8_t get_mmc_slot();
uint8_t get_asic_board_id();
uint8_t get_board_rev_id();
uint8_t get_tray_location();
uint8_t get_asic_type();
bool plat_cpld_eerprom_read(uint8_t *data, uint16_t offset, uint8_t len);
#endif
4 changes: 2 additions & 2 deletions meta-facebook/sb-rb/src/platform/plat_gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@ GPIO_CFG plat_gpio_cfg[] = {
ISR_GPIO_FM_PLD_UBC_EN_R },
// GPIO 1 group
{ CHIP_GPIO, 8, DISABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE, NULL },
{ CHIP_GPIO, 9, DISABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE, NULL },
{ CHIP_GPIO, 9, ENABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE, NULL },
{ CHIP_GPIO, 10, DISABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE,
NULL },
{ CHIP_GPIO, 11, DISABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE,
{ CHIP_GPIO, 11, ENABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE,
NULL },
{ CHIP_GPIO, 12, DISABLE, DISABLE, GPIO_INPUT, GPIO_LOW, PUSH_PULL, GPIO_INT_DISABLE,
NULL },
Expand Down
4 changes: 2 additions & 2 deletions meta-facebook/sb-rb/src/platform/plat_gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ void gpio_int_default();
gpio_name_to_num(FM_PLD_UBC_EN_R)
#define name_gpio1 \
gpio_name_to_num(Reserve_GPIO10) \
gpio_name_to_num(Reserve_GPIO11) \
gpio_name_to_num(ASIC_TYPE_ID1) \
gpio_name_to_num(Reserve_GPIO12) \
gpio_name_to_num(Reserve_GPIO13) \
gpio_name_to_num(ASIC_TYPE_ID0) \
gpio_name_to_num(Reserve_GPIO14) \
gpio_name_to_num(Reserve_GPIO15) \
gpio_name_to_num(Reserve_GPIO16) \
Expand Down
Loading
Loading