FreeBSD kernel CAM code
ata_xpt.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/endian.h>
#include <sys/systm.h>
#include <sys/types.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
#include <sys/time.h>
#include <sys/conf.h>
#include <sys/fcntl.h>
#include <sys/sbuf.h>
#include <sys/eventhandler.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/sysctl.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/cam_queue.h>
#include <cam/cam_periph.h>
#include <cam/cam_sim.h>
#include <cam/cam_xpt.h>
#include <cam/cam_xpt_sim.h>
#include <cam/cam_xpt_periph.h>
#include <cam/cam_xpt_internal.h>
#include <cam/cam_debug.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_message.h>
#include <cam/ata/ata_all.h>
#include <machine/stdarg.h>
#include "opt_cam.h"
Include dependency graph for ata_xpt.c:

Go to the source code of this file.

Data Structures

struct  ata_quirk_entry
 
struct  aprobe_softc
 
struct  ata_scan_bus_info
 

Macros

#define CAM_QUIRK_MAXTAGS   0x01
 
#define PROBE_SET_ACTION(softc, newaction)
 
#define ATA_XPT_XPORT(x, X)
 

Enumerations

enum  aprobe_action {
  PROBE_RESET , PROBE_IDENTIFY , PROBE_SPINUP , PROBE_SETMODE ,
  PROBE_SETPM , PROBE_SETAPST , PROBE_SETDMAAA , PROBE_SETAN ,
  PROBE_SET_MULTI , PROBE_INQUIRY , PROBE_FULL_INQUIRY , PROBE_PM_PID ,
  PROBE_PM_PRV , PROBE_IDENTIFY_SES , PROBE_IDENTIFY_SAFTE , PROBE_DONE ,
  PROBE_INVALID
}
 
enum  aprobe_flags { PROBE_NO_ANNOUNCE = 0x04 }
 

Functions

 __FBSDID ("$FreeBSD$")
 
 PERIPHDRIVER_DECLARE (aprobe, aprobe_driver)
 
static cam_status aproberegister (struct cam_periph *periph, void *arg)
 
static void aprobeschedule (struct cam_periph *probe_periph)
 
static void aprobestart (struct cam_periph *periph, union ccb *start_ccb)
 
static void aproberequestdefaultnegotiation (struct cam_periph *periph)
 
static void aprobedone (struct cam_periph *periph, union ccb *done_ccb)
 
static void aprobecleanup (struct cam_periph *periph)
 
static void ata_find_quirk (struct cam_ed *device)
 
static void ata_scan_bus (struct cam_periph *periph, union ccb *ccb)
 
static void ata_scan_lun (struct cam_periph *periph, struct cam_path *path, cam_flags flags, union ccb *ccb)
 
static void axptscandone (struct cam_periph *periph, union ccb *done_ccb)
 
static struct cam_edata_alloc_device (struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id)
 
static void ata_device_transport (struct cam_path *path)
 
static void ata_get_transfer_settings (struct ccb_trans_settings *cts)
 
static void ata_set_transfer_settings (struct ccb_trans_settings *cts, struct cam_path *path, int async_update)
 
static void ata_dev_async (u_int32_t async_code, struct cam_eb *bus, struct cam_et *target, struct cam_ed *device, void *async_arg)
 
static void ata_action (union ccb *start_ccb)
 
static void ata_announce_periph (struct cam_periph *periph)
 
static void ata_announce_periph_sbuf (struct cam_periph *periph, struct sbuf *sb)
 
static void ata_proto_announce (struct cam_ed *device)
 
static void ata_proto_announce_sbuf (struct cam_ed *device, struct sbuf *sb)
 
static void ata_proto_denounce (struct cam_ed *device)
 
static void ata_proto_denounce_sbuf (struct cam_ed *device, struct sbuf *sb)
 
static void ata_proto_debug_out (union ccb *ccb)
 
static void semb_proto_announce (struct cam_ed *device)
 
static void semb_proto_announce_sbuf (struct cam_ed *device, struct sbuf *sb)
 
static void semb_proto_denounce (struct cam_ed *device)
 
