summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Stokes <matthewbstokes@google.com>2023-07-17 22:51:43 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2023-07-17 22:51:43 +0000
commitc75d39842674648437c9c8af92bf7b9854b6040b (patch)
tree0bac85d0f8818ddf3cacdf93ad3f15841226971e
parent87249d2e3762a2e156dba89aa5b25b90b53781f3 (diff)
downloaddrivers-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.c36
-rw-r--r--sensorhub/nanohub/bl_nxp.h3
-rw-r--r--sensorhub/nanohub/main.c26
-rw-r--r--sensorhub/nanohub/main.h1
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;