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