Skip to content

Commit 5449037

Browse files
quic-bjorandeandersson
authored andcommitted
ufs: Extract provisioning from firehose_run()
firehose_run() is clearly sequential, except if UFS provisioning is taken place, then it's a completely different sequence and an early return - almost like it's two separate functions crammed into one. Split firehose_provision() from firehose_run() and make the decision in qdl.c instead. Signed-off-by: Bjorn Andersson <[email protected]>
1 parent 2580547 commit 5449037

File tree

3 files changed

+32
-18
lines changed

3 files changed

+32
-18
lines changed

firehose.c

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -932,6 +932,30 @@ static int firehose_reset(struct qdl_device *qdl)
932932
return ret == FIREHOSE_ACK ? 0 : -1;
933933
}
934934

935+
int firehose_provision(struct qdl_device *qdl)
936+
{
937+
int ret;
938+
939+
firehose_read(qdl, 5000, firehose_generic_parser, NULL);
940+
941+
ret = firehose_configure(qdl, true, "ufs");
942+
if (ret)
943+
return ret;
944+
945+
ret = ufs_provisioning_execute(qdl, firehose_apply_ufs_common,
946+
firehose_apply_ufs_body,
947+
firehose_apply_ufs_epilogue);
948+
if (!ret)
949+
ux_info("UFS provisioning succeeded\n");
950+
else
951+
ux_info("UFS provisioning failed\n");
952+
953+
firehose_reset(qdl);
954+
955+
return ret;
956+
957+
}
958+
935959
int firehose_run(struct qdl_device *qdl, const char *storage)
936960
{
937961
bool multiple;
@@ -942,23 +966,6 @@ int firehose_run(struct qdl_device *qdl, const char *storage)
942966

943967
firehose_read(qdl, 5000, firehose_generic_parser, NULL);
944968

945-
if (ufs_need_provisioning()) {
946-
ret = firehose_configure(qdl, true, storage);
947-
if (ret)
948-
return ret;
949-
ret = ufs_provisioning_execute(qdl, firehose_apply_ufs_common,
950-
firehose_apply_ufs_body,
951-
firehose_apply_ufs_epilogue);
952-
if (!ret)
953-
ux_info("UFS provisioning succeeded\n");
954-
else
955-
ux_info("UFS provisioning failed\n");
956-
957-
firehose_reset(qdl);
958-
959-
return ret;
960-
}
961-
962969
ret = firehose_configure(qdl, false, storage);
963970
if (ret)
964971
return ret;

qdl.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ int main(int argc, char **argv)
267267
errx(1, "read_op_load %s failed", argv[optind]);
268268
break;
269269
case QDL_FILE_UFS:
270+
if (strcmp(storage, "ufs"))
271+
errx(1, "attempting to load provisioning config when storage isn't \"ufs\"");
272+
270273
ret = ufs_load(argv[optind], qdl_finalize_provisioning);
271274
if (ret < 0)
272275
errx(1, "ufs_load %s failed", argv[optind]);
@@ -302,7 +305,10 @@ int main(int argc, char **argv)
302305
if (ret < 0)
303306
goto out_cleanup;
304307

305-
ret = firehose_run(qdl, storage);
308+
if (ufs_need_provisioning())
309+
ret = firehose_provision(qdl);
310+
else
311+
ret = firehose_run(qdl, storage);
306312
if (ret < 0)
307313
goto out_cleanup;
308314

qdl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ struct qdl_device *usb_init(void);
6969
struct qdl_device *sim_init(void);
7070

7171
int firehose_run(struct qdl_device *qdl, const char *storage);
72+
int firehose_provision(struct qdl_device *qdl);
7273
int firehose_read_buf(struct qdl_device *qdl, struct read_op *read_op, void *out_buf, size_t out_size);
7374
int sahara_run(struct qdl_device *qdl, char *img_arr[], bool single_image,
7475
const char *ramdump_path, const char *ramdump_filter);

0 commit comments

Comments
 (0)