summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuma copybara merger <zuma-automerger@google.com>2022-11-16 01:09:00 +0000
committerCopybara-Service <copybara-worker@google.com>2022-11-17 01:51:23 -0800
commit97d729c6ea520f6e5be984c1ca7b0e6551d51011 (patch)
tree2972db77c8dcfa89a3c0ff2309bdce30b89256b9
parentc2334071f40666f1accb776b96600e79200c00f2 (diff)
downloadrio-97d729c6ea520f6e5be984c1ca7b0e6551d51011.tar.gz
[Copybara Auto Merge] Merge branch zuma into android13-gs-pixel-5.15
gcip: image header use unsigned fields edgetpu: retry and sleep until block down Bug: 257888003 gcip: init ignore_seq_order of KCI Signed-off-by: Zuma copybara merger <zuma-automerger@google.com> GitOrigin-RevId: 56fe1a0260c5429fc6b865b5055c4b97ee584afc Change-Id: I4dc0a1f57ab1759cd3160ec38c8b540d249dcc02
-rw-r--r--drivers/edgetpu/gcip-kernel-driver/drivers/gcip/gcip-kci.c1
-rw-r--r--drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h28
-rw-r--r--drivers/edgetpu/mobile-pm.c17
3 files changed, 31 insertions, 15 deletions
diff --git a/drivers/edgetpu/gcip-kernel-driver/drivers/gcip/gcip-kci.c b/drivers/edgetpu/gcip-kernel-driver/drivers/gcip/gcip-kci.c
index e11d2a1..15b2c53 100644
--- a/drivers/edgetpu/gcip-kernel-driver/drivers/gcip/gcip-kci.c
+++ b/drivers/edgetpu/gcip-kernel-driver/drivers/gcip/gcip-kci.c
@@ -477,6 +477,7 @@ int gcip_kci_init(struct gcip_kci *kci, const struct gcip_kci_args *args)
mailbox_args.timeout = args->timeout;
mailbox_args.ops = &gcip_mailbox_ops;
mailbox_args.data = kci;
+ mailbox_args.ignore_seq_order = false;
ret = gcip_mailbox_init(&kci->mailbox, &mailbox_args);
if (ret)
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
index d376be1..d986fbc 100644
--- 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
@@ -8,35 +8,37 @@
#ifndef __GCIP_COMMON_IMAGE_HEADER_H__
#define __GCIP_COMMON_IMAGE_HEADER_H__
+#include <linux/types.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];
+ uint32_t magic;
+ uint32_t generation;
+ uint32_t rollback_info;
+ uint32_t length;
+ uint8_t flags[16];
};
struct gcip_common_image_sub_header_gen1 {
- char body_hash[32];
- char chip_id[32];
- char auth_config[256];
+ uint8_t body_hash[32];
+ uint8_t chip_id[32];
+ uint8_t 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];
+ uint8_t body_hash[64];
+ uint8_t chip_id[32];
+ uint8_t auth_config[256];
struct gcip_image_config image_config;
};
struct gcip_common_image_header {
- char sig[512];
- char pub[512];
+ uint8_t sig[512];
+ uint8_t pub[512];
struct {
struct gcip_common_image_sub_header_common common;
union {
diff --git a/drivers/edgetpu/mobile-pm.c b/drivers/edgetpu/mobile-pm.c
index 8ad78e8..9a6a21e 100644
--- a/drivers/edgetpu/mobile-pm.c
+++ b/drivers/edgetpu/mobile-pm.c
@@ -24,6 +24,10 @@
#include "edgetpu-pm.c"
#include "edgetpu-soc.h"
+#define BLOCK_DOWN_RETRY_TIMES 50
+#define BLOCK_DOWN_MIN_DELAY_US 1000
+#define BLOCK_DOWN_MAX_DELAY_US 1500
+
enum edgetpu_pwr_state edgetpu_active_states[EDGETPU_NUM_STATES] = {
TPU_ACTIVE_UUD,
TPU_ACTIVE_SUD,
@@ -188,8 +192,17 @@ static int mobile_power_up(struct edgetpu_pm *etpm)
struct edgetpu_mobile_platform_pwr *platform_pwr = &etmdev->platform_pwr;
int ret;
- if (platform_pwr->is_block_down && !platform_pwr->is_block_down(etdev))
- return -EAGAIN;
+ if (platform_pwr->is_block_down) {
+ int times = 0;
+
+ do {
+ if (platform_pwr->is_block_down(etdev))
+ break;
+ usleep_range(BLOCK_DOWN_MIN_DELAY_US, BLOCK_DOWN_MAX_DELAY_US);
+ } while (++times < BLOCK_DOWN_RETRY_TIMES);
+ if (times >= BLOCK_DOWN_RETRY_TIMES && !platform_pwr->is_block_down(etdev))
+ return -EAGAIN;
+ }
etdev_info(etpm->etdev, "Powering up\n");