Skip to content

Commit

Permalink
arch/esp32s3_partition: Read data from SPI Flash
Browse files Browse the repository at this point in the history
at designated address (with decryption)
  • Loading branch information
nuttxs authored and anchao committed Jan 8, 2025
1 parent b3120e5 commit cb980cc
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions arch/xtensa/src/esp32s3/esp32s3_partition.c
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,54 @@ int esp32s3_partition_read(const char *label, size_t offset, void *buf,
return OK;
}

/****************************************************************************
* Name: esp32s3_partition_read_decrypt
*
* Description:
* Read data from SPI Flash at designated address (with decryption)
*
* Input Parameters:
* label - Partition label
* offset - Offset in SPI Flash
* buf - Data buffer pointer
* size - Data number
*
* Returned Value:
* 0 if success or a negative value if fail.
*
****************************************************************************/

int esp32s3_partition_read_decrypt(const char *label, size_t offset,
void *buf, size_t size)
{
int ret;
int partion_offset;
DEBUGASSERT(label != NULL && buf != NULL);
struct mtd_dev_s *mtd = esp32s3_spiflash_encrypt_mtd();
if (!mtd)
{
ferr("ERROR: Failed to get SPI flash MTD\n");
return -ENOSYS;
}

partion_offset = partition_get_offset(label, strlen(label));
if (partion_offset < 0)
{
ferr("ERROR: Failed to get partition: %s offset\n", label);
return partion_offset;
}

ret = MTD_READ(mtd, partion_offset + offset,
size, (uint8_t *)buf);
if (ret != size)
{
ferr("ERROR: Failed to get read data from MTD\n");
return -EIO;
}

return OK;
}

/****************************************************************************
* Name: esp32s3_partition_write
*
Expand Down

0 comments on commit cb980cc

Please sign in to comment.