1 /*
2  * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <media/volume/index/volume_index.h>
8 #include <media/volume/base_io_dev/base_io_dev.h>
9 #include "disk_formatter.h"
10 
disk_formatter_clone(uintptr_t dev_handle,uintptr_t io_spec,const uint8_t * source_image,size_t source_image_size)11 int disk_formatter_clone(
12 	uintptr_t dev_handle,
13 	uintptr_t io_spec,
14 	const uint8_t *source_image,
15 	size_t source_image_size)
16 {
17 	uintptr_t volume_handle;
18 	int result;
19 
20 	result = io_open(dev_handle, io_spec, &volume_handle);
21 	if (result != 0)
22 		return result;
23 
24 	result = io_seek(volume_handle, IO_SEEK_SET, 0);
25 
26 	if (result == 0) {
27 
28 		size_t length_written = 0;
29 
30 		result = io_write(volume_handle,
31 			(const uintptr_t)source_image,
32 			source_image_size,
33 			&length_written);
34 	}
35 
36 	io_close(volume_handle);
37 	return result;
38 }