diff options
author | Zuma copybara merger <zuma-automerger@google.com> | 2022-11-16 01:09:00 +0000 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-11-17 01:51:23 -0800 |
commit | 97d729c6ea520f6e5be984c1ca7b0e6551d51011 (patch) | |
tree | 2972db77c8dcfa89a3c0ff2309bdce30b89256b9 | |
parent | c2334071f40666f1accb776b96600e79200c00f2 (diff) | |
download | rio-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.c | 1 | ||||
-rw-r--r-- | drivers/edgetpu/gcip-kernel-driver/include/gcip/gcip-common-image-header.h | 28 | ||||
-rw-r--r-- | drivers/edgetpu/mobile-pm.c | 17 |
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"); |