// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
/*
 * Copyright (C) 2019, STMicroelectronics - All Rights Reserved
 */
#include <common.h>
#include <dfu.h>
#include <errno.h>
#include <malloc.h>

int __weak dfu_write_medium_virt(struct dfu_entity *dfu, u64 offset,
				 void *buf, long *len)
{
	debug("%s: off=0x%llx, len=0x%x\n", __func__, offset, (u32)*len);

	return 0;
}

int __weak dfu_get_medium_size_virt(struct dfu_entity *dfu, u64 *size)
{
	*size = 0;

	return 0;
}

int __weak dfu_read_medium_virt(struct dfu_entity *dfu, u64 offset,
				void *buf, long *len)
{
	debug("%s: off=0x%llx, len=0x%x\n", __func__, offset, (u32)*len);
	*len = 0;

	return 0;
}

int dfu_fill_entity_virt(struct dfu_entity *dfu, char *devstr, char *s)
{
	debug("%s: devstr = %s\n", __func__, devstr);

	dfu->dev_type = DFU_DEV_VIRT;
	dfu->layout = DFU_RAW_ADDR;
	dfu->data.virt.dev_num = simple_strtoul(devstr, NULL, 10);

	dfu->write_medium = dfu_write_medium_virt;
	dfu->get_medium_size = dfu_get_medium_size_virt;
	dfu->read_medium = dfu_read_medium_virt;

	dfu->inited = 0;

	return 0;
}