static void semb_proto_denounce_sbuf (struct cam_ed *device, struct sbuf *sb)
 
 TUNABLE_INT ("hw.ata.ata_dma", &ata_dma)
 
 TUNABLE_INT ("hw.ata.atapi_dma", &atapi_dma)
 
 ATA_XPT_XPORT (ata, ATA)
 
 ATA_XPT_XPORT (sata, SATA)
 
 CAM_XPT_PROTO (ata_proto_ata)
 
 CAM_XPT_PROTO (ata_proto_satapm)
 
 CAM_XPT_PROTO (ata_proto_semb)
 
static void ata_dev_advinfo (union ccb *start_ccb)
 
static void _ata_announce_periph (struct cam_periph *periph, struct ccb_trans_settings *cts, u_int *speed)
 

Variables

static periph_init_t aprobe_periph_init
 
static struct periph_driver aprobe_driver
 
static char * probe_action_text []
 
static struct ata_quirk_entry ata_quirk_table []
 
static int ata_dma = 1
 
static int atapi_dma = 1
 
static struct xpt_xport_ops ata_xport_ops
 
static struct xpt_proto_ops ata_proto_ops_ata
 
static struct xpt_proto ata_proto_ata
 
static struct xpt_proto_ops ata_proto_ops_satapm
 
static struct xpt_proto ata_proto_satapm
 
static struct xpt_proto_ops ata_proto_ops_semb
 
static struct xpt_proto ata_proto_semb
 

Macro Definition Documentation

◆ ATA_XPT_XPORT

#define ATA_XPT_XPORT (   x,
 
)
Value:
static struct xpt_xport ata_xport_ ## x = { \
.xport = XPORT_ ## X, \
.name = #x, \
}; \
CAM_XPT_XPORT(ata_xport_ ## x);
static struct xpt_xport_ops ata_xport_ops
Definition: ata_xpt.c:209
cam_xport xport
struct xpt_xport_ops * ops

Definition at line 216 of file ata_xpt.c.

◆ CAM_QUIRK_MAXTAGS

#define CAM_QUIRK_MAXTAGS   0x01

Definition at line 69 of file ata_xpt.c.

◆ PROBE_SET_ACTION

#define PROBE_SET_ACTION (   softc,
  newaction 
)
Value:
do { \
char **text; \
CAM_DEBUG((softc)->periph->path, CAM_DEBUG_PROBE, \
("Probe %s to %s\n", text[(softc)->action], \
text[(newaction)])); \
(softc)->action = (newaction); \
} while(0)
static char * probe_action_text[]
Definition: ata_xpt.c:105
@ CAM_DEBUG_PROBE
Definition: cam_debug.h:46

Definition at line 125 of file ata_xpt.c.

Enumeration Type Documentation

◆ aprobe_action

Enumerator
PROBE_RESET 
PROBE_IDENTIFY 
PROBE_SPINUP 
PROBE_SETMODE 
PROBE_SETPM 
PROBE_SETAPST 
PROBE_SETDMAAA 
PROBE_SETAN 
PROBE_SET_MULTI 
PROBE_INQUIRY 
PROBE_FULL_INQUIRY 
PROBE_PM_PID 
PROBE_PM_PRV 
PROBE_IDENTIFY_SES 
PROBE_IDENTIFY_SAFTE 
PROBE_DONE 
PROBE_INVALID 

Definition at line 85 of file ata_xpt.c.

◆ aprobe_flags

Enumerator
PROBE_NO_ANNOUNCE 

Definition at line 135 of file ata_xpt.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ _ata_announce_periph()

◆ aprobecleanup()

static void aprobecleanup ( struct cam_periph periph)
static

Definition at line 1356 of file ata_xpt.c.

References cam_periph::softc.

Referenced by ata_scan_lun().

Here is the caller graph for this function:

◆ aprobedone()

static void aprobedone ( struct cam_periph periph,
union ccb done_ccb 
)
static

Definition at line 743 of file ata_xpt.c.

