/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Support for Intel Camera Imaging ISP subsystem.
 * Copyright (c) 2010 - 2015, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 */

#ifndef _IA_CSS_RMGR_H
#define _IA_CSS_RMGR_H

#include <ia_css_err.h>

#ifndef __INLINE_RMGR__
#define STORAGE_CLASS_RMGR_H extern
#define STORAGE_CLASS_RMGR_C
#else				/* __INLINE_RMGR__ */
#define STORAGE_CLASS_RMGR_H static inline
#define STORAGE_CLASS_RMGR_C static inline
#endif				/* __INLINE_RMGR__ */

/**
 * @brief Initialize resource manager (host/common)
 */
int ia_css_rmgr_init(void);

/**
 * @brief Uninitialize resource manager (host/common)
 */
void ia_css_rmgr_uninit(void);

/*****************************************************************
 * Interface definition - resource type (host/common)
 *****************************************************************
 *
 * struct ia_css_rmgr_<type>_pool;
 * struct ia_css_rmgr_<type>_handle;
 *
 * STORAGE_CLASS_RMGR_H void ia_css_rmgr_init_<type>(
 *	struct ia_css_rmgr_<type>_pool *pool);
 *
 * STORAGE_CLASS_RMGR_H void ia_css_rmgr_uninit_<type>(
 *	struct ia_css_rmgr_<type>_pool *pool);
 *
 * STORAGE_CLASS_RMGR_H void ia_css_rmgr_acq_<type>(
 *	struct ia_css_rmgr_<type>_pool *pool,
 *	struct ia_css_rmgr_<type>_handle **handle);
 *
 * STORAGE_CLASS_RMGR_H void ia_css_rmgr_rel_<type>(
 *	struct ia_css_rmgr_<type>_pool *pool,
 *	struct ia_css_rmgr_<type>_handle **handle);
 *
 *****************************************************************
 * Interface definition - refcounting (host/common)
 *****************************************************************
 *
 * void ia_css_rmgr_refcount_retain_<type>(
 *	struct ia_css_rmgr_<type>_handle **handle);
 *
 * void ia_css_rmgr_refcount_release_<type>(
 *	struct ia_css_rmgr_<type>_handle **handle);
 */

#include "ia_css_rmgr_vbuf.h"

#endif	/* _IA_CSS_RMGR_H */
