/*
 *
 * Copyright (C) 2012-2019, Samsung Electronics Co., Ltd.
 *
 * Macros and structure to map physical memory, header file
 */

#ifndef __SECMAP_H__
#define __SECMAP_H__

#include <stdint.h>
#include <stdio.h>
#include "base.h"
#include "device.h"


/**
* Get virtual mapped address for secure device
* @dev_id  : Device identifier
*
* @return : Virtual address as void*
*/
void *get_dev_addr(devicenum_t dev_id);

/**
 * Map secure device to physical base address without Device identifier
 * @phyaddr : Mapping physical address
 * @size    : SFR region size
 *
 * @return : Virtual address as void* on success, NULL if error
 */
 void *sec_map_no_devid(unsigned long phyaddr, size_t size);

/**
 * Map secure device to physical base address
 * @dev_id  : Device identifier
 * @phyaddr : Mapping physical address
 * @size    : SFR region size
 *
 * @return : 0 on success, -1 if error
 */
int sec_map(devicenum_t dev_id, unsigned long phyaddr, size_t size);

/**
 * Secure virtual address unmapping
 * @virtaddr : Unmapping virtual address
 *
 * @return : 0 on success, -1 if error
 */
int sec_unmap(void *virtaddr);

/**
 * Release all secure address mappings
 *
 * @return : None
 */
void sec_release(void);

#endif /* __SECMAP_H__ */
