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/dev/qlnx/qlnxe/ecore_dbg_fw_funcs.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 (c) 2017-2018 Cavium, Inc. 
    3  * All rights reserved.
    4  *
    5  *  Redistribution and use in source and binary forms, with or without
    6  *  modification, are permitted provided that the following conditions
    7  *  are met:
    8  *
    9  *  1. Redistributions of source code must retain the above copyright
   10  *     notice, this list of conditions and the following disclaimer.
   11  *  2. Redistributions in binary form must reproduce the above copyright
   12  *     notice, this list of conditions and the following disclaimer in the
   13  *     documentation and/or other materials provided with the distribution.
   14  *
   15  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   16  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
   19  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   20  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   21  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   22  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   23  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   24  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   25  *  POSSIBILITY OF SUCH DAMAGE.
   26  *
   27  * $FreeBSD$
   28  *
   29  */
   30 
   31 #ifndef _DBG_FW_FUNCS_H
   32 #define _DBG_FW_FUNCS_H
   33 /**************************** Public Functions *******************************/
   34 
   35 /**
   36  * @brief ecore_dbg_set_bin_ptr - Sets a pointer to the binary data with debug
   37  * arrays.
   38  *
   39  * @param bin_ptr - a pointer to the binary data with debug arrays.
   40  */
   41 enum dbg_status ecore_dbg_set_bin_ptr(const u8 * const bin_ptr);
   42 
   43 /**
   44  * @brief ecore_dbg_set_app_ver - Sets the version of the calling app.
   45  *
   46  * The application should call this function with the TOOLS_VERSION
   47  * it compiles with. Must be called before all other debug functions.
   48  *
   49  * @return error if one of the following holds:
   50  *      - the specified app version is not supported
   51  * Otherwise, returns ok.
   52  */
   53 enum dbg_status ecore_dbg_set_app_ver(u32 ver);
   54 
   55 /**
   56  * @brief ecore_dbg_get_fw_func_ver - Returns the FW func version.
   57  *
   58  * @return the FW func version.
   59  */
   60 u32 ecore_dbg_get_fw_func_ver(void);
   61 
   62 /**
   63 * @brief ecore_dbg_get_chip_id - Returns the FW func version.
   64 *
   65 * @param p_hwfn - HW device data
   66 *
   67 * @return the chip ID.
   68 */
   69 enum chip_ids ecore_dbg_get_chip_id(struct ecore_hwfn *p_hwfn);
   70 
   71 /**
   72 * @brief ecore_read_regs - Reads registers into a buffer (using GRC).
   73 *
   74 * @param p_hwfn -       HW device data
   75 * @param p_ptt -        Ptt window used for writing the registers.
   76 * @param buf -  Destination buffer.
   77 * @param addr - Source GRC address in dwords.
   78 * @param len -  Number of registers to read.
   79 */
   80 void ecore_read_regs(struct ecore_hwfn *p_hwfn,
   81                                          struct ecore_ptt *p_ptt,
   82                                          u32 *buf,
   83                                          u32 addr,
   84                                          u32 len);
   85 
   86 /**
   87  * @brief ecore_dbg_bus_reset - Resets the Debug block.
   88  *
   89  * After reset:
   90  * - The last recording is erased.
   91  * - Recording is directed to the internal buffer.
   92  * - Wrap-around recording is selected.
   93  * - All HW blocks are disabled.
   94  * - All Storms are disabled and all SEM filters are cleared.
   95  *
   96  * @param p_hwfn -                  HW device data
   97  * @param p_ptt -                   Ptt window used for writing the registers.
   98  * @param one_shot_en -     Enable/Disable one-shot recording. If disabled,
   99  *                          wrap-around recording is used instead.
  100  * @param force_hw_dwords - If set to 0, no. of HW/Storm dwords per cycle is
  101  *                          chosen automatically based on the enabled inputs.
  102  *                          Otherwise, no. of HW dwords per cycle is forced to
  103  *                          the specified value. Valid values: 0/2/4/8.
  104  * @param unify_inputs -    If true, all recorded data is associated with a
  105  *                          single input, as if all data was received from the
  106  *                          same block. Otherwise, each data unit is associated
  107  *                          with its original input.
  108  * @param grc_input_en -    Enable/Disable recording GRC input. If enabled, the
  109  *                          GRC input is recorded to the lsb dword of a cycle.
  110  *
  111  * @return error if one of the following holds:
  112  *      - the version wasn't set
  113  *      - force_hw_dwords is invalid.
  114  * Otherwise, returns ok.
  115  */
  116 enum dbg_status ecore_dbg_bus_reset(struct ecore_hwfn *p_hwfn,
  117                                                                         struct ecore_ptt *p_ptt,
  118                                                                         bool one_shot_en,
  119                                                                         u8 force_hw_dwords,
  120                                                                         bool unify_inputs,
  121                                                                         bool grc_input_en);
  122 
  123 /**
  124  * @brief ecore_dbg_bus_set_pci_output - Directs debug output to a PCI buffer.
  125  *
  126  * @param p_hwfn -              HW device data
  127  * @param p_ptt -               Ptt window used for writing the registers.
  128  * @param buf_size_kb - Size of PCI buffer to allocate (in KB). Must be aligned
  129  *                      to PCI request size.
  130  *
  131  * @return error if one of the following holds:
  132  *      - the Debug block wasn't reset since last recording
  133  *      - the version wasn't set
  134  *      - the output was already set
  135  *      - the PCI buffer size is not aligned to PCI packet size
  136  *      - the PCI buffer allocation failed
  137  * Otherwise, returns ok.
  138  */
  139 enum dbg_status ecore_dbg_bus_set_pci_output(struct ecore_hwfn *p_hwfn,
  140                                                                                          struct ecore_ptt *p_ptt,
  141                                                                                          u16 buf_size_kb);
  142 
  143 /**
  144  * @brief ecore_dbg_bus_set_nw_output - Directs debug output to the network.
  145  *
  146  * @param p_hwfn -                      HW device data
  147  * @param p_ptt -                       Ptt window used for writing the registers.
  148  * @param port_id -             Port ID to transmit the debug data on
  149  * @param dest_addr_lo32 -      Destination MAC address (for Eth header)
  150  * @param dest_addr_hi16
  151  * @param data_limit_size_kb -  Data limit size in KB (valid only for one-shot)
  152  *                              If set to 0, data limit won't be configured. 
  153  * @param send_to_other_engine -If true:
  154  *                              1) The NW output will be sent to the DBG block
  155  *                                 of the other engine.
  156  *                              2) port_id argument is ignored.
  157  *                              3) rcv_from_other_engine should be set to false
  158  *                                 The other engine DBG block should call this
  159  *                                 function with rcv_from_other_engine set to
  160  *                                 true.
  161  * @param rcv_from_other_engine-If true:
  162  *                              1) the DBG block receives the NW output sent
  163  *                                 from the other engine DBG block, and sends
  164  *                                 it to a NW port in the current engine
  165  *                                 (according to port_id).
  166  *                              2) The src/dest addresses and eth_type
  167  *                                 arguments are ignored.
  168  *                              3) send_to_other_engine should be set to false.
  169  *                                 The other engine DBG block should call this
  170  *                                 function with send_to_other_engine set to
  171  *                                 true.
  172  *
  173  * @return error if one of the following holds:
  174  *      - the Debug block wasn't reset since last recording
  175  *      - the version wasn't set
  176  *      - the output was already set
  177  * Otherwise, returns ok.
  178  */
  179 enum dbg_status ecore_dbg_bus_set_nw_output(struct ecore_hwfn *p_hwfn,
  180                                                                                         struct ecore_ptt *p_ptt,
  181                                                                                         u8 port_id,
  182                                                                                         u32 dest_addr_lo32,
  183                                                                                         u16 dest_addr_hi16,
  184                                                                                         u16 data_limit_size_kb,
  185                                                                                         bool send_to_other_engine,
  186                                                                                         bool rcv_from_other_engine);
  187 
  188 /**
  189  * @brief ecore_dbg_bus_enable_block - Enables recording of the specified block
  190  *
  191  * Each recording cycle contains 4 "units". If the recorded HW data requires up
  192  * to 4 dwords per cycle, each unit is one dword (32 bits). Otherwise, each
  193  * unit is 2 dwords (64 bits).
  194  *
  195  * @param p_hwfn -              HW device data
  196  * @param block -       block to be enabled.
  197  * @param line_num -    debug line number to select.
  198  * @param cycle_en -    4-bit value. If bit i is set, unit i is enabled.
  199  * @param right_shift - number of units to  right the debug data (0-3).
  200  * @param force_valid - 4-bit value. If bit i is set, unit i is forced valid.
  201  * @param force_frame - 4-bit value. If bit i is set, the frame bit of unit i
  202  *                      is forced.
  203  *
  204  * @return error if one of the following holds:
  205  *      - the Debug block wasn't reset since last recording
  206  *      - the version wasn't set
  207  *      - block is not valid
  208  *      - block was already enabled
  209  *      - cycle_en, force_valid or force_frame are wider than 4 bits
  210  *      - right_shift is larger than 3
  211  *      - cycle unit 0 is enabled, but GRC or timestamp were also enabled.
  212  *      - Too many inputs were enabled.
  213  * Otherwise, returns ok.
  214  */
  215 enum dbg_status ecore_dbg_bus_enable_block(struct ecore_hwfn *p_hwfn,
  216                                                                                    enum block_id block,
  217                                                                                    u8 line_num,
  218                                                                                    u8 cycle_en,
  219                                                                                    u8 right_shift,
  220                                                                                    u8 force_valid,
  221                                                                                    u8 force_frame);
  222 
  223 /**
  224  * @brief ecore_dbg_bus_enable_storm - Enables recording of the specified Storm
  225  *
  226  * @param p_hwfn -              HW device data
  227  * @param storm -       Storm to be enabled.
  228  * @param storm_mode-   Storm mode
  229  *
  230  * @return error if one of the following holds:
  231  *      - the Debug block wasn't reset since last recording
  232  *      - the version wasn't set
  233  *      - the specified storm or mode is invalid
  234  *      - Storm was already enabled
  235  *      - only HW data can be recorded
  236  *      - Too many inputs were enabled.
  237  * Otherwise, returns ok.
  238  */
  239 enum dbg_status ecore_dbg_bus_enable_storm(struct ecore_hwfn *p_hwfn,
  240                                                                                    enum dbg_storms storm,
  241                                                                                    enum dbg_bus_storm_modes storm_mode);
  242 
  243 /**
  244  * @brief ecore_dbg_bus_enable_timestamp - Enables timestamp recording.
  245  *
  246  * When enabled, the timestamp input is always recorded to the lsb dword of
  247  * a cycle, with HW ID 0.
  248  *
  249  * @param p_hwfn -           HW device data
  250  * @param p_ptt -            Ptt window used for writing the registers.
  251  * @param valid_en - 3-bit value. The Timestamp will be recorded in a cycle if
  252  *                   bit i is set and unit i+1 is valid.
  253  * @param frame_en - 3-bit value. The Timestamp will be recorded in a cycle if
  254  *                   bit i is set and unit i+1 has frame bit set.
  255  * @param tick_len - timestamp tick length in cycles, minus 1. A value of 0
  256  *                   means one cycle.
  257  *
  258  * @return error if one of the following holds:
  259  *      - the Debug block wasn't reset since last recording
  260  *      - the version wasn't set
  261  *      - valid_en or frame_en are wider than 4 bits
  262  *      - Both timestamp and GRC are enabled.
  263  * Otherwise, returns ok.
  264  */
  265 enum dbg_status ecore_dbg_bus_enable_timestamp(struct ecore_hwfn *p_hwfn,
  266                                                                                            struct ecore_ptt *p_ptt,
  267                                                                                            u8 valid_en,
  268                                                                                            u8 frame_en,
  269                                                                                            u32 tick_len);
  270 
  271 /**
  272  * @brief ecore_dbg_bus_add_eid_range_sem_filter- Add Event ID range SEM filter
  273  *
  274  * @param p_hwfn -     HW device data
  275  * @param storm -   Storm to be filtered.
  276  * @param min_eid - minimal Event ID to filter on.
  277  * @param max_eid - maximal Event ID to filter on.
  278  *
  279  * @return error if one of the following holds:
  280  *      - the specified Storm is invalid
  281  *      - the specified Storm wasn't enabled
  282  *      - the EID range is not valid
  283  * Otherwise, returns ok.
  284  */
  285 enum dbg_status ecore_dbg_bus_add_eid_range_sem_filter(struct ecore_hwfn *p_hwfn,
  286                                                                                                            enum dbg_storms storm,
  287                                                                                                            u8 min_eid,
  288                                                                                                            u8 max_eid);
  289 
  290 /**
  291  * @brief ecore_dbg_bus_add_eid_mask_sem_filter - Add Event ID mask SEM filter
  292  *
  293  * @param p_hwfn -      HW device data
  294  * @param storm -    Storm to be filtered.
  295  * @param eid_val -  Event ID value.
  296  * @param eid_mask - Event ID mask. 0's in the mask = don't care bits.
  297  *
  298  * @return error if one of the following holds:
  299  *      - the specified Storm is invalid
  300  *      - the specified Storm wasn't enabled
  301  * Otherwise, returns ok.
  302  */
  303 enum dbg_status ecore_dbg_bus_add_eid_mask_sem_filter(struct ecore_hwfn *p_hwfn,
  304                                                                                                           enum dbg_storms storm,
  305                                                                                                           u8 eid_val,
  306                                                                                                           u8 eid_mask);
  307 
  308 /**
  309  * @brief ecore_dbg_bus_add_cid_sem_filter - Adds a CID SEM filter.
  310  *
  311  * @param p_hwfn -   HW device data
  312  * @param storm - Storm to be filtered.
  313  * @param cid -   CID to filter on.
  314  *
  315  * @return error if one of the following holds:
  316  *      - the specified Storm is invalid
  317  *      - the specified Storm wasn't enabled
  318  * Otherwise, returns ok.
  319  */
  320 enum dbg_status ecore_dbg_bus_add_cid_sem_filter(struct ecore_hwfn *p_hwfn,
  321                                                                                                  enum dbg_storms storm,
  322                                                                                                  u32 cid);
  323 
  324 /**
  325  * @brief ecore_dbg_bus_enable_filter - Enables the recording filter.
  326  *
  327  * A filter contains up to 4 constraints. The data is "filtered in" when the
  328  * added constraints hold.
  329  *
  330  * @param p_hwfn -                HW device data
  331  * @param p_ptt -                 Ptt window used for writing the registers.
  332  * @param block -         block to filter on.
  333  * @param const_msg_len - Constant message length (in cycles) to be used for
  334  *                        message-based filter constraints. If set to 0,
  335  *                        message length is based only on frame bit received
  336  *                        from HW (no constant message length).
  337  *
  338  * @return error if one of the following holds:
  339  *      - the Debug block wasn't reset since last recording
  340  *      - the version wasn't set
  341  *      - the filter was already enabled
  342  *      - block is not valid or not enabled
  343  *      - more than 4 dwords are recorded per-cycle (forbids filters)
  344  * Otherwise, returns ok.
  345  */
  346 enum dbg_status ecore_dbg_bus_enable_filter(struct ecore_hwfn *p_hwfn,
  347                                                                                         struct ecore_ptt *p_ptt,
  348                                                                                         enum block_id block,
  349                                                                                         u8 const_msg_len);
  350 
  351 /**
  352  * @brief ecore_dbg_bus_enable_trigger - Enables the recording trigger.
  353  *
  354  * A trigger contains up to 3 states, where each state contains up to
  355  * 4 constraints. After the constraints of a state hold for a specified number
  356  * of times, the DBG block moves to the next state. If there's no next state,
  357  * the DBG block triggers.
  358  *
  359  * @param p_hwfn -                      HW device data
  360  * @param p_ptt -                       Ptt window used for writing the registers.
  361  * @param rec_pre_trigger -     if true, recording starts before the trigger.
  362  *                              if false, recording starts at the trigger.
  363  * @param pre_chunks -          max number of chunks to record before the
  364  *                              trigger (1-47). If set to 0, recording starts
  365  *                              from time 0. Ignored if rec_pre_trigger is
  366  *                              false.
  367  * @param rec_post_trigger -    if true, recording ends after the trigger.
  368  *                              if false, recording ends at the trigger.
  369  * @param post_cycles -         max number of cycles to record after the
  370  *                              trigger (0x1-0xffffffff). If set to 0,
  371  *                              recording ends only when stopped by the user.
  372  *                              Ignored if rec_post_trigger is false.
  373  * @param filter_pre_trigger -  if true, data is filtered before the trigger.
  374  *                              Ignored if the filter wasn't enabled.
  375  * @param filter_post_trigger - if true, data is filtered after the trigger.
  376  *                              Ignored if the filter wasn't enabled.
  377  *
  378  * @return error if one of the following holds:
  379  *      - the Debug block wasn't reset since last recording
  380  *      - the version wasn't set
  381  *      - the trigger was already enabled
  382  *      - more than 4 dwords are recorded per-cycle (forbids triggers)
  383  *      - pre_chunks is not in the range 0-47. 
  384  * Otherwise, returns ok.
  385  */
  386 enum dbg_status ecore_dbg_bus_enable_trigger(struct ecore_hwfn *p_hwfn,
  387                                                                                          struct ecore_ptt *p_ptt,
  388                                                                                          bool rec_pre_trigger,
  389                                                                                          u8 pre_chunks,
  390                                                                                          bool rec_post_trigger,
  391                                                                                          u32 post_cycles,
  392                                                                                          bool filter_pre_trigger,
  393                                                                                          bool filter_post_trigger);
  394 
  395 /**
  396  * @brief ecore_dbg_bus_add_trigger_state - Adds a trigger state.
  397  *
  398  * Up to 3 trigger states can be added, where each state contains up to
  399  * 4 constraints. After the constraints of a state hold for the specified
  400  * number of times, the DBG block moves to the next state. If there's no next
  401  * state, the DBG block triggers.
  402  *
  403  * @param p_hwfn -                HW device data
  404  * @param p_ptt -                 Ptt window used for writing the registers.
  405  * @param block -         block to trigger on.
  406  * @param const_msg_len - Constant message length (in cycles) to be used for
  407  *                        message-based filter constraints. If set to 0,
  408  *                        message length is based only on frame bit received
  409  *                        from HW (no constant message length).
  410  * @param count_to_next - The number of times the constraints of the state
  411  *                        should hold before moving to the next state. Must be
  412  *                        non-zero.
  413  *
  414  * @return error if one of the following holds:
  415  *      - The trigger wasn't enabled.
  416  *      - more than 3 trigger states were added
  417  *      - block is not valid or not enabled
  418  *      - count_to_next is 0
  419  * Otherwise, returns ok.
  420  */
  421 enum dbg_status ecore_dbg_bus_add_trigger_state(struct ecore_hwfn *p_hwfn,
  422                                                                                                 struct ecore_ptt *p_ptt,
  423                                                                                                 enum block_id block,
  424                                                                                                 u8 const_msg_len,
  425                                                                                                 u16 count_to_next);
  426 
  427 /**
  428  * @brief ecore_dbg_bus_add_constraint - Adds a filter/trigger constraint.
  429  *
  430  * The constraint is added to a filter or trigger state, which ever was added
  431  * last. The filter/trigger happens if both of the following hold:
  432  * 1. All mandatory constraints are true.
  433  * 2. At least one optional (non-mandatory) constraints is true.
  434  *
  435  * @param p_hwfn -                        HW device data
  436  * @param p_ptt -                         Ptt window used for writing the registers.
  437  * @param op -                    constraint operation
  438  * @param data -                  32-bit data to compare with the recorded
  439  *                                data.
  440  * @param data_mask -             32-bit mask for data comparison. If mask bit
  441  *                                i is 1, data bit i is compared, otherwise
  442  *                                it's ignored.
  443  *                                For eq/ne operations: any mask can be used.
  444  *                                For other operations: the mask must be
  445  *                                non-zero, and the 1's in the mask must be
  446  *                                continuous.
  447  * @param compare_frame -         indicates if the frame bit should be
  448  *                                compared. Must be false for all operations
  449  *                                other than eq/ne.
  450  * @param frame_bit -             frame bit to compare with the recorded data
  451  *                                (0/1). ignored if compare_frame is false.
  452  * @param cycle_offset -          offset in cycles from the beginning of the
  453  *                                message, where cycle = 4 dwords.
  454  * @param dword_offset_in_cycle - offset in dwords from the beginning of the
  455  *                                cycle (0-3).
  456  * @param is_mandatory -          indicates if this constraint is mandatory
  457  *                                (true) or optional (false). The data is
  458  *                                filtered-in if all mandatory constraints hold
  459  *                                AND at least one optional constraint (if
  460  *                                added) holds.
  461  *
  462  * @return error if one of the following holds:
  463  *      - a filter or trigger state weren't enabled
  464  *      - all 4 filter constraints were added already
  465  *      - the op string is invalid
  466  *      - the data mask is invalid.
  467  *      - frame bit is not 0/1.
  468  *      - cycle_offset and dword_offset are not in the range 0-3.
  469  *      - compare_frame is true and operation is not eq/ne.
  470  * Otherwise, returns ok.
  471  */
  472 enum dbg_status ecore_dbg_bus_add_constraint(struct ecore_hwfn *p_hwfn,
  473                                                                                          struct ecore_ptt *p_ptt,
  474                                                                                          enum dbg_bus_constraint_ops constraint_op,
  475                                                                                          u32 data,
  476                                                                                          u32 data_mask,
  477                                                                                          bool compare_frame,
  478                                                                                          u8 frame_bit,
  479                                                                                          u8 cycle_offset,
  480                                                                                          u8 dword_offset_in_cycle,
  481                                                                                          bool is_mandatory);
  482 
  483 /**
  484  * @brief ecore_dbg_bus_start - Starts the recording.
  485  *
  486  * @param p_hwfn - HW device data
  487  * @param p_ptt - Ptt window used for writing the registers.
  488  *
  489  * @return error if one of the following holds:
  490  *      - the Debug block wasn't reset since last recording
  491  *      - the version wasn't set
  492  * Otherwise, returns ok.
  493  */
  494 enum dbg_status ecore_dbg_bus_start(struct ecore_hwfn *p_hwfn,
  495                                                                         struct ecore_ptt *p_ptt);
  496 
  497 /**
  498  * @brief ecore_dbg_bus_stop - Stops the recording and flushes the internal
  499  * buffer.
  500  *
  501  * @param p_hwfn - HW device data
  502  * @param p_ptt - Ptt window used for writing the registers.
  503  *
  504  * @return error if a recording is not in progress, ok otherwise.
  505  */
  506 enum dbg_status ecore_dbg_bus_stop(struct ecore_hwfn *p_hwfn,
  507                                                                    struct ecore_ptt *p_ptt);
  508 
  509 /**
  510  * @brief ecore_dbg_bus_get_dump_buf_size - Returns the required buffer size
  511  * for Debug Bus recording.
  512  *
  513  * @param p_hwfn -      HW device data
  514  * @param p_ptt -            Ptt window used for writing the registers.
  515  * @param buf_size - OUT: the required size (in dwords) of the buffer for
  516  *                   dumping the recorded Debug Bus data. If recording to the
  517  *                   internal buffer, the size of the internal buffer is
  518  *                   returned. If recording to PCI, the size of the PCI buffer
  519  *                   is returned. Otherwise, 0 is returned.
  520  *
  521  * @return error if one of the following holds:
  522  *      - the version wasn't set
  523  * Otherwise, returns ok.
  524  */
  525 enum dbg_status ecore_dbg_bus_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  526                                                                                                 struct ecore_ptt *p_ptt,
  527                                                                                                 u32 *buf_size);
  528 
  529 /**
  530  * @brief ecore_dbg_bus_dump - Dumps the recorded Debug Bus data into the
  531  * specified buffer.
  532  *
  533  * The dumped data starts with a header. If recording to NW, only a header is
  534  * dumped. The dumped size is assigned to num_dumped_dwords.
  535  *
  536  * @param p_hwfn -                      HW device data
  537  * @param p_ptt -                       Ptt window used for writing the registers.
  538  * @param dump_buf -            Pointer to copy the recorded data into.
  539  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  540  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  541  *
  542  * @return error if one of the following holds:
  543  *      - a recording wasn't started/stopped
  544  *      - the specified dump buffer is too small
  545  * Otherwise, returns ok.
  546  */
  547 enum dbg_status ecore_dbg_bus_dump(struct ecore_hwfn *p_hwfn,
  548                                                                    struct ecore_ptt *p_ptt,
  549                                                                    u32 *dump_buf,
  550                                                                    u32 buf_size_in_dwords,
  551                                                                    u32 *num_dumped_dwords);
  552 
  553 /**
  554  * @brief ecore_dbg_grc_config - Sets the value of a GRC parameter.
  555  *
  556  * @param p_hwfn -              HW device data
  557  * @param grc_param -   GRC parameter
  558  * @param val -         Value to set.
  559 
  560  * @return error if one of the following holds:
  561  *      - the version wasn't set
  562  *      - grc_param is invalid
  563  *      - val is outside the allowed boundaries
  564  */
  565 enum dbg_status ecore_dbg_grc_config(struct ecore_hwfn *p_hwfn,
  566                                                                          enum dbg_grc_params grc_param,
  567                                                                          u32 val);
  568 
  569 /**
  570 * @brief ecore_dbg_grc_set_params_default - Reverts all GRC parameters to their
  571 * default value.
  572 *
  573 * @param p_hwfn - HW device data
  574 */
  575 void ecore_dbg_grc_set_params_default(struct ecore_hwfn *p_hwfn);
  576 
  577 /**
  578  * @brief ecore_dbg_grc_get_dump_buf_size - Returns the required buffer size
  579  * for GRC Dump.
  580  *
  581  * @param p_hwfn -      HW device data
  582  * @param p_ptt -            Ptt window used for writing the registers.
  583  * @param buf_size - OUT: required buffer size (in dwords) for GRC Dump data.
  584  *
  585  * @return error if one of the following holds:
  586  *      - the version wasn't set
  587  * Otherwise, returns ok.
  588  */
  589 enum dbg_status ecore_dbg_grc_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  590                                                                                                 struct ecore_ptt *p_ptt,
  591                                                                                                 u32 *buf_size);
  592 
  593 /**
  594  * @brief ecore_dbg_grc_dump - Dumps GRC data into the specified buffer.
  595  *
  596  * @param p_hwfn -                      HW device data
  597  * @param p_ptt -                       Ptt window used for writing the registers.
  598  * @param dump_buf -            Pointer to write the collected GRC data into.
  599  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  600  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  601  *
  602  * @return error if one of the following holds:
  603  *      - the version wasn't set
  604  *      - the specified dump buffer is too small
  605  * Otherwise, returns ok.
  606  */
  607 enum dbg_status ecore_dbg_grc_dump(struct ecore_hwfn *p_hwfn,
  608                                                                    struct ecore_ptt *p_ptt,
  609                                                                    u32 *dump_buf,
  610                                                                    u32 buf_size_in_dwords,
  611                                                                    u32 *num_dumped_dwords);
  612 
  613 /**
  614  * @brief ecore_dbg_idle_chk_get_dump_buf_size - Returns the required buffer
  615  * size for idle check results.
  616  *
  617  * @param p_hwfn -      HW device data
  618  * @param p_ptt -      Ptt window used for writing the registers.
  619  * @param buf_size - OUT: required buffer size (in dwords) for idle check data.
  620  *
  621  * @return error if one of the following holds:
  622  *      - the version wasn't set
  623  * Otherwise, returns ok.
  624  */
  625 enum dbg_status ecore_dbg_idle_chk_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  626                                                                                                          struct ecore_ptt *p_ptt,
  627                                                                                                          u32 *buf_size);
  628 
  629 /**
  630  * @brief ecore_dbg_idle_chk_dump - Performs idle check and writes the results
  631  * into the specified buffer.
  632  *
  633  * @param p_hwfn -                      HW device data
  634  * @param p_ptt -                       Ptt window used for writing the registers.
  635  * @param dump_buf -            Pointer to write the idle check data into.
  636  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  637  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  638  *
  639  * @return error if one of the following holds:
  640  *      - the version wasn't set
  641  *      - the specified buffer is too small
  642  * Otherwise, returns ok.
  643  */
  644 enum dbg_status ecore_dbg_idle_chk_dump(struct ecore_hwfn *p_hwfn,
  645                                                                                 struct ecore_ptt *p_ptt,
  646                                                                                 u32 *dump_buf,
  647                                                                                 u32 buf_size_in_dwords,
  648                                                                                 u32 *num_dumped_dwords);
  649 
  650 /**
  651  * @brief ecore_dbg_mcp_trace_get_dump_buf_size - Returns the required buffer
  652  * size for mcp trace results.
  653  *
  654  * @param p_hwfn -           HW device data
  655  * @param p_ptt -            Ptt window used for writing the registers.
  656  * @param buf_size - OUT: required buffer size (in dwords) for mcp trace data.
  657  *
  658  * @return error if one of the following holds:
  659  *      - the version wasn't set
  660  *      - the trace data in MCP scratchpad contain an invalid signature
  661  *      - the bundle ID in NVRAM is invalid
  662  *      - the trace meta data cannot be found (in NVRAM or image file)
  663  * Otherwise, returns ok.
  664  */
  665 enum dbg_status ecore_dbg_mcp_trace_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  666                                                                                                           struct ecore_ptt *p_ptt,
  667                                                                                                           u32 *buf_size);
  668 
  669 /**
  670  * @brief ecore_dbg_mcp_trace_dump - Performs mcp trace and writes the results
  671  * into the specified buffer.
  672  *
  673  * @param p_hwfn -                      HW device data
  674  * @param p_ptt -                       Ptt window used for writing the registers.
  675  * @param dump_buf -            Pointer to write the mcp trace data into.
  676  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  677  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  678  *
  679  * @return error if one of the following holds:
  680  *      - the version wasn't set
  681  *      - the specified buffer is too small
  682  *      - the trace data in MCP scratchpad contain an invalid signature
  683  *      - the bundle ID in NVRAM is invalid
  684  *      - the trace meta data cannot be found (in NVRAM or image file)
  685  *      - the trace meta data cannot be read (from NVRAM or image file)
  686  * Otherwise, returns ok.
  687  */
  688 enum dbg_status ecore_dbg_mcp_trace_dump(struct ecore_hwfn *p_hwfn,
  689                                                                                  struct ecore_ptt *p_ptt,
  690                                                                                  u32 *dump_buf,
  691                                                                                  u32 buf_size_in_dwords,
  692                                                                                  u32 *num_dumped_dwords);
  693 
  694 /**
  695  * @brief ecore_dbg_reg_fifo_get_dump_buf_size - Returns the required buffer
  696  * size for grc trace fifo results.
  697  *
  698  * @param p_hwfn -      HW device data
  699  * @param p_ptt -      Ptt window used for writing the registers.
  700  * @param buf_size - OUT: required buffer size (in dwords) for reg fifo data.
  701  *
  702  * @return error if one of the following holds:
  703  *      - the version wasn't set
  704  * Otherwise, returns ok.
  705  */
  706 enum dbg_status ecore_dbg_reg_fifo_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  707                                                                                                          struct ecore_ptt *p_ptt,
  708                                                                                                          u32 *buf_size);
  709 
  710 /**
  711  * @brief ecore_dbg_reg_fifo_dump - Reads the reg fifo and writes the results
  712  * into the specified buffer.
  713  *
  714  * @param p_hwfn -                      HW device data
  715  * @param p_ptt -                       Ptt window used for writing the registers.
  716  * @param dump_buf -            Pointer to write the reg fifo data into.
  717  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  718  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  719  *
  720  * @return error if one of the following holds:
  721  *      - the version wasn't set
  722  *      - the specified buffer is too small
  723  *      - DMAE transaction failed
  724  * Otherwise, returns ok.
  725  */
  726 enum dbg_status ecore_dbg_reg_fifo_dump(struct ecore_hwfn *p_hwfn,
  727                                                                                 struct ecore_ptt *p_ptt,
  728                                                                                 u32 *dump_buf,
  729                                                                                 u32 buf_size_in_dwords,
  730                                                                                 u32 *num_dumped_dwords);
  731 
  732 /**
  733 * @brief ecore_dbg_igu_fifo_get_dump_buf_size - Returns the required buffer
  734 * size for the IGU fifo results.
  735 *
  736 * @param p_hwfn -      HW device data
  737 * @param p_ptt -      Ptt window used for writing the registers.
  738 * @param buf_size - OUT: required buffer size (in dwords) for IGU fifo data.
  739 *
  740 * @return error if one of the following holds:
  741 *       - the version wasn't set
  742 * Otherwise, returns ok.
  743 */
  744 enum dbg_status ecore_dbg_igu_fifo_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  745                                                                                                          struct ecore_ptt *p_ptt,
  746                                                                                                          u32 *buf_size);
  747 
  748 /**
  749 * @brief ecore_dbg_igu_fifo_dump - Reads the IGU fifo and writes the results
  750 * into the specified buffer.
  751 *
  752 * @param p_hwfn -                       HW device data
  753 * @param p_ptt -                        Ptt window used for writing the registers.
  754 * @param dump_buf -             Pointer to write the IGU fifo data into.
  755 * @param buf_size_in_dwords -   Size of the specified buffer in dwords.
  756 * @param num_dumped_dwords -    OUT: number of dumped dwords.
  757 *
  758 * @return error if one of the following holds:
  759 *       - the version wasn't set
  760 *       - the specified buffer is too small
  761 *       - DMAE transaction failed
  762 * Otherwise, returns ok.
  763 */
  764 enum dbg_status ecore_dbg_igu_fifo_dump(struct ecore_hwfn *p_hwfn,
  765                                                                                 struct ecore_ptt *p_ptt,
  766                                                                                 u32 *dump_buf,
  767                                                                                 u32 buf_size_in_dwords,
  768                                                                                 u32 *num_dumped_dwords);
  769 
  770 /**
  771  * @brief ecore_dbg_protection_override_get_dump_buf_size - Return the required
  772  * buffer size for protection override window results.
  773  *
  774  * @param p_hwfn -      HW device data
  775  * @param p_ptt -      Ptt window used for writing the registers.
  776  * @param buf_size - OUT: required buffer size (in dwords) for protection
  777  *                   override data.
  778  *
  779  * @return error if one of the following holds:
  780  *      - the version wasn't set
  781  * Otherwise, returns ok.
  782  */
  783 enum dbg_status ecore_dbg_protection_override_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  784                                                                                                                                 struct ecore_ptt *p_ptt,
  785                                                                                                                                 u32 *buf_size);
  786 /**
  787  * @brief ecore_dbg_protection_override_dump - Reads protection override window
  788  * entries and writes the results into the specified buffer.
  789  *
  790  * @param p_hwfn -                      HW device data
  791  * @param p_ptt -                       Ptt window used for writing the registers.
  792  * @param dump_buf -            Pointer to write the protection override data
  793  *                              into.
  794  * @param buf_size_in_dwords -  Size of the specified buffer in dwords.
  795  * @param num_dumped_dwords -   OUT: number of dumped dwords.
  796  *
  797  * @return error if one of the following holds:
  798  *      - the version wasn't set
  799  *      - the specified buffer is too small
  800  *      - DMAE transaction failed
  801  * Otherwise, returns ok.
  802  */
  803 enum dbg_status ecore_dbg_protection_override_dump(struct ecore_hwfn *p_hwfn,
  804                                                                                                    struct ecore_ptt *p_ptt,
  805                                                                                                    u32 *dump_buf,
  806                                                                                                    u32 buf_size_in_dwords,
  807                                                                                                    u32 *num_dumped_dwords);
  808 
  809 /**
  810 * @brief ecore_dbg_fw_asserts_get_dump_buf_size - Returns the required buffer
  811 * size for FW Asserts results.
  812 *
  813 * @param p_hwfn -           HW device data
  814 * @param p_ptt -            Ptt window used for writing the registers.
  815 * @param buf_size - OUT: required buffer size (in dwords) for FW Asserts data.
  816 *
  817 * @return error if one of the following holds:
  818 *       - the version wasn't set
  819 * Otherwise, returns ok.
  820 */
  821 enum dbg_status ecore_dbg_fw_asserts_get_dump_buf_size(struct ecore_hwfn *p_hwfn,
  822                                                                                                            struct ecore_ptt *p_ptt,
  823                                                                                                            u32 *buf_size);
  824 
  825 /**
  826 * @brief ecore_dbg_fw_asserts_dump - Reads the FW Asserts and writes the
  827 * results into the specified buffer.
  828 *
  829 * @param p_hwfn -                       HW device data
  830 * @param p_ptt -                        Ptt window used for writing the registers.
  831 * @param dump_buf -             Pointer to write the FW Asserts data into.
  832 * @param buf_size_in_dwords -   Size of the specified buffer in dwords.
  833 * @param num_dumped_dwords -    OUT: number of dumped dwords.
  834 *
  835 * @return error if one of the following holds:
  836 *       - the version wasn't set
  837 *       - the specified buffer is too small
  838 * Otherwise, returns ok.
  839 */
  840 enum dbg_status ecore_dbg_fw_asserts_dump(struct ecore_hwfn *p_hwfn,
  841                                                                                   struct ecore_ptt *p_ptt,
  842                                                                                   u32 *dump_buf,
  843                                                                                   u32 buf_size_in_dwords,
  844                                                                                   u32 *num_dumped_dwords);
  845 
  846 /**
  847 * @brief ecore_dbg_read_attn - Reads the attention registers of the specified
  848 * block and type, and writes the results into the specified buffer.
  849 *
  850 * @param p_hwfn -               HW device data
  851 * @param p_ptt -                Ptt window used for writing the registers.
  852 * @param block -        Block ID.
  853 * @param attn_type -    Attention type.
  854 * @param clear_status - Indicates if the attention status should be cleared.
  855 * @param results -      OUT: Pointer to write the read results into
  856 *
  857 * @return error if one of the following holds:
  858 *       - the version wasn't set
  859 * Otherwise, returns ok.
  860 */
  861 enum dbg_status ecore_dbg_read_attn(struct ecore_hwfn *p_hwfn,
  862                                                                         struct ecore_ptt *p_ptt,
  863                                                                         enum block_id block,
  864                                                                         enum dbg_attn_type attn_type,
  865                                                                         bool clear_status,
  866                                                                         struct dbg_attn_block_result *results);
  867                                                                         
  868 /**
  869 * @brief ecore_dbg_print_attn - Prints attention registers values in the
  870 * specified results struct.
  871 *
  872 * @param p_hwfn -     HW device data
  873 * @param results - Pointer to the attention read results
  874 *
  875 * @return error if one of the following holds:
  876 *       - the version wasn't set
  877 * Otherwise, returns ok.
  878 */
  879 enum dbg_status ecore_dbg_print_attn(struct ecore_hwfn *p_hwfn,
  880                                                                          struct dbg_attn_block_result *results);
  881 
  882 /**
  883 * @brief ecore_is_block_in_reset - Returns true if the specified block is in
  884 * reset, false otherwise.
  885 *
  886 * @param p_hwfn   - HW device data
  887 * @param p_ptt   - Ptt window used for writing the registers.
  888 * @param block - Block ID.
  889 *
  890 * @return true if the specified block is in reset, false otherwise.
  891 */
  892 bool ecore_is_block_in_reset(struct ecore_hwfn *p_hwfn,
  893                                                          struct ecore_ptt *p_ptt,
  894                                                          enum block_id block);
  895 
  896 #endif

Cache object: 9e4dbfeea7da7756b8687a688f7d0b14


[ 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.