common/cnxk: add SSO HWS interface
[dpdk.git] / drivers / common / cnxk / roc_sso.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #ifndef _ROC_SSO_H_
6 #define _ROC_SSO_H_
7
8 struct roc_sso {
9         struct plt_pci_device *pci_dev;
10         /* Public data. */
11         uint16_t max_hwgrp;
12         uint16_t max_hws;
13         uint16_t nb_hwgrp;
14         uint8_t nb_hws;
15         uintptr_t lmt_base;
16         /* HW Const. */
17         uint32_t xae_waes;
18         uint32_t xaq_buf_size;
19         uint32_t iue;
20         /* Private data. */
21 #define ROC_SSO_MEM_SZ (16 * 1024)
22         uint8_t reserved[ROC_SSO_MEM_SZ] __plt_cache_aligned;
23 } __plt_cache_aligned;
24
25 /* SSO device initialization */
26 int __roc_api roc_sso_dev_init(struct roc_sso *roc_sso);
27 int __roc_api roc_sso_dev_fini(struct roc_sso *roc_sso);
28
29 /* SSO device configuration */
30 int __roc_api roc_sso_rsrc_init(struct roc_sso *roc_sso, uint8_t nb_hws,
31                                 uint16_t nb_hwgrp);
32 void __roc_api roc_sso_rsrc_fini(struct roc_sso *roc_sso);
33 uint64_t __roc_api roc_sso_ns_to_gw(struct roc_sso *roc_sso, uint64_t ns);
34 int __roc_api roc_sso_hws_link(struct roc_sso *roc_sso, uint8_t hws,
35                                uint16_t hwgrp[], uint16_t nb_hwgrp);
36 int __roc_api roc_sso_hws_unlink(struct roc_sso *roc_sso, uint8_t hws,
37                                  uint16_t hwgrp[], uint16_t nb_hwgrp);
38 uintptr_t __roc_api roc_sso_hws_base_get(struct roc_sso *roc_sso, uint8_t hws);
39
40 #endif /* _ROC_SSOW_H_ */