linux/drivers/ata/ahci.h
<<
>>
Prefs
   1/*
   2 *  ahci.h - Common AHCI SATA definitions and declarations
   3 *
   4 *  Maintained by:  Jeff Garzik <jgarzik@pobox.com>
   5 *                  Please ALWAYS copy linux-ide@vger.kernel.org
   6 *                  on emails.
   7 *
   8 *  Copyright 2004-2005 Red Hat, Inc.
   9 *
  10 *
  11 *  This program is free software; you can redistribute it and/or modify
  12 *  it under the terms of the GNU General Public License as published by
  13 *  the Free Software Foundation; either version 2, or (at your option)
  14 *  any later version.
  15 *
  16 *  This program is distributed in the hope that it will be useful,
  17 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19 *  GNU General Public License for more details.
  20 *
  21 *  You should have received a copy of the GNU General Public License
  22 *  along with this program; see the file COPYING.  If not, write to
  23 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  24 *
  25 *
  26 * libata documentation is available via 'make {ps|pdf}docs',
  27 * as Documentation/DocBook/libata.*
  28 *
  29 * AHCI hardware documentation:
  30 * http://www.intel.com/technology/serialata/pdf/rev1_0.pdf
  31 * http://www.intel.com/technology/serialata/pdf/rev1_1.pdf
  32 *
  33 */
  34
  35#ifndef _AHCI_H
  36#define _AHCI_H
  37
  38#include <linux/libata.h>
  39
  40/* Enclosure Management Control */
  41#define EM_CTRL_MSG_TYPE              0x000f0000
  42
  43/* Enclosure Management LED Message Type */
  44#define EM_MSG_LED_HBA_PORT           0x0000000f
  45#define EM_MSG_LED_PMP_SLOT           0x0000ff00
  46#define EM_MSG_LED_VALUE              0xffff0000
  47#define EM_MSG_LED_VALUE_ACTIVITY     0x00070000
  48#define EM_MSG_LED_VALUE_OFF          0xfff80000
  49#define EM_MSG_LED_VALUE_ON           0x00010000
  50
  51enum {
  52        AHCI_MAX_PORTS          = 32,
  53        AHCI_MAX_SG             = 168, /* hardware max is 64K */
  54        AHCI_DMA_BOUNDARY       = 0xffffffff,
  55        AHCI_MAX_CMDS           = 32,
  56        AHCI_CMD_SZ             = 32,
  57        AHCI_CMD_SLOT_SZ        = AHCI_MAX_CMDS * AHCI_CMD_SZ,
  58        AHCI_RX_FIS_SZ          = 256,
  59        AHCI_CMD_TBL_CDB        = 0x40,
  60        AHCI_CMD_TBL_HDR_SZ     = 0x80,
  61        AHCI_CMD_TBL_SZ         = AHCI_CMD_TBL_HDR_SZ + (AHCI_MAX_SG * 16),
  62        AHCI_CMD_TBL_AR_SZ      = AHCI_CMD_TBL_SZ * AHCI_MAX_CMDS,
  63        AHCI_PORT_PRIV_DMA_SZ   = AHCI_CMD_SLOT_SZ + AHCI_CMD_TBL_AR_SZ +
  64                                  AHCI_RX_FIS_SZ,
  65        AHCI_PORT_PRIV_FBS_DMA_SZ       = AHCI_CMD_SLOT_SZ +
  66                                          AHCI_CMD_TBL_AR_SZ +
  67                                          (AHCI_RX_FIS_SZ * 16),
  68        AHCI_IRQ_ON_SG          = (1 << 31),
  69        AHCI_CMD_ATAPI          = (1 << 5),
  70        AHCI_CMD_WRITE          = (1 << 6),
  71        AHCI_CMD_PREFETCH       = (1 << 7),
  72        AHCI_CMD_RESET          = (1 << 8),
  73        AHCI_CMD_CLR_BUSY       = (1 << 10),
  74
  75        RX_FIS_PIO_SETUP        = 0x20, /* offset of PIO Setup FIS data */
  76        RX_FIS_D2H_REG          = 0x40, /* offset of D2H Register FIS data */
  77        RX_FIS_SDB              = 0x58, /* offset of SDB FIS data */
  78        RX_FIS_UNK              = 0x60, /* offset of Unknown FIS data */
  79
  80        /* global controller registers */
  81        HOST_CAP                = 0x00, /* host capabilities */
  82        HOST_CTL                = 0x04, /* global host control */
  83        HOST_IRQ_STAT           = 0x08, /* interrupt status */
  84        HOST_PORTS_IMPL         = 0x0c, /* bitmap of implemented ports */
  85        HOST_VERSION            = 0x10, /* AHCI spec. version compliancy */
  86        HOST_EM_LOC             = 0x1c, /* Enclosure Management location */
  87        HOST_EM_CTL             = 0x20, /* Enclosure Management Control */
  88        HOST_CAP2               = 0x24, /* host capabilities, extended */
  89
  90        /* HOST_CTL bits */
  91        HOST_RESET              = (1 << 0),  /* reset controller; self-clear */
  92        HOST_IRQ_EN             = (1 << 1),  /* global IRQ enable */
  93        HOST_AHCI_EN            = (1 << 31), /* AHCI enabled */
  94
  95        /* HOST_CAP bits */
  96        HOST_CAP_SXS            = (1 << 5),  /* Supports External SATA */
  97        HOST_CAP_EMS            = (1 << 6),  /* Enclosure Management support */
  98        HOST_CAP_CCC            = (1 << 7),  /* Command Completion Coalescing */
  99        HOST_CAP_PART           = (1 << 13), /* Partial state capable */
 100        HOST_CAP_SSC            = (1 << 14), /* Slumber state capable */
 101        HOST_CAP_PIO_MULTI      = (1 << 15), /* PIO multiple DRQ support */
 102        HOST_CAP_FBS            = (1 << 16), /* FIS-based switching support */
 103        HOST_CAP_PMP            = (1 << 17), /* Port Multiplier support */
 104        HOST_CAP_ONLY           = (1 << 18), /* Supports AHCI mode only */
 105        HOST_CAP_CLO            = (1 << 24), /* Command List Override support */
 106        HOST_CAP_LED            = (1 << 25), /* Supports activity LED */
 107        HOST_CAP_ALPM           = (1 << 26), /* Aggressive Link PM support */
 108        HOST_CAP_SSS            = (1 << 27), /* Staggered Spin-up */
 109        HOST_CAP_MPS            = (1 << 28), /* Mechanical presence switch */
 110        HOST_CAP_SNTF           = (1 << 29), /* SNotification register */
 111        HOST_CAP_NCQ            = (1 << 30), /* Native Command Queueing */
 112        HOST_CAP_64             = (1 << 31), /* PCI DAC (64-bit DMA) support */
 113
 114        /* HOST_CAP2 bits */
 115        HOST_CAP2_BOH           = (1 << 0),  /* BIOS/OS handoff supported */
 116        HOST_CAP2_NVMHCI        = (1 << 1),  /* NVMHCI supported */
 117        HOST_CAP2_APST          = (1 << 2),  /* Automatic partial to slumber */
 118
 119        /* registers for each SATA port */
 120        PORT_LST_ADDR           = 0x00, /* command list DMA addr */
 121        PORT_LST_ADDR_HI        = 0x04, /* command list DMA addr hi */
 122        PORT_FIS_ADDR           = 0x08, /* FIS rx buf addr */
 123        PORT_FIS_ADDR_HI        = 0x0c, /* FIS rx buf addr hi */
 124        PORT_IRQ_STAT           = 0x10, /* interrupt status */
 125        PORT_IRQ_MASK           = 0x14, /* interrupt enable/disable mask */
 126        PORT_CMD                = 0x18, /* port command */
 127        PORT_TFDATA             = 0x20, /* taskfile data */
 128        PORT_SIG                = 0x24, /* device TF signature */
 129        PORT_CMD_ISSUE          = 0x38, /* command issue */
 130        PORT_SCR_STAT           = 0x28, /* SATA phy register: SStatus */
 131        PORT_SCR_CTL            = 0x2c, /* SATA phy register: SControl */
 132        PORT_SCR_ERR            = 0x30, /* SATA phy register: SError */
 133        PORT_SCR_ACT            = 0x34, /* SATA phy register: SActive */
 134        PORT_SCR_NTF            = 0x3c, /* SATA phy register: SNotification */
 135        PORT_FBS                = 0x40, /* FIS-based Switching */
 136
 137        /* PORT_IRQ_{STAT,MASK} bits */
 138        PORT_IRQ_COLD_PRES      = (1 << 31), /* cold presence detect */
 139        PORT_IRQ_TF_ERR         = (1 << 30), /* task file error */
 140        PORT_IRQ_HBUS_ERR       = (1 << 29), /* host bus fatal error */
 141        PORT_IRQ_HBUS_DATA_ERR  = (1 << 28), /* host bus data error */
 142        PORT_IRQ_IF_ERR         = (1 << 27), /* interface fatal error */
 143        PORT_IRQ_IF_NONFATAL    = (1 << 26), /* interface non-fatal error */
 144        PORT_IRQ_OVERFLOW       = (1 << 24), /* xfer exhausted available S/G */
 145        PORT_IRQ_BAD_PMP        = (1 << 23), /* incorrect port multiplier */
 146
 147        PORT_IRQ_PHYRDY         = (1 << 22), /* PhyRdy changed */
 148        PORT_IRQ_DEV_ILCK       = (1 << 7), /* device interlock */
 149        PORT_IRQ_CONNECT        = (1 << 6), /* port connect change status */
 150        PORT_IRQ_SG_DONE        = (1 << 5), /* 1="drie ManagemN1d0Mrocesspan>
  511e15     PORT_IRQ_SG_DONE/* xfer exhuIS data */an>
  521 1      PORT_IRQ_SG_DONE/* incorrecSet DterlocBspan */an>
  531 1      PORT_IRQ_SG_DONE</* incorrec hi S data */an>
  541 1      PORT_IRQ_SG_DONE/* PCI DAC ( FIS data */an>
  551 1      PORT_IRQ_SG_DONE<    R_HI= (1 << 26), /* task filster FIS data */an>
  561 15 href="drivers/ata/ahci.h#L147" id="L57" clas1s="line" name="L57">  571 1      PORT_IRQ_SG_DONEPORT_IRQ_HBUS_ERR       = |="drivers/ata/ahci.h#L147" id="L148" class="line" name="L58">  581 1      PORT_IRQ_IF_ERR         |="drivers/ata/ahci.h#L147" id="L149" class="line" name="L59">  591 1      PORT_IRQ_CONNECT        =|="drivers/ata/ahci.h#L147" id="L60" clas1s="line" name="L60">  601 1      PORT_IRQ_PHYRDY         |="drivers/ata/ahci.h#L147" id="L51" clas1s="line" name="L61">  611 1      PORT_IRQ_SG_DONE  621 16            = 0x24, ==================="+code=PORT_IRQ_IF_ERR"  class="sref">PORT_IRQ_BAD_PMP        f="drivers/ata/ahci.h#L74" id="1L63" clas1s="line" name="L63">  631 1      PORT_IRQ_IF_ERRPORT_IRQ_SG_DONE  641 1                                PORT_IRQ_TF_ERR         |="drivers/ata/ahci.h#L147" id="L145" class="line" name="L65">  651 1      PORT_IRQ_HBUS_DATA_ERR  = (1 &f="drivers/ata/ahci.h#L74" id="1L16" class=="line" name="L16">  16 16     PORT_IRQDEF__HBUS_DA        = 0x3c, PORT_IRQ_IF_ERRPORT_IRQ_SG_DONE        =|="drivers/ata/ahci.h#L147" id="L57" clas1s="line" name="L67">  671 1                                        "+code=AHCI_MAX_SG_DONEPORT_IRQ_SG_DONEPORT_IRQ_SG_DONE<  681 16     PORT_IRQ_SG_DONE    R_HI"sref">PORT_IRQ_SG_DONE<    R_HI= (1f="drivers/ata/ahci.h#L74" id="1L149" class="line" name="L69">  691 16 href="drivers/ata/ahci.h#L90" id="1L70" clas1s="line" name="L70">  701 17     /* HOST_CTL_ISSUE
  711 1      PORT_IRQ_BAD_E/* Staggereve Link PM state c/state ca>
  721 1      EM_CTRL__BAD_E/* Aggressive Link PM support /
  731 1      AHCI_CMD_BAD_E/* xfer exhDterlocis Aass=n>
  741
17     PORT_IRQ_BAD_E/* incorrecFBS C/
  751 1      PORT_IRQ_BAD_E/* Port MultMP attachpan>
  761 1      EM_MSG_L_BAD_E/* 1="drie cmMA addr hi engref=runnspan>
  771 1      EM_MSG_L_BAD_E/* Slumber  */< hi engref=runnspan>
  781 1      EM_MSG_L_BAD_E/* Slumber E
  791
17     HOST_CAP_ISSUE" css=        = (1 << 27), /* incorrecQueueing addrosupport >
  801 18     EM_MSG_L_BAD_E/* incorrecPower upinterloc>
  811 1      RX_FIS_P_BAD_E/* incorrecSpin upinterloc>
  821 1      HOST_CAP_BAD_E/* task filE
  831 18 href="drivers/ata/ahci.h#L114" id="L84" clas1s="line" name="L84">  841 1      PORT_IRQ_MASKECClass=   = (1 <&l0xf; 28), /* host busi/f >CCapable /span>
  851 1      PORT_CMD_ISSUECCl =    /* host busPutsi/f in a
  861 1      PORT_IRQ_IF_NECClAR PUs== (1 <&l0x2; 28), /* host busPutsi/f in ptate capable >
  871 1      PORT_IRQ_IF_EECClSLUMBE== (1 <&l0x6; 28), /* host busPutsi/f in state capable >
  881 18 href="drivers/ata/ahci.h#L119" id="L89" clas1s="line" name="L89">  891
18     HOST_RES_ISSUSZ    ss=    /* incorrecFBS nterlocs pro
  901 19     HOST_RES_ISSUSZ/* incorrecFBS a
  911 1      HOST_RES_ISSUSZ/* AutomatiFBS nterlocto/
  921 1      PORT_IRQ_MASKSZHOST_RES_ISSUSZ/* AutomatiSZ<.aEVo>
  931 1      PORT_CMD_ISSUSZ/* incorrecFBS sspale nterloc
  941
19     HOST_CAP_ISSUSZ/* incorrecFBS nterloc
  951 19     HOST_AHC" class=ss=    /* task filE
  961 19 href="drivers/ata/ahci.h#L147" id="L97" clas1s="line" name="L97">  971 19     /* PORT_IRQhpta/-hrefflags
  981 19 href="drivers/ata/ahci.h#L119" id="L99" clas1s="line" name="L99">  991 19fine AHCI_MAX_CMDS FLAG=ine ="+code=AHCI_RX_flags"sref">AHCI_MAXflags    nAHCI_MAXpta/ble_or *    AHCI_MAXflags    n="drivers/ata/ahci.h#L119" id=2L100" cla2s="line" name="L100"> 102 20 href="drivers/ata/ahci.h#L51" id="2L101" cla2s="line" name="L101"> 102 2      HOST_CAP_CMDS FLAG_NOass=      922 2      PORT_IRQ_CMDS FLAG_IGNERR" class=   = (1 << 24), /* PCI DAC ignore RR" class=n>
 102 2      PORT_IRQ_CMDS FLAG_IGNESss=_INTERNs== (1 << 26), /* PCI DAC ignore Sss=_INTERNs=n>
  942 2      HOST_CAP_CMDS FLAG_32BITlass=       = (1 << 26), /* incorrecforloc32 sup>
  952 2      PORT_TFD_CMDS FLAG_MVlARs=    /* Slumber P */
 102 2      AHCI_CMD_ATAP FLAG_NOaMS=    /* 1="drie no (64-MS=n>
  972 2      PORT_IRQ_ATAP FLAG_NOass=    /* Aggressino (MPn>
  982 2      /* host bus4K *2s= sectopan>
 102 2      HOST_CAP_CMDS FLAG_YESass=    /* host busforlocss= */< pan>
 112 2      PORT_CMD_ATAP FLAG_NOaSUSPEN=       = (1 << 26), /* task fildonspan>t */spepan>
 112 2      PORT_IRQ_ATAP FLAG_SRST_TOUT_ISssFFLIs=    <;< 26), /* PCI DAC treat SRST timeout as 112 2      ass="comment">/* PCI D                                                        luppoofflref=>
 112
21     PORT_SCR_CMDS FLAG_NOaSss=    /* PCI DAC no sntf=>
 112 21     PORT_TFD_CMDS FLAG_NOaFPa>  A=      = (1 << 2),  /* Partial no FPa>  Aan>
 112 2      PORT_FBS_CMDS FLAG_YESass=    /* Slumber forlocFBS */< pan>
 112 2      PORT_IRQ_ATAP FLAG_DELAY_ENGIs=     = (1 << 22), /* 1="drie Mo no */ 112 2      ass="comment">/* PCI D                                                        /span/ 112
2a hrefass="comment">/* PCI D                                                        
 112 21 href="drivers/ata/ahci.h#L90" id="2L120" cla2s="line" name="L120"> 122 22     /* HOST_CTLap-hrefflags
 122 2      ="drivers/ata/ahci.h#L138" id=2L201" cla2s="line" name="L122"> 122 2      EM_MSG_L_ATAPFLAG_COMMs=    PORT_TFD_TAPFLAG_SRs=   = |="+code=PORT_IRQ_TAPFLAG_I "sref">PORT_TFD_TAPFLAG_I    = |="drivers/ata/ahci.h#L147" id=2L123" cla2s="line" name="L123"> 122 2      PORT_TFD_TAPFLAG_ACPI_SRs=   = |="+code=PORT_IRQ_TAPFLAG_A="sref">EM_MSG_L_TAPFLAG_A== (1f="drivers/ata/ahci.h#L74" id="2L124" cla2s="line" name="L124"> 122 22 href="drivers/ata/ahci.h#L95" id="2L125" cla2s="line" name="L125"> 122 2      HOST_CAPICH_Ms=    /* FIS-baseICH Ms=r */
 122 22 href="drivers/ata/ahci.h#L147" id=2L127" cla2s="line" name="L127"> 122 22     /* PORT_IRQem cha*tanpan>
 122 2      PORT_FBSEM_MsX_SLOT=     122 2      HOST_CAPEM_MsX_RETR=     132 23 href="drivers/ata/ahci.h#L51" id="2L131" cla2s="line" name="L131"> 132 2      /* PORT_IRQem_ctl
 132 2      HOST_CAPa>    _Rs=    /* host busRenkno>
 132 2      HOST_CAPa>    _T=    /* host busTransmsupMessageo>
 132 2      PORT_IRQa>    _M=    /* MechanicalssageoRa copyan>
 132 2      PORT_CMDa>    _ALH=    /* AggressivLED */
 132
23     HOST_CAPa>    _XM=    /* SupportsTransmsupOspan>
 132 23     HOST_CAPa>    _SMB    /* Slumber sspale alssageoBuffpan>
 132 2      HOST_CAPa>    _SGI/* SNotificaGiple lssagesed */
 132 2      PORT_IRQa>    _Ss=    /* Supports ES-2e lssagesed */
 142 2      PORT_IRQa>    _SAFT=        = (1 << 27), /* Port MulSAF-TEe lssagesed */
 142 2      HOST_CAPa>    _ss=    /* Aggressispan lssagesed */
 142 2      ="drivers/ata/ahci.h#L117" id=2L133" cla2s="line" name="L143"> 142 2      /* PORT_IRQem  lssage typeo>
 142 2      HOST_CAPa> MSG_TYPE_ss=     = (1 << 22), /* Mechanicspan>
 142 2      PORT_IRQa> MSG_TYPE_SAFT=   = (1 << 24), /* PCI DAC SAF-TEe>
 142
24     HOST_CAPa> MSG_TYPE_SES=    = (1 << 1),  /* PCI DAC  ES-2e>
 142 2      HOST_CAPa> MSG_TYPE_SGI/* incorrecSGiple>
 142 2      };="drivers/ata/ahci.h#L107" id=2L139" cla2s="line" name="L149"> 142 24 href="drivers/ata/ahci.h#L90" id="2L150" cla2s="line" name="L150"> 152 2      struct="+code=PORT_IRQ90" _cmd_hdr"sref">HOST_CAP90" _cmd_hdr   = {="drivers/ata/ahci.h#L90" id="2L131" cla2s="line" name="L51">  512e25     HOST_CAP__le3=    AHCI_MAXopts    ;="drivers/ata/ahci.h#L107" id=2L142" cla2s="line" name="L52">  522 2      HOST_CAP__le3=    HOST_CAP/  532 2      HOST_CAP__le3=    HOST_CAPtbl_*/  542 2      HOST_CAP__le3=    HOST_CAPtbl_*/  552 2      HOST_CAP__le3=    HOST_CAPdeterpya    [4];="drivers/ata/ahci.h#L107" id=2L136" cla2s="line" name="L56">  562 25 href};="drivers/ata/ahci.h#L107" id=2L57" clas2s="line" name="L57">  572 2      ="drivers/ata/ahci.h#L107" id=2L138" cla2s="line" name="L58">  582 2      struct="+code=PORT_IRQ90" _sg"sref">HOST_CAP90" _sg   = {="drivers/ata/ahci.h#L90" id="2L139" cla2s="line" name="L59">  592 25     HOST_CAP__le3=    HOST_CAP*/  602 26     HOST_CAP__le3=    HOST_CAP*/  612 26     HOST_CAP__le3=    HOST_CAPdeterpya    ;="drivers/ata/ahci.h#L107" id=2L142" cla2s="line" name="L62">  622 26     HOST_CAP__le3=    AHCI_MAXflags_size    ;="drivers/ata/ahci.h#L107" id=2L133" cla2s="line" name="L63">  632 2      };="drivers/ata/ahci.h#L107" id=2L144" cla2s="line" name="L64">  642 26 href="drivers/ata/ahci.h#L95" id="2L145" cla2s="line" name="L65">  652 2      struct="+code=PORT_IRQ90" _em_pta/"sref">HOST_CAP90" _em_pta/   = {="drivers/ata/ahci.h#L90" id="2L16" clas2=="line" name="L16">  162//a> 26     HOST_CAP/w_ LED */<    <"+code=PORT_IRQblupp_polic<"sref">HOST_CAPblupp_polic<    ;="drivers/ata/ahci.h#L107" id=2L57" clas2s="line" name="L67">  672 2              struct="+code=PORT_IRQtimer_ add"sref">HOST_CAPtimer_ add    <"+code=PORT_IRQtimer"sref">HOST_CAPtimer    ;="drivers/ata/ahci.h#L107" id=2L138" cla2s="line" name="L68">  682 26     HOST_CAP/apya_ LED */<    ;="drivers/ata/ahci.h#L107" id=2L139" cla2s="line" name="L69">  692 269    HOST_CAP LED */<    ;="drivers/ata/ahci.h#L107" id=2L70" clas2s="line" name="L70">  702 27     HOST_CAPlya_pable    ;="drivers/ata/ahci.h#L107" id=2L51" clas2s="line" name="L71">  712 2      };="drivers/ata/ahci.h#L107" id=2L142" cla2s="line" name="L72">  722 27     ="drivers/ata/ahci.h#L117" id=2L73" clas2s="line" name="L73">  732 2      struct="+code=PORT_IRQ90" _/HOST_CAP90" _/  742
27     HOST_CAP9ta_lupp    HOST_CAP9LED e_lupp    ;="drivers/ata/ahci.h#L107" id=2L145" cla2s="line" name="L75">  752 2      HOST_CAP90" _cmd_hdr   = ef==*"+code=PORT_IRQcmd_slod"sref">HOST_CAPcmd_slod    ;="drivers/ata/ahci.h#L107" id=2L16" clas2s="line" name="L76">  762 2      HOST_CAPdma_*/HOST_CAPcmd_slod_dma    ;="drivers/ata/ahci.h#L107" id=2L57" clas2s="line" name="L77">  772 2      HOST_CAPcmd_tbl    ;="drivers/ata/ahci.h#L107" id=2L138" cla2s="line" name="L78">  782 2      HOST_CAPdma_*/HOST_CAPcmd_tbl_dma    ;="drivers/ata/ahci.h#L107" id=2L139" cla2s="line" name="L79">  792
27     HOST_CAPrx_fia    ;="drivers/ata/ahci.h#L107" id=2L80" clas2s="line" name="L80">  802 28     HOST_CAPdma_*/HOST_CAPrx_fia_dma    ;="drivers/ata/ahci.h#L107" id=2L51" clas2s="line" name="L81">  812 28     /* PORT_IRQ SATss= spuriouspt enable/danalysian>
  822 2      HOST_CAPncq_saw_d2h    :1;="drivers/ata/ahci.h#L107" id=2L73" clas2s="line" name="L83">  832 283    HOST_CAPncq_saw_dmaa    :1;="drivers/ata/ahci.h#L107" id=2L144" cla2s="line" name="L84">  842 2      HOST_CAPncq_saw_sdb    :1;="drivers/ata/ahci.h#L107" id=2L145" cla2s="line" name="L85">  852 2      HOST_CAPu3=    HOST_CAPt er_/spa    ; href="ss="comment">/* PORT_IRQt enable/scto//
  862 2      HOST_CAPbool    AHCI_MAXfbs_s *//* PORT_IRQnknoiffcFBS ised */
  872 2      HOST_CAPbool    AHCI_MAXfbs_//* PORT_IRQnknoiffcFBS ise/
  882 28     HOST_CAPfbs_ne"d_de/    ; hr"ss="comment">/* PORT_IRQnapyiSZ<.aEVoof ne"dn */<>
  892
28     /* PORT_IRQenclosspanmanage POR=t fo perort slod<>
  902 29     HOST_CAP90" _em_pta/   = ==ef"+code=PORT_IRQem_pta/"sref">HOST_CAPem_pta/   =["+code=PORT_IRQa> MsX_SLOT="sref">PORT_FBSEM_MsX_SLOT=    ];="drivers/ata/ahci.h#L107" id=2L71" clas2s="line" name="L91">  912 29     };="drivers/ata/ahci.h#L107" id=2L142" cla2s="line" name="L92">  922 29     ="drivers/ata/ahci.h#L117" id=2L83" clas2s="line" name="L93">  932 29     struct="+code=PORT_IRQ90" _ dat_pta/"sref">HOST_CAP90" _ dat_pta/   = {="drivers/ata/ahci.h#L90" id="2L94" clas2s="line" name="L94">  942
29     HOST_CAP__iomem    <*========ef"+code=PORT_IRQmmio"sref">HOST_CAPmmio    ; href=href="ss="comment">/* PORT_IRQbus-indepepaPOR=mem  ap<>
  952 29     AHCI_MAXflags    ;href=href="ss="comment">/* PORT_IRQ_ATAP FLAG_*<>
  962 29     HOST_CAPu3=    HOST_CAPcap    ; href=href=lass="comment">/* 1="drie cap
  972 29     HOST_CAPu3=    HOST_CAPcap=    ; href=href="ss="comment">/* PORT_IRQcap=
  982 29     HOST_CAPu3=    HOST_CAP//* port connect map
  992 29     HOST_CAPu3=    HOST_CAP/apya_cap    ; href="ss="comment">/* PORT_IRQ/apya t ite cacap<>
 103 30     HOST_CAPu3=    HOST_CAP/apya_cap=    ; href"ss="comment">/* PORT_IRQ/apya t ite cacap2e>
 103 3      HOST_CAPu3=    HOST_CAP/apya_//* PORT_IRQ/apya t ite ca/
  923 3      HOST_CAPu3=    HOST_CAPem_loc    ; "ss="comment">/* PORT_IRQenclosspanmanage POR=loc
  933 3      HOST_CAPu3=    HOST_CAPem_buf_sz    ; href="ss="comment">/* PORT_IRQEMQbuffpansize in byle >
  943 3      HOST_CAPu3=    HOST_CAPem_msg_type    ; hre"ss="comment">/* PORT_IRQEMQ lssage typeo>
  953 3      };="drivers/ata/ahci.h#L107" id=3L106" cla3s="line" name="L106"> 103 30 href="drivers/ata/ahci.h#L147" id=3L706" cla3s="line" name="L97">  973 3      extern t e "+code=PORT_IRQ90" _ignore_sss"sref">AHCI_MAX90" _ignore_sss    ;="drivers/ata/ahci.h#L107" id=3L806" cla3s="line" name="L98">  983 30 href="drivers/ata/ahci.h#L119" id=3L109" cla3s="line" name="L109"> 103 3      extern struct="+code=PORT_IRQnterlo_attribule"sref">HOST_CAPnterlo_attribule    <*"+code=PORT_IRQ90" _s dat_attrs"sref">AHCI_MAX90" _s dat_attrs   =[];="drivers/ata/ahci.h#L107" id=3L110" cla3s="line" name="L110"> 113 3      extern struct="+code=PORT_IRQnterlo_attribule"sref">HOST_CAPnterlo_attribule    <*"+code=PORT_IRQ90" _snte_attrs"sref">AHCI_MAX90" _snte_attrs   =[];="drivers/ata/ahci.h#L107" id=3L101" cla3s="line" name="L111"> 113 31     ="drivers/ata/ahci.h#L138" id=3L201" cla3s="line" name="L112"> 113 3      HOST_CAPa>
"sref">HOST_CAPnrv_12">    ) 113
31     HOST_CAPaTAass=aSH=    ="+code=AHCI_RX_drv_12">"sref">HOST_CAPnrv_12">    ),ref===========ef==========================\="drivers/ata/ahci.h#L138" id=3L403" cla3s="line" name="L114"> 113 31     "sref">HOST_CAPcan_queu>    
PORT_FBS_CMDSMsX_CMD=    <- 1,ref===========ef====\="drivers/ata/ahci.h#L138" id=3L503" cla3s="line" name="L115"> 113 3      AHCI_MAXsg_t/spasize    
PORT_FBS_CMDSMsX_SG    ,ref===========ef==========\="drivers/ata/ahci.h#L138" id=3L106" cla3s="line" name="L116"> 113 3      HOST_CAPdma_boundar<    
  BOUNDAR="sref">HOST_CAP_>
  BOUNDAR=    ,ref===========ef====\="drivers/ata/ahci.h#L138" id=3L706" cla3s="line" name="L117"> 113 317    AHCI_MAXs dat_attrs   = href=======f="+code=AHCI_CMD90" _s dat_attrs"sref">AHCI_MAX90" _s dat_attrs   =,ref===========ef=====\="drivers/ata/ahci.h#L138" id=3L806" cla3s="line" name="L118"> 113
318    AHCI_MAXsnte_attrs   =======ef=====f="+code=AHCI_CMD90" _snte_attrs"sref">AHCI_MAX90" _snte_attrs   =="drivers/ata/ahci.h#L138" id=3L109" cla3s="line" name="L119"> 113 31 href="drivers/ata/ahci.h#L90" id="3L120" cla3s="line" name="L120"> 123 32     extern struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/AHCI_MAX90" _ops    ;="drivers/ata/ahci.h#L107" id=3L121" cla3s="line" name="L121"> 123 3      extern struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/AHCI_MAX90" _pmp_retry_srst_ops    ;="drivers/ata/ahci.h#L107" id=3L201" cla3s="line" name="L122"> 123 32     ="drivers/ata/ahci.h#L117" id=3L123" cla3s="line" name="L123"> 123 3      une */ed t e "+code=PORT_IRQ90" _nte_ine" if<"sref">HOST_CAP 0" _nte_ine" if<    =struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/HOST_CAPap    );="drivers/ata/ahci.h#L107" id=3L403" cla3s="line" name="L124"> 123 32 hrefvoid "+code=AHCI_MAX 0" _fill_cmd_slod"sref">HOST_CAP 0" _fill_cmd_slod    =struct="+code=PORT_IRQ90" _/HOST_CAP90" _/HOST_CAP/p   =,rune */ed t e "+code=PORT_IRQtag"sref">HOST_CAPtag   =,="drivers/ata/ahci.h#L107" id=3L503" cla3s="line" name="L125"> 123 32=    HOST_CAPu3=    <"+code=HOST_CAPopts"sref">AHCI_MAXopts    );="drivers/ata/ahci.h#L107" id=3L106" cla3s="line" name="L126"> 123 32 hrefvoid "+code=AHCI_MAX 0" _/apy_t ite c_config"sref">HOST_CAP90" _sapy_t ite c_config    =struct="+code=PORT_IRQnterlo"sref">HOST_CAPnterlo   = *"+code=PORT_IRQde/"sref">HOST_CAPde/    ,="drivers/ata/ahci.h#L107" id=3L706" cla3s="line" name="L127"> 123 32                                   struct="+code=PORT_IRQ90" _ dat_pta/"sref">HOST_CAP90" _ dat_pta/   = *"+code=PORT_IRQhpta/"sref">HOST_CAPhpta/   =,="drivers/ata/ahci.h#L107" id=3L806" cla3s="line" name="L128"> 123 32     HOST_CAPforlo_/ 123 3      HOST_CAP/spa_/ 133 33 hrefvoid "+code=AHCI_MAX 0" _t it_controller"sref">HOST_CAP 0" _t it_controller    =struct="+code=PORT_IRQ9ta_ dat"sref">AHCI_MAX9ta_ dat   = *"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =);="drivers/ata/ahci.h#L107" id=3L121" cla3s="line" name="L131"> 133 3      t e "+code=PORT_IRQ90" _detet_controller"sref">HOST_CAP 0" _detet_controller    =struct="+code=PORT_IRQ9ta_ dat"sref">AHCI_MAX9ta_ dat   = *"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =);="drivers/ata/ahci.h#L107" id=3L201" cla3s="line" name="L132"> 133 33     ="drivers/ata/ahci.h#L117" id=3L133" cla3s="line" name="L133"> 133 3      t e "+code=PORT_IRQ90" _no_softdetet"sref">HOST_CAP 0" _no_softdetet    =struct="+code=PORT_IRQ9ta_lupp"sref">HOST_CAP9ta_lupp    <*"+code=PORT_IRQlupp"sref">HOST_CAPlupp    ,rune */ed t e *"+code=PORT_IRQcef">"sref">HOST_CAPcef">   =,="drivers/ata/ahci.h#L107" id=3L124" cla3s="line" name="L134"> 133 3      HOST_CAP/mp   =,rune */ed long="+code=PORT_IRQdeadme="L1ref">HOST_CAPdeadme="   =,="drivers/ata/ahci.h#L107" id=3L503" cla3s="line" name="L135"> 133 33=    HOST_CAPcheck_dead<   =)=struct="+code=PORT_IRQ9ta_lupp"sref">HOST_CAP9ta_lupp    <*"+code=PORT_IRQlupp"sref">HOST_CAPlupp    ));="drivers/ata/ahci.h#L107" id=3L106" cla3s="line" name="L136"> 133
33 href="drivers/ata/ahci.h#L147" id=3L137" cla3s="line" name="L137"> 133 33     t e "+code=PORT_IRQ90" _stop_engref"sref">HOST_CAP90" _stop_engref    =struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/HOST_CAPap    );="drivers/ata/ahci.h#L107" id=3L138" cla3s="line" name="L138"> 133 3      void "+code=AHCI_MAX 0" _/HOST_CAP90" _st/rt_engref    =struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/HOST_CAPap    );="drivers/ata/ahci.h#L107" id=3L109" cla3s="line" name="L139"> 133 3      t e "+code=PORT_IRQ90" _check_dead<"sref">HOST_CAP90" _check_dead<    =struct="+code=PORT_IRQ9ta_lupp"sref">HOST_CAP9ta_lupp    <*"+code=PORT_IRQlupp"sref">HOST_CAPlupp    );="drivers/ata/ahci.h#L107" id=3L140" cla3s="line" name="L140"> 143 3      t e "+code=PORT_IRQ90" _kick_engref"sref">HOST_CAP90" _kick_engref    =struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/HOST_CAPap    );="drivers/ata/ahci.h#L107" id=3L131" cla3s="line" name="L141"> 143 34     t e "+code=PORT_IRQ90" _/"sref">HOST_CAP90" _/    =struct="+code=PORT_IRQ9ta_/AHCI_MAX9ta_/HOST_CAPap    );="drivers/ata/ahci.h#L107" id=3L201" cla3s="line" name="L142"> 143 3      void "+code=AHCI_MAX 0" _/et_em_mlssages"sref">HOST_CAP90" _set_em_mlssages    =struct="+code=PORT_IRQ90" _ dat_pta/"sref">HOST_CAP90" _ dat_pta/   = *"+code=PORT_IRQhpta/"sref">HOST_CAPhpta/   =,="drivers/ata/ahci.h#L107" id=3L133" cla3s="line" name="L143"> 143 3      AHCI_MAX9ta_/HOST_CAPpi    );="drivers/ata/ahci.h#L107" id=3L124" cla3s="line" name="L144"> 143 3      t e "+code=PORT_IRQ90" _detet_em"sref">HOST_CAP90" _detet_em    =struct="+code=PORT_IRQ9ta_ dat"sref">AHCI_MAX9ta_ dat   = *"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =);="drivers/ata/ahci.h#L107" id=3L145" cla3s="line" name="L145"> 143 3      "+code=PORT_IRQirqreturn_d"sref">HOST_CAPirqreturn_d    <"+code=PORT_IRQ90" _t enable/"sref">HOST_CAP 0" _t enable/    =t e "+code=PORT_IRQirq"sref">HOST_CAPirq   =,rvoid *"+code=PORT_IRQde/_t *tanlo"sref">HOST_CAPnte_t *tanlo   =);="drivers/ata/ahci.h#L107" id=3L106" cla3s="line" name="L146"> 143
34 hrefvoid "+code=AHCI_MAX 0" _ptans_t fo"sref">AHCI_MAX90" _ptans_t fo    =struct="+code=PORT_IRQ9ta_ dat"sref">AHCI_MAX9ta_ dat   = *"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =, cha*t chpan>"+code=AHCI_RX_scc_s"sref">AHCI_MAXscc_s   =);="drivers/ata/ahci.h#L107" id=3L137" cla3s="line" name="L147"> 143 34     ="drivers/ata/ahci.h#L107" id=3L138" cla3s="line" name="L148"> 143 34     static="+code=HOST_VERt me="L1ref">HOST_CAPt me="   = void "+code=AHCI_MAX__iomem"sref">HOST_CAP__iomem    <*"+code=AHCI_MAX__90" _/HOST_CAP__90" _/AHCI_MAX9ta_ dat   = *"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =,="drivers/ata/ahci.h#L107" id=3L109" cla3s="line" name="L149"> 143 34     AHCI_MAX/ 153 3      {="drivers/ata/ahci.h#L90" id="3L131" cla3s="line" name="L51">  513e35     HOST_CAP90" _ dat_pta/   = *"+code=PORT_IRQhpta/"sref">HOST_CAPhpta/   ==f="+code=AHCI_CMDhdat"sref">AHCI_MAX dat   =-href"+code=PORT_IRQ/ra/ble_or *"sref">AHCI_MAXpta/ble_or *    ;="drivers/ata/ahci.h#L107" id=3L142" cla3s="line" name="L52">  523 3      HOST_CAP__iomem    <*"+code=AHCI_MAXmmio"sref">HOST_CAPmmio    =f="+code=AHCI_CMDhpta/"sref">HOST_CAPhpta/   =-href"+code=PORT_IRQmmio"sref">HOST_CAPmmio    ;="drivers/ata/ahci.h#L107" id=3L133" cla3s="line" name="L53">  533 3      ="drivers/ata/ahci.h#L107" id=3L124" cla3s="line" name="L54">  543 3      HOST_CAPmmio     + 0x100 + ="+code=AHCI_RX_/AHCI_MAX/  553 3      }="drivers/ata/ahci.h#L107" id=3L106" cla3s="line" name="L56">  563 35 href="drivers/ata/ahci.h#L147" id=3L57" clas3s="line" name="L57">  573 3      static="+code=HOST_VERt me="L1ref">HOST_CAPt me="   = void "+code=AHCI_MAX__iomem"sref">HOST_CAP__iomem    <*"+code=AHCI_MAX90" _/HOST_CAP90" _/AHCI_MAX9ta_/HOST_CAPap    )="drivers/ata/ahci.h#L147" id=3L138" cla3s="line" name="L58">  583 3      {="drivers/ata/ahci.h#L90" id="3L109" cla3s="line" name="L59">  593 35     HOST_CAP__90" _/HOST_CAPap    -href"+code=PORT_IRQhdat"sref">AHCI_MAX dat   =, "+code=PORT_IRQ9p"sref">HOST_CAPap    -href"+code=PORT_IRQ/AHCI_MAX/  603 36     }="drivers/ata/ahci.h#L107" id=3L51" clas3s="line" name="L61">  613 36     ="drivers/ata/ahci.h#L138" id=3L142" cla3s="line" name="L62">  623 36     static="+code=HOST_VERt me="L1ref">HOST_CAPt me="   = t e "+code=PORT_IRQ90" _nr_/HOST_CAP90" _nr_/HOST_CAPu3=    <"+code=HOST_CAPcap"sref">HOST_CAPcap    )="drivers/ata/ahci.h#L147" id=3L133" cla3s="line" name="L63">  633 3      {="drivers/ata/ahci.h#L90" id="3L144" cla3s="line" name="L64">  643 36     HOST_CAPcap     & 0x1f) + 1;="drivers/ata/ahci.h#L107" id=3L145" cla3s="line" name="L65">  653 36     }="drivers/ata/ahci.h#L107" id=3L16" clas3=="line" name="L16">  163//a> 36 href="drivers/ata/ahci.h#L147" id=3L57" clas3s="line" name="L67">  673 3      #endife"ss="comment">/* PORT_IRQ__ATAP o>
  683 36     
The original LXR software by thf="+code=EMhttp://sourceforge.net/projects/lxa">LXR >/* un*/< , thise/xperi PORal /ahcspanby "+code=EMmailto:lxa@me=ux.no">lxa@me=ux.no .
lxa.me=ux.no kindly dated by "+code=EMhttp://www.redpill-me=pro.no">Redpill Le=pro AS , provideroof Le=ux cha*ultort and oper