Print this page
NEX-5717 import QLogic 16G FC drivers
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_init.h
          +++ new/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_init.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22      -/* Copyright 2009 QLogic Corporation */
       22 +/* Copyright 2015 QLogic Corporation */
  23   23  
  24   24  /*
  25      - * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  26      - * Use is subject to license terms.
       25 + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  27   26   */
  28   27  
  29   28  #ifndef _QL_INIT_H
  30   29  #define _QL_INIT_H
  31   30  
  32   31  /*
  33   32   * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
  34   33   *
  35   34   * ***********************************************************************
  36   35   * *                                                                    **
  37   36   * *                            NOTICE                                  **
  38      - * *            COPYRIGHT (C) 1996-2009 QLOGIC CORPORATION              **
       37 + * *            COPYRIGHT (C) 1996-2015 QLOGIC CORPORATION              **
  39   38   * *                    ALL RIGHTS RESERVED                             **
  40   39   * *                                                                    **
  41   40   * ***********************************************************************
  42   41   *
  43   42   */
  44   43  
  45   44  #ifdef  __cplusplus
  46   45  extern "C" {
  47   46  #endif
  48   47  
       48 +extern  uint32_t ql_task_cb_dly;
       49 +
  49   50  /*
  50   51   * ISP2200 NVRAM structure definition.
  51   52   * Little endian except where noted.
  52   53   */
  53   54  typedef struct nvram {
  54   55          /*
  55   56           * NVRAM header
  56   57           */
  57   58          uint8_t  id[4];
  58   59          uint8_t  nvram_version;
↓ open down ↓ 98 lines elided ↑ open up ↑
 157  158           *
 158  159           * MSB BIT 0 = enable_64bit_addressing
 159  160           * MSB BIT 1 = enable_lip_reset
 160  161           * MSB BIT 2 = enable_lip_full_login
 161  162           * MSB BIT 3 = enable_target_reset
 162  163           * MSB BIT 4 = enable_database_storage
 163  164           * MSB BIT 5 = unused
 164  165           * MSB BIT 6 = unused
 165  166           * MSB BIT 7 = unused
 166  167           */
 167      -        uint8_t  host_p[2];
      168 +        uint8_t host_p[2];
 168  169  
 169      -        uint8_t  boot_node_name[8];
 170      -        uint8_t  boot_lun_number;
 171      -        uint8_t  reset_delay;
 172      -        uint8_t  port_down_retry_count;
 173      -        uint8_t  reserved_5;
      170 +        uint8_t boot_node_name[8];
      171 +        uint8_t boot_lun_number;
      172 +        uint8_t reset_delay;
      173 +        uint8_t port_down_retry_count;
      174 +        uint8_t reserved_5;
 174  175  
 175      -        uint8_t  maximum_luns_per_target[2];
      176 +        uint8_t maximum_luns_per_target[2];
 176  177  
 177  178          uint8_t reserved_6[14];
 178  179  
 179  180          /* Offset 100 */
 180  181          uint8_t reverved_7[12];
 181  182  
 182  183          /* offset 112 */
 183  184          uint8_t adapInfo[16];   /* Sun OEM HBA's 23xx only */
 184  185  
 185  186          uint8_t reserved_8[22];
↓ open down ↓ 324 lines elided ↑ open up ↑
 510  511          /*
 511  512           * Offset 96 (60h)
 512  513           * BIT 0   = initiator op
 513  514           * BIT 1   = target op
 514  515           * BIT 2   = VI op
 515  516           * BIT 3-7 = Reserved
 516  517           */
 517  518          uint8_t oem_specific;
 518  519          uint8_t reserved_4[15];
 519  520  
 520      -        /* Offset 112 (70h). */
 521      -        uint8_t reserved_5[16];
      521 +        /*
      522 +         * Offset 112 (70h).
      523 +         * BIT 0   = additional receive credits
      524 +         * BIT 1   = additional receive credits
      525 +         * BIT 2-15 = Reserved
      526 +         */
      527 +        uint8_t execute_fw_options[2];
      528 +        uint8_t reserved_5[14];
 522  529  
 523  530          /*
 524  531           * Offset 128 (80h).
 525  532           * PCIe table entries.
 526  533           * Firmware Extended Initialization Control Block.
 527  534           */
 528  535          ql_ext_icb_8100_t       ext_blk;
 529  536  
 530  537          /* Offset 192. */
 531  538          uint8_t reserved_6[32];
↓ open down ↓ 152 lines elided ↑ open up ↑
 684  691          uint8_t reserved_23[2];
 685  692  
 686  693          /* Offset 464 (1D0h). */
 687  694          uint8_t reserved_24[12];
 688  695  
 689  696          /* Offset 476 (1DCh). */
 690  697          uint8_t fw_table_offset[2];
 691  698          uint8_t fw_table_sig[2];
 692  699  
 693  700          /* Offset 480 (1E0h). */
 694      -        int8_t  model_name[4];
 695      -        int8_t  model_name1[12]; /* 24xx power_table[8]. */
      701 +        int8_t  model_name[4];
      702 +        int8_t  model_name1[12]; /* 24xx power_table[8]. */
 696  703  
 697  704          /* Offset 496 (1F0h). */
 698  705          uint8_t feature_mask_l[2];
 699  706          uint8_t feature_mask_h[2];
 700  707          uint8_t reserved_25[4];
 701  708  
 702  709          /* Offset 504 (1F8h). */
 703  710          uint8_t subsystem_vendor_id[2];
 704  711          uint8_t subsystem_device_id[2];
 705  712  
 706  713          uint8_t checksum[4];
 707  714  } nvram_24xx_t;
 708  715  
 709  716  /*
 710  717   * Firmware Dump structure definition
 711  718   */
 712      -#define QL_2200_FW_DUMP_SIZE    0x68000         /* bytes */
 713      -#define QL_2300_FW_DUMP_SIZE    0xE2000         /* bytes */
 714      -#define QL_6322_FW_DUMP_SIZE    0xE2000         /* bytes */
 715      -#define QL_24XX_FW_DUMP_SIZE    0x0330000       /* bytes */
 716      -#define QL_25XX_FW_DUMP_SIZE    0x0330000       /* bytes */
      719 +#define QL_2200_FW_DUMP_SIZE    0x100000        /* 86e15 bytes */
      720 +#define QL_2300_FW_DUMP_SIZE    0x100000        /* fc6d3 bytes */
      721 +#define QL_6322_FW_DUMP_SIZE    0x100000        /* fc6d8 bytes */
      722 +#define QL_24XX_FW_DUMP_SIZE    0x300000        /* 2cef71 bytes */
      723 +#define QL_25XX_FW_DUMP_SIZE    0x400000        /* 356c97 bytes */
      724 +#define QL_81XX_FW_DUMP_SIZE    0x400000        /* 356c97 bytes */
      725 +#define QL_27XX_FW_DUMP_SIZE    0x600000        /* 5c3e69 bytes */
      726 +#define QL_83XX_FW_DUMP_SIZE    0x400000        /* 372792 bytes */
 717  727  
 718  728  #define QL_24XX_VPD_SIZE        0x200           /* bytes */
 719  729  #define QL_24XX_SFP_SIZE        0x200           /* bytes */
 720  730  
 721  731  /*
 722  732   * firmware dump struct for 2300 is a superset of firmware dump struct
 723  733   * for 2200. Fields which are 2300 only or are enhanced for 2300 are
 724  734   * marked below.
 725  735   */
 726  736  typedef struct ql_fw_dump {
↓ open down ↓ 51 lines elided ↑ open up ↑
 778  788          uint32_t fb_hdw_reg[176];
 779  789          uint32_t code_ram[0x2000];
 780  790          uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
 781  791          uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
 782  792          uint32_t ext_trace_buf[FWEXTSIZE / 4];
 783  793          uint32_t fce_trace_buf[FWFCESIZE / 4];
 784  794          uint32_t ext_mem[1];
 785  795  } ql_24xx_fw_dump_t;
 786  796  
 787  797  typedef struct ql_25xx_fw_dump {
      798 +        uint32_t hccr;
 788  799          uint32_t r2h_status;
      800 +        uint32_t aer_ues;
 789  801          uint32_t hostrisc_reg[32];
 790  802          uint32_t pcie_reg[4];
 791  803          uint32_t host_reg[32];
 792  804          uint16_t mailbox_reg[32];
 793  805          uint32_t xseq_gp_reg[128];
 794  806          uint32_t xseq_0_reg[48];
 795  807          uint32_t xseq_1_reg[16];
 796  808          uint32_t rseq_gp_reg[128];
 797  809          uint32_t rseq_0_reg[32];
 798  810          uint32_t rseq_1_reg[16];
↓ open down ↓ 14 lines elided ↑ open up ↑
 813  825          uint32_t xmt_data_dma_reg[16];
 814  826          uint32_t rcvt0_data_dma_reg[32];
 815  827          uint32_t rcvt1_data_dma_reg[32];
 816  828          uint32_t risc_gp_reg[128];
 817  829          uint32_t shadow_reg[11];
 818  830          uint32_t risc_io;
 819  831          uint32_t lmc_reg[128];
 820  832          uint32_t fpm_hdw_reg[192];
 821  833          uint32_t fb_hdw_reg[192];
 822  834          uint32_t code_ram[0x2000];
 823      -        uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
 824      -        uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
 825  835          uint32_t ext_trace_buf[FWEXTSIZE / 4];
 826  836          uint32_t fce_trace_buf[FWFCESIZE / 4];
 827      -        uint32_t ext_mem[1];
      837 +        uint32_t req_q_size[2];
      838 +        uint32_t rsp_q_size;
      839 +        uint32_t req_rsp_ext_mem[1];
 828  840  } ql_25xx_fw_dump_t;
 829  841  
 830  842  typedef struct ql_81xx_fw_dump {
      843 +        uint32_t hccr;
 831  844          uint32_t r2h_status;
      845 +        uint32_t aer_ues;
 832  846          uint32_t hostrisc_reg[32];
 833  847          uint32_t pcie_reg[4];
 834  848          uint32_t host_reg[32];
 835  849          uint16_t mailbox_reg[32];
 836  850          uint32_t xseq_gp_reg[128];
 837  851          uint32_t xseq_0_reg[48];
 838  852          uint32_t xseq_1_reg[16];
 839  853          uint32_t rseq_gp_reg[128];
 840  854          uint32_t rseq_0_reg[32];
 841  855          uint32_t rseq_1_reg[16];
↓ open down ↓ 14 lines elided ↑ open up ↑
 856  870          uint32_t xmt_data_dma_reg[16];
 857  871          uint32_t rcvt0_data_dma_reg[32];
 858  872          uint32_t rcvt1_data_dma_reg[32];
 859  873          uint32_t risc_gp_reg[128];
 860  874          uint32_t shadow_reg[11];
 861  875          uint32_t risc_io;
 862  876          uint32_t lmc_reg[128];
 863  877          uint32_t fpm_hdw_reg[224];
 864  878          uint32_t fb_hdw_reg[208];
 865  879          uint32_t code_ram[0x2000];
 866      -        uint32_t req_q[REQUEST_QUEUE_SIZE / 4];
 867      -        uint32_t rsp_q[RESPONSE_QUEUE_SIZE / 4];
 868  880          uint32_t ext_trace_buf[FWEXTSIZE / 4];
 869  881          uint32_t fce_trace_buf[FWFCESIZE / 4];
 870      -        uint32_t ext_mem[1];
      882 +        uint32_t req_q_size[2];
      883 +        uint32_t rsp_q_size;
      884 +        uint32_t req_rsp_ext_mem[1];
 871  885  } ql_81xx_fw_dump_t;
 872  886  
      887 +typedef struct ql_83xx_fw_dump {
      888 +        uint32_t        hccr;
      889 +        uint32_t        r2h_status;
      890 +        uint32_t        aer_ues;
      891 +        uint32_t        hostrisc_reg[48];
      892 +        uint32_t        pcie_reg[4];
      893 +        uint32_t        host_reg[32];
      894 +        uint16_t        mailbox_reg[32];
      895 +        uint32_t        xseq_gp_reg[256];
      896 +        uint32_t        xseq_0_reg[48];
      897 +        uint32_t        xseq_1_reg[16];
      898 +        uint32_t        xseq_2_reg[16];
      899 +        uint32_t        rseq_gp_reg[256];
      900 +        uint32_t        rseq_0_reg[32];
      901 +        uint32_t        rseq_1_reg[16];
      902 +        uint32_t        rseq_2_reg[16];
      903 +        uint32_t        rseq_3_reg[16];
      904 +        uint32_t        aseq_gp_reg[256];
      905 +        uint32_t        aseq_0_reg[32];
      906 +        uint32_t        aseq_1_reg[16];
      907 +        uint32_t        aseq_2_reg[16];
      908 +        uint32_t        aseq_3_reg[16];
      909 +        uint32_t        cmd_dma_reg[64];
      910 +        uint32_t        req0_dma_reg[15];
      911 +        uint32_t        resp0_dma_reg[15];
      912 +        uint32_t        req1_dma_reg[15];
      913 +        uint32_t        xmt0_dma_reg[32];
      914 +        uint32_t        xmt1_dma_reg[32];
      915 +        uint32_t        xmt2_dma_reg[32];
      916 +        uint32_t        xmt3_dma_reg[32];
      917 +        uint32_t        xmt4_dma_reg[32];
      918 +        uint32_t        xmt_data_dma_reg[16];
      919 +        uint32_t        rcvt0_data_dma_reg[32];
      920 +        uint32_t        rcvt1_data_dma_reg[32];
      921 +        uint32_t        risc_gp_reg[128];
      922 +        uint32_t        shadow_reg[11];
      923 +        uint32_t        risc_io;
      924 +        uint32_t        lmc_reg[128];
      925 +        uint32_t        fpm_hdw_reg[256];
      926 +        uint32_t        rq0_array_reg[256];
      927 +        uint32_t        rq1_array_reg[256];
      928 +        uint32_t        rp0_array_reg[256];
      929 +        uint32_t        rp1_array_reg[256];
      930 +        uint32_t        ato_array_reg[128];
      931 +        uint32_t        queue_control_reg[16];
      932 +        uint32_t        fb_hdw_reg[432];
      933 +        uint32_t        code_ram[0x2400];
      934 +        uint32_t        ext_trace_buf[FWEXTSIZE / 4];
      935 +        uint32_t        fce_trace_buf[FWFCESIZE / 4];
      936 +        uint32_t        req_q_size[2];
      937 +        uint32_t        rsp_q_size;
      938 +        uint32_t        req_rsp_ext_mem[1];
      939 +} ql_83xx_fw_dump_t;
      940 +
 873  941  #ifdef _KERNEL
 874  942  
 875  943  /*
      944 + * firmware dump Entry Types
      945 + */
      946 +#define DT_NOP           0
      947 +#define DT_THDR         99
      948 +#define DT_TEND         255
      949 +#define DT_RIOB1        256
      950 +#define DT_WIOB1        257
      951 +#define DT_RIOB2        258
      952 +#define DT_WIOB2        259
      953 +#define DT_RPCI         260
      954 +#define DT_WPCI         261
      955 +#define DT_RRAM         262
      956 +#define DT_GQUE         263
      957 +#define DT_GFCE         264
      958 +#define DT_PRISC        265
      959 +#define DT_RRISC        266
      960 +#define DT_DINT         267
      961 +#define DT_GHBD         268
      962 +#define DT_SCRA         269
      963 +#define DT_RRREG        270
      964 +#define DT_WRREG        271
      965 +#define DT_RRRAM        272
      966 +#define DT_RPCIC        273
      967 +#define DT_GQUES        274
      968 +#define DT_WDMP         275
      969 +
      970 +/*
      971 + * firmware dump Template Header (Entry Type 99)
      972 + */
      973 +typedef struct ql_dt_hdr {
      974 +        uint32_t        type;
      975 +        uint32_t        first_entry_offset;
      976 +        uint32_t        size_of_template;
      977 +        uint32_t        rsv;
      978 +        uint32_t        num_of_entries;
      979 +        uint32_t        version;
      980 +        uint32_t        driver_timestamp;
      981 +        uint32_t        checksum;
      982 +        uint32_t        rsv_1;
      983 +        uint32_t        driver_info[3];
      984 +        uint32_t        saved_state_area[16];
      985 +        uint32_t        rsv_2[8];
      986 +        uint32_t        ver_attr[5];
      987 +} ql_dt_hdr_t;
      988 +
      989 +/*
      990 + * firmware dump Common Entry Header
      991 + */
      992 +typedef struct ql_dt_entry_hdr {
      993 +        uint32_t        type;
      994 +        uint32_t        size;
      995 +        uint32_t        rsv;
      996 +#ifdef _BIG_ENDIAN
      997 +        uint8_t         driver_flags;
      998 +        uint8_t         rsv_2;
      999 +        uint8_t         rsv_1;
     1000 +        uint8_t         capture_flags;
     1001 +#else
     1002 +        uint8_t         capture_flags;
     1003 +        uint8_t         rsv_1;
     1004 +        uint8_t         rsv_2;
     1005 +        uint8_t         driver_flags;
     1006 +#endif
     1007 +} ql_dt_entry_hdr_t;
     1008 +
     1009 +/*
     1010 + * Capture Flags
     1011 + */
     1012 +#define PF_ONLY_FLAG    BIT_0   /* Physical Function Only */
     1013 +#define PF_VF_FLAG      BIT_1   /* Physical and Virtual Functions */
     1014 +
     1015 +/*
     1016 + * Driver Flags
     1017 + */
     1018 +#define SKIPPED_FLAG    BIT_7   /* driver skipped this entry  */
     1019 +
     1020 +/*
     1021 + * firmware dump Entry Including Header
     1022 + */
     1023 +typedef struct ql_dt_entry {
     1024 +        ql_dt_entry_hdr_t       h;
     1025 +        uint32_t                data[1];
     1026 +} ql_dt_entry_t;
     1027 +
     1028 +/*
     1029 + * firmware dump Template image
     1030 + */
     1031 +typedef struct ql_dmp_template {
     1032 +        uint32_t        rsv[2];
     1033 +        uint32_t        len;
     1034 +        uint32_t        major_ver;
     1035 +        uint32_t        minor_ver;
     1036 +        uint32_t        subminor_ver;
     1037 +        uint32_t        attribute;
     1038 +        ql_dt_hdr_t     hdr;
     1039 +        ql_dt_entry_t   entries[1];
     1040 +} ql_dmp_template_t;
     1041 +
     1042 +typedef struct ql_dt_riob1 {
     1043 +        ql_dt_entry_hdr_t       h;
     1044 +        uint32_t                addr;
     1045 +#ifdef _BIG_ENDIAN
     1046 +        uint8_t                 pci_offset;
     1047 +        uint8_t                 reg_count_h;
     1048 +        uint8_t                 reg_count_l;
     1049 +        uint8_t                 reg_size;
     1050 +#else
     1051 +        uint8_t                 reg_size;
     1052 +        uint8_t                 reg_count_l;
     1053 +        uint8_t                 reg_count_h;
     1054 +        uint8_t                 pci_offset;
     1055 +#endif
     1056 +} ql_dt_riob1_t;
     1057 +
     1058 +typedef struct ql_dt_wiob1 {
     1059 +        ql_dt_entry_hdr_t       h;
     1060 +        uint32_t                addr;
     1061 +        uint32_t                data;
     1062 +#ifdef _BIG_ENDIAN
     1063 +        uint8_t                 rsv[3];
     1064 +        uint8_t                 pci_offset;
     1065 +#else
     1066 +        uint8_t                 pci_offset;
     1067 +        uint8_t                 rsv[3];
     1068 +#endif
     1069 +} ql_dt_wiob1_t;
     1070 +
     1071 +typedef struct ql_dt_riob2 {
     1072 +        ql_dt_entry_hdr_t       h;
     1073 +        uint32_t                addr;
     1074 +#ifdef _BIG_ENDIAN
     1075 +        uint8_t                 pci_offset;
     1076 +        uint8_t                 reg_count_h;
     1077 +        uint8_t                 reg_count_l;
     1078 +        uint8_t                 reg_size;
     1079 +        uint8_t                 rsv[3];
     1080 +        uint8_t                 bank_sel_offset;
     1081 +#else
     1082 +        uint8_t                 reg_size;
     1083 +        uint8_t                 reg_count_l;
     1084 +        uint8_t                 reg_count_h;
     1085 +        uint8_t                 pci_offset;
     1086 +        uint8_t                 bank_sel_offset;
     1087 +        uint8_t                 rsv[3];
     1088 +#endif
     1089 +        uint32_t                reg_bank;
     1090 +} ql_dt_riob2_t;
     1091 +
     1092 +typedef struct ql_dt_wiob2 {
     1093 +        ql_dt_entry_hdr_t       h;
     1094 +        uint32_t                addr;
     1095 +#ifdef _BIG_ENDIAN
     1096 +        uint8_t                 rsv[2];
     1097 +        uint8_t                 data_h;
     1098 +        uint8_t                 data_l;
     1099 +        uint8_t                 bank_sel_offset;
     1100 +        uint8_t                 pci_offset;
     1101 +        uint8_t                 rsv1[2];
     1102 +#else
     1103 +        uint8_t                 data_l;
     1104 +        uint8_t                 data_h;
     1105 +        uint8_t                 rsv[2];
     1106 +        uint8_t                 rsv1[2];
     1107 +        uint8_t                 pci_offset;
     1108 +        uint8_t                 bank_sel_offset;
     1109 +#endif
     1110 +        uint32_t                reg_bank;
     1111 +} ql_dt_wiob2_t;
     1112 +
     1113 +typedef struct ql_dt_rpci {
     1114 +        ql_dt_entry_hdr_t       h;
     1115 +        uint32_t                addr;
     1116 +} ql_dt_rpci_t;
     1117 +
     1118 +typedef struct ql_dt_wpci {
     1119 +        ql_dt_entry_hdr_t       h;
     1120 +        uint32_t                addr;
     1121 +        uint32_t                data;
     1122 +} ql_dt_wpci_t, ql_dt_wrreg_t;
     1123 +
     1124 +typedef struct ql_dt_rram {
     1125 +        ql_dt_entry_hdr_t       h;
     1126 +#ifdef _BIG_ENDIAN
     1127 +        uint8_t                 rsv[3];
     1128 +        uint8_t                 ram_area;
     1129 +#else
     1130 +        uint8_t                 ram_area;
     1131 +        uint8_t                 rsv[3];
     1132 +#endif
     1133 +        uint32_t                start_addr;
     1134 +        uint32_t                end_addr;
     1135 +} ql_dt_rram_t;
     1136 +
     1137 +typedef struct ql_dt_gque {
     1138 +        ql_dt_entry_hdr_t       h;
     1139 +        uint32_t                num_queues;
     1140 +#ifdef _BIG_ENDIAN
     1141 +        uint8_t                 rsv[3];
     1142 +        uint8_t                 queue_type;
     1143 +#else
     1144 +        uint8_t                 queue_type;
     1145 +        uint8_t                 rsv[3];
     1146 +#endif
     1147 +} ql_dt_gque_t, ql_dt_gques_t;
     1148 +
     1149 +typedef struct ql_dt_gfce {
     1150 +        ql_dt_entry_hdr_t       h;
     1151 +        uint32_t                fce_trace_size;
     1152 +        uint32_t                write_pointer[2];
     1153 +        uint32_t                base_pointer[2];
     1154 +        uint32_t                fce_enable_mb0;
     1155 +        uint32_t                fce_enable_mb2;
     1156 +        uint32_t                fce_enable_mb3;
     1157 +        uint32_t                fce_enable_mb4;
     1158 +        uint32_t                fce_enable_mb5;
     1159 +        uint32_t                fce_enable_mb6;
     1160 +} ql_dt_gfce_t;
     1161 +
     1162 +typedef struct ql_dt_prisc {
     1163 +        ql_dt_entry_hdr_t       h;
     1164 +} ql_dt_prisc_t, ql_dt_rrisc_t;
     1165 +
     1166 +typedef struct ql_dt_dint {
     1167 +        ql_dt_entry_hdr_t       h;
     1168 +#ifdef _BIG_ENDIAN
     1169 +        uint8_t                 rsv[3];
     1170 +        uint8_t                 pci_offset;
     1171 +#else
     1172 +        uint8_t                 pci_offset;
     1173 +        uint8_t                 rsv[3];
     1174 +#endif
     1175 +        uint32_t                data;
     1176 +} ql_dt_dint_t;
     1177 +
     1178 +typedef struct ql_dt_ghbd {
     1179 +        ql_dt_entry_hdr_t       h;
     1180 +#ifdef _BIG_ENDIAN
     1181 +        uint8_t                 rsv[3];
     1182 +        uint8_t                 host_buf_type;
     1183 +#else
     1184 +        uint8_t                 host_buf_type;
     1185 +        uint8_t                 rsv[3];
     1186 +#endif
     1187 +        uint32_t                buf_size;
     1188 +        uint32_t                start_addr;
     1189 +} ql_dt_ghbd_t;
     1190 +
     1191 +typedef struct ql_dt_scra {
     1192 +        ql_dt_entry_hdr_t       h;
     1193 +        uint32_t                scratch_size;
     1194 +} ql_dt_scra_t;
     1195 +
     1196 +typedef struct ql_dt_rrreg {
     1197 +        ql_dt_entry_hdr_t       h;
     1198 +        uint32_t                addr;
     1199 +        uint32_t                count;
     1200 +} ql_dt_rrreg_t, ql_dt_rrram_t, ql_dt_rpcic_t;
     1201 +
     1202 +typedef struct ql_dt_wdmp {
     1203 +        ql_dt_entry_hdr_t       h;
     1204 +        uint32_t                length;
     1205 +        uint32_t                data[1];
     1206 +} ql_dt_wdmp_t;
     1207 +
     1208 +/*
 876 1209   * ql_lock_nvram() flags
 877 1210   */
 878 1211  #define LNF_NVRAM_DATA  BIT_0           /* get nvram */
 879 1212  #define LNF_VPD_DATA    BIT_1           /* get vpd data (24xx only) */
 880 1213  
 881 1214  /*
 882 1215   *  ISP product identification definitions in mailboxes after reset.
 883 1216   */
 884 1217  #define PROD_ID_1       0x4953
 885 1218  #define PROD_ID_2       0x0000
 886 1219  #define PROD_ID_2a      0x5020
 887 1220  #define PROD_ID_3       0x2020
 888 1221  
 889 1222  /*
 890 1223   * NVRAM Command values.
 891 1224   */
 892 1225  #define NV_START_BIT    BIT_2
 893      -#define NV_WRITE_OP     (BIT_26+BIT_24)
 894      -#define NV_READ_OP      (BIT_26+BIT_25)
 895      -#define NV_ERASE_OP     (BIT_26+BIT_25+BIT_24)
 896      -#define NV_MASK_OP      (BIT_26+BIT_25+BIT_24)
     1226 +#define NV_WRITE_OP     (BIT_26 + BIT_24)
     1227 +#define NV_READ_OP      (BIT_26 + BIT_25)
     1228 +#define NV_ERASE_OP     (BIT_26 + BIT_25 + BIT_24)
     1229 +#define NV_MASK_OP      (BIT_26 + BIT_25 + BIT_24)
 897 1230  #define NV_DELAY_COUNT  10
 898 1231  
 899 1232  /*
 900 1233   * Deivce ID list definitions.
 901 1234   */
 902 1235  struct ql_dev_id {
 903 1236          uint8_t         al_pa;
 904 1237          uint8_t         area;
 905 1238          uint8_t         domain;
 906 1239          uint8_t         loop_id;
↓ open down ↓ 45 lines elided ↑ open up ↑
 952 1285  void ql_common_properties(ql_adapter_state_t *);
 953 1286  uint32_t ql_get_prop(ql_adapter_state_t *, char *);
 954 1287  int ql_load_isp_firmware(ql_adapter_state_t *);
 955 1288  int ql_start_firmware(ql_adapter_state_t *);
 956 1289  int ql_set_cache_line(ql_adapter_state_t *);
 957 1290  int ql_init_rings(ql_adapter_state_t *);
 958 1291  int ql_fw_ready(ql_adapter_state_t *, uint8_t);
 959 1292  void ql_dev_list(ql_adapter_state_t *, ql_dev_id_list_t *, uint32_t,
 960 1293      port_id_t *, uint16_t *);
 961 1294  void ql_reset_chip(ql_adapter_state_t *);
 962      -void ql_reset_24xx_chip(ql_adapter_state_t *);
 963 1295  int ql_abort_isp(ql_adapter_state_t *);
     1296 +void ql_requeue_all_cmds(ql_adapter_state_t *);
 964 1297  int ql_vport_control(ql_adapter_state_t *, uint8_t);
 965 1298  int ql_vport_modify(ql_adapter_state_t *, uint8_t, uint8_t);
 966 1299  int ql_vport_enable(ql_adapter_state_t *);
 967 1300  ql_adapter_state_t *ql_vport_create(ql_adapter_state_t *, uint8_t);
 968 1301  void ql_vport_destroy(ql_adapter_state_t *);
 969 1302  #endif  /* _KERNEL */
 970 1303  
 971 1304  #ifdef  __cplusplus
 972 1305  }
 973 1306  #endif
 974 1307  
 975 1308  #endif /* _QL_INIT_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX