/* Copyright 2022 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /* Board re-init for Rusty board * Rusty shares the firmware with Steelix. * Steelix is convertible but Rusty is clamshell * so some functions should be disabled for clamshell. */ #include #include #include "cros_cbi.h" #include "gpio/gpio_int.h" #include "hooks.h" #include "motion_sense.h" #include "tablet_mode.h" LOG_MODULE_REGISTER(board_init, LOG_LEVEL_ERR); static bool board_is_clamshell; static void board_setup_init(void) { int ret; uint32_t val; ret = cros_cbi_get_fw_config(FORM_FACTOR, &val); if (ret != 0) { LOG_ERR("Error retrieving CBI FW_CONFIG field %d", FORM_FACTOR); return; } if (val == CLAMSHELL) { board_is_clamshell = true; motion_sensor_count = 0; gmr_tablet_switch_disable(); } } DECLARE_HOOK(HOOK_INIT, board_setup_init, HOOK_PRIO_PRE_DEFAULT); static void disable_base_imu_irq(void) { if (board_is_clamshell) { gpio_disable_dt_interrupt( GPIO_INT_FROM_NODELABEL(int_base_imu)); gpio_pin_configure_dt(GPIO_DT_FROM_NODELABEL(base_imu_int_l), GPIO_INPUT | GPIO_PULL_UP); } } DECLARE_HOOK(HOOK_INIT, disable_base_imu_irq, HOOK_PRIO_POST_DEFAULT);