/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later */
/*
 * Copyright 2008 - 2015 Freescale Semiconductor Inc.
 */

#ifndef __FM_MURAM_EXT
#define __FM_MURAM_EXT

#include <linux/types.h>

#define FM_MURAM_INVALID_ALLOCATION	-1

/* Structure for FM MURAM information */
struct muram_info;

struct muram_info *fman_muram_init(phys_addr_t base, size_t size);

unsigned long fman_muram_offset_to_vbase(struct muram_info *muram,
					 unsigned long offset);

unsigned long fman_muram_alloc(struct muram_info *muram, size_t size);

void fman_muram_free_mem(struct muram_info *muram, unsigned long offset,
			 size_t size);

#endif /* __FM_MURAM_EXT */