19d26e4fcSRobert Mustacchi /******************************************************************************
29d26e4fcSRobert Mustacchi 
3*df36e06dSRobert Mustacchi   Copyright (c) 2013-2018, Intel Corporation
49d26e4fcSRobert Mustacchi   All rights reserved.
59d26e4fcSRobert Mustacchi 
69d26e4fcSRobert Mustacchi   Redistribution and use in source and binary forms, with or without
79d26e4fcSRobert Mustacchi   modification, are permitted provided that the following conditions are met:
89d26e4fcSRobert Mustacchi 
99d26e4fcSRobert Mustacchi    1. Redistributions of source code must retain the above copyright notice,
109d26e4fcSRobert Mustacchi       this list of conditions and the following disclaimer.
119d26e4fcSRobert Mustacchi 
129d26e4fcSRobert Mustacchi    2. Redistributions in binary form must reproduce the above copyright
139d26e4fcSRobert Mustacchi       notice, this list of conditions and the following disclaimer in the
149d26e4fcSRobert Mustacchi       documentation and/or other materials provided with the distribution.
159d26e4fcSRobert Mustacchi 
169d26e4fcSRobert Mustacchi    3. Neither the name of the Intel Corporation nor the names of its
179d26e4fcSRobert Mustacchi       contributors may be used to endorse or promote products derived from
189d26e4fcSRobert Mustacchi       this software without specific prior written permission.
199d26e4fcSRobert Mustacchi 
209d26e4fcSRobert Mustacchi   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
219d26e4fcSRobert Mustacchi   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
229d26e4fcSRobert Mustacchi   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
239d26e4fcSRobert Mustacchi   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
249d26e4fcSRobert Mustacchi   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
259d26e4fcSRobert Mustacchi   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
269d26e4fcSRobert Mustacchi   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
279d26e4fcSRobert Mustacchi   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
289d26e4fcSRobert Mustacchi   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
299d26e4fcSRobert Mustacchi   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
309d26e4fcSRobert Mustacchi   POSSIBILITY OF SUCH DAMAGE.
319d26e4fcSRobert Mustacchi 
329d26e4fcSRobert Mustacchi ******************************************************************************/
333d75a287SRobert Mustacchi /*$FreeBSD$*/
349d26e4fcSRobert Mustacchi 
359d26e4fcSRobert Mustacchi #ifndef _I40E_ALLOC_H_
369d26e4fcSRobert Mustacchi #define _I40E_ALLOC_H_
379d26e4fcSRobert Mustacchi 
389d26e4fcSRobert Mustacchi struct i40e_hw;
399d26e4fcSRobert Mustacchi 
409d26e4fcSRobert Mustacchi /* Memory allocation types */
419d26e4fcSRobert Mustacchi enum i40e_memory_type {
429d26e4fcSRobert Mustacchi 	i40e_mem_arq_buf = 0,		/* ARQ indirect command buffer */
439d26e4fcSRobert Mustacchi 	i40e_mem_asq_buf = 1,
449d26e4fcSRobert Mustacchi 	i40e_mem_atq_buf = 2,		/* ATQ indirect command buffer */
459d26e4fcSRobert Mustacchi 	i40e_mem_arq_ring = 3,		/* ARQ descriptor ring */
469d26e4fcSRobert Mustacchi 	i40e_mem_atq_ring = 4,		/* ATQ descriptor ring */
479d26e4fcSRobert Mustacchi 	i40e_mem_pd = 5,		/* Page Descriptor */
489d26e4fcSRobert Mustacchi 	i40e_mem_bp = 6,		/* Backing Page - 4KB */
499d26e4fcSRobert Mustacchi 	i40e_mem_bp_jumbo = 7,		/* Backing Page - > 4KB */
509d26e4fcSRobert Mustacchi 	i40e_mem_reserved
519d26e4fcSRobert Mustacchi };
529d26e4fcSRobert Mustacchi 
539d26e4fcSRobert Mustacchi /* prototype for functions used for dynamic memory allocation */
549d26e4fcSRobert Mustacchi enum i40e_status_code i40e_allocate_dma_mem(struct i40e_hw *hw,
559d26e4fcSRobert Mustacchi 					    struct i40e_dma_mem *mem,
569d26e4fcSRobert Mustacchi 					    enum i40e_memory_type type,
579d26e4fcSRobert Mustacchi 					    u64 size, u32 alignment);
589d26e4fcSRobert Mustacchi enum i40e_status_code i40e_free_dma_mem(struct i40e_hw *hw,
599d26e4fcSRobert Mustacchi 					struct i40e_dma_mem *mem);
609d26e4fcSRobert Mustacchi enum i40e_status_code i40e_allocate_virt_mem(struct i40e_hw *hw,
619d26e4fcSRobert Mustacchi 					     struct i40e_virt_mem *mem,
629d26e4fcSRobert Mustacchi 					     u32 size);
639d26e4fcSRobert Mustacchi enum i40e_status_code i40e_free_virt_mem(struct i40e_hw *hw,
649d26e4fcSRobert Mustacchi 					 struct i40e_virt_mem *mem);
659d26e4fcSRobert Mustacchi 
669d26e4fcSRobert Mustacchi #endif /* _I40E_ALLOC_H_ */
67