mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 18:41:11 +00:00
This CL implements two methods for hibernating on npcx7 ec. One is using
PSL (Power Switch Logic) circuit to cut off ec's VCC power rail. The
other is turning off the power of all ram blocks except the last code
ram block. In order to make sure hibernate utilities are located in the
last code ram block and work properly, we introduce a new section called
'after_init' in ec.lds.S.
We also moved the hibernate utilities, workarounds for sysjump and so on
which are related to chip family into system-npcx5/7.c. It should be
easier to maintain.
It also includes:
1. Add CONFIG_HIBERNATE_PSL to select which method is used on npcx7 for
hibernating.
2. Add new flag GPIO_HIB_WAKE_HIGH to configure the active priority of
wake-up inputs during hibernating.
3. Add DEVICE_ID for npcx796f.
BRANCH=none
BUG=none
TEST=No build errors for all boards using npcx5 series.
Build poppy board and upload FW to platform. No issues found. Make
sure AC_PRESENT and POWER_BUTTON_L can wake up system from
hibernate. Passed hibernate tests no matter CONFIG_HIBERNATE_PSL is
enabled or not on npcx796f evb.
Change-Id: I4e045ebce4120b6fabaa582ed2ec31b5335dfdc3
Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
Reviewed-on: https://chromium-review.googlesource.com/493006
Reviewed-by: Randall Spangler <rspangler@chromium.org>
62 lines
2.1 KiB
Makefile
62 lines
2.1 KiB
Makefile
# -*- makefile -*-
|
|
# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# NPCX chip specific files build
|
|
#
|
|
|
|
# NPCX SoC has a Cortex-M4F ARM core
|
|
CORE:=cortex-m
|
|
# Allow the full Cortex-M4 instruction set
|
|
CFLAGS_CPU+=-march=armv7e-m -mcpu=cortex-m4
|
|
|
|
# Assign default CHIP_FAMILY as npcx5 for old boards used npcx5 series
|
|
ifeq ($(CHIP_FAMILY),)
|
|
CHIP_FAMILY:=npcx5
|
|
endif
|
|
|
|
# Required chip modules
|
|
chip-y=header.o clock.o gpio.o hwtimer.o jtag.o system.o uart.o
|
|
chip-y+=system-$(CHIP_FAMILY).o
|
|
|
|
# Optional chip modules
|
|
chip-$(CONFIG_ADC)+=adc.o
|
|
chip-$(CONFIG_FANS)+=fan.o
|
|
chip-$(CONFIG_FLASH_PHYSICAL)+=flash.o
|
|
chip-$(CONFIG_I2C)+=i2c.o i2c-$(CHIP_FAMILY).o
|
|
chip-$(CONFIG_LPC)+=lpc.o
|
|
chip-$(CONFIG_ESPI)+=espi.o
|
|
chip-$(CONFIG_PECI)+=peci.o
|
|
chip-$(CONFIG_HOSTCMD_SPS)+=shi.o
|
|
# pwm functions are implemented with the fan functions
|
|
chip-$(CONFIG_PWM)+=pwm.o
|
|
chip-$(CONFIG_SPI)+=spi.o
|
|
chip-$(CONFIG_WATCHDOG)+=watchdog.o
|
|
chip-$(HAS_TASK_KEYSCAN)+=keyboard_raw.o
|
|
|
|
# spi flash program fw for openocd
|
|
npcx-flash-fw=chip/npcx/spiflashfw/ec_npcxflash
|
|
npcx-flash-fw-bin=${out}/$(npcx-flash-fw).bin
|
|
PROJECT_EXTRA+=${npcx-flash-fw-bin}
|
|
|
|
# ECST tool is for filling the header used by booter of npcx EC
|
|
show_esct_cmd=$(if $(V),,echo ' ECST ' $(subst $(out)/,,$@) ; )
|
|
|
|
# ECST options for header
|
|
bld_ecst=${out}/util/ecst -chip $(CHIP_VARIANT) -usearmrst -mode bt -ph -i $(1) -o $(2) -nohcrc \
|
|
-nofcrc -flashsize 8 -spimaxclk 50 -spireadmode dual 1> /dev/null
|
|
|
|
# Replace original one with the flat file including header
|
|
moveflat=mv -f $(1) $(2)
|
|
|
|
# Commands for ECST
|
|
cmd_ecst=$(show_esct_cmd)$(call moveflat,$@,$@.tmp);$(call bld_ecst,$@.tmp,$@)
|
|
|
|
# Commands to append npcx header in ec.RO.flat
|
|
cmd_org_ec_elf_to_flat = $(OBJCOPY) --set-section-flags .roshared=share \
|
|
-O binary $(patsubst %.flat,%.elf,$@) $@
|
|
cmd_npcx_ro_elf_to_flat=$(cmd_org_ec_elf_to_flat);$(cmd_ecst)
|
|
cmd_ec_elf_to_flat = $(if $(filter $(out)/RO/ec.RO.flat, $@), \
|
|
$(cmd_npcx_ro_elf_to_flat), $(cmd_org_ec_elf_to_flat) )
|