Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(C) 2023 Marvell. 3 : : */ 4 : : 5 : : #include <rte_common.h> 6 : : #include <rte_pmd_cnxk_eventdev.h> 7 : : #include <rte_eventdev.h> 8 : : 9 : : #include "roc_api.h" 10 : : 11 : : struct pwords { 12 : : uint64_t u[5]; 13 : : }; 14 : : 15 : : void 16 : 0 : rte_pmd_cnxk_eventdev_wait_head(uint8_t dev, uint8_t port) 17 : : { 18 : 0 : struct pwords *w = rte_event_fp_ops[dev].data[port]; 19 : : uint8_t vws; 20 : : 21 [ # # ]: 0 : if (w->u[1] & 0x3) { 22 : 0 : roc_sso_hws_head_wait(w->u[0]); 23 : : } else { 24 : : /* Dual WS case */ 25 : 0 : vws = (w->u[4] >> 8) & 0x1; 26 : 0 : roc_sso_hws_head_wait(w->u[vws]); 27 : : } 28 : 0 : } 29 : : 30 : : 31 : : uint8_t 32 : 0 : rte_pmd_cnxk_eventdev_is_head(uint8_t dev, uint8_t port) 33 : : { 34 : 0 : struct pwords *w = rte_event_fp_ops[dev].data[port]; 35 : : uintptr_t base; 36 : : uint8_t vws; 37 : : 38 [ # # ]: 0 : if (w->u[1] & 0x3) { 39 : 0 : base = w->u[0]; 40 : : } else { 41 : : /* Dual WS case */ 42 : 0 : vws = (w->u[4] >> 8) & 0x1; 43 : 0 : base = w->u[vws]; 44 : : } 45 : : 46 : 0 : return roc_sso_hws_is_head(base); 47 : : }