コード例 #1
0
ファイル: led.c プロジェクト: coreboot/chrome-ec
/**
 * Called by hook task every 1 sec
 */
static void led_second(void)
{
	if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED))
		oak_led_set_power(system_get_board_version());
	if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED))
		oak_led_set_battery(system_get_board_version());
}
コード例 #2
0
ファイル: led.c プロジェクト: coreboot/chrome-ec
static int bat_led_set(enum led_color color, int on)
{
	/* Before Rev5, it's active low; After that, it's active high */
	if (system_get_board_version() < OAK_REV5)
		on = !on;

	switch (color) {
	case BAT_LED_GREEN:
		gpio_set_level(GPIO_BAT_LED0, on); /* BAT_LED_GREEN */
		break;
	case BAT_LED_ORANGE:
		/* for rev2 or before */
		gpio_set_level(GPIO_BAT_LED1, on); /* BAT_LED_ORANGE */
		break;
	case BAT_LED_RED:
		/* for rev3 or later */
		gpio_set_level(GPIO_BAT_LED1, on); /* BAT_LED_RED */
		break;
	case BAT_LED_AMBER:
		/* for rev3 or later */
		gpio_set_level(GPIO_BAT_LED0, on); /* BAT_LED_AMBER */
		gpio_set_level(GPIO_BAT_LED1, on);
		break;
	case PWR_LED_GREEN:
		gpio_set_level(GPIO_PWR_LED0, on); /* PWR_LED_GREEN */
		break;
	case PWR_LED_ORANGE:
		gpio_set_level(GPIO_PWR_LED1, on); /* PWR_LED_ORANGE */
		break;
	default:
		return EC_ERROR_UNKNOWN;
	}
	return EC_SUCCESS;
}
コード例 #3
0
ファイル: board.c プロジェクト: coreboot/chrome-ec
static void board_handle_reboot(void)
{
	int flags;

	if (system_jumped_to_this_image())
		return;

	if (system_get_board_version() < BOARD_MIN_ID_LOD_EN)
		return;

	/* Interrogate current reset flags from previous reboot. */
	flags = system_get_reset_flags();

	if (!(flags & PMIC_RESET_FLAGS))
		return;

	/* Preserve AP off request. */
	if (flags & RESET_FLAG_AP_OFF)
		chip_save_reset_flags(RESET_FLAG_AP_OFF);

	ccprintf("Restarting system with PMIC.\n");
	/* Flush console */
	cflush();

	/* Bring down all rails but RTC rail (including EC power). */
	gpio_set_flags(GPIO_BATLOW_L_PMIC_LDO_EN, GPIO_OUT_HIGH);
	while (1)
		; /* wait here */
}
コード例 #4
0
ファイル: board.c プロジェクト: coreboot/chrome-ec
/* Initialize board. */
static void board_init(void)
{
	/* Enable PD MCU interrupt */
	gpio_enable_interrupt(GPIO_PD_MCU_INT);

	/* Enable VBUS interrupt */
	gpio_enable_interrupt(GPIO_USB_C0_VBUS_WAKE_L);
	gpio_enable_interrupt(GPIO_USB_C1_VBUS_WAKE_L);

	/* Enable pericom BC1.2 interrupts */
	gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_L);
	gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_L);

	/* Provide AC status to the PCH */
	gpio_set_level(GPIO_PCH_ACOK, extpower_is_present());

	/* Proto board workarounds */
	if (system_get_board_version() == 0) {
		/* Disable interrupt for SLP_S0 */
		gpio_set_flags(GPIO_PCH_SLP_S0_L,
			       GPIO_INPUT | GPIO_PULL_DOWN);

		/* Add internal pullup on PLATFORM_EC_PROCHOT */
		gpio_set_flags(GPIO_PLATFORM_EC_PROCHOT,
			       GPIO_INPUT | GPIO_PULL_UP);
	}
}
コード例 #5
0
ファイル: system.c プロジェクト: longsleep/ec
int host_command_get_board_version(struct host_cmd_handler_args *args)
{
	struct ec_response_board_version *r = args->response;

	r->board_version = (uint16_t) system_get_board_version();

	args->response_size = sizeof(*r);

	return EC_RES_SUCCESS;
}
コード例 #6
0
ファイル: system.c プロジェクト: longsleep/ec
static int command_version(int argc, char **argv)
{
	ccprintf("Chip:    %s %s %s\n", system_get_chip_vendor(),
		 system_get_chip_name(), system_get_chip_revision());
	ccprintf("Board:   %d\n", system_get_board_version());
	ccprintf("RO:      %s\n", system_get_version(SYSTEM_IMAGE_RO));
	ccprintf("RW:      %s\n", system_get_version(SYSTEM_IMAGE_RW));
	ccprintf("Build: %s\n", system_get_build_info());
	return EC_SUCCESS;
}
コード例 #7
0
ファイル: board.c プロジェクト: fourier49/BZ_DEV_EC
/**
 * Set AP reset.
 *
 * PMIC_WARM_RESET_H (PB3) is connected to PMIC RESET before rev < 3.
 * AP_RESET_L (PC3, CPU_WARM_RESET_L) is connected to PMIC SYSRSTB
 * after rev >= 3.
 */
void board_set_ap_reset(int asserted)
{
	if (system_get_board_version() < 3) {
		/* Signal is active-high */
		CPRINTS("pmic warm reset(%d)", asserted);
		gpio_set_level(GPIO_PMIC_WARM_RESET_H, asserted);
	} else {
		/* Signal is active-low */
		CPRINTS("ap warm reset(%d)", asserted);
		gpio_set_level(GPIO_AP_RESET_L, !asserted);
	}
}