References AC_FOUND_DEVICE, AC_GETDEV_CHANGED, AC_LOST_DEVICE, AC_SCSI_AEN, scsi_inquiry_data::additional_length, aproberequestdefaultnegotiation(), aprobeschedule(), ata_bswap(), ata_device_transport(), ata_find_quirk(), ata_max_pmode(), ata_param_fixup(), ccb::ataio, cam_path::bus, CAM_ATA_STATUS_ERROR, CAM_CMD_TIMEOUT, CAM_DEBUG, CAM_DEBUG_PROBE, CAM_DEBUG_TRACE, CAM_DEV_IDENTIFY_DATA_VALID, CAM_DEV_INQUIRY_DATA_VALID, CAM_DEV_QFRZN, CAM_DEV_UNCONFIGURED, cam_periph_error(), cam_periph_invalidate(), cam_periph_release_locked(), CAM_PRIORITY_NONE, cam_release_devq(), CAM_REQ_CMP, CAM_REQ_CMP_ERR, CAM_STATUS_MASK, ccb_pathinq::ccb_h, ccb::ccb_h, cts, CTS_ATA_CAPS_H, CTS_ATA_CAPS_H_DMA48, CTS_ATA_VALID_CAPS, CTS_SATA_CAPS_D_APST, CTS_SATA_CAPS_D_PMREQ, CTS_SATA_CAPS_H, CTS_SATA_CAPS_H_AN, CTS_SATA_CAPS_H_APST, CTS_SATA_CAPS_H_DMAAA, CTS_SATA_CAPS_H_PMREQ, CTS_SATA_VALID_CAPS, CTS_SATA_VALID_PM, CTS_SATA_VALID_TAGS, CTS_TYPE_CURRENT_SETTINGS, CTS_TYPE_USER_SETTINGS, cam_path::device, cam_ed::device_id, cam_ed::device_id_len, cam_ed::flags, ccb_hdr::func_code, ccb_pathinq::hba_inquiry, cam_ed::ident_data, cam_ed::inq_data, cam_ed::inq_flags, ata_res::lba_high, ata_res::lba_low, ata_res::lba_mid, cam_sim::max_tagged_dev_openings, cam_ed::maxtags, cam_ed::mintags, ccb_hdr::path, cam_periph::path, cam_path::periph, PI_TAG_ABLE, ccb_hdr::pinfo, cam_pinfo::priority, PROBE_DONE, PROBE_FULL_INQUIRY, PROBE_IDENTIFY, PROBE_IDENTIFY_SAFTE, PROBE_IDENTIFY_SES, PROBE_INQUIRY, PROBE_INVALID, PROBE_PM_PID, PROBE_PM_PRV, PROBE_RESET, PROBE_SET_ACTION, PROBE_SET_MULTI, PROBE_SETAN, PROBE_SETAPST, PROBE_SETDMAAA, PROBE_SETMODE, PROBE_SETPM, PROBE_SPINUP, PROTO_ATA, PROTO_SATAPM, PROTO_SCSI, PROTO_SEMB, cam_ed::protocol, ccb_ataio::res, ata_res::sector_count, cam_ed::serial_num, cam_ed::serial_num_len, SF_NO_RECOVERY, SF_NO_RETRY, SHORT_INQUIRY_LENGTH, SID_AEN, SID_DMA, SID_DMA48, SID_QUAL, SID_QUAL_LU_CONNECTED, SID_QUAL_LU_OFFLINE, cam_eb::sim, cam_periph::softc, ccb_hdr::status, SVPD_DEVICE_ID, SVPD_ID_CODESET_BINARY, SVPD_ID_TYPE_NAA, ccb_hdr::target_id, cam_ed::transport, XPORT_ATA, XPORT_SATA, xpt_acquire_device(), xpt_action(), xpt_async(), xpt_done(), XPT_GDEV_TYPE, XPT_GET_TRAN_SETTINGS, xpt_path_inq(), xpt_print(), xpt_release_ccb(), xpt_release_devq(), xpt_schedule(), XPT_SET_TRAN_SETTINGS, and xpt_setup_ccb().

Referenced by aprobestart().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aproberegister()

static cam_status aproberegister ( struct cam_periph periph,
void *  arg 
)
static

Definition at line 278 of file ata_xpt.c.

References aprobeschedule(), ata_device_transport(), CAM_DEBUG, CAM_DEBUG_PROBE, cam_periph_acquire(), CAM_REQ_CMP, CAM_REQ_CMP_ERR, ccb::ccb_h, cam_periph::path, PROBE_INVALID, and cam_periph::softc.

