mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 02:20:48 +00:00
Based on the passed TOUCHPAD_FW parameter to the make command, the
build system generates hashes for the touchpad FW.
To generate the hashes, gen_touchpad_hash splits the touchpad FW
in blocks of CONFIG_UPDATE_PDU_SIZE, that are hashed individually
(SHA-256), and then stored in the EC image.
This will allow the USB updater code to verify the integrity of
the touchpad firmware being flashed.
When no FW is provided, zeros are output, which do not match
any valid data.
BRANCH=none
BUG=b:63993173
TEST=make TOUCHPAD_FW=SA459C-1211_ForGoogleHammer_3.0.bin \
BOARD=hammer -j
TEST=Using variations of
make TOUCHPAD_FW=SA459C-1211_ForGoogleHammer_3.0.bin \
BOARD=hammer -j
make TOUCHPAD_FW=SA459C-1211_ForGoogleHammer_4.0.bin \
BOARD=hammer -j
make BOARD=hammer -j
Check that TPHASH touchpad_fw_hash.h is only regenerated when
the parameter changes.
Change-Id: Ie347270aa9c00342de13489c9422e45e681b94c2
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/615321
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
66 lines
2.3 KiB
Makefile
66 lines
2.3 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.
|
|
#
|
|
# Host tools build
|
|
#
|
|
|
|
host-util-bin=ectool lbplay stm32mon ec_sb_firmware_update lbcc \
|
|
ec_parse_panicinfo
|
|
build-util-bin=ec_uartd iteflash
|
|
build-util-art+=util/export_taskinfo.so
|
|
ifeq ($(CHIP),npcx)
|
|
build-util-bin+=ecst
|
|
endif
|
|
|
|
comm-objs=$(util-lock-objs:%=lock/%) comm-host.o comm-dev.o
|
|
comm-objs+=comm-lpc.o comm-i2c.o misc_util.o
|
|
|
|
ectool-objs=ectool.o ectool_keyscan.o ec_flash.o ec_panicinfo.o $(comm-objs)
|
|
ec_sb_firmware_update-objs=ec_sb_firmware_update.o $(comm-objs) misc_util.o
|
|
ec_sb_firmware_update-objs+=powerd_lock.o
|
|
lbplay-objs=lbplay.o $(comm-objs)
|
|
|
|
ec_parse_panicinfo-objs=ec_parse_panicinfo.o ec_panicinfo.o
|
|
|
|
# USB type-C Vendor Information File generation
|
|
ifeq ($(CONFIG_USB_POWER_DELIVERY),y)
|
|
build-util-bin+=genvif
|
|
build-util-art+=$(BOARD)_vif.txt
|
|
$(out)/util/genvif: $(out)/util/usb_pd_policy.o board/$(BOARD)/board.h \
|
|
include/usb_pd.h include/usb_pd_tcpm.h
|
|
$(out)/util/genvif: BUILD_LDFLAGS+=$(out)/util/usb_pd_policy.o -flto
|
|
|
|
STANDALONE_FLAGS=-ffreestanding -fno-builtin -nostdinc \
|
|
-Ibuiltin/ -D"__keep= " -DVIF_BUILD
|
|
$(out)/util/usb_pd_policy.o: board/$(BOARD)/usb_pd_policy.c
|
|
$(call quiet,c_to_vif,BUILDCC)
|
|
deps-$(CONFIG_USB_POWER_DELIVERY) += $(out)/util/usb_pd_policy.o.d
|
|
endif # CONFIG_USB_POWER_DELIVERY
|
|
|
|
ifneq ($(CONFIG_TOUCHPAD_HASH_FW),)
|
|
build-util-bin += gen_touchpad_hash
|
|
|
|
# Assume RW section (touchpad FW must be identical for both RO+RW)
|
|
$(out)/util/gen_touchpad_hash: BUILD_LDFLAGS += -DSECTION_IS_RW
|
|
|
|
OPENSSL_CFLAGS := $(shell $(PKG_CONFIG) --libs openssl)
|
|
OPENSSL_LDFLAGS := $(shell $(PKG_CONFIG) --libs openssl)
|
|
|
|
$(out)/util/gen_touchpad_hash: BUILD_CFLAGS += $(OPENSSL_CFLAGS)
|
|
$(out)/util/gen_touchpad_hash: BUILD_LDFLAGS += $(OPENSSL_LDFLAGS)
|
|
endif # CONFIG_TOUCHPAD_VIRTUAL_OFF
|
|
|
|
$(out)/util/export_taskinfo.so: $(out)/util/export_taskinfo_ro.o \
|
|
$(out)/util/export_taskinfo_rw.o
|
|
$(call quiet,link_taskinfo,BUILDLD)
|
|
|
|
$(out)/util/export_taskinfo_ro.o: util/export_taskinfo.c
|
|
$(call quiet,c_to_taskinfo,BUILDCC,RO)
|
|
|
|
$(out)/util/export_taskinfo_rw.o: util/export_taskinfo.c
|
|
$(call quiet,c_to_taskinfo,BUILDCC,RW)
|
|
|
|
deps-y += $(out)/util/export_taskinfo_ro.o.d $(out)/util/export_taskinfo_rw.o.d
|