diff options
Diffstat (limited to 'board/fennel/board.c')
-rw-r--r-- | board/fennel/board.c | 163 |
1 files changed, 76 insertions, 87 deletions
diff --git a/board/fennel/board.c b/board/fennel/board.c index b9adcad237..563f680dee 100644 --- a/board/fennel/board.c +++ b/board/fennel/board.c @@ -1,4 +1,4 @@ -/* Copyright 2020 The Chromium OS Authors. All rights reserved. +/* Copyright 2020 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -33,6 +33,7 @@ #include "keyboard_scan.h" #include "keyboard_backlight.h" #include "lid_switch.h" +#include "panic.h" #include "power.h" #include "power_button.h" #include "registers.h" @@ -47,8 +48,8 @@ #include "usb_pd_tcpm.h" #include "util.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) static void tcpc_alert_event(enum gpio_signal signal) { @@ -60,40 +61,34 @@ static void tcpc_alert_event(enum gpio_signal signal) /******************************************************************************/ /* ADC channels. Must be in the exactly same order as in enum adc_channel. */ const struct adc_t adc_channels[] = { - [ADC_BOARD_ID] = {"BOARD_ID", 3300, 4096, 0, STM32_AIN(10)}, - [ADC_EC_SKU_ID] = {"EC_SKU_ID", 3300, 4096, 0, STM32_AIN(8)}, + [ADC_BOARD_ID] = { "BOARD_ID", 3300, 4096, 0, STM32_AIN(10) }, + [ADC_EC_SKU_ID] = { "EC_SKU_ID", 3300, 4096, 0, STM32_AIN(8) }, }; BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); /******************************************************************************/ /* I2C ports */ const struct i2c_port_t i2c_ports[] = { - { - .name = "typec", - .port = 0, - .kbps = 400, - .scl = GPIO_I2C1_SCL, - .sda = GPIO_I2C1_SDA - }, - { - .name = "other", - .port = 1, - .kbps = 400, - .scl = GPIO_I2C2_SCL, - .sda = GPIO_I2C2_SDA - }, + { .name = "typec", + .port = 0, + .kbps = 400, + .scl = GPIO_I2C1_SCL, + .sda = GPIO_I2C1_SDA }, + { .name = "other", + .port = 1, + .kbps = 400, + .scl = GPIO_I2C2_SCL, + .sda = GPIO_I2C2_SDA }, }; const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); const struct i2c_port_t i2c_bitbang_ports[] = { - { - .name = "battery", - .port = 2, - .kbps = 100, - .scl = GPIO_I2C3_SCL, - .sda = GPIO_I2C3_SDA, - .drv = &bitbang_drv - }, + { .name = "battery", + .port = 2, + .kbps = 100, + .scl = GPIO_I2C3_SCL, + .sda = GPIO_I2C3_SDA, + .drv = &bitbang_drv }, }; const unsigned int i2c_bitbang_ports_used = ARRAY_SIZE(i2c_bitbang_ports); @@ -101,8 +96,8 @@ const unsigned int i2c_bitbang_ports_used = ARRAY_SIZE(i2c_bitbang_ports); /* power signal list. Must match order of enum power_signal. */ const struct power_signal_info power_signal_list[] = { - {GPIO_AP_IN_SLEEP_L, POWER_SIGNAL_ACTIVE_LOW, "AP_IN_S3_L"}, - {GPIO_PMIC_EC_RESETB, POWER_SIGNAL_ACTIVE_HIGH, "PMIC_PWR_GOOD"}, + { GPIO_AP_IN_SLEEP_L, POWER_SIGNAL_ACTIVE_LOW, "AP_IN_S3_L" }, + { GPIO_PMIC_EC_RESETB, POWER_SIGNAL_ACTIVE_HIGH, "PMIC_PWR_GOOD" }, }; BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT); @@ -158,8 +153,7 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { }, }; -static void board_hpd_status(const struct usb_mux *me, - mux_state_t mux_state, +static void board_hpd_status(const struct usb_mux *me, mux_state_t mux_state, bool *ack_required) { /* This driver does not use host command ACKs */ @@ -172,13 +166,16 @@ static void board_hpd_status(const struct usb_mux *me, host_set_single_event(EC_HOST_EVENT_USB_MUX); } -const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { +const struct usb_mux_chain usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { { - .usb_port = 0, - .i2c_port = I2C_PORT_USB_MUX, - .i2c_addr_flags = IT5205_I2C_ADDR1_FLAGS, - .driver = &it5205_usb_mux_driver, - .hpd_update = &board_hpd_status, + .mux = + &(const struct usb_mux){ + .usb_port = 0, + .i2c_port = I2C_PORT_USB_MUX, + .i2c_addr_flags = IT5205_I2C_ADDR1_FLAGS, + .driver = &it5205_usb_mux_driver, + .hpd_update = &board_hpd_status, + }, }, }; @@ -240,12 +237,12 @@ int board_set_active_charge_port(int charge_port) 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) { charge_ma = (charge_ma * 95) / 100; - charge_set_input_current_limit(MAX(charge_ma, - CONFIG_CHARGER_INPUT_CURRENT), charge_mv); + charge_set_input_current_limit( + MAX(charge_ma, CONFIG_CHARGER_INPUT_CURRENT), charge_mv); } int board_discharge_on_ac(int enable) @@ -302,8 +299,7 @@ static void board_spi_enable(void) /* Pin mux spi peripheral toward the sensor. */ gpio_config_module(MODULE_SPI_CONTROLLER, 1); } -DECLARE_HOOK(HOOK_CHIPSET_STARTUP, - board_spi_enable, +DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_spi_enable, MOTION_SENSE_HOOK_PRIO - 1); static void board_spi_disable(void) @@ -320,8 +316,7 @@ static void board_spi_disable(void) spi_enable(&spi_devices[0], 0); STM32_RCC_APB1ENR &= ~STM32_RCC_PB1_SPI2; } -DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, - board_spi_disable, +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_spi_disable, MOTION_SENSE_HOOK_PRIO + 1); #endif /* !VARIANT_KUKUI_NO_SENSORS */ @@ -360,17 +355,13 @@ static struct mutex g_lid_mutex; static struct mutex g_base_mutex; /* Rotation matrixes */ -static 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)} -}; +static 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) } }; -static 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) } -}; +static 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) } }; /* sensor private data */ /* Lid accel private data */ @@ -417,20 +408,20 @@ struct motion_sensor_t icm42607_base_accel = { }; struct motion_sensor_t icm42607_base_gyro = { - .name = "Gyro", - .active_mask = SENSOR_ACTIVE_S0_S3, - .chip = MOTIONSENSE_CHIP_ICM42607, - .type = MOTIONSENSE_TYPE_GYRO, - .location = MOTIONSENSE_LOC_BASE, - .drv = &icm42607_drv, - .mutex = &g_base_mutex, - .drv_data = &g_icm42607_data, - .port = CONFIG_SPI_ACCEL_PORT, - .i2c_spi_addr_flags = ACCEL_MK_SPI_ADDR_FLAGS(CONFIG_SPI_ACCEL_PORT), - .default_range = 1000, /* dps */ - .rot_standard_ref = NULL, - .min_frequency = ICM42607_GYRO_MIN_FREQ, - .max_frequency = ICM42607_GYRO_MAX_FREQ, + .name = "Gyro", + .active_mask = SENSOR_ACTIVE_S0_S3, + .chip = MOTIONSENSE_CHIP_ICM42607, + .type = MOTIONSENSE_TYPE_GYRO, + .location = MOTIONSENSE_LOC_BASE, + .drv = &icm42607_drv, + .mutex = &g_base_mutex, + .drv_data = &g_icm42607_data, + .port = CONFIG_SPI_ACCEL_PORT, + .i2c_spi_addr_flags = ACCEL_MK_SPI_ADDR_FLAGS(CONFIG_SPI_ACCEL_PORT), + .default_range = 1000, /* dps */ + .rot_standard_ref = NULL, + .min_frequency = ICM42607_GYRO_MIN_FREQ, + .max_frequency = ICM42607_GYRO_MAX_FREQ, }; struct motion_sensor_t motion_sensors[] = { @@ -522,18 +513,18 @@ static void board_detect_motionsensor(void) if (base_accelgyro_config != BASE_GYRO_NONE) return; /* Check base accelgyro chip */ - ret = icm_read8(&icm42607_base_accel, - ICM42607_REG_WHO_AM_I, &val); + ret = icm_read8(&icm42607_base_accel, ICM42607_REG_WHO_AM_I, &val); if (ret) ccprints("Get ICM fail."); if (val == ICM42607_CHIP_ICM42607P) { motion_sensors[BASE_ACCEL] = icm42607_base_accel; motion_sensors[BASE_GYRO] = icm42607_base_gyro; } - base_accelgyro_config = (val == ICM42607_CHIP_ICM42607P) - ? BASE_GYRO_ICM426XX : BASE_GYRO_BMI160; - ccprints("BASE Accelgyro: %s", (val == ICM42607_CHIP_ICM42607P) - ? "ICM42607" : "BMI160"); + base_accelgyro_config = (val == ICM42607_CHIP_ICM42607P) ? + BASE_GYRO_ICM426XX : + BASE_GYRO_BMI160; + ccprints("BASE Accelgyro: %s", + (val == ICM42607_CHIP_ICM42607P) ? "ICM42607" : "BMI160"); } DECLARE_HOOK(HOOK_CHIPSET_STARTUP, board_detect_motionsensor, HOOK_PRIO_DEFAULT); @@ -559,7 +550,7 @@ void motion_interrupt(enum gpio_signal signal) } const struct it8801_pwm_t it8801_pwm_channels[] = { - [IT8801_PWM_CH_KBLIGHT] = {.index = 4}, + [IT8801_PWM_CH_KBLIGHT] = { .index = 4 }, }; void board_kblight_init(void) @@ -575,11 +566,11 @@ bool board_has_kb_backlight(void) #endif /* !VARIANT_KUKUI_NO_SENSORS */ /* Battery functions */ -#define SB_SMARTCHARGE 0x26 +#define SB_SMARTCHARGE 0x26 /* Quick charge enable bit */ -#define SMART_QUICK_CHARGE 0x02 +#define SMART_QUICK_CHARGE 0x02 /* Quick charge support bit */ -#define MODE_QUICK_CHARGE_SUPPORT 0x01 +#define MODE_QUICK_CHARGE_SUPPORT 0x01 static void sb_quick_charge_mode(int enable) { @@ -650,8 +641,8 @@ int board_get_battery_i2c(void) } #ifdef SECTION_IS_RW -static int it8801_get_target_channel(enum pwm_channel *channel, - int type, int index) +static int it8801_get_target_channel(enum pwm_channel *channel, int type, + int index) { switch (type) { case EC_PWM_TYPE_GENERIC: @@ -674,14 +665,13 @@ host_command_pwm_set_duty(struct host_cmd_handler_args *args) if (it8801_get_target_channel(&channel, p->pwm_type, p->index)) return EC_RES_INVALID_PARAM; - duty = (uint32_t) p->duty * 255 / 65535; + duty = (uint32_t)p->duty * 255 / 65535; it8801_pwm_set_raw_duty(channel, duty); it8801_pwm_enable(channel, p->duty > 0); return EC_RES_SUCCESS; } -DECLARE_HOST_COMMAND(EC_CMD_PWM_SET_DUTY, - host_command_pwm_set_duty, +DECLARE_HOST_COMMAND(EC_CMD_PWM_SET_DUTY, host_command_pwm_set_duty, EC_VER_MASK(0)); static enum ec_status @@ -695,12 +685,11 @@ host_command_pwm_get_duty(struct host_cmd_handler_args *args) if (it8801_get_target_channel(&channel, p->pwm_type, p->index)) return EC_RES_INVALID_PARAM; - r->duty = (uint32_t) it8801_pwm_get_raw_duty(channel) * 65535 / 255; + r->duty = (uint32_t)it8801_pwm_get_raw_duty(channel) * 65535 / 255; args->response_size = sizeof(*r); return EC_RES_SUCCESS; } -DECLARE_HOST_COMMAND(EC_CMD_PWM_GET_DUTY, - host_command_pwm_get_duty, +DECLARE_HOST_COMMAND(EC_CMD_PWM_GET_DUTY, host_command_pwm_get_duty, EC_VER_MASK(0)); #endif |