Referenced by ata_scan_lun().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aproberequestdefaultnegotiation()

static void aproberequestdefaultnegotiation ( struct cam_periph periph)
static

Definition at line 725 of file ata_xpt.c.

References CAM_PRIORITY_NONE, CAM_REQ_CMP, CAM_STATUS_MASK, cts, CTS_TYPE_CURRENT_SETTINGS, CTS_TYPE_USER_SETTINGS, cam_periph::path, xpt_action(), XPT_GET_TRAN_SETTINGS, XPT_SET_TRAN_SETTINGS, and xpt_setup_ccb().

Referenced by aprobedone().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aprobeschedule()

static void aprobeschedule ( struct cam_periph probe_periph)
static

◆ aprobestart()

static void aprobestart ( struct cam_periph periph,
union ccb start_ccb 
)
static

◆ ata_action()

◆ ata_alloc_device()

static struct cam_ed * ata_alloc_device ( struct cam_eb bus,
struct cam_et target,
lun_id_t  lun_id 
)
static

◆ ata_announce_periph()

◆ ata_announce_periph_sbuf()

◆ ata_dev_advinfo()

◆ ata_dev_async()

◆ ata_device_transport()

◆ ata_find_quirk()

static void ata_find_quirk ( struct cam_ed device)
static

Definition at line 1362 of file ata_xpt.c.

References ata_identify_match(), ata_quirk_table, CAM_QUIRK_MAXTAGS, cam_quirkmatch(), cam_ed::ident_data, ata_quirk_entry::maxtags, cam_ed::maxtags, ata_quirk_entry::mintags, cam_ed::mintags, cam_ed::quirk, and ata_quirk_entry::quirks.

Referenced by aprobedone().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ata_get_transfer_settings()

◆ ata_proto_announce()

static void ata_proto_announce ( struct cam_ed device)
static

Definition at line 2247 of file ata_xpt.c.

References ata_print_ident(), and cam_ed::ident_data.

Here is the call graph for this function:

◆ ata_proto_announce_sbuf()

static void ata_proto_announce_sbuf ( struct cam_ed device,
struct sbuf *  sb 
)
static

Definition at line 2241 of file ata_xpt.c.

References ata_print_ident_sbuf(), and cam_ed::ident_data.

Here is the call graph for this function:

◆ ata_proto_debug_out()

static void ata_proto_debug_out ( union ccb ccb)
static

Definition at line 2289 of file ata_xpt.c.

References ata_cmd_string(), ata_op_string(), ccb::ataio, CAM_DEBUG, CAM_DEBUG_CDB, ccb::ccb_h, ccb_ataio::cmd, ccb_hdr::func_code, ccb_hdr::path, and XPT_ATA_IO.

Here is the call graph for this function:

◆ ata_proto_denounce()

static void ata_proto_denounce ( struct cam_ed device)
static

Definition at line 2253 of file ata_xpt.c.

References ata_print_ident_short(), and cam_ed::ident_data.

Here is the call graph for this function:

◆ ata_proto_denounce_sbuf()

static void ata_proto_denounce_sbuf ( struct cam_ed device,
struct sbuf *  sb 
)
static

Definition at line 2259 of file ata_xpt.c.

References ata_print_ident_short_sbuf(), and cam_ed::ident_data.

Here is the call graph for this function:

◆ ata_scan_bus()

◆ ata_scan_lun()

◆ ata_set_transfer_settings()

◆ ATA_XPT_XPORT() [1/2]

ATA_XPT_XPORT ( ata  ,
ATA   
)

◆ ATA_XPT_XPORT() [2/2]

ATA_XPT_XPORT ( sata  ,
SATA   
)

◆ axptscandone()

static void axptscandone ( struct cam_periph periph,
union ccb done_ccb 
)
static

Definition at line 1637 of file ata_xpt.c.

References ccb::ccb_h, ccb_hdr::path, xpt_free_ccb(), and xpt_free_path().

Referenced by ata_scan_lun().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CAM_XPT_PROTO() [1/3]

CAM_XPT_PROTO ( ata_proto_ata  )

