xref: /openbmc/linux/drivers/net/ethernet/intel/i40e/i40e_alloc.h (revision 86aa961bb4619a68077ebeba21c52e9ba0eab43d)
1ae06c70bSJeff Kirsher /* SPDX-License-Identifier: GPL-2.0 */
251dce24bSJeff Kirsher /* Copyright(c) 2013 - 2018 Intel Corporation. */
356a62fc8SJesse Brandeburg 
456a62fc8SJesse Brandeburg #ifndef _I40E_ALLOC_H_
556a62fc8SJesse Brandeburg #define _I40E_ALLOC_H_
656a62fc8SJesse Brandeburg 
7*2ee5326dSIvan Vecera #include <linux/types.h>
8*2ee5326dSIvan Vecera 
956a62fc8SJesse Brandeburg struct i40e_hw;
1056a62fc8SJesse Brandeburg 
11*2ee5326dSIvan Vecera /* memory allocation tracking */
12*2ee5326dSIvan Vecera struct i40e_dma_mem {
13*2ee5326dSIvan Vecera 	void *va;
14*2ee5326dSIvan Vecera 	dma_addr_t pa;
15*2ee5326dSIvan Vecera 	u32 size;
16*2ee5326dSIvan Vecera };
17*2ee5326dSIvan Vecera 
18*2ee5326dSIvan Vecera struct i40e_virt_mem {
19*2ee5326dSIvan Vecera 	void *va;
20*2ee5326dSIvan Vecera 	u32 size;
21*2ee5326dSIvan Vecera };
22*2ee5326dSIvan Vecera 
2356a62fc8SJesse Brandeburg /* prototype for functions used for dynamic memory allocation */
245180ff13SJan Sokolowski int i40e_allocate_dma_mem(struct i40e_hw *hw,
2556a62fc8SJesse Brandeburg 			  struct i40e_dma_mem *mem,
2656a62fc8SJesse Brandeburg 			  u64 size, u32 alignment);
275180ff13SJan Sokolowski int i40e_free_dma_mem(struct i40e_hw *hw,
2856a62fc8SJesse Brandeburg 		      struct i40e_dma_mem *mem);
295180ff13SJan Sokolowski int i40e_allocate_virt_mem(struct i40e_hw *hw,
3056a62fc8SJesse Brandeburg 			   struct i40e_virt_mem *mem,
3156a62fc8SJesse Brandeburg 			   u32 size);
325180ff13SJan Sokolowski int i40e_free_virt_mem(struct i40e_hw *hw,
3356a62fc8SJesse Brandeburg 		       struct i40e_virt_mem *mem);
3456a62fc8SJesse Brandeburg 
3556a62fc8SJesse Brandeburg #endif /* _I40E_ALLOC_H_ */
36