Files
m241Neelima/vxworks-6.9/target/h/arch/mips/cavPko.h
T
2026-07-30 11:19:44 +05:30

124 lines
3.7 KiB
C

/* cavPko.h - Packet Output Processing Unit data types, macros and addresses */
/*
* Copyright (c) 2010-2012 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01g,11may12,l_z enable OCT_MAX_PORTS_PER_IFACE for all boards
01f,09dec11,x_f add defines for OcteonII CN68xx
01e,07jul11,rlg Setup for SDK TYPEDEFS only
01d,10jun11,d_c Restore Cavium headers to original form, before splitting
struct defs to separate headers
01c,20oct10,d_c Include SDK data types directly from SDK
01b,05oct10,d_c Change ull to ULL to be Diab compatible
01a,06aug10,d_c written
*/
#ifndef __INCcavPkoh
#define __INCcavPkoh
#include <arch/mips/private/cavSdkDrvInclude.h>
#define CAV_INCLUDE_TYPEDEFS_ONLY
#include CAV_SDK_DRV_INCLUDE(cvmx-version.h)
#include CAV_SDK_DRV_INCLUDE(cvmx-abi.h)
#include CAV_SDK_DRV_INCLUDE(cvmx-utils.h)
#if (OCTEON_SDK_VERSION_NUM >= 301010547)
#define CVMX_SHARED
#ifndef CVMX_MIO_FUS_DAT2
#define CVMX_MIO_FUS_DAT2 0x0001180000001410ull
#endif /* !CVMX_MIO_FUS_DAT2 */
#ifndef CVMX_RNM_CTL_STATUS
#define CVMX_RNM_CTL_STATUS 0x0001180040000000ull
#endif /* !CVMX_RNM_CTL_STATUS */
#ifdef OCTEON_MODEL
#include CAV_SDK_DRV_INCLUDE(cvmx-rnm-defs.h)
#include CAV_SDK_DRV_INCLUDE(octeon-model.h)
#include CAV_SDK_DRV_INCLUDE(octeon-feature.h)
#include CAV_SDK_DRV_INCLUDE(cvmx-cmd-queue.h)
#endif /* OCTEON_MODEL */
#endif /* (OCTEON_SDK_VERSION_NUM >= 301010547) */
#include CAV_SDK_DRV_INCLUDE(cvmx-pko.h)
#include CAV_SDK_DRV_INCLUDE(cvmx-pko-defs.h)
#ifdef __cplusplus
extern "C" {
#endif
/* defines */
#define CAV_PKO_REG_FLAGS 0x8001180050000000ULL
#define CAV_PKO_REG_CMD_BUF 0x8001180050000010ULL
#define CAV_PKO_REG_GMX_PORT_MODE 0x8001180050000018ULL
#define CAV_PKO_MEM_IPORT_PTRS 0x8001180050001030ULL
#define CAV_PKO_MEM_IQUEUE_PTRS 0x8001180050001040ULL
#define CAV_PKO_INDEX_BITS 12
#define CAV_PKO_INVALID_EID 31
#define CAV_CN68XX_PKO_MAX_PORT 128
#define CAV_PKO_PADDING_60 1
#define OCT_MAX_PORTS_PER_IFACE 16
#define OCT_MAX_IFACE_NUM 5
#define OCT_MAX_INDEX_NUM 4
/* typedefs */
typedef cvmx_pko_reg_gmx_port_mode_t CAV_PKO_REG_GMX_PORT_MODE_T;
typedef cvmx_pko_reg_cmd_buf_t CAV_PKO_REG_CMD_BUF_T;
typedef cvmx_pko_reg_flags_t CAV_PKO_REG_FLAGS_T;
typedef cvmx_pko_command_word0_t CAV_PKO_COMMAND_WORD0_T;
#if (OCTEON_MODEL == OCTEON_CN68XX) || (OCTEON_MODEL == OCTEON_CN78XX)
typedef cvmx_pko_mem_iport_ptrs_t CAV_PKO_MEM_IPORT_PTRS_T;
typedef cvmx_pko_mem_iqueue_ptrs_t CAV_PKO_MEM_IQUEUE_PTRS_T;
#endif /* (OCTEON_MODEL == OCTEON_CN68XX) || (OCTEON_MODEL == OCTEON_CN78XX) */
typedef enum
{
CAV_PKO_SUCCESS = CVMX_PKO_SUCCESS,
CAV_PKO_INVALID_PORT = CVMX_PKO_INVALID_PORT,
CAV_PKO_INVALID_QUEUE = CVMX_PKO_INVALID_QUEUE,
CAV_PKO_INVALID_PRIORITY = CVMX_PKO_INVALID_PRIORITY,
CAV_PKO_NO_MEMORY = CVMX_PKO_NO_MEMORY
} CAV_PKO_STATUS_T;
/* functions */
IMPORT void cavPkoShutdown(void);
IMPORT void cavPkoEnable(void);
IMPORT int cavPkoBaseQueueGet
(
int port
);
IMPORT int cavPkoNumQueuesGet
(
int port
);
CAV_PKO_STATUS_T cavPkoPortConfig
(
uint64_t port,
uint64_t base_queue,
uint64_t num_queues,
const uint64_t priority[]
);
void cavPkoDoorbell
(
uint64_t port,
uint64_t queue,
uint64_t len
);
#ifdef __cplusplus
}
#endif
#endif /* __INCcavPkoh */