◆ CAM_XPT_PROTO() [2/3]

CAM_XPT_PROTO ( ata_proto_satapm  )

◆ CAM_XPT_PROTO() [3/3]

CAM_XPT_PROTO ( ata_proto_semb  )

◆ PERIPHDRIVER_DECLARE()

PERIPHDRIVER_DECLARE ( aprobe  ,
aprobe_driver   
)

◆ semb_proto_announce()

static void semb_proto_announce ( struct cam_ed device)
static

Definition at line 2271 of file ata_xpt.c.

References cam_ed::ident_data, and semb_print_ident().

Here is the call graph for this function:

◆ semb_proto_announce_sbuf()

static void semb_proto_announce_sbuf ( struct cam_ed device,
struct sbuf *  sb 
)
static

Definition at line 2265 of file ata_xpt.c.

References cam_ed::ident_data, and semb_print_ident_sbuf().

Here is the call graph for this function:

◆ semb_proto_denounce()

static void semb_proto_denounce ( struct cam_ed device)
static

Definition at line 2277 of file ata_xpt.c.

References cam_ed::ident_data, and semb_print_ident_short().

Here is the call graph for this function:

◆ semb_proto_denounce_sbuf()

static void semb_proto_denounce_sbuf ( struct cam_ed device,
struct sbuf *  sb 
)
static

Definition at line 2283 of file ata_xpt.c.

References cam_ed::ident_data, and semb_print_ident_short_sbuf().

Here is the call graph for this function:

◆ TUNABLE_INT() [1/2]

TUNABLE_INT ( "hw.ata.ata_dma"  ,
ata_dma 
)

◆ TUNABLE_INT() [2/2]

TUNABLE_INT ( "hw.ata.atapi_dma"  ,
atapi_dma 
)

Variable Documentation

◆ aprobe_driver

struct periph_driver aprobe_driver
static
Initial value:
=
{
aprobe_periph_init, "aprobe",
TAILQ_HEAD_INITIALIZER(aprobe_driver.units), 0,
}
static struct periph_driver aprobe_driver
Definition: ata_xpt.c:76
static periph_init_t aprobe_periph_init
Definition: ata_xpt.c:74
#define CAM_PERIPH_DRV_EARLY
Definition: cam_periph.h:99

Definition at line 76 of file ata_xpt.c.

◆ aprobe_periph_init

static void aprobe_periph_init ( void  )
static

Definition at line 74 of file ata_xpt.c.

◆ ata_dma

int ata_dma = 1
static

Definition at line 203 of file ata_xpt.c.

Referenced by aprobestart().

◆ ata_proto_ata

struct xpt_proto ata_proto_ata
static
Initial value:
= {
.proto = PROTO_ATA,
.name = "ata",
}
static struct xpt_proto_ops ata_proto_ops_ata
Definition: ata_xpt.c:229
@ PROTO_ATA
Definition: cam_ccb.h:280

Definition at line 236 of file ata_xpt.c.

◆ ata_proto_ops_ata

struct xpt_proto_ops ata_proto_ops_ata
static
Initial value:
= {
.announce = ata_proto_announce,
.announce_sbuf = ata_proto_announce_sbuf,
.denounce = ata_proto_denounce,
.denounce_sbuf = ata_proto_denounce_sbuf,
.debug_out = ata_proto_debug_out,
}
static void ata_proto_denounce(struct cam_ed *device)
Definition: ata_xpt.c:2253
static void ata_proto_debug_out(union ccb *ccb)
Definition: ata_xpt.c:2289
static void ata_proto_announce_sbuf(struct cam_ed *device, struct sbuf *sb)
Definition: ata_xpt.c:2241
static void ata_proto_denounce_sbuf(struct cam_ed *device, struct sbuf *sb)
Definition: ata_xpt.c:2259
static void ata_proto_announce(struct cam_ed *device)
Definition: ata_xpt.c:2247

Definition at line 229 of file ata_xpt.c.

◆ ata_proto_ops_satapm

struct xpt_proto_ops ata_proto_ops_satapm
static
Initial value:
= {
.announce = ata_proto_announce,
.announce_sbuf = ata_proto_announce_sbuf,
.denounce = ata_proto_denounce,
.denounce_sbuf = ata_proto_denounce_sbuf,
.debug_out = ata_proto_debug_out,
}

