The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/ncsw/inc/flib/fsl_fman_tgec.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright 2008-2012 Freescale Semiconductor Inc.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions are met:
    6  *     * Redistributions of source code must retain the above copyright
    7  *       notice, this list of conditions and the following disclaimer.
    8  *     * Redistributions in binary form must reproduce the above copyright
    9  *       notice, this list of conditions and the following disclaimer in the
   10  *       documentation and/or other materials provided with the distribution.
   11  *     * Neither the name of Freescale Semiconductor nor the
   12  *       names of its contributors may be used to endorse or promote products
   13  *       derived from this software without specific prior written permission.
   14  *
   15  *
   16  * ALTERNATIVELY, this software may be distributed under the terms of the
   17  * GNU General Public License ("GPL") as published by the Free Software
   18  * Foundation, either version 2 of that License or (at your option) any
   19  * later version.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
   22  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   24  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
   25  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   26  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   28  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 #ifndef __FSL_FMAN_TGEC_H
   34 #define __FSL_FMAN_TGEC_H
   35 
   36 #include "common/general.h"
   37 #include "fsl_enet.h"
   38 
   39 
   40 /* Transmit Inter-Packet Gap Length Register (TX_IPG_LENGTH) */
   41 #define TGEC_TX_IPG_LENGTH_MASK 0x000003ff
   42 
   43 enum tgec_counters {
   44         E_TGEC_COUNTER_R64,
   45         E_TGEC_COUNTER_R127,
   46         E_TGEC_COUNTER_R255,
   47         E_TGEC_COUNTER_R511,
   48         E_TGEC_COUNTER_R1023,
   49         E_TGEC_COUNTER_R1518,
   50         E_TGEC_COUNTER_R1519X,
   51         E_TGEC_COUNTER_TRFRG,
   52         E_TGEC_COUNTER_TRJBR,
   53         E_TGEC_COUNTER_RDRP,
   54         E_TGEC_COUNTER_RALN,
   55         E_TGEC_COUNTER_TRUND,
   56         E_TGEC_COUNTER_TROVR,
   57         E_TGEC_COUNTER_RXPF,
   58         E_TGEC_COUNTER_TXPF,
   59         E_TGEC_COUNTER_ROCT,
   60         E_TGEC_COUNTER_RMCA,
   61         E_TGEC_COUNTER_RBCA,
   62         E_TGEC_COUNTER_RPKT,
   63         E_TGEC_COUNTER_RUCA,
   64         E_TGEC_COUNTER_RERR,
   65         E_TGEC_COUNTER_TOCT,
   66         E_TGEC_COUNTER_TMCA,
   67         E_TGEC_COUNTER_TBCA,
   68         E_TGEC_COUNTER_TUCA,
   69         E_TGEC_COUNTER_TERR
   70 };
   71 
   72 /* Command and Configuration Register (COMMAND_CONFIG) */
   73 #define CMD_CFG_EN_TIMESTAMP    0x00100000
   74 #define CMD_CFG_TX_ADDR_INS_SEL 0x00080000
   75 #define CMD_CFG_NO_LEN_CHK      0x00020000
   76 #define CMD_CFG_SEND_IDLE       0x00010000
   77 #define CMD_CFG_RX_ER_DISC      0x00004000
   78 #define CMD_CFG_CMD_FRM_EN      0x00002000
   79 #define CMD_CFG_STAT_CLR        0x00001000
   80 #define CMD_CFG_LOOPBACK_EN     0x00000400
   81 #define CMD_CFG_TX_ADDR_INS     0x00000200
   82 #define CMD_CFG_PAUSE_IGNORE    0x00000100
   83 #define CMD_CFG_PAUSE_FWD       0x00000080
   84 #define CMD_CFG_PROMIS_EN       0x00000010
   85 #define CMD_CFG_WAN_MODE        0x00000008
   86 #define CMD_CFG_RX_EN           0x00000002
   87 #define CMD_CFG_TX_EN           0x00000001
   88 
   89 /* Interrupt Mask Register (IMASK) */
   90 #define TGEC_IMASK_MDIO_SCAN_EVENT      0x00010000
   91 #define TGEC_IMASK_MDIO_CMD_CMPL        0x00008000
   92 #define TGEC_IMASK_REM_FAULT            0x00004000
   93 #define TGEC_IMASK_LOC_FAULT            0x00002000
   94 #define TGEC_IMASK_TX_ECC_ER            0x00001000
   95 #define TGEC_IMASK_TX_FIFO_UNFL         0x00000800
   96 #define TGEC_IMASK_TX_FIFO_OVFL         0x00000400
   97 #define TGEC_IMASK_TX_ER                        0x00000200
   98 #define TGEC_IMASK_RX_FIFO_OVFL         0x00000100
   99 #define TGEC_IMASK_RX_ECC_ER            0x00000080
  100 #define TGEC_IMASK_RX_JAB_FRM           0x00000040
  101 #define TGEC_IMASK_RX_OVRSZ_FRM         0x00000020
  102 #define TGEC_IMASK_RX_RUNT_FRM          0x00000010
  103 #define TGEC_IMASK_RX_FRAG_FRM          0x00000008
  104 #define TGEC_IMASK_RX_LEN_ER            0x00000004
  105 #define TGEC_IMASK_RX_CRC_ER            0x00000002
  106 #define TGEC_IMASK_RX_ALIGN_ER          0x00000001
  107 
  108 #define TGEC_EVENTS_MASK                                        \
  109         ((uint32_t)(TGEC_IMASK_MDIO_SCAN_EVENT                  | \
  110                                 TGEC_IMASK_MDIO_CMD_CMPL        | \
  111                                 TGEC_IMASK_REM_FAULT            | \
  112                                 TGEC_IMASK_LOC_FAULT            | \
  113                                 TGEC_IMASK_TX_ECC_ER            | \
  114                                 TGEC_IMASK_TX_FIFO_UNFL         | \
  115                                 TGEC_IMASK_TX_FIFO_OVFL         | \
  116                                 TGEC_IMASK_TX_ER                | \
  117                                 TGEC_IMASK_RX_FIFO_OVFL         | \
  118                                 TGEC_IMASK_RX_ECC_ER            | \
  119                                 TGEC_IMASK_RX_JAB_FRM           | \
  120                                 TGEC_IMASK_RX_OVRSZ_FRM         | \
  121                                 TGEC_IMASK_RX_RUNT_FRM          | \
  122                                 TGEC_IMASK_RX_FRAG_FRM          | \
  123                                 TGEC_IMASK_RX_LEN_ER            | \
  124                                 TGEC_IMASK_RX_CRC_ER            | \
  125                                 TGEC_IMASK_RX_ALIGN_ER))
  126 
  127 /* Hashtable Control Register (HASHTABLE_CTRL) */
  128 #define TGEC_HASH_MCAST_SHIFT   23
  129 #define TGEC_HASH_MCAST_EN      0x00000200
  130 #define TGEC_HASH_ADR_MSK       0x000001ff
  131 
  132 #define DEFAULT_WAN_MODE_ENABLE         FALSE
  133 #define DEFAULT_PROMISCUOUS_MODE_ENABLE FALSE
  134 #define DEFAULT_PAUSE_FORWARD_ENABLE    FALSE
  135 #define DEFAULT_PAUSE_IGNORE            FALSE
  136 #define DEFAULT_TX_ADDR_INS_ENABLE      FALSE
  137 #define DEFAULT_LOOPBACK_ENABLE         FALSE
  138 #define DEFAULT_CMD_FRAME_ENABLE        FALSE
  139 #define DEFAULT_RX_ERROR_DISCARD        FALSE
  140 #define DEFAULT_SEND_IDLE_ENABLE        FALSE
  141 #define DEFAULT_NO_LENGTH_CHECK_ENABLE  TRUE
  142 #define DEFAULT_LGTH_CHECK_NOSTDR       FALSE
  143 #define DEFAULT_TIME_STAMP_ENABLE       FALSE
  144 #define DEFAULT_TX_IPG_LENGTH           12
  145 #define DEFAULT_MAX_FRAME_LENGTH        0x600
  146 #define DEFAULT_PAUSE_QUANT             0xf000
  147 
  148 /*
  149  * 10G memory map
  150  */
  151 struct tgec_regs {
  152         uint32_t tgec_id;               /* 0x000 Controller ID */
  153         uint32_t reserved001[1];        /* 0x004 */
  154         uint32_t command_config;        /* 0x008 Control and configuration */
  155         uint32_t mac_addr_0;            /* 0x00c Lower 32 bits of the MAC adr */
  156         uint32_t mac_addr_1;            /* 0x010 Upper 16 bits of the MAC adr */
  157         uint32_t maxfrm;                /* 0x014 Maximum frame length */
  158         uint32_t pause_quant;           /* 0x018 Pause quanta */
  159         uint32_t rx_fifo_sections;      /* 0x01c  */
  160         uint32_t tx_fifo_sections;      /* 0x020  */
  161         uint32_t rx_fifo_almost_f_e;    /* 0x024  */
  162         uint32_t tx_fifo_almost_f_e;    /* 0x028  */
  163         uint32_t hashtable_ctrl;        /* 0x02c Hash table control*/
  164         uint32_t mdio_cfg_status;       /* 0x030  */
  165         uint32_t mdio_command;          /* 0x034  */
  166         uint32_t mdio_data;             /* 0x038  */
  167         uint32_t mdio_regaddr;          /* 0x03c  */
  168         uint32_t status;                /* 0x040  */
  169         uint32_t tx_ipg_len;            /* 0x044 Transmitter inter-packet-gap */
  170         uint32_t mac_addr_2;            /* 0x048 Lower 32 bits of 2nd MAC adr */
  171         uint32_t mac_addr_3;            /* 0x04c Upper 16 bits of 2nd MAC adr */
  172         uint32_t rx_fifo_ptr_rd;        /* 0x050  */
  173         uint32_t rx_fifo_ptr_wr;        /* 0x054  */
  174         uint32_t tx_fifo_ptr_rd;        /* 0x058  */
  175         uint32_t tx_fifo_ptr_wr;        /* 0x05c  */
  176         uint32_t imask;                 /* 0x060 Interrupt mask */
  177         uint32_t ievent;                /* 0x064 Interrupt event */
  178         uint32_t udp_port;              /* 0x068 Defines a UDP Port number */
  179         uint32_t type_1588v2;           /* 0x06c Type field for 1588v2 */
  180         uint32_t reserved070[4];        /* 0x070 */
  181         /*10Ge Statistics Counter */
  182         uint32_t tfrm_u;                /* 80 aFramesTransmittedOK */
  183         uint32_t tfrm_l;                /* 84 aFramesTransmittedOK */
  184         uint32_t rfrm_u;                /* 88 aFramesReceivedOK */
  185         uint32_t rfrm_l;                /* 8c aFramesReceivedOK */
  186         uint32_t rfcs_u;                /* 90 aFrameCheckSequenceErrors */
  187         uint32_t rfcs_l;                /* 94 aFrameCheckSequenceErrors */
  188         uint32_t raln_u;                /* 98 aAlignmentErrors */
  189         uint32_t raln_l;                /* 9c aAlignmentErrors */
  190         uint32_t txpf_u;                /* A0 aPAUSEMACCtrlFramesTransmitted */
  191         uint32_t txpf_l;                /* A4 aPAUSEMACCtrlFramesTransmitted */
  192         uint32_t rxpf_u;                /* A8 aPAUSEMACCtrlFramesReceived */
  193         uint32_t rxpf_l;                /* Ac aPAUSEMACCtrlFramesReceived */
  194         uint32_t rlong_u;               /* B0 aFrameTooLongErrors */
  195         uint32_t rlong_l;               /* B4 aFrameTooLongErrors */
  196         uint32_t rflr_u;                /* B8 aInRangeLengthErrors */
  197         uint32_t rflr_l;                /* Bc aInRangeLengthErrors */
  198         uint32_t tvlan_u;               /* C0 VLANTransmittedOK */
  199         uint32_t tvlan_l;               /* C4 VLANTransmittedOK */
  200         uint32_t rvlan_u;               /* C8 VLANReceivedOK */
  201         uint32_t rvlan_l;               /* Cc VLANReceivedOK */
  202         uint32_t toct_u;                /* D0 ifOutOctets */
  203         uint32_t toct_l;                /* D4 ifOutOctets */
  204         uint32_t roct_u;                /* D8 ifInOctets */
  205         uint32_t roct_l;                /* Dc ifInOctets */
  206         uint32_t ruca_u;                /* E0 ifInUcastPkts */
  207         uint32_t ruca_l;                /* E4 ifInUcastPkts */
  208         uint32_t rmca_u;                /* E8 ifInMulticastPkts */
  209         uint32_t rmca_l;                /* Ec ifInMulticastPkts */
  210         uint32_t rbca_u;                /* F0 ifInBroadcastPkts */
  211         uint32_t rbca_l;                /* F4 ifInBroadcastPkts */
  212         uint32_t terr_u;                /* F8 ifOutErrors */
  213         uint32_t terr_l;                /* Fc ifOutErrors */
  214         uint32_t reserved100[2];        /* 100-108*/
  215         uint32_t tuca_u;                /* 108 ifOutUcastPkts */
  216         uint32_t tuca_l;                /* 10c ifOutUcastPkts */
  217         uint32_t tmca_u;                /* 110 ifOutMulticastPkts */
  218         uint32_t tmca_l;                /* 114 ifOutMulticastPkts */
  219         uint32_t tbca_u;                /* 118 ifOutBroadcastPkts */
  220         uint32_t tbca_l;                /* 11c ifOutBroadcastPkts */
  221         uint32_t rdrp_u;                /* 120 etherStatsDropEvents */
  222         uint32_t rdrp_l;                /* 124 etherStatsDropEvents */
  223         uint32_t reoct_u;               /* 128 etherStatsOctets */
  224         uint32_t reoct_l;               /* 12c etherStatsOctets */
  225         uint32_t rpkt_u;                /* 130 etherStatsPkts */
  226         uint32_t rpkt_l;                /* 134 etherStatsPkts */
  227         uint32_t trund_u;               /* 138 etherStatsUndersizePkts */
  228         uint32_t trund_l;               /* 13c etherStatsUndersizePkts */
  229         uint32_t r64_u;                 /* 140 etherStatsPkts64Octets */
  230         uint32_t r64_l;                 /* 144 etherStatsPkts64Octets */
  231         uint32_t r127_u;                /* 148 etherStatsPkts65to127Octets */
  232         uint32_t r127_l;                /* 14c etherStatsPkts65to127Octets */
  233         uint32_t r255_u;                /* 150 etherStatsPkts128to255Octets */
  234         uint32_t r255_l;                /* 154 etherStatsPkts128to255Octets */
  235         uint32_t r511_u;                /* 158 etherStatsPkts256to511Octets */
  236         uint32_t r511_l;                /* 15c etherStatsPkts256to511Octets */
  237         uint32_t r1023_u;               /* 160 etherStatsPkts512to1023Octets */
  238         uint32_t r1023_l;               /* 164 etherStatsPkts512to1023Octets */
  239         uint32_t r1518_u;               /* 168 etherStatsPkts1024to1518Octets */
  240         uint32_t r1518_l;               /* 16c etherStatsPkts1024to1518Octets */
  241         uint32_t r1519x_u;              /* 170 etherStatsPkts1519toX */
  242         uint32_t r1519x_l;              /* 174 etherStatsPkts1519toX */
  243         uint32_t trovr_u;               /* 178 etherStatsOversizePkts */
  244         uint32_t trovr_l;               /* 17c etherStatsOversizePkts */
  245         uint32_t trjbr_u;               /* 180 etherStatsJabbers */
  246         uint32_t trjbr_l;               /* 184 etherStatsJabbers */
  247         uint32_t trfrg_u;               /* 188 etherStatsFragments */
  248         uint32_t trfrg_l;               /* 18C etherStatsFragments */
  249         uint32_t rerr_u;                /* 190 ifInErrors */
  250         uint32_t rerr_l;                /* 194 ifInErrors */
  251 };
  252 
  253 /**
  254  * struct tgec_cfg - TGEC configuration
  255  *
  256  * @rx_error_discard:    Receive Erroneous Frame Discard Enable. When set to 1
  257  *            any frame received with an error is discarded in the
  258  *            Core and not forwarded to the Client interface.
  259  *            When set to 0 (Reset value), erroneous Frames are
  260  *            forwarded to the Client interface with ff_rx_err
  261  *            asserted.
  262  * @pause_ignore:    Ignore Pause Frame Quanta. If set to 1 received pause
  263  *            frames are ignored by the MAC. When set to 0
  264  *            (Reset value) the transmit process is stopped for the
  265  *            amount of time specified in the pause quanta received
  266  *            within a pause frame.
  267  * @pause_forward_enable:
  268  *            Terminate / Forward Pause Frames. If set to 1 pause
  269  *            frames are forwarded to the user application. When set
  270  *            to 0 (Reset value) pause frames are terminated and
  271  *            discarded within the MAC.
  272  * @no_length_check_enable:
  273  *            Payload Length Check Disable. When set to 0
  274  *            (Reset value), the Core checks the frame's payload
  275  *            length with the Frame Length/Type field, when set to 1
  276  *            the payload length check is disabled.
  277  * @cmd_frame_enable:    Enables reception of all command frames. When set to 1
  278  *            all Command Frames are accepted, when set to 0
  279  *            (Reset Value) only Pause Frames are accepted and all
  280  *            other Command Frames are rejected.
  281  * @send_idle_enable:    Force Idle Generation. When set to 1, the MAC
  282  *            permanently sends XGMII Idle sequences even when faults
  283  *            are received.
  284  * @wan_mode_enable:    WAN Mode Enable. Sets WAN mode (1) or LAN mode
  285  *            (0, default) of operation.
  286  * @promiscuous_mode_enable:
  287  *            Enables MAC promiscuous operation. When set to 1, all
  288  *            frames are received without any MAC address filtering,
  289  *            when set to 0 (Reset value) Unicast Frames with a
  290  *            destination address not matching the Core MAC Address
  291  *            (MAC Address programmed in Registers MAC_ADDR_0 and
  292  *            MAC_ADDR_1 or the MAC address programmed in Registers
  293  *            MAC_ADDR_2 and MAC_ADDR_3) are rejected.
  294  * @tx_addr_ins_enable:    Set Source MAC Address on Transmit. If set to 1 the
  295  *            MAC overwrites the source MAC address received from the
  296  *            Client Interface with one of the MAC addresses. If set
  297  *            to 0 (Reset value), the source MAC address from the
  298  *            Client Interface is transmitted unmodified to the line.
  299  * @loopback_enable:    PHY Interface Loopback. When set to 1, the signal
  300  *            loop_ena is set to '1', when set to 0 (Reset value)
  301  *            the signal loop_ena is set to 0.
  302  * @lgth_check_nostdr:    The Core interprets the Length/Type field differently
  303  *            depending on the value of this Bit
  304  * @time_stamp_enable:    This bit selects between enabling and disabling the
  305  *            IEEE 1588 functionality. 1: IEEE 1588 is enabled
  306  *            0: IEEE 1588 is disabled
  307  * @max_frame_length:    Maximum supported received frame length.
  308  *            The 10GEC MAC supports reception of any frame size up
  309  *            to 16,352 bytes (0x3FE0). Typical settings are
  310  *            0x05EE (1,518 bytes) for standard frames.
  311  *            Default setting is 0x0600 (1,536 bytes).
  312  *            Received frames that exceed this stated maximum
  313  *            are truncated.
  314  * @pause_quant:    Pause quanta value used with transmitted pause frames.
  315  *            Each quanta represents a 512 bit-times.
  316  * @tx_ipg_length:    Transmit Inter-Packet-Gap (IPG) value. A 6-bit value:
  317  *            Depending on LAN or WAN mode of operation the value has
  318  *            the following meaning: - LAN Mode: Number of octets in
  319  *            steps of 4. Valid values are 8, 12, 16, ... 100. DIC is
  320  *            fully supported (see 10.6.1 page 49) for any setting. A
  321  *            default of 12 (reset value) must be set to conform to
  322  *            IEEE802.3ae. Warning: When set to 8, PCS layers may not
  323  *            be able to perform clock rate compensation. - WAN Mode:
  324  *            Stretch factor. Valid values are 4..15. The stretch
  325  *            factor is calculated as (value+1)*8. A default of 12
  326  *            (reset value) must be set to conform to IEEE 802.3ae
  327  *            (i.e. 13*8=104). A larger value shrinks the IPG
  328  *            (increasing bandwidth).
  329  *
  330  * This structure contains basic TGEC configuration and must be passed to
  331  * fman_tgec_init() function.  A default set of configuration values can be
  332  * obtained by calling fman_tgec_defconfig().
  333  */
  334 struct tgec_cfg {
  335         bool            rx_error_discard;
  336         bool            pause_ignore;
  337         bool            pause_forward_enable;
  338         bool            no_length_check_enable;
  339         bool            cmd_frame_enable;
  340         bool            send_idle_enable;
  341         bool            wan_mode_enable;
  342         bool            promiscuous_mode_enable;
  343         bool            tx_addr_ins_enable;
  344         bool            loopback_enable;
  345         bool            lgth_check_nostdr;
  346         bool            time_stamp_enable;
  347         uint16_t        max_frame_length;
  348         uint16_t        pause_quant;
  349         uint32_t        tx_ipg_length;
  350         bool            skip_fman11_workaround;
  351 };
  352 
  353 
  354 void fman_tgec_defconfig(struct tgec_cfg *cfg);
  355 
  356 /**
  357  * fman_tgec_init() - Init tgec hardware block
  358  * @regs:        Pointer to tgec register block
  359  * @cfg:        tgec configuration data
  360  * @exceptions_mask:    initial exceptions mask
  361  *
  362  * This function initializes the tgec controller and applies its
  363  * basic configuration.
  364  *
  365  * Returns: 0 if successful, an error code otherwise.
  366  */
  367 
  368 int fman_tgec_init(struct tgec_regs *regs, struct tgec_cfg *cfg,
  369         uint32_t exception_mask);
  370 
  371 void fman_tgec_enable(struct tgec_regs *regs, bool apply_rx, bool apply_tx);
  372 
  373 void fman_tgec_disable(struct tgec_regs *regs, bool apply_rx, bool apply_tx);
  374 
  375 uint32_t fman_tgec_get_revision(struct tgec_regs *regs);
  376 
  377 void fman_tgec_set_mac_address(struct tgec_regs *regs, uint8_t *macaddr);
  378 
  379 void fman_tgec_set_promiscuous(struct tgec_regs *regs, bool val);
  380 
  381 /**
  382  * fman_tgec_reset_stat() - Completely resets all TGEC HW counters
  383  * @regs:    Pointer to TGEC register block
  384  */
  385 void fman_tgec_reset_stat(struct tgec_regs *regs);
  386 
  387 /**
  388  * fman_tgec_get_counter() - Reads TGEC HW counters
  389  * @regs:    Pointer to TGEC register block
  390  * @reg_name:    Counter name according to the appropriate enum
  391  *
  392  * Returns:    Required counter value
  393  */
  394 uint64_t fman_tgec_get_counter(struct tgec_regs *regs,
  395         enum tgec_counters reg_name);
  396 
  397 /**
  398  * fman_tgec_set_hash_table() - Sets the Hashtable Control Register
  399  * @regs:    Pointer to TGEC register block
  400  * @value:    Value to be written in Hashtable Control Register
  401  */
  402 void fman_tgec_set_hash_table(struct tgec_regs *regs, uint32_t value);
  403 
  404 /**
  405  * fman_tgec_set_tx_pause_frames() - Sets the Pause Quanta Register
  406  * @regs:    Pointer to TGEC register block
  407  * @pause_time:    Pause quanta value used with transmitted pause frames.
  408  *        Each quanta represents a 512 bit-times
  409  */
  410 void fman_tgec_set_tx_pause_frames(struct tgec_regs *regs, uint16_t pause_time);
  411 
  412 /**
  413  * fman_tgec_set_rx_ignore_pause_frames() - Changes the policy WRT pause frames
  414  * @regs:    Pointer to TGEC register block
  415  * @en:        Ignore/Respond to pause frame quanta
  416  *
  417  * Sets the value of PAUSE_IGNORE field in the COMMAND_CONFIG Register
  418  * 0 - MAC stops transmit process for the duration specified
  419  * in the Pause frame quanta of a received Pause frame.
  420  * 1 - MAC ignores received Pause frames.
  421  */
  422 void fman_tgec_set_rx_ignore_pause_frames(struct tgec_regs *regs, bool en);
  423 
  424 /**
  425  * fman_tgec_enable_1588_time_stamp() - change timestamp functionality
  426  * @regs:    Pointer to TGEC register block
  427  * @en:        enable/disable timestamp functionality
  428  *
  429  * Sets the value of EN_TIMESTAMP field in the COMMAND_CONFIG Register
  430  * IEEE 1588 timestamp functionality control:
  431  * 0 disabled, 1 enabled
  432  */
  433 
  434 void fman_tgec_enable_1588_time_stamp(struct tgec_regs *regs, bool en);
  435 
  436 uint32_t fman_tgec_get_event(struct tgec_regs *regs, uint32_t ev_mask);
  437 
  438 void fman_tgec_ack_event(struct tgec_regs *regs, uint32_t ev_mask);
  439 
  440 uint32_t fman_tgec_get_interrupt_mask(struct tgec_regs *regs);
  441 
  442 /**
  443  * fman_tgec_add_addr_in_paddr() - Sets additional exact match MAC address
  444  * @regs:    Pointer to TGEC register block
  445  * @addr_ptr:    Pointer to 6-byte array containing the MAC address
  446  *
  447  * Sets the additional station MAC address
  448  */
  449 void fman_tgec_add_addr_in_paddr(struct tgec_regs *regs, uint8_t *addr_ptr);
  450 
  451 void fman_tgec_clear_addr_in_paddr(struct tgec_regs *regs);
  452 
  453 void fman_tgec_enable_interrupt(struct tgec_regs *regs, uint32_t ev_mask);
  454 
  455 void fman_tgec_disable_interrupt(struct tgec_regs *regs, uint32_t ev_mask);
  456 
  457 void fman_tgec_reset_filter_table(struct tgec_regs *regs);
  458 
  459 void fman_tgec_set_hash_table_entry(struct tgec_regs *regs, uint32_t crc);
  460 
  461 
  462 /**
  463  * fman_tgec_get_max_frame_len() - Returns the maximum frame length value
  464  * @regs:    Pointer to TGEC register block
  465  */
  466 uint16_t fman_tgec_get_max_frame_len(struct tgec_regs *regs);
  467 
  468 /**
  469  * fman_tgec_set_erratum_tx_fifo_corruption_10gmac_a007() - Initialize the
  470  * main tgec configuration parameters
  471  * @regs:    Pointer to TGEC register block
  472  *
  473  * TODO
  474  */
  475 void fman_tgec_set_erratum_tx_fifo_corruption_10gmac_a007(struct tgec_regs
  476         *regs);
  477 
  478 
  479 #endif /* __FSL_FMAN_TGEC_H */

Cache object: 042053d52037b4197f8dc76a19524db4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.