summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuma copybara merger <zuma-automerger@google.com>2022-11-14 18:01:51 +0800
committerCopybara-Service <copybara-worker@google.com>2022-11-14 19:41:12 -0800
commitc2334071f40666f1accb776b96600e79200c00f2 (patch)
treeccd7b03211c1cd5cdfbac729542486dd6523ea74
parent72b23489b1f0b45aec2274f08d899ce17dcf33ad (diff)
downloadrio-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/Makefile3
-rw-r--r--drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h65
-rw-r--r--drivers/edgetpu/rio-pm.c6
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))