@@ -32,6 +32,44 @@ void fastboot_okay(const char *s)
strncat(response_str, s, RESPONSE_LEN - 4 - 1);
}
+void fb_mmc_get_ptn_size(const char *cmd, char *response)
+{
+ int ret;
+ block_dev_desc_t *dev_desc;
+ disk_partition_t info;
+ u32 sz_mb;
+ u64 sz = 0;
+ char buf[RESPONSE_LEN];
+
+ /* initialize the response buffer */
+ response_str = response;
+
+ dev_desc = get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV);
+ if (!dev_desc || dev_desc->type == DEV_TYPE_UNKNOWN) {
+ error("invalid mmc device");
+ fastboot_fail("invalid mmc device");
+ return;
+ }
+
+ ret = get_partition_info_efi_by_name(dev_desc, cmd, &info);
+ if (ret) {
+ error("cannot find partition: '%s'", cmd);
+ fastboot_fail("cannot find partition");
+ return;
+ }
+
+ sz = (info.size * (u64)info.blksz) >> 10;
+
+ if (sz >= 0xFFFFFFFF) {
+ sz_mb = (u32)(sz >> 10);
+ sprintf(buf, "0x%d MB", sz_mb);
+ fastboot_okay(buf);
+ } else {
+ sprintf(buf, "%d KB", (u32)sz);
+ fastboot_okay(buf);
+ }
+}
+
static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
const char *part_name, void *buffer,
unsigned int download_bytes)
@@ -363,6 +363,8 @@ static void cb_getvar(struct usb_ep *ep, struct usb_request *req)
strncat(response, s, chars_left);
else
strcpy(response, "FAILValue not set");
+ } else if (!strcmp_l1("userdata_size", cmd)) {
+ fb_mmc_get_ptn_size("userdata", response);
} else {
error("unknown variable: %s\n", cmd);
strcpy(response, "FAILVariable not implemented");
@@ -4,5 +4,7 @@
* SPDX-License-Identifier: GPL-2.0+
*/
+void fb_mmc_get_ptn_size(const char *cmd, char *response);
+
void fb_mmc_flash_write(const char *cmd, void *download_buffer,
unsigned int download_bytes, char *response);
This patch adds functionality to getvar command to get the userdata partition size. Signed-off-by: Dileep Katta <dileep.katta@linaro.org> --- common/fb_mmc.c | 38 ++++++++++++++++++++++++++++++++++++++ drivers/usb/gadget/f_fastboot.c | 2 ++ include/fb_mmc.h | 2 ++ 3 files changed, 42 insertions(+)