summaryrefslogtreecommitdiff
path: root/board/nami/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/nami/board.c')
-rw-r--r--board/nami/board.c239
1 files changed, 112 insertions, 127 deletions
diff --git a/board/nami/board.c b/board/nami/board.c
index 20882cff13..02fb27a283 100644
--- a/board/nami/board.c
+++ b/board/nami/board.c
@@ -1,4 +1,4 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
+/* Copyright 2017 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -65,11 +65,11 @@
#include "fan.h"
#include "fan_chip.h"
-#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
-#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ##args)
+#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ##args)
-#define USB_PD_PORT_PS8751 0
-#define USB_PD_PORT_ANX7447 1
+#define USB_PD_PORT_PS8751 0
+#define USB_PD_PORT_ANX7447 1
uint16_t board_version;
uint8_t oem = PROJECT_NAMI;
@@ -82,17 +82,16 @@ uint8_t model;
* that we don't have pin 0.
*/
const int keyboard_factory_scan_pins[][2] = {
- {-1, -1}, {0, 5}, {1, 1}, {1, 0}, {0, 6},
- {0, 7}, {-1, -1}, {-1, -1}, {1, 4}, {1, 3},
- {-1, -1}, {1, 6}, {1, 7}, {3, 1}, {2, 0},
- {1, 5}, {2, 6}, {2, 7}, {2, 1}, {2, 4},
- {2, 5}, {1, 2}, {2, 3}, {2, 2}, {3, 0},
- {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1}, {-1, -1},
- {-1, -1},
+ { -1, -1 }, { 0, 5 }, { 1, 1 }, { 1, 0 }, { 0, 6 }, { 0, 7 },
+ { -1, -1 }, { -1, -1 }, { 1, 4 }, { 1, 3 }, { -1, -1 }, { 1, 6 },
+ { 1, 7 }, { 3, 1 }, { 2, 0 }, { 1, 5 }, { 2, 6 }, { 2, 7 },
+ { 2, 1 }, { 2, 4 }, { 2, 5 }, { 1, 2 }, { 2, 3 }, { 2, 2 },
+ { 3, 0 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
+ { -1, -1 },
};
const int keyboard_factory_scan_pins_used =
- ARRAY_SIZE(keyboard_factory_scan_pins);
+ ARRAY_SIZE(keyboard_factory_scan_pins);
static void tcpc_alert_event(enum gpio_signal signal)
{
@@ -151,13 +150,14 @@ void usb1_evt(enum gpio_signal signal)
/* ADC channels */
const struct adc_t adc_channels[] = {
/* Vbus sensing (10x voltage divider). PPVAR_BOOSTIN_SENSE */
- [ADC_VBUS] = {"VBUS", NPCX_ADC_CH2, ADC_MAX_VOLT*10, ADC_READ_MAX+1, 0},
+ [ADC_VBUS] = { "VBUS", NPCX_ADC_CH2, ADC_MAX_VOLT * 10,
+ ADC_READ_MAX + 1, 0 },
/*
* Adapter current output or battery charging/discharging current (uV)
* 18x amplification on charger side.
*/
- [ADC_AMON_BMON] = {"AMON_BMON", NPCX_ADC_CH1, ADC_MAX_VOLT*1000/18,
- ADC_READ_MAX+1, 0},
+ [ADC_AMON_BMON] = { "AMON_BMON", NPCX_ADC_CH1, ADC_MAX_VOLT * 1000 / 18,
+ ADC_READ_MAX + 1, 0 },
};
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
@@ -166,7 +166,7 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
const struct fan_conf fan_conf_0 = {
.flags = FAN_USE_RPM_MODE,
- .ch = MFT_CH_0, /* Use MFT id to control fan */
+ .ch = MFT_CH_0, /* Use MFT id to control fan */
.pgood_gpio = -1,
.enable_gpio = -1,
};
@@ -212,54 +212,42 @@ struct fan_t fans[FAN_CH_COUNT] = {
/******************************************************************************/
/* MFT channels. These are logically separate from pwm_channels. */
const struct mft_t mft_channels[] = {
- [MFT_CH_0] = {NPCX_MFT_MODULE_2, TCKC_LFCLK, PWM_CH_FAN},
+ [MFT_CH_0] = { NPCX_MFT_MODULE_2, TCKC_LFCLK, PWM_CH_FAN },
};
BUILD_ASSERT(ARRAY_SIZE(mft_channels) == MFT_CH_COUNT);
/* I2C port map */
-const struct i2c_port_t i2c_ports[] = {
- {
- .name = "tcpc0",
- .port = NPCX_I2C_PORT0_0,
- .kbps = 400,
- .scl = GPIO_I2C0_0_SCL,
- .sda = GPIO_I2C0_0_SDA
- },
- {
- .name = "tcpc1",
- .port = NPCX_I2C_PORT0_1,
- .kbps = 400,
- .scl = GPIO_I2C0_1_SCL,
- .sda = GPIO_I2C0_1_SDA
- },
- {
- .name = "battery",
- .port = NPCX_I2C_PORT1,
- .kbps = 100,
- .scl = GPIO_I2C1_SCL,
- .sda = GPIO_I2C1_SDA
- },
- {
- .name = "charger",
- .port = NPCX_I2C_PORT2,
- .kbps = 100,
- .scl = GPIO_I2C2_SCL,
- .sda = GPIO_I2C2_SDA
- },
- {
- .name = "pmic",
- .port = NPCX_I2C_PORT2,
- .kbps = 400,
- .scl = GPIO_I2C2_SCL,
- .sda = GPIO_I2C2_SDA
- },
- {
- .name = "accelgyro",
- .port = NPCX_I2C_PORT3,
- .kbps = 400,
- .scl = GPIO_I2C3_SCL,
- .sda = GPIO_I2C3_SDA
- },
+const struct i2c_port_t i2c_ports[] = {
+ { .name = "tcpc0",
+ .port = NPCX_I2C_PORT0_0,
+ .kbps = 400,
+ .scl = GPIO_I2C0_0_SCL,
+ .sda = GPIO_I2C0_0_SDA },
+ { .name = "tcpc1",
+ .port = NPCX_I2C_PORT0_1,
+ .kbps = 400,
+ .scl = GPIO_I2C0_1_SCL,
+ .sda = GPIO_I2C0_1_SDA },
+ { .name = "battery",
+ .port = NPCX_I2C_PORT1,
+ .kbps = 100,
+ .scl = GPIO_I2C1_SCL,
+ .sda = GPIO_I2C1_SDA },
+ { .name = "charger",
+ .port = NPCX_I2C_PORT2,
+ .kbps = 100,
+ .scl = GPIO_I2C2_SCL,
+ .sda = GPIO_I2C2_SDA },
+ { .name = "pmic",
+ .port = NPCX_I2C_PORT2,
+ .kbps = 400,
+ .scl = GPIO_I2C2_SCL,
+ .sda = GPIO_I2C2_SDA },
+ { .name = "accelgyro",
+ .port = NPCX_I2C_PORT3,
+ .kbps = 400,
+ .scl = GPIO_I2C3_SCL,
+ .sda = GPIO_I2C3_SDA },
};
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
@@ -294,16 +282,22 @@ static int ps8751_tune_mux(const struct usb_mux *me)
return EC_SUCCESS;
}
-struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
+struct usb_mux usb_mux_ps8751 = {
+ .usb_port = USB_PD_PORT_PS8751,
+ .driver = &tcpci_tcpm_usb_mux_driver,
+ .hpd_update = &ps8xxx_tcpc_update_hpd_status,
+};
+
+struct usb_mux_chain usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = {
[USB_PD_PORT_PS8751] = {
- .usb_port = USB_PD_PORT_PS8751,
- .driver = &tcpci_tcpm_usb_mux_driver,
- .hpd_update = &ps8xxx_tcpc_update_hpd_status,
+ .mux = &usb_mux_ps8751,
},
[USB_PD_PORT_ANX7447] = {
- .usb_port = USB_PD_PORT_ANX7447,
- .driver = &anx7447_usb_mux_driver,
- .hpd_update = &anx7447_tcpc_update_hpd_status,
+ .mux = &(const struct usb_mux) {
+ .usb_port = USB_PD_PORT_ANX7447,
+ .driver = &anx7447_usb_mux_driver,
+ .hpd_update = &anx7447_tcpc_update_hpd_status,
+ },
}
};
@@ -333,7 +327,6 @@ void board_reset_pd_mcu(void)
if (oem == PROJECT_AKALI && board_version < 0x0200) {
if (anx7447_flash_erase(USB_PD_PORT_ANX7447))
CPRINTS("Failed to erase OCM flash");
-
}
/* Assert reset */
@@ -358,7 +351,7 @@ void board_tcpc_init(void)
gpio_enable_interrupt(GPIO_USB_C1_PD_INT_ODL);
if (oem == PROJECT_SONA && model != MODEL_SYNDRA)
- usb_muxes[USB_PD_PORT_PS8751].board_init = ps8751_tune_mux;
+ usb_mux_ps8751.board_init = ps8751_tune_mux;
/*
* Initialize HPD to low; after sysjump SOC needs to see
@@ -366,7 +359,7 @@ void board_tcpc_init(void)
*/
for (int port = 0; port < CONFIG_USB_PD_PORT_MAX_COUNT; ++port)
usb_mux_hpd_update(port, USB_PD_MUX_HPD_LVL_DEASSERTED |
- USB_PD_MUX_HPD_IRQ_DEASSERTED);
+ USB_PD_MUX_HPD_IRQ_DEASSERTED);
}
DECLARE_HOOK(HOOK_INIT, board_tcpc_init, HOOK_PRIO_INIT_I2C + 2);
@@ -391,12 +384,12 @@ uint16_t tcpc_get_alert_status(void)
* F75303_Remote1 is near CPU, and F75303_Remote2 is near 5V power IC.
*/
const struct temp_sensor_t temp_sensors[TEMP_SENSOR_COUNT] = {
- {"F75303_Local", TEMP_SENSOR_TYPE_BOARD, f75303_get_val,
- F75303_IDX_LOCAL},
- {"F75303_Remote1", TEMP_SENSOR_TYPE_CPU, f75303_get_val,
- F75303_IDX_REMOTE1},
- {"F75303_Remote2", TEMP_SENSOR_TYPE_BOARD, f75303_get_val,
- F75303_IDX_REMOTE2},
+ { "F75303_Local", TEMP_SENSOR_TYPE_BOARD, f75303_get_val,
+ F75303_IDX_LOCAL },
+ { "F75303_Remote1", TEMP_SENSOR_TYPE_CPU, f75303_get_val,
+ F75303_IDX_REMOTE1 },
+ { "F75303_Remote2", TEMP_SENSOR_TYPE_BOARD, f75303_get_val,
+ F75303_IDX_REMOTE2 },
};
struct ec_thermal_config thermal_params[TEMP_SENSOR_COUNT];
@@ -405,8 +398,8 @@ struct ec_thermal_config thermal_params[TEMP_SENSOR_COUNT];
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_A \
- { \
+#define THERMAL_A \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = 0, \
[EC_TEMP_THRESH_HIGH] = C_TO_K(75), \
@@ -426,8 +419,8 @@ __maybe_unused static const struct ec_thermal_config thermal_a = THERMAL_A;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_B1 \
- { \
+#define THERMAL_B1 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = 0, \
[EC_TEMP_THRESH_HIGH] = C_TO_K(82), \
@@ -447,8 +440,8 @@ __maybe_unused static const struct ec_thermal_config thermal_b1 = THERMAL_B1;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_B2 \
- { \
+#define THERMAL_B2 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = 0, \
[EC_TEMP_THRESH_HIGH] = C_TO_K(84), \
@@ -468,8 +461,8 @@ __maybe_unused static const struct ec_thermal_config thermal_b2 = THERMAL_B2;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_C1 \
- { \
+#define THERMAL_C1 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = 0, \
[EC_TEMP_THRESH_HIGH] = C_TO_K(66), \
@@ -489,8 +482,8 @@ __maybe_unused static const struct ec_thermal_config thermal_c1 = THERMAL_C1;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_C2 \
- { \
+#define THERMAL_C2 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = 0, \
[EC_TEMP_THRESH_HIGH] = C_TO_K(74), \
@@ -510,8 +503,8 @@ __maybe_unused static const struct ec_thermal_config thermal_c2 = THERMAL_C2;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_D0 \
- { \
+#define THERMAL_D0 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = C_TO_K(79), \
[EC_TEMP_THRESH_HIGH] = 0, \
@@ -531,8 +524,8 @@ __maybe_unused static const struct ec_thermal_config thermal_d0 = THERMAL_D0;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_D1 \
- { \
+#define THERMAL_D1 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = C_TO_K(59), \
[EC_TEMP_THRESH_HIGH] = 0, \
@@ -552,8 +545,8 @@ __maybe_unused static const struct ec_thermal_config thermal_d1 = THERMAL_D1;
/*
* TODO(b/202062363): Remove when clang is fixed.
*/
-#define THERMAL_D2 \
- { \
+#define THERMAL_D2 \
+ { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = C_TO_K(59), \
[EC_TEMP_THRESH_HIGH] = 0, \
@@ -570,11 +563,9 @@ __maybe_unused static const struct ec_thermal_config thermal_d1 = THERMAL_D1;
__maybe_unused static const struct ec_thermal_config thermal_d2 = THERMAL_D2;
#define I2C_PMIC_READ(reg, data) \
- i2c_read8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1_FLAGS,\
- (reg), (data))
+ i2c_read8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1_FLAGS, (reg), (data))
#define I2C_PMIC_WRITE(reg, data) \
- i2c_write8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1_FLAGS,\
- (reg), (data))
+ i2c_write8(I2C_PORT_PMIC, TPS650X30_I2C_ADDR1_FLAGS, (reg), (data))
static void board_pmic_init(void)
{
@@ -726,8 +717,8 @@ int board_set_active_charge_port(int charge_port)
charge_port < CONFIG_USB_PD_PORT_MAX_COUNT);
/* check if we are sourcing VBUS on the port */
/* dnojiri: revisit */
- int is_source = gpio_get_level(charge_port == 0 ?
- GPIO_USB_C0_5V_EN : GPIO_USB_C1_5V_EN);
+ int is_source = gpio_get_level(charge_port == 0 ? GPIO_USB_C0_5V_EN :
+ GPIO_USB_C1_5V_EN);
if (is_real_port && is_source) {
CPRINTF("No charging on source port p%d is ", charge_port);
@@ -745,17 +736,19 @@ int board_set_active_charge_port(int charge_port)
/* dnojiri: revisit. there is always this assumption that
* battery is present. If not, this may cause brownout. */
gpio_set_level(charge_port ? GPIO_USB_C0_CHARGE_L :
- GPIO_USB_C1_CHARGE_L, 1);
+ GPIO_USB_C1_CHARGE_L,
+ 1);
/* Enable charging port */
gpio_set_level(charge_port ? GPIO_USB_C1_CHARGE_L :
- GPIO_USB_C0_CHARGE_L, 0);
+ GPIO_USB_C0_CHARGE_L,
+ 0);
}
return EC_SUCCESS;
}
-void board_set_charge_limit(int port, int supplier, int charge_ma,
- int max_ma, int charge_mv)
+void board_set_charge_limit(int port, int supplier, int charge_ma, int max_ma,
+ int charge_mv)
{
/*
* Limit the input current to 96% negotiated limit,
@@ -764,12 +757,11 @@ void board_set_charge_limit(int port, int supplier, int charge_ma,
int factor = 96;
if (oem == PROJECT_AKALI &&
- (model == MODEL_EKKO || model == MODEL_BARD))
+ (model == MODEL_EKKO || model == MODEL_BARD))
factor = 95;
charge_ma = charge_ma * factor / 100;
charge_set_input_current_limit(
- MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT),
- charge_mv);
+ MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv);
}
void board_hibernate(void)
@@ -782,9 +774,9 @@ void board_hibernate(void)
}
const struct pwm_t pwm_channels[] = {
- [PWM_CH_LED1] = { 3, PWM_CONFIG_DSLEEP, 1200 },
+ [PWM_CH_LED1] = { 3, PWM_CONFIG_DSLEEP, 1200 },
[PWM_CH_LED2] = { 5, PWM_CONFIG_DSLEEP, 1200 },
- [PWM_CH_FAN] = {4, PWM_CONFIG_OPEN_DRAIN, 25000},
+ [PWM_CH_FAN] = { 4, PWM_CONFIG_OPEN_DRAIN, 25000 },
/*
* 1.2kHz is a multiple of both 50 and 60. So a video recorder
* (generally designed to ignore either 50 or 60 Hz flicker) will not
@@ -806,23 +798,17 @@ static struct kionix_accel_data g_kx022_data;
static struct accelgyro_saved_data_t g_bma255_data;
/* Matrix to rotate accelrator into standard reference frame */
-const mat33_fp_t base_standard_ref = {
- { 0, FLOAT_TO_FP(-1), 0},
- { FLOAT_TO_FP(1), 0, 0},
- { 0, 0, FLOAT_TO_FP(1)}
-};
+const mat33_fp_t base_standard_ref = { { 0, FLOAT_TO_FP(-1), 0 },
+ { FLOAT_TO_FP(1), 0, 0 },
+ { 0, 0, FLOAT_TO_FP(1) } };
-const mat33_fp_t lid_standard_ref = {
- { FLOAT_TO_FP(1), 0, 0},
- { 0, FLOAT_TO_FP(-1), 0},
- { 0, 0, FLOAT_TO_FP(-1)}
-};
+const mat33_fp_t lid_standard_ref = { { FLOAT_TO_FP(1), 0, 0 },
+ { 0, FLOAT_TO_FP(-1), 0 },
+ { 0, 0, FLOAT_TO_FP(-1) } };
-const mat33_fp_t rotation_x180_z90 = {
- { 0, FLOAT_TO_FP(-1), 0 },
- { FLOAT_TO_FP(-1), 0, 0 },
- { 0, 0, FLOAT_TO_FP(-1) }
-};
+const mat33_fp_t rotation_x180_z90 = { { 0, FLOAT_TO_FP(-1), 0 },
+ { FLOAT_TO_FP(-1), 0, 0 },
+ { 0, 0, FLOAT_TO_FP(-1) } };
const struct motion_sensor_t lid_accel_1 = {
.name = "Lid Accel",
@@ -1096,7 +1082,7 @@ static void board_init(void)
ISL9238_REG_CONTROL3, &reg) == EC_SUCCESS) {
reg |= ISL9238_C3_BB_SWITCHING_PERIOD;
if (i2c_write16(I2C_PORT_CHARGER, I2C_ADDR_CHARGER_FLAGS,
- ISL9238_REG_CONTROL3, reg))
+ ISL9238_REG_CONTROL3, reg))
CPRINTF("Failed to set isl9238\n");
}
@@ -1188,14 +1174,13 @@ void board_kblight_init(void)
}
}
-enum critical_shutdown board_critical_shutdown_check(
- struct charge_state_data *curr)
+enum critical_shutdown
+board_critical_shutdown_check(struct charge_state_data *curr)
{
if (oem == PROJECT_VAYNE)
return CRITICAL_SHUTDOWN_CUTOFF;
else
return CRITICAL_SHUTDOWN_HIBERNATE;
-
}
uint8_t board_set_battery_level_shutdown(void)