1d8dd3165SPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause 2d8dd3165SPavan Nikhilesh * Copyright(c) 2017 Cavium, Inc 3d8dd3165SPavan Nikhilesh */ 4d8dd3165SPavan Nikhilesh 5d8dd3165SPavan Nikhilesh #ifndef __OCTEONTX_MBOX_H__ 6d8dd3165SPavan Nikhilesh #define __OCTEONTX_MBOX_H__ 7d8dd3165SPavan Nikhilesh 81094dd94SDavid Marchand #include <rte_compat.h> 9d8dd3165SPavan Nikhilesh #include <rte_common.h> 10d8dd3165SPavan Nikhilesh #include <rte_spinlock.h> 11d8dd3165SPavan Nikhilesh 12d8dd3165SPavan Nikhilesh #define SSOW_BAR4_LEN (64 * 1024) 13d8dd3165SPavan Nikhilesh #define SSO_VHGRP_PF_MBOX(x) (0x200ULL | ((x) << 3)) 14d8dd3165SPavan Nikhilesh 15b4134b2dSPavan Nikhilesh #define NO_COPROC 0x0 16b4134b2dSPavan Nikhilesh #define RM_START_APP 0x1 17b4134b2dSPavan Nikhilesh #define RM_INTERFACE_VERSION 0x2 18b4134b2dSPavan Nikhilesh 19b4134b2dSPavan Nikhilesh 20*2b843cacSDavid Marchand #define MBOX_LOG(level, ...) \ 21*2b843cacSDavid Marchand RTE_LOG_LINE_PREFIX(level, OCTEONTX_MBOX, "%s() line %u: ", \ 22*2b843cacSDavid Marchand __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__) 23d8dd3165SPavan Nikhilesh 24d8dd3165SPavan Nikhilesh #define mbox_log_info(fmt, ...) MBOX_LOG(INFO, fmt, ##__VA_ARGS__) 25d8dd3165SPavan Nikhilesh #define mbox_log_dbg(fmt, ...) MBOX_LOG(DEBUG, fmt, ##__VA_ARGS__) 26d8dd3165SPavan Nikhilesh #define mbox_log_err(fmt, ...) MBOX_LOG(ERR, fmt, ##__VA_ARGS__) 27d8dd3165SPavan Nikhilesh #define mbox_func_trace mbox_log_dbg 28d8dd3165SPavan Nikhilesh 29d8dd3165SPavan Nikhilesh extern int octeontx_logtype_mbox; 30*2b843cacSDavid Marchand #define RTE_LOGTYPE_OCTEONTX_MBOX octeontx_logtype_mbox 31d8dd3165SPavan Nikhilesh 32d8dd3165SPavan Nikhilesh struct octeontx_mbox_hdr { 33d8dd3165SPavan Nikhilesh uint16_t vfid; /* VF index or pf resource index local to the domain */ 34d8dd3165SPavan Nikhilesh uint8_t coproc; /* Coprocessor id */ 35d8dd3165SPavan Nikhilesh uint8_t msg; /* Message id */ 36b4134b2dSPavan Nikhilesh uint8_t oob; /* out of band data */ 37d8dd3165SPavan Nikhilesh uint8_t res_code; /* Functional layer response code */ 38d8dd3165SPavan Nikhilesh }; 39d8dd3165SPavan Nikhilesh 406f2dc9c0SDavid Marchand __rte_internal 41b4134b2dSPavan Nikhilesh int octeontx_mbox_init(void); 42a6d6f0afSPavan Nikhilesh void octeontx_set_global_domain(uint16_t global_domain); 436f2dc9c0SDavid Marchand __rte_internal 44a6d6f0afSPavan Nikhilesh uint16_t octeontx_get_global_domain(void); 456f2dc9c0SDavid Marchand __rte_internal 46a6d6f0afSPavan Nikhilesh int octeontx_mbox_set_ram_mbox_base(uint8_t *ram_mbox_base, uint16_t domain); 476f2dc9c0SDavid Marchand __rte_internal 48a6d6f0afSPavan Nikhilesh int octeontx_mbox_set_reg(uint8_t *reg, uint16_t domain); 496f2dc9c0SDavid Marchand __rte_internal 50d8dd3165SPavan Nikhilesh int octeontx_mbox_send(struct octeontx_mbox_hdr *hdr, 51d8dd3165SPavan Nikhilesh void *txdata, uint16_t txlen, void *rxdata, uint16_t rxlen); 52d8dd3165SPavan Nikhilesh 53d8dd3165SPavan Nikhilesh #endif /* __OCTEONTX_MBOX_H__ */ 54