1540914bcSEd Czeck /* SPDX-License-Identifier: BSD-3-Clause 2540914bcSEd Czeck * Copyright (c) 2015-2018 Atomic Rules LLC 3b33ccdb1SEd Czeck */ 4b33ccdb1SEd Czeck 5b33ccdb1SEd Czeck #include <stdint.h> 6b33ccdb1SEd Czeck #include <inttypes.h> 7b33ccdb1SEd Czeck 8b33ccdb1SEd Czeck #include "ark_pktdir.h" 9b33ccdb1SEd Czeck #include "ark_global.h" 1053a9ba13SYong Wang #include "ark_logs.h" 11b33ccdb1SEd Czeck 12b33ccdb1SEd Czeck 13b33ccdb1SEd Czeck ark_pkt_dir_t ark_pktdir_init(void * base)14b33ccdb1SEd Czeckark_pktdir_init(void *base) 15b33ccdb1SEd Czeck { 16b33ccdb1SEd Czeck struct ark_pkt_dir_inst *inst = 17b33ccdb1SEd Czeck rte_malloc("ark_pkt_dir_inst", 18b33ccdb1SEd Czeck sizeof(struct ark_pkt_dir_inst), 19b33ccdb1SEd Czeck 0); 2053a9ba13SYong Wang if (inst == NULL) { 211502d443SEd Czeck ARK_PMD_LOG(ERR, "Failed to malloc ark_pkt_dir_inst.\n"); 2253a9ba13SYong Wang return inst; 2353a9ba13SYong Wang } 24b33ccdb1SEd Czeck inst->regs = (struct ark_pkt_dir_regs *)base; 25*3b4f34f6SEd Czeck inst->regs->ctrl = ARK_PKT_DIR_INIT_VAL; /* POR state */ 26b33ccdb1SEd Czeck return inst; 27b33ccdb1SEd Czeck } 28b33ccdb1SEd Czeck 29b33ccdb1SEd Czeck void ark_pktdir_uninit(ark_pkt_dir_t handle)30b33ccdb1SEd Czeckark_pktdir_uninit(ark_pkt_dir_t handle) 31b33ccdb1SEd Czeck { 32b33ccdb1SEd Czeck struct ark_pkt_dir_inst *inst = (struct ark_pkt_dir_inst *)handle; 33b33ccdb1SEd Czeck 34b33ccdb1SEd Czeck rte_free(inst); 35b33ccdb1SEd Czeck } 36b33ccdb1SEd Czeck 37b33ccdb1SEd Czeck void ark_pktdir_setup(ark_pkt_dir_t handle,uint32_t v)38b33ccdb1SEd Czeckark_pktdir_setup(ark_pkt_dir_t handle, uint32_t v) 39b33ccdb1SEd Czeck { 40b33ccdb1SEd Czeck struct ark_pkt_dir_inst *inst = (struct ark_pkt_dir_inst *)handle; 41b33ccdb1SEd Czeck inst->regs->ctrl = v; 42b33ccdb1SEd Czeck } 43b33ccdb1SEd Czeck 44b33ccdb1SEd Czeck uint32_t ark_pktdir_status(ark_pkt_dir_t handle)45b33ccdb1SEd Czeckark_pktdir_status(ark_pkt_dir_t handle) 46b33ccdb1SEd Czeck { 47b33ccdb1SEd Czeck struct ark_pkt_dir_inst *inst = (struct ark_pkt_dir_inst *)handle; 48b33ccdb1SEd Czeck return inst->regs->ctrl; 49b33ccdb1SEd Czeck } 50b33ccdb1SEd Czeck 51b33ccdb1SEd Czeck uint32_t ark_pktdir_stall_cnt(ark_pkt_dir_t handle)52b33ccdb1SEd Czeckark_pktdir_stall_cnt(ark_pkt_dir_t handle) 53b33ccdb1SEd Czeck { 54b33ccdb1SEd Czeck struct ark_pkt_dir_inst *inst = (struct ark_pkt_dir_inst *)handle; 55b33ccdb1SEd Czeck return inst->regs->stall_cnt; 56b33ccdb1SEd Czeck } 57