1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright 2009 QLogic Corporation.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 /*
  28  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  29  */
  30 
  31 #ifndef _QLT_REGS_H
  32 #define _QLT_REGS_H
  33 
  34 #include <sys/stmf_defines.h>
  35 
  36 #ifdef  __cplusplus
  37 extern "C" {
  38 #endif
  39 
  40 /*
  41  * Register offsets
  42  */
  43 #define REG_FLASH_ADDR          0x00
  44 #define REG_FLASH_DATA          0x04
  45 #define REG_CTRL_STATUS         0x08
  46 #define REG_INTR_CTRL           0x0C
  47 #define REG_INTR_STATUS         0x10
  48 #define REG_REQ_IN_PTR          0x1C
  49 #define REG_REQ_OUT_PTR         0x20
  50 #define REG_RESP_IN_PTR         0x24
  51 #define REG_RESP_OUT_PTR        0x28
  52 #define REG_PREQ_IN_PTR         0x2C
  53 #define REG_PREQ_OUT_PTR        0x30
  54 #define REG_ATIO_IN_PTR         0x3C
  55 #define REG_ATIO_OUT_PTR        0x40
  56 #define REG_RISC_STATUS         0x44
  57 #define REG_HCCR                0x48
  58 #define REG_GPIO_DATA           0x4C
  59 #define REG_GPIO_ENABLE         0x50
  60 #define REG_IOBUS_BASE_ADDR     0x54
  61 #define REG_HOST_SEMA           0x58
  62 #define REG_MBOX0               0x80
  63 
  64 #define REG_MBOX(n)             (REG_MBOX0 + (n << 1))
  65 
  66 #define MAX_MBOXES              32
  67 
  68 /*
  69  * Ctrl Status register definitions
  70  */
  71 #define FLASH_ERROR             BIT_18
  72 #define DMA_ACTIVE_STATUS       BIT_17
  73 #define DMA_SHUTDOWN_CTRL       BIT_16
  74 #define FUNCTION_NUMBER         BIT_15
  75 /*
  76  * #define      81XX_FUNCTION_NUMBER    BIT_15 | BIT_14 | BIT_13 | BIT_12
  77  */
  78 #define PCI_X_BUS_MODE          (BIT_8 | BIT_9 | BIT_10 | BIT_11)
  79 #define PCI_X_XFER_CTRL         (BIT_4 | BIT_5)
  80 #define PCI_64_BIT_SLOT         BIT_2
  81 #define FLASH_WRITE_ENABLE      BIT_1
  82 #define CHIP_SOFT_RESET         BIT_0
  83 
  84 /*
  85  * INTR_CTRL register
  86  */
  87 #define ENABLE_RISC_INTR        BIT_3
  88 
  89 /*
  90  * INTR_STATUS register
  91  */
  92 #define RISC_PCI_INTR_REQUEST   BIT_3
  93 
  94 /*
  95  * RISC_STATUS register
  96  */
  97 #define FW_INTR_INFO_MASK               (BIT_15 | BIT_14 | BIT_13 | BIT_12 | \
  98                                         BIT_11 | BIT_10 | BIT_9 | BIT_8 | \
  99                                         BIT_7 | BIT_6 | BIT_5 | BIT_4 | \
 100                                         BIT_3 | BIT_2 | BIT_1)
 101 #define FW_INTR_INFO_SHIFT              18
 102 
 103 #define FW_INTR_INFO(status)            (status & (FW_INTR_INFO_MASK << \
 104                                             FW_INTR_INFO_SHIFT))
 105 #define RISC_HOST_INTR_REQUEST          BIT_15
 106 #define RISC_PAUSED                     BIT_8
 107 
 108 #define FW_INTR_STATUS_MASK             (BIT_7 | BIT_6 | BIT_5 | BIT_4 | \
 109                                         BIT_3 | BIT_2 | BIT_1 | BIT_0)
 110 
 111 #define ROM_MBX_CMD_SUCCESSFUL          0x01
 112 #define ROM_MBX_CMD_NOT_SUCCESSFUL      0x02
 113 #define MBX_CMD_SUCCESSFUL              0x10
 114 #define MBX_CMD_NOT_SUCCESSFUL          0x11
 115 #define ASYNC_EVENT                     0x12
 116 #define RESP_Q_UPDATE                   0x13
 117 #define ATIO_Q_UPDATE                   0x1c
 118 #define RESP_ATIO_Q_UPDATE              0x1d
 119 
 120 /*
 121  * Mailbox command completion status.
 122  */
 123 #define QLT_MBX_CMD_SUCCESS             0x4000
 124 
 125 /*
 126  * HCCR commands
 127  */
 128 #define NOP                             0x00
 129 #define SET_RISC_RESET                  0x01
 130 #define CLEAR_RISC_RESET                0x02
 131 #define SET_RISC_PAUSE                  0x03
 132 #define CLEAR_RISC_PAUSE                0x04
 133 #define SET_HOST_TO_RISC_INTR           0x05
 134 #define CLEAR_HOST_TO_RISC_INTR         0x06
 135 #define CLEAR_RISC_TO_PCI_INTR          0x0A
 136 
 137 #define HCCR_CMD_SHIFT                  28
 138 #define HCCR_CMD(cmd)                   ((uint32_t)cmd << HCCR_CMD_SHIFT)
 139 
 140 #define MBC_STOP_FIRMWARE               0x14
 141 
 142 /*
 143  * Flash/NVRAM definitions
 144  */
 145 #define FLASH_DATA_FLAG                 BIT_31
 146 #define FLASH_CONF_ADDR                 0x7FFD0000
 147 #define FLASH_DATA_ADDR                 0x7FF00000
 148 #define FLASH_DATA_ADDR_81XX            0x7F8D0000
 149 #define NVRAM_CONF_ADDR                 0x7FFF0000
 150 #define NVRAM_DATA_ADDR                 0x7FFE0000
 151 
 152 #define NVRAM_FUNC0_ADDR                (NVRAM_DATA_ADDR + 0x80)
 153 #define NVRAM_FUNC1_ADDR                (NVRAM_DATA_ADDR + 0x180)
 154 
 155 #define QLT25_NVRAM_FUNC0_ADDR          (FLASH_DATA_ADDR + 0x48080)
 156 #define QLT25_NVRAM_FUNC1_ADDR          (FLASH_DATA_ADDR + 0x48180)
 157 
 158 #define QLT81_NVRAM_FUNC0_ADDR          (FLASH_DATA_ADDR_81XX + 0x80)
 159 #define QLT81_NVRAM_FUNC1_ADDR          (FLASH_DATA_ADDR_81XX + 0x180)
 160 
 161 typedef struct qlt_nvram {
 162         /* NVRAM header. */
 163         uint8_t id[4];
 164         uint8_t nvram_version[2];
 165         uint8_t reserved_0[2];
 166 
 167         /* Firmware Initialization Control Block. */
 168         uint8_t version[2];
 169         uint8_t reserved_1[2];
 170         uint8_t max_frame_length[2];
 171         uint8_t execution_throttle[2];
 172         uint8_t exchange_count[2];
 173         uint8_t hard_address[2];
 174         uint8_t port_name[8];
 175         uint8_t node_name[8];
 176         uint8_t login_retry_count[2];
 177         uint8_t link_down_on_nos[2];
 178         uint8_t interrupt_delay_timer[2];
 179         uint8_t login_timeout[2];
 180 
 181         /*
 182          * BIT 0  = Hard Assigned Loop ID
 183          * BIT 1  = Enable Fairness
 184          * BIT 2  = Enable Full-Duplex
 185          * BIT 3  = Reserved
 186          * BIT 4  = Target Mode Enable
 187          * BIT 5  = Initiator Mode Disable
 188          * BIT 6  = Reserved
 189          * BIT 7  = Reserved
 190          *
 191          * BIT 8  = Reserved
 192          * BIT 9  = Disable Initial LIP
 193          * BIT 10 = Descending Loop ID Search
 194          * BIT 11 = Previous Assigned Loop ID
 195          * BIT 12 = Reserved
 196          * BIT 13 = Full Login after LIP
 197          * BIT 14 = Node Name Option
 198          * BIT 15-31 = Reserved
 199          */
 200         uint8_t firmware_options_1[4];
 201 
 202         /*
 203          * BIT 0  = Operation Mode bit 0
 204          * BIT 1  = Operation Mode bit 1
 205          * BIT 2  = Operation Mode bit 2
 206          * BIT 3  = Operation Mode bit 3
 207          * BIT 4  = Connection Options bit 0
 208          * BIT 5  = Connection Options bit 1
 209          * BIT 6  = Connection Options bit 2
 210          * BIT 7  = Enable Non part on LIHA failure
 211          *
 212          * BIT 8  = Enable Class 2
 213          * BIT 9  = Enable ACK0
 214          * BIT 10 = Reserved
 215          * BIT 11 = Enable FC-SP Security
 216          * BIT 12 = FC Tape Enable
 217          * BIT 13-31 = Reserved
 218          */
 219         uint8_t firmware_options_2[4];
 220 
 221         /*
 222          * BIT 0  = Reserved
 223          * BIT 1  = Soft ID only
 224          * BIT 2  = Reserved
 225          * BIT 3  = Reserved
 226          * BIT 4  = FCP RSP Payload bit 0
 227          * BIT 5  = FCP RSP Payload bit 1
 228          * BIT 6  = Enable Rec Out-of-Order data frame handling
 229          * BIT 7  = Disable Automatic PLOGI on Local Loop
 230          *
 231          * BIT 8  = Reserved
 232          * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative
 233          *          offset handling
 234          * BIT 10 = Reserved
 235          * BIT 11 = Reserved
 236          * BIT 12 = Reserved
 237          * BIT 13 = Data Rate bit 0
 238          * BIT 14 = Data Rate bit 1
 239          * BIT 15 = Data Rate bit 2
 240          * BIT 16 = 75-ohm Termination Select
 241          * BIT 17-31 = Reserved
 242          */
 243         uint8_t firmware_options_3[4];
 244 
 245         /*
 246          * Serial Link Control (offset 56)
 247          * BIT 0  = control enable
 248          * BIT 1-15 = Reserved
 249          */
 250         uint8_t swing_opt[2];
 251 
 252         /*
 253          * Serial Link Control 1G (offset 58)
 254          * BIT 0-7   = Reserved
 255          *
 256          * BIT 8-10  = output swing
 257          * BIT 11-13 = output emphasis
 258          * BIT 14-15 = Reserved
 259          */
 260         uint8_t swing_1g[2];
 261 
 262         /*
 263          * Serial Link Control 2G (offset 60)
 264          * BIT 0-7   = Reserved
 265          *
 266          * BIT 8-10  = output swing
 267          * BIT 11-13 = output emphasis
 268          * BIT 14-15 = Reserved
 269          */
 270         uint8_t swing_2g[2];
 271 
 272         /*
 273          * Serial Link Control 4G (offset 62)
 274          * BIT 0-7   = Reserved
 275          *
 276          * BIT 8-10  = output swing
 277          * BIT 11-13 = output emphasis
 278          * BIT 14-15 = Reserved
 279          */
 280         uint8_t swing_4g[2];
 281 
 282         /* Offset 64. */
 283         uint8_t reserved_2[32];
 284 
 285         /* Offset 96. */
 286         uint8_t reserved_3[32];
 287 
 288         /* PCIe table entries. */
 289         uint8_t reserved_4[32];
 290 
 291         /* Offset 160. */
 292         uint8_t reserved_5[32];
 293 
 294         /* Offset 192. */
 295         uint8_t reserved_6[32];
 296 
 297         /* Offset 224. */
 298         uint8_t reserved_7[32];
 299 
 300         /*
 301          * BIT 0  = Enable spinup delay
 302          * BIT 1  = Disable BIOS
 303          * BIT 2  = Enable Memory Map BIOS
 304          * BIT 3  = Enable Selectable Boot
 305          * BIT 4  = Disable RISC code load
 306          * BIT 5  = Disable serdes
 307          * BIT 6  = Enable opt boot mode
 308          * BIT 7  = Enable int mode BIOS
 309          *
 310          * BIT 8  =
 311          * BIT 9  =
 312          * BIT 10 = Enable lip full login
 313          * BIT 11 = Enable target reset
 314          * BIT 12 =
 315          * BIT 13 = Default Node Name Option
 316          * BIT 14 = Default valid
 317          * BIT 15 = Enable alternate WWN
 318          *
 319          * BIT 16-31 =
 320          */
 321         uint8_t host_p[4];
 322 
 323         uint8_t alternate_port_name[8];
 324         uint8_t alternate_node_name[8];
 325 
 326         uint8_t boot_port_name[8];
 327         uint8_t boot_lun_number[2];
 328         uint8_t reserved_8[2];
 329 
 330         uint8_t alt1_boot_port_name[8];
 331         uint8_t alt1_boot_lun_number[2];
 332         uint8_t reserved_9[2];
 333 
 334         uint8_t alt2_boot_port_name[8];
 335         uint8_t alt2_boot_lun_number[2];
 336         uint8_t reserved_10[2];
 337 
 338         uint8_t alt3_boot_port_name[8];
 339         uint8_t alt3_boot_lun_number[2];
 340         uint8_t reserved_11[2];
 341 
 342         /*
 343          * BIT 0 = Selective Login
 344          * BIT 1 = Alt-Boot Enable
 345          * BIT 2 = Reserved
 346          * BIT 3 = Enable Boot Order List
 347          * BIT 4 = Reserved
 348          * BIT 5 = Enable Selective LUN
 349          * BIT 6 = Reserved
 350          * BIT 7-31 =
 351          */
 352         uint8_t efi_parameters[4];
 353 
 354         uint8_t reset_delay;
 355         uint8_t reserved_12;
 356         uint8_t reserved_13[2];
 357 
 358         uint8_t boot_id_number[2];
 359         uint8_t reserved_14[2];
 360 
 361         uint8_t max_luns_per_target[2];
 362         uint8_t reserved_15[2];
 363 
 364         uint8_t port_down_retry_count[2];
 365         uint8_t link_down_timeout[2];
 366 
 367         /*
 368          * FCode parameters word (offset 344)
 369          *
 370          * BIT 0 = Enable BIOS pathname
 371          * BIT 1 = fcode qlc
 372          * BIT 2 = fcode host
 373          * BIT 3-7 =
 374          */
 375         uint8_t fcode_p0;
 376         uint8_t reserved_16[7];
 377 
 378         /* Offset 352. */
 379         uint8_t prev_drv_ver_major;
 380         uint8_t prev_drv_ver_submajob;
 381         uint8_t prev_drv_ver_minor;
 382         uint8_t prev_drv_ver_subminor;
 383 
 384         uint8_t prev_bios_ver_major[2];
 385         uint8_t prev_bios_ver_minor[2];
 386 
 387         uint8_t prev_efi_ver_major[2];
 388         uint8_t prev_efi_ver_minor[2];
 389 
 390         uint8_t prev_fw_ver_major[2];
 391         uint8_t prev_fw_ver_minor;
 392         uint8_t prev_fw_ver_subminor;
 393 
 394         uint8_t reserved_17[16];
 395 
 396         /* Offset 384. */
 397         uint8_t def_port_name[8];
 398         uint8_t def_node_name[8];
 399 
 400         uint8_t reserved_18[16];
 401 
 402         /* Offset 416. */
 403         uint8_t reserved_19[32];
 404 
 405         /* Offset 448. */
 406         uint8_t reserved_20[28];
 407 
 408         /* Offset 476. */
 409         uint8_t fw_table_offset[2];
 410         uint8_t fw_table_sig[2];
 411 
 412         /* Offset 480. */
 413         uint8_t model_name[8];
 414 
 415         /* Offset 488. */
 416         uint8_t power_table[16];
 417 
 418         uint8_t subsystem_vendor_id[2];
 419         uint8_t subsystem_device_id[2];
 420 
 421         uint8_t checksum[4];
 422 } qlt_nvram_t;
 423 
 424 /* ISP81xx Extended Initialisation Control Block */
 425 typedef struct qlt_ext_icb_81xx {
 426 
 427         uint8_t version[2];
 428         uint8_t fcf_vlan_match;
 429         uint8_t reserved_6[3];
 430         uint8_t fcf_vlan_id[2];
 431         uint8_t fcf_fabric_name[8];
 432         uint8_t reserved_7[14];
 433         uint8_t spma_proposed_mac_address[6];
 434         uint8_t reserved_8[28];
 435 
 436 } qlt_ext_icb_81xx_t;
 437 
 438 typedef struct qlt_nvram_81xx {
 439         /* NVRAM header. */
 440         uint8_t id[4];
 441         uint8_t nvram_version[2];
 442         uint8_t reserved_0[2];
 443 
 444         /* Firmware Initialization Control Block. */
 445         uint8_t version[2];
 446         uint8_t reserved_1[2];
 447         uint8_t max_frame_length[2];
 448         uint8_t execution_throttle[2];
 449         uint8_t exchange_count[2];
 450         uint8_t reserved_2[2];
 451         uint8_t port_name[8];
 452         uint8_t node_name[8];
 453         uint8_t login_retry_count[2];
 454         uint8_t reserved_3[2];
 455         uint8_t interrupt_delay_timer[2];
 456         uint8_t login_timeout[2];
 457 
 458         /*
 459          * BIT 0  = Hard Assigned Loop ID
 460          * BIT 1  = Enable Fairness
 461          * BIT 2  = Enable Full-Duplex
 462          * BIT 3  = Reserved
 463          * BIT 4  = Target Mode Enable
 464          * BIT 5  = Initiator Mode Disable
 465          * BIT 6  = Reserved
 466          * BIT 7  = Reserved
 467          *
 468          * BIT 8  = Reserved
 469          * BIT 9  = Reserved
 470          * BIT 10 = Reserved
 471          * BIT 11 = Reserved
 472          * BIT 12 = Reserved
 473          * BIT 13 = Reserved
 474          * BIT 14 = Node Name Option
 475          * BIT 15-31 = Reserved
 476          */
 477         uint8_t firmware_options_1[4];
 478 
 479         /*
 480          * BIT 0  = Operation Mode bit 0
 481          * BIT 1  = Operation Mode bit 1
 482          * BIT 2  = Operation Mode bit 2
 483          * BIT 3  = Operation Mode bit 3
 484          * BIT 4  = Reserved
 485          * BIT 5  = Reserved
 486          * BIT 6  = Reserved
 487          * BIT 7  = Reserved
 488          *
 489          * BIT 8  = Enable Class 2
 490          * BIT 9  = Enable ACK0
 491          * BIT 10 = Reserved
 492          * BIT 11 = Enable FC-SP Security
 493          * BIT 12 = FC Tape Enable
 494          * BIT 13 = Reserved
 495          * BIT 14 = Target PRLI Control
 496          * BIT 15-31 = Reserved
 497          */
 498         uint8_t firmware_options_2[4];
 499 
 500         /*
 501          * BIT 0  = Reserved
 502          * BIT 1  = Soft ID only
 503          * BIT 2  = Reserved
 504          * BIT 3  = Reserved
 505          * BIT 4  = FCP RSP Payload bit 0
 506          * BIT 5  = FCP RSP Payload bit 1
 507          * BIT 6  = Enable Rec Out-of-Order data frame handling
 508          * BIT 7  = Reserved
 509          *
 510          * BIT 8  = Reserved
 511          * BIT 9  = Enable Out-of-Order FCP_XFER_RDY relative
 512          *          offset handling
 513          * BIT 10 = Reserved
 514          * BIT 11 = Reserved
 515          * BIT 12 = Reserved
 516          * BIT 13 = Reserved
 517          * BIT 14 = Reserved
 518          * BIT 15 = Reserved
 519          * BIT 16 = Reserved
 520          * BIT 17 = Enable Multiple FCFs
 521          * BIT 18-20 = MAC Addressing Mode
 522          * BIT 21-25 = Ethernet Data Rate
 523          * BIT 26 = Enable Ethernet Header Receive ATIO_Q
 524          * BIT 27 = Enable Ethernet Header Receive RSP_Q
 525          * BIT 28-29 = SPMA Selection
 526          * BIT 30-31 = Reserved
 527          */
 528         uint8_t firmware_options_3[4];
 529 
 530         /* Offset 56 (38h). */
 531         uint8_t reserved_4[8];
 532 
 533         /* Offset 64 (40h). */
 534         uint8_t enode_mac[6];
 535 
 536         /* Offset 70 (46h). */
 537         uint8_t reserved_5[26];
 538 
 539         /* Offset 96 (60h). */
 540         uint8_t oem_specific;
 541         uint8_t reserved_6[15];
 542 
 543         /* Offset 112 (70h). */
 544         uint8_t reserved_7[16];
 545 
 546         /* Offset 128 (80h). */
 547         qlt_ext_icb_81xx_t   ext_blk;
 548 
 549         /* Offset 192. */
 550         uint8_t reserved_8[32];
 551 
 552         /* Offset 224. */
 553         uint8_t reserved_9[32];
 554 
 555         uint8_t host_p[4];
 556 
 557         uint8_t alternate_port_name[8];
 558         uint8_t alternate_name_name[8];
 559 
 560         uint8_t boot_port_name[8];
 561         uint8_t boot_lun_number[2];
 562         uint8_t reserved_10[2];
 563 
 564         uint8_t alt1_boot_port_name[8];
 565         uint8_t alt1_boot_lun_number[2];
 566         uint8_t reserved_11[2];
 567 
 568         uint8_t alt2_boot_port_name[8];
 569         uint8_t alt2_boot_lun_number[2];
 570         uint8_t reserved_12[2];
 571 
 572         uint8_t alt3_boot_port_name[8];
 573         uint8_t alt3_boot_lun_number[2];
 574         uint8_t reserved_13[2];
 575 
 576         /*
 577          * BIT 0 = Selective Login
 578          * BIT 1 = Alt-Boot Enable
 579          * BIT 2 = Reserved
 580          * BIT 3 = Enable Boot Order List
 581          * BIT 4 = Reserved
 582          * BIT 5 = Enable Selective LUN
 583          * BIT 6 = Reserved
 584          * BIT 7-31 =
 585          */
 586         uint8_t efi_parameters[4];
 587 
 588         uint8_t reset_delay;
 589         uint8_t reserved_14;
 590         uint8_t reserved_15[2];
 591 
 592         uint8_t boot_id_number[2];
 593         uint8_t reserved_16[2];
 594 
 595         uint8_t max_luns_per_target[2];
 596         uint8_t reserved_17[2];
 597 
 598         uint8_t port_down_retry_count[2];
 599         uint8_t link_down_timeout[2];
 600 
 601         /*
 602          * FCode parameters word (offset 344)
 603          *
 604          * BIT 0 = Enable BIOS pathname
 605          * BIT 1 = fcode qlc
 606          * BIT 2 = fcode host
 607          * BIT 3-7 =
 608          */
 609         uint8_t fcode_parameter[2];
 610         uint8_t reserved_18[6];
 611 
 612         /* Offset 352. */
 613         uint8_t reserved_19[4];
 614         uint8_t reserved_20[10];
 615         uint8_t reserved_21[2];
 616         uint8_t reserved_22[16];
 617 
 618         /* Offset 384. */
 619         uint8_t reserved_23[16];
 620         uint8_t reserved_24[16];
 621 
 622         /* Offset 416. */
 623         uint8_t reserved_25[64];
 624 
 625         /* Offset 480. */
 626         uint8_t model_name[16];
 627 
 628         /* Offset 496. */
 629         uint8_t feature_mask_l[2];
 630         uint8_t feature_mask_h[2];
 631         uint8_t reserved_26[4];
 632 
 633         uint8_t subsystem_vendor_id[2];
 634         uint8_t subsystem_device_id[2];
 635 
 636         uint8_t checksum[4];
 637 
 638 } qlt_nvram_81xx_t;
 639 
 640 #ifdef  __cplusplus
 641 }
 642 #endif
 643 
 644 #endif /* _QLT_REGS_H */