diff options
author | Zuma copybara merger <zuma-automerger@google.com> | 2022-11-14 18:01:51 +0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-11-14 19:41:12 -0800 |
commit | c2334071f40666f1accb776b96600e79200c00f2 (patch) | |
tree | ccd7b03211c1cd5cdfbac729542486dd6523ea74 | |
parent | 72b23489b1f0b45aec2274f08d899ce17dcf33ad (diff) | |
download | rio-c2334071f40666f1accb776b96600e79200c00f2.tar.gz |
[Copybara Auto Merge] Merge branch zuma into android13-gs-pixel-5.15
edgetpu: rio: Increase shutdown delay
Bug: 257888003
gcip: add common authenticated image format header
edgetpu: Add reasonable defaults to Makefile
Signed-off-by: Zuma copybara merger <zuma-automerger@google.com>
GitOrigin-RevId: ffbca4c6a8382c10e2058af7ea5be8d182a59a50
Change-Id: Ia53cfe37b6a9c29602931b6d03708cf4d1d54134
-rw-r--r-- | drivers/edgetpu/Makefile | 3 | ||||
-rw-r--r-- | drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h | 65 | ||||
-rw-r--r-- | drivers/edgetpu/rio-pm.c | 6 |
3 files changed, 71 insertions, 3 deletions
diff --git a/drivers/edgetpu/Makefile b/drivers/edgetpu/Makefile index 27ca3a1..40416ca 100644 --- a/drivers/edgetpu/Makefile +++ b/drivers/edgetpu/Makefile @@ -34,6 +34,9 @@ include $(KERNEL_SRC)/../private/google-modules/soc/gs/Makefile.include GCIP_DIR=gcip-kernel-driver/drivers/gcip +KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build +M ?= $(shell pwd) + modules modules_install: $(MAKE) -C $(KERNEL_SRC) M=$(M)/$(GCIP_DIR) W=1 gcip.o $(MAKE) -C $(KERNEL_SRC) M=$(M) W=1 $(KBUILD_OPTIONS) \ diff --git a/drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h b/drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h new file mode 100644 index 0000000..d376be1 --- /dev/null +++ b/drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Common authenticated image format for Google SoCs + * + * Copyright (C) 2022 Google LLC + */ + +#ifndef __GCIP_COMMON_IMAGE_HEADER_H__ +#define __GCIP_COMMON_IMAGE_HEADER_H__ + +#include "gcip-image-config.h" + +#define GCIP_FW_HEADER_SIZE (0x1000) + +struct gcip_common_image_sub_header_common { + int magic; + int generation; + int rollback_info; + int length; + char flags[16]; +}; + +struct gcip_common_image_sub_header_gen1 { + char body_hash[32]; + char chip_id[32]; + char auth_config[256]; + struct gcip_image_config image_config; +}; + +struct gcip_common_image_sub_header_gen2 { + char body_hash[64]; + char chip_id[32]; + char auth_config[256]; + struct gcip_image_config image_config; +}; + +struct gcip_common_image_header { + char sig[512]; + char pub[512]; + struct { + struct gcip_common_image_sub_header_common common; + union { + struct gcip_common_image_sub_header_gen1 gen1; + struct gcip_common_image_sub_header_gen2 gen2; + }; + }; +}; + +/* + * Returns the image config field from a common image header + * or NULL if the header has an invalid generation identifier + */ +static inline struct gcip_image_config * +get_image_config_from_hdr(struct gcip_common_image_header *hdr) +{ + switch (hdr->common.generation) { + case 1: + return &hdr->gen1.image_config; + case 2: + return &hdr->gen2.image_config; + } + return NULL; +} + +#endif /* __GCIP_COMMON_IMAGE_HEADER_H__ */ diff --git a/drivers/edgetpu/rio-pm.c b/drivers/edgetpu/rio-pm.c index 0b6aa45..58271d7 100644 --- a/drivers/edgetpu/rio-pm.c +++ b/drivers/edgetpu/rio-pm.c @@ -18,8 +18,8 @@ #include "mobile-pm.c" -#define SHUTDOWN_DELAY_US_MIN 20 -#define SHUTDOWN_DELAY_US_MAX 20 +#define SHUTDOWN_DELAY_US_MIN 200 +#define SHUTDOWN_DELAY_US_MAX 200 #define BOOTUP_DELAY_US_MIN 100 #define BOOTUP_DELAY_US_MAX 150 #define SHUTDOWN_MAX_DELAY_COUNT 20 @@ -45,7 +45,7 @@ static void rio_lpm_down(struct edgetpu_dev *etdev) u32 val; do { - /* Manually delay 20us per retry till LPM shutdown finished */ + /* Manually delay 200us per retry till LPM shutdown finished */ usleep_range(SHUTDOWN_DELAY_US_MIN, SHUTDOWN_DELAY_US_MAX); val = edgetpu_dev_read_32_sync(etdev, EDGETPU_REG_LPM_CONTROL); if ((val & 0x100) || (val == 0)) |