144961713Sgirish /* 244961713Sgirish * CDDL HEADER START 344961713Sgirish * 444961713Sgirish * The contents of this file are subject to the terms of the 544961713Sgirish * Common Development and Distribution License (the "License"). 644961713Sgirish * You may not use this file except in compliance with the License. 744961713Sgirish * 844961713Sgirish * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 944961713Sgirish * or http://www.opensolaris.org/os/licensing. 1044961713Sgirish * See the License for the specific language governing permissions 1144961713Sgirish * and limitations under the License. 1244961713Sgirish * 1344961713Sgirish * When distributing Covered Code, include this CDDL HEADER in each 1444961713Sgirish * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1544961713Sgirish * If applicable, add the following below this CDDL HEADER, with the 1644961713Sgirish * fields enclosed by brackets "[]" replaced with your own identifying 1744961713Sgirish * information: Portions Copyright [yyyy] [name of copyright owner] 1844961713Sgirish * 1944961713Sgirish * CDDL HEADER END 2044961713Sgirish */ 2144961713Sgirish /* 2244961713Sgirish * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 2344961713Sgirish * Use is subject to license terms. 2444961713Sgirish */ 2544961713Sgirish 2644961713Sgirish #ifndef _NPI_TXC_H 2744961713Sgirish #define _NPI_TXC_H 2844961713Sgirish 2944961713Sgirish #ifdef __cplusplus 3044961713Sgirish extern "C" { 3144961713Sgirish #endif 3244961713Sgirish 3344961713Sgirish #include <npi.h> 3444961713Sgirish #include <nxge_txc_hw.h> 3544961713Sgirish 3644961713Sgirish /* 3744961713Sgirish * Transmit Controller (TXC) NPI error codes 3844961713Sgirish */ 3944961713Sgirish #define TXC_ER_ST (TXC_BLK_ID << NPI_BLOCK_ID_SHIFT) 4044961713Sgirish #define TXC_ID_SHIFT(n) (n << NPI_PORT_CHAN_SHIFT) 4144961713Sgirish 4244961713Sgirish #define NPI_TXC_PORT_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\ 4344961713Sgirish TXC_ER_ST | PORT_INVALID) 4444961713Sgirish 4544961713Sgirish #define NPI_TXC_CHANNEL_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\ 4644961713Sgirish TXC_ER_ST | CHANNEL_INVALID) 4744961713Sgirish 4844961713Sgirish #define NPI_TXC_OPCODE_INVALID(n) (TXC_ID_SHIFT(n) | IS_PORT |\ 4944961713Sgirish TXC_ER_ST | OPCODE_INVALID) 5044961713Sgirish 5144961713Sgirish /* 5244961713Sgirish * Register offset (0x1000 bytes for each channel) for TXC registers. 5344961713Sgirish */ 5444961713Sgirish #define NXGE_TXC_FZC_OFFSET(x, cn) (x + TXC_FZC_CHANNEL_OFFSET(cn)) 5544961713Sgirish 5644961713Sgirish /* 5744961713Sgirish * Register offset (0x100 bytes for each port) for TXC Function zero 5844961713Sgirish * control registers. 5944961713Sgirish */ 6044961713Sgirish #define NXGE_TXC_FZC_CNTL_OFFSET(x, port) (x + \ 6144961713Sgirish TXC_FZC_CNTL_PORT_OFFSET(port)) 6244961713Sgirish /* 6344961713Sgirish * PIO macros to read and write the transmit control registers. 6444961713Sgirish */ 6544961713Sgirish #define TXC_FZC_REG_READ64(handle, reg, cn, val_p) \ 6644961713Sgirish NXGE_REG_RD64(handle, \ 6744961713Sgirish (NXGE_TXC_FZC_OFFSET(reg, cn)), val_p) 6844961713Sgirish 6944961713Sgirish #define TXC_FZC_REG_WRITE64(handle, reg, cn, data) \ 7044961713Sgirish NXGE_REG_WR64(handle, \ 7144961713Sgirish (NXGE_TXC_FZC_OFFSET(reg, cn)), data) 7244961713Sgirish 7344961713Sgirish #define TXC_FZC_CNTL_REG_READ64(handle, reg, port, val_p) \ 7444961713Sgirish NXGE_REG_RD64(handle, \ 7544961713Sgirish (NXGE_TXC_FZC_CNTL_OFFSET(reg, port)), val_p) 7644961713Sgirish 7744961713Sgirish #define TXC_FZC_CNTL_REG_WRITE64(handle, reg, port, data) \ 7844961713Sgirish NXGE_REG_WR64(handle, \ 7944961713Sgirish (NXGE_TXC_FZC_CNTL_OFFSET(reg, port)), data) 8044961713Sgirish 8144961713Sgirish /* 8244961713Sgirish * TXC (Transmit Controller) prototypes. 8344961713Sgirish */ 8444961713Sgirish npi_status_t npi_txc_dma_max_burst(npi_handle_t, io_op_t, 8544961713Sgirish uint8_t, uint32_t *); 8644961713Sgirish npi_status_t npi_txc_dma_max_burst_set(npi_handle_t, uint8_t, 8744961713Sgirish uint32_t); 8844961713Sgirish npi_status_t npi_txc_dma_bytes_transmitted(npi_handle_t, 8944961713Sgirish uint8_t, uint32_t *); 9044961713Sgirish npi_status_t npi_txc_control(npi_handle_t, io_op_t, 9144961713Sgirish p_txc_control_t); 9244961713Sgirish npi_status_t npi_txc_global_enable(npi_handle_t); 9344961713Sgirish npi_status_t npi_txc_global_disable(npi_handle_t); 9444961713Sgirish npi_status_t npi_txc_control_clear(npi_handle_t, uint8_t); 9544961713Sgirish npi_status_t npi_txc_training_set(npi_handle_t, uint32_t); 9644961713Sgirish npi_status_t npi_txc_training_get(npi_handle_t, uint32_t *); 9744961713Sgirish npi_status_t npi_txc_port_control_get(npi_handle_t, uint8_t, 9844961713Sgirish uint32_t *); 9944961713Sgirish npi_status_t npi_txc_port_enable(npi_handle_t, uint8_t); 10044961713Sgirish npi_status_t npi_txc_port_disable(npi_handle_t, uint8_t); 10144961713Sgirish npi_status_t npi_txc_dma_max_burst(npi_handle_t, io_op_t, 10244961713Sgirish uint8_t, uint32_t *); 10344961713Sgirish npi_status_t npi_txc_port_dma_enable(npi_handle_t, uint8_t, 10444961713Sgirish uint32_t); 10544961713Sgirish npi_status_t npi_txc_port_dma_list_get(npi_handle_t, uint8_t, 10644961713Sgirish uint32_t *); 10744961713Sgirish npi_status_t npi_txc_port_dma_channel_enable(npi_handle_t, uint8_t, 10844961713Sgirish uint8_t); 10944961713Sgirish npi_status_t npi_txc_port_dma_channel_disable(npi_handle_t, uint8_t, 11044961713Sgirish uint8_t); 11144961713Sgirish 11244961713Sgirish npi_status_t npi_txc_pkt_stuffed_get(npi_handle_t, uint8_t, 11344961713Sgirish uint32_t *, uint32_t *); 11444961713Sgirish npi_status_t npi_txc_pkt_xmt_to_mac_get(npi_handle_t, uint8_t, 11544961713Sgirish uint32_t *, uint32_t *); 11644961713Sgirish npi_status_t npi_txc_reorder_get(npi_handle_t, uint8_t, 11744961713Sgirish uint32_t *); 11844961713Sgirish npi_status_t npi_txc_dump_tdc_fzc_regs(npi_handle_t, uint8_t); 11944961713Sgirish npi_status_t npi_txc_dump_fzc_regs(npi_handle_t); 12044961713Sgirish npi_status_t npi_txc_dump_port_fzc_regs(npi_handle_t, uint8_t); 12144961713Sgirish npi_status_t npi_txc_ro_states_get(npi_handle_t, uint8_t, 12244961713Sgirish txc_ro_states_t *); 12344961713Sgirish npi_status_t npi_txc_ro_ecc_state_clr(npi_handle_t, uint8_t); 12444961713Sgirish npi_status_t npi_txc_sf_states_get(npi_handle_t, uint8_t, 12544961713Sgirish txc_sf_states_t *); 12644961713Sgirish npi_status_t npi_txc_sf_ecc_state_clr(npi_handle_t, uint8_t); 12744961713Sgirish void npi_txc_global_istatus_get(npi_handle_t, txc_int_stat_t *); 12844961713Sgirish void npi_txc_global_istatus_clear(npi_handle_t, uint64_t); 12944961713Sgirish void npi_txc_global_imask_set(npi_handle_t, uint8_t, 13044961713Sgirish uint8_t); 13144961713Sgirish 13244961713Sgirish #ifdef __cplusplus 13344961713Sgirish } 13444961713Sgirish #endif 13544961713Sgirish 13644961713Sgirish #endif /* _NPI_TXC_H */ 137