Definition at line 242 of file ata_xpt.c.

◆ ata_proto_ops_semb

struct xpt_proto_ops ata_proto_ops_semb
static
Initial value:
= {
.announce = semb_proto_announce,
.announce_sbuf = semb_proto_announce_sbuf,
.denounce = semb_proto_denounce,
.denounce_sbuf = semb_proto_denounce_sbuf,
.debug_out = ata_proto_debug_out,
}
static void semb_proto_announce_sbuf(struct cam_ed *device, struct sbuf *sb)
Definition: ata_xpt.c:2265
static void semb_proto_announce(struct cam_ed *device)
Definition: ata_xpt.c:2271
static void semb_proto_denounce(struct cam_ed *device)
Definition: ata_xpt.c:2277
static void semb_proto_denounce_sbuf(struct cam_ed *device, struct sbuf *sb)
Definition: ata_xpt.c:2283

Definition at line 255 of file ata_xpt.c.

◆ ata_proto_satapm

struct xpt_proto ata_proto_satapm
static
Initial value:
= {
.proto = PROTO_SATAPM,
.name = "satapm",
}
static struct xpt_proto_ops ata_proto_ops_satapm
Definition: ata_xpt.c:242
@ PROTO_SATAPM
Definition: cam_ccb.h:282

Definition at line 249 of file ata_xpt.c.

◆ ata_proto_semb

struct xpt_proto ata_proto_semb
static
Initial value:
= {
.proto = PROTO_SEMB,
.name = "semb",
}
static struct xpt_proto_ops ata_proto_ops_semb
Definition: ata_xpt.c:255
@ PROTO_SEMB
Definition: cam_ccb.h:283

Definition at line 262 of file ata_xpt.c.

◆ ata_quirk_table

struct ata_quirk_entry ata_quirk_table[]
static
Initial value:
=
{
{
{
"*", "*", "*"
},
0, 0, 0
},
}
#define SIP_MEDIA_REMOVABLE
Definition: scsi_all.h:3706
#define SIP_MEDIA_FIXED
Definition: scsi_all.h:3707
#define T_ANY
Definition: scsi_all.h:2190

Definition at line 153 of file ata_xpt.c.

Referenced by ata_alloc_device(), and ata_find_quirk().

◆ ata_xport_ops

struct xpt_xport_ops ata_xport_ops
static
Initial value:
= {
.alloc_device = ata_alloc_device,
.action = ata_action,
.async = ata_dev_async,
.announce = ata_announce_periph,
.announce_sbuf = ata_announce_periph_sbuf,
}
static void ata_dev_async(u_int32_t async_code, struct cam_eb *bus, struct cam_et *target, struct cam_ed *device, void *async_arg)
Definition: ata_xpt.c:2039
static void ata_announce_periph_sbuf(struct cam_periph *periph, struct sbuf *sb)
Definition: ata_xpt.c:2188
static struct cam_ed * ata_alloc_device(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id)
Definition: ata_xpt.c:1645
static void ata_action(union ccb *start_ccb)
Definition: ata_xpt.c:1798
static void ata_announce_periph(struct cam_periph *periph)
Definition: ata_xpt.c:2135

Definition at line 209 of file ata_xpt.c.

◆ atapi_dma

int atapi_dma = 1
static

Definition at line 204 of file ata_xpt.c.

Referenced by aprobestart().

◆ probe_action_text

char* probe_action_text[]
static
Initial value:
= {
"PROBE_RESET",
"PROBE_IDENTIFY",
"PROBE_SPINUP",
"PROBE_SETMODE",
"PROBE_SETPM",
"PROBE_SETAPST",
"PROBE_SETDMAAA",
"PROBE_SETAN",
"PROBE_SET_MULTI",
"PROBE_INQUIRY",
"PROBE_FULL_INQUIRY",
"PROBE_PM_PID",
"PROBE_PM_PRV",
"PROBE_IDENTIFY_SES",
"PROBE_IDENTIFY_SAFTE",
"PROBE_DONE",
"PROBE_INVALID"
}

Definition at line 105 of file ata_xpt.c.