diff options
author | Matt Stokes <matthewbstokes@google.com> | 2023-07-17 22:51:43 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2023-07-17 22:51:43 +0000 |
commit | c75d39842674648437c9c8af92bf7b9854b6040b (patch) | |
tree | 0bac85d0f8818ddf3cacdf93ad3f15841226971e | |
parent | 87249d2e3762a2e156dba89aa5b25b90b53781f3 (diff) | |
download | drivers-android-exynos-r11-4.19-android13-wear-kr3-qpr3-dr.tar.gz |
Revert "sensor/nanohub: Add offset to download_firmware"android-wear-13.0.0_r0.2android-exynos-r11-4.19-android13-wear-kr3-qpr3-dr
This reverts commit 87249d2e3762a2e156dba89aa5b25b90b53781f3.
Reason for revert: Landed on wrong repo + branch
Change-Id: Id85937f2de4a1755c0b240560ea55f07141e55a4
-rw-r--r-- | sensorhub/nanohub/bl_nxp.c | 36 | ||||
-rw-r--r-- | sensorhub/nanohub/bl_nxp.h | 3 | ||||
-rw-r--r-- | sensorhub/nanohub/main.c | 26 | ||||
-rw-r--r-- | sensorhub/nanohub/main.h | 1 |
4 files changed, 16 insertions, 50 deletions
diff --git a/sensorhub/nanohub/bl_nxp.c b/sensorhub/nanohub/bl_nxp.c index de4c94a..b6433d2 100644 --- a/sensorhub/nanohub/bl_nxp.c +++ b/sensorhub/nanohub/bl_nxp.c @@ -151,39 +151,29 @@ int nanohub_bl_execute(struct nanohub_data *data, uint32_t prgm_counter, int nanohub_bl_download_firmware(struct nanohub_data *data, const uint8_t *buffer, uint32_t size) { - - uint32_t firmware_size = size; - uint32_t firmware_offset = 0; - - // Handle signed firmware + const uint32_t kSpOffset = 0; + const uint32_t kPcOffset = 1; + const uint32_t kLoadOffset = 13; const uint32_t kSignedOffset = 0x1000; const uint32_t kMagicOffset = 0x400; const uint8_t kMagic[] = { 'C', 'H', 'R', 'E' }; - if (firmware_size > kSignedOffset && + uint32_t *firmware; + uint32_t ram_addr, stack_ptr, prgm_counter; + int ret = 0; + + // Handle signed firmware + if (size > kSignedOffset && memcmp(buffer + kMagicOffset, kMagic, sizeof(kMagic)) == 0) { - firmware_offset = kSignedOffset; - firmware_size -= kSignedOffset; + buffer += kSignedOffset; + size -= kSignedOffset; } - if (firmware_size < 64) { + if (size < 64) { pr_err("nanohub: %s invalid size\n", __func__); return -ETOOSMALL; } - return nanohub_bl_download_firmware_buffer( - data, buffer + firmware_offset, firmware_size); -} - -int nanohub_bl_download_firmware_buffer(struct nanohub_data *data, - const uint8_t *buffer, - uint32_t size) { - const uint32_t kSpOffset = 0; - const uint32_t kPcOffset = 1; - const uint32_t kLoadOffset = 13; - uint32_t ram_addr, stack_ptr, prgm_counter; - uint32_t *firmware = (uint32_t *)buffer; - int ret = 0; - + firmware = (uint32_t *)buffer; ram_addr = firmware[kLoadOffset]; stack_ptr = firmware[kSpOffset]; prgm_counter = firmware[kPcOffset]; diff --git a/sensorhub/nanohub/bl_nxp.h b/sensorhub/nanohub/bl_nxp.h index 0ecc04c..35b733c 100644 --- a/sensorhub/nanohub/bl_nxp.h +++ b/sensorhub/nanohub/bl_nxp.h @@ -46,9 +46,6 @@ int nanohub_bl_execute(struct nanohub_data *data, uint32_t prgm_counter, int nanohub_bl_download_firmware(struct nanohub_data *, const uint8_t *firmware, uint32_t size); -int nanohub_bl_download_firmware_buffer(struct nanohub_data *, - const uint8_t *firmware, - uint32_t size); #define BL_COMMAND_WRITE_MEMORY 0x04 #define BL_COMMAND_EXECUTE 0x09 diff --git a/sensorhub/nanohub/main.c b/sensorhub/nanohub/main.c index 5db07bd..94d28b6 100644 --- a/sensorhub/nanohub/main.c +++ b/sensorhub/nanohub/main.c @@ -972,8 +972,7 @@ static ssize_t nanohub_download_firmware_request(struct device *dev, struct nanohub_data *data = dev_get_drvdata(dev); struct firmware_request *fw_request = &data->firmware_request; char *fw_name = fw_request->fw_name; - uint32_t* fw_image_offset = &fw_request->fw_image_offset; - int i, ret; + int ret; if (atomic_cmpxchg(&fw_request->state, FW_IDLE, FW_PENDING) != FW_IDLE) { @@ -992,17 +991,6 @@ static ssize_t nanohub_download_firmware_request(struct device *dev, fw_name[count - 1] = 0; fw_name[count] = 0; - // Parse firmware name then firmware image offset which are expected - // to be separated by a space. Offset is optional. - *fw_image_offset = 0; - for (i = 0; i < strlen(fw_name); i++) { - if (fw_name[i] == ' ') { - ret = kstrtou32(fw_name + i + 1, 10, fw_image_offset); - fw_name[i] = 0; - break; - } - } - atomic_set(&fw_request->state, FW_REQUESTED); nanohub_notify_thread(data); wait_for_completion(&fw_request->fw_complete); @@ -1025,8 +1013,6 @@ static void nanohub_download_firmware(struct device *dev) int ret; pr_info("nanohub: firmware download: %s\n", fw_request->fw_name); - pr_info("nanohub: firmware image offset: %lu\n", - fw_request->fw_image_offset); atomic_set(&fw_request->state, FW_IN_PROGRESS); ret = request_firmware(&fw_entry, fw_request->fw_name, dev); @@ -1043,14 +1029,8 @@ static void nanohub_download_firmware(struct device *dev) __nanohub_hw_reset(data, -1); - if (fw_request->fw_image_offset != 0) { - ret = nanohub_bl_download_firmware_buffer( - data, fw_entry->data + fw_request->fw_image_offset, - fw_entry->size - fw_request->fw_image_offset); - } else { - ret = nanohub_bl_download_firmware(data, fw_entry->data, - fw_entry->size); - } + ret = nanohub_bl_download_firmware(data, fw_entry->data, + fw_entry->size); mcu_wakeup_gpio_set_value(data, 1); if (data->irq1) diff --git a/sensorhub/nanohub/main.h b/sensorhub/nanohub/main.h index 6470e28..aef303e 100644 --- a/sensorhub/nanohub/main.h +++ b/sensorhub/nanohub/main.h @@ -64,7 +64,6 @@ enum fw_state { #define FW_NAME_SIZE 64 struct firmware_request { char fw_name[FW_NAME_SIZE]; - uint32_t fw_image_offset; atomic_t state; int result; struct completion fw_complete; |