xref: /dpdk/drivers/bus/fslmc/mc/fsl_dpbp.h (revision c9da6cfa1cd7713d8fc11c0f93bd48f03152a977)
1131a75b6SHemant Agrawal /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
27ee46864SHemant Agrawal  *
37ee46864SHemant Agrawal  * Copyright 2013-2016 Freescale Semiconductor Inc.
4131a75b6SHemant Agrawal  * Copyright 2016-2017 NXP
57ee46864SHemant Agrawal  *
67ee46864SHemant Agrawal  */
77ee46864SHemant Agrawal #ifndef __FSL_DPBP_H
87ee46864SHemant Agrawal #define __FSL_DPBP_H
97ee46864SHemant Agrawal 
10*c9da6cfaSHemant Agrawal #include <rte_compat.h>
11*c9da6cfaSHemant Agrawal 
1216bbc98aSShreyansh Jain /*
1316bbc98aSShreyansh Jain  * Data Path Buffer Pool API
147ee46864SHemant Agrawal  * Contains initialization APIs and runtime control APIs for DPBP
157ee46864SHemant Agrawal  */
167ee46864SHemant Agrawal 
177ee46864SHemant Agrawal struct fsl_mc_io;
187ee46864SHemant Agrawal 
19*c9da6cfaSHemant Agrawal __rte_internal
207ee46864SHemant Agrawal int dpbp_open(struct fsl_mc_io *mc_io,
217ee46864SHemant Agrawal 	      uint32_t cmd_flags,
227ee46864SHemant Agrawal 	      int dpbp_id,
237ee46864SHemant Agrawal 	      uint16_t *token);
247ee46864SHemant Agrawal 
257ee46864SHemant Agrawal int dpbp_close(struct fsl_mc_io *mc_io,
267ee46864SHemant Agrawal 	       uint32_t cmd_flags,
277ee46864SHemant Agrawal 	       uint16_t token);
287ee46864SHemant Agrawal 
297ee46864SHemant Agrawal /**
307ee46864SHemant Agrawal  * struct dpbp_cfg - Structure representing DPBP configuration
317ee46864SHemant Agrawal  * @options:	place holder
327ee46864SHemant Agrawal  */
337ee46864SHemant Agrawal struct dpbp_cfg {
347ee46864SHemant Agrawal 	uint32_t options;
357ee46864SHemant Agrawal };
367ee46864SHemant Agrawal 
377ee46864SHemant Agrawal int dpbp_create(struct fsl_mc_io *mc_io,
387ee46864SHemant Agrawal 		uint16_t dprc_token,
397ee46864SHemant Agrawal 		uint32_t cmd_flags,
407ee46864SHemant Agrawal 		const struct dpbp_cfg *cfg,
417ee46864SHemant Agrawal 		uint32_t *obj_id);
427ee46864SHemant Agrawal 
437ee46864SHemant Agrawal int dpbp_destroy(struct fsl_mc_io *mc_io,
447ee46864SHemant Agrawal 		 uint16_t dprc_token,
457ee46864SHemant Agrawal 		 uint32_t cmd_flags,
4616bbc98aSShreyansh Jain 		 uint32_t obj_id);
477ee46864SHemant Agrawal 
48*c9da6cfaSHemant Agrawal __rte_internal
497ee46864SHemant Agrawal int dpbp_enable(struct fsl_mc_io *mc_io,
507ee46864SHemant Agrawal 		uint32_t cmd_flags,
517ee46864SHemant Agrawal 		uint16_t token);
527ee46864SHemant Agrawal 
53*c9da6cfaSHemant Agrawal __rte_internal
547ee46864SHemant Agrawal int dpbp_disable(struct fsl_mc_io *mc_io,
557ee46864SHemant Agrawal 		 uint32_t cmd_flags,
567ee46864SHemant Agrawal 		 uint16_t token);
577ee46864SHemant Agrawal 
587ee46864SHemant Agrawal int dpbp_is_enabled(struct fsl_mc_io *mc_io,
597ee46864SHemant Agrawal 		    uint32_t cmd_flags,
607ee46864SHemant Agrawal 		    uint16_t token,
617ee46864SHemant Agrawal 		    int *en);
627ee46864SHemant Agrawal 
63*c9da6cfaSHemant Agrawal __rte_internal
647ee46864SHemant Agrawal int dpbp_reset(struct fsl_mc_io *mc_io,
657ee46864SHemant Agrawal 	       uint32_t cmd_flags,
667ee46864SHemant Agrawal 	       uint16_t token);
677ee46864SHemant Agrawal 
687ee46864SHemant Agrawal /**
697ee46864SHemant Agrawal  * struct dpbp_attr - Structure representing DPBP attributes
707ee46864SHemant Agrawal  * @id:		DPBP object ID
717ee46864SHemant Agrawal  * @bpid:	Hardware buffer pool ID; should be used as an argument in
727ee46864SHemant Agrawal  *		acquire/release operations on buffers
737ee46864SHemant Agrawal  */
747ee46864SHemant Agrawal struct dpbp_attr {
757ee46864SHemant Agrawal 	int id;
767ee46864SHemant Agrawal 	uint16_t bpid;
777ee46864SHemant Agrawal };
787ee46864SHemant Agrawal 
79*c9da6cfaSHemant Agrawal __rte_internal
807ee46864SHemant Agrawal int dpbp_get_attributes(struct fsl_mc_io *mc_io,
817ee46864SHemant Agrawal 			uint32_t cmd_flags,
827ee46864SHemant Agrawal 			uint16_t token,
837ee46864SHemant Agrawal 			struct dpbp_attr *attr);
847ee46864SHemant Agrawal 
857ee46864SHemant Agrawal /**
8616bbc98aSShreyansh Jain  *  DPBP notifications options
8716bbc98aSShreyansh Jain  */
8816bbc98aSShreyansh Jain 
8916bbc98aSShreyansh Jain /**
9016bbc98aSShreyansh Jain  * BPSCN write will attempt to allocate into a cache (coherent write)
917ee46864SHemant Agrawal  */
92b4a63e60SHemant Agrawal #define DPBP_NOTIF_OPT_COHERENT_WRITE	0x00000001
937ee46864SHemant Agrawal int dpbp_get_api_version(struct fsl_mc_io *mc_io,
947ee46864SHemant Agrawal 			 uint32_t cmd_flags,
957ee46864SHemant Agrawal 			 uint16_t *major_ver,
967ee46864SHemant Agrawal 			 uint16_t *minor_ver);
977ee46864SHemant Agrawal 
98*c9da6cfaSHemant Agrawal __rte_internal
997ee46864SHemant Agrawal int dpbp_get_num_free_bufs(struct fsl_mc_io *mc_io,
1007ee46864SHemant Agrawal 			   uint32_t cmd_flags,
1017ee46864SHemant Agrawal 			   uint16_t token,
1027ee46864SHemant Agrawal 			   uint32_t *num_free_bufs);
1037ee46864SHemant Agrawal 
1047ee46864SHemant Agrawal #endif /* __FSL_DPBP_H */
105