linux/drivers/net/ethernet/freescale/fman/fman_sp.h

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

#ifndef __FM_SP_H
#define __FM_SP_H

#include "fman.h"
#include <linux/types.h>

#define ILLEGAL_BASE

/* defaults */
#define DFLT_FM_SP_BUFFER_PREFIX_CONTEXT_DATA_ALIGN

/* Registers bit fields */
#define FMAN_SP_EXT_BUF_POOL_EN_COUNTER
#define FMAN_SP_EXT_BUF_POOL_VALID
#define FMAN_SP_EXT_BUF_POOL_BACKUP
#define FMAN_SP_DMA_ATTR_WRITE_OPTIMIZE
#define FMAN_SP_SG_DISABLE

/* shifts */
#define FMAN_SP_EXT_BUF_MARG_START_SHIFT
#define FMAN_SP_DMA_ATTR_SWP_SHIFT
#define FMAN_SP_IC_TO_EXT_SHIFT
#define FMAN_SP_IC_FROM_INT_SHIFT

/* structure for defining internal context copying */
struct fman_sp_int_context_data_copy {};

/*  struct for defining external buffer margins */
struct fman_sp_buf_margins {};

struct fman_sp_buffer_offsets {};

int fman_sp_build_buffer_struct(struct fman_sp_int_context_data_copy
				*int_context_data_copy,
				struct fman_buffer_prefix_content
				*buffer_prefix_content,
				struct fman_sp_buf_margins *buf_margins,
				struct fman_sp_buffer_offsets
				*buffer_offsets,
				u8 *internal_buf_offset);

void fman_sp_set_buf_pools_in_asc_order_of_buf_sizes(struct fman_ext_pools
						     *fm_ext_pools,
						     u8 *ordered_array,
						     u16 *sizes_array);

#endif	/* __FM_SP_H */