linux/drivers/ata/libata-acpi.c
<<
>>
Prefs
   1/*
   2 * libata-acpi.c
   3 * Provides ACPI support for PATA/SATA.
   4 *
   5 * Copyright (C) 2006 Intel Corp.
   6 * Copyright (C) 2006 Randy Dunlap
   7 */
   8
   9#include <linux/module.h>
  10#include <linux/ata.h>
  11#include <linux/delay.h>
  12#include <linux/device.h>
  13#include <linux/errno.h>
  14#include <linux/kernel.h>
  15#include <linux/acpi.h>
  16#include <linux/libata.h>
  17#include <linux/pci.h>
  18#include <linux/slab.h>
  19#include <linux/pm_runtime.h>
  20#include <scsi/scsi_device.h>
  21#include "libata.h"
  22
  23#include <acpi/acpi_bus.h>
  24
  25unsigned int ata_acpi_gtf_filter = ATA_ACPI_FILTER_DEFAULT;
  26module_param_named(acpi_gtf_filter, ata_acpi_gtf_filter, int, 0644);
  27MODULE_PARM_DESC(acpi_gtf_filter, "filter mask for ACPI _GTF commands, set to filter out (0x1=set xfermode, 0x2=lock/freeze lock, 0x4=DIPM, 0x8=FPDMA non-zero offset, 0x10=FPDMA DMA Setup FIS auto-activate)");
  28
  29#define NO_PORT_MULT            0xffff
  30#define SATA_ADR(root, pmp)     (((root) << 16) | (pmp))
  31
  32#define REGS_PER_GTF            7
  33struct ata_acpi_gtf {
  34        u8      tf[REGS_PER_GTF];       /* regs. 0x1f1 - 0x1f7 */
  35} __packed;
  36
  37/*
  38 *      Helper - belongs in the PCI layer somewhere eventually
  39 */
  40static int is_pci_dev(struct device *dev)
  41{
  42        return (dev->bus == &pci_bus_type);
  43}
  44
  45static void ata_acpi_clear_gtf(struct ata_device *dev)
  46{
  47        kfree(dev->gtf_cache);
  48        dev->gtf_cache = NULL;
  49}
  50
  51/**
  52 * ata_ap_acpi_handle - provide the acpi_handle for an ata_port
  53 * @ap: the acpi_handle returned will correspond to this port
  54 *
  55 * Returns the acpi_handle for the ACPI namespace object corresponding to
  56 * the ata_port passed into the function, or NULL if no such object exists
  57 */
  58acpi_handle ata_ap_acpi_handle(struct ata_port *ap)
  59{
  60        if (ap->flags & ATA_FLAG_ACPI_SATA)
  61                return NULL;
  62
  63        return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev), ap->port_no);
  64}
  65EXPORT_SYMBOL(ata_ap_acpi_handle);
  66
  67/**
  68 * ata_dev_acpi_handle - provide the acpi_handle for an ata_device
  69 * @dev: the acpi_device returned will correspond to this port
  70 *
  71 * Returns the acpi_handle for the ACPI namespace object corresponding to
  72 * the ata_device passed into the function, or NULL if no such object exists
  73 */
  74acpi_handle ata_dev_acpi_handle(struct ata_device *dev)
  75{
  76        acpi_integer adr;
  77        struct ata_port *ap = dev->link->ap;
  78
  79        if (dev->flags & ATA_DFLAG_ACPI_DISABLED)
  80                return NULL;
  81
  82        if (ap->flags & ATA_FLAG_ACPI_SATA) {
  83                if (!sata_pmp_attached(ap))
  84                        adr = SATA_ADR(ap->port_no, NO_PORT_MULT);
  85                else
  86                        adr = SATA_ADR(ap->port_no, dev->link->pmp);
  87                return acpi_get_child(DEVICE_ACPI_HANDLE(ap->host->dev), adr);
  88        } else
  89                return acpi_get_child(ata_ap_acpi_handle(ap), dev->devno);
  90}
  91EXPORT_SYMBOL(ata_dev_acpi_handle);
  92
  93/* @ap and @dev are the same as ata_acpi_handle_hotplug() */
  94static void ata_acpi_detach_device(struct ata_port *ap, struct ata_device *dev)
  95{
  96        if (dev)
  97                dev->flags |= ATA_DFLAG_DETACH;
  98        else {
  99                struct ata_link *tlink;
 100                struct ata_device *tdev;
 101
 102                ata_for_each_link(tlink, ap, EDGE)
 103                        ata_for_each_dev(tdev, tlink, ALL)
 104                                tdev->flags |= ATA_DFLAG_DETACH;
 105        }
 106
 107        ata_port_schedule_eh(ap);
 108}
 109
 110/**
 111 * ata_acpi_handle_hotplug - ACPI event handler backend
 112 * @ap: ATA port ACPI event occurred
 113 * @dev: ATA device ACPI event occurred (can be NULL)
 114 * @event: ACPI event which occurred
 115 *
 116 * All ACPI bay / device realted events end up in this function.  If
 117 * the event is port-wide @dev is NULL.  If the event is specific to a
 118 * device, @dev points to it.
 119 *
 120 * Hotplug (as opposed to unplug) notification is always handled as
 121 * port-wide while unplug only kills the target device on device-wide
 122 * event.
 123 *
 124 * LOCKING:
 125 * ACPI notify handler context.  May sleep.
 126 */
 127static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev,
 128                                    u32 event)
 129{
 130        struct ata_eh_info *ehi = &ap->link.eh_info;
 131        int wait = 0;
 132        unsigned long flags;
 133
 134        spin_lock_irqsave(ap->lock, flags);
 135        /*
 136         * When dock driver calls into the routine, it will always use
 137         * ACPI_NOTIFY_BUS_CHECK/ACPI_NOTIFY_DEVICE_CHECK for add and
 138         * ACPI_NOTIFY_EJECT_REQUEST for remove
 139         */
 140        switch (event) {
 141        case ACPI_NOTIFY_BUS_CHECK:
 142        case ACPI_NOTIFY_DEVICE_CHECK:
 143                ata_ehi_push_desc(ehi, "ACPI event");
 144
 145                ata_ehi_hotplugged(ehi);
 146                ata_port_freeze(ap);
 147                break;
 148        case ACPI_NOTIFY_EJECT_REQUEST:
 149                ata_ehi_push_desc(ehi, "ACPI event");
 150
 151                ata_acpi_detach_device(ap, dev);
 152                wait = 1;
 153                break;
 154        }
 155
 156        spin_unlock_irqrestore(ap->lock, flags);
 157
 158        if (wait)
 159                ata_port_wait_eh(ap);
 160}
 161
 162static void ata_acpi_dev_notify_dock(acpi_handle handle, u32 event, void *data)
 163{
 164        struct ata_device *dev = data;
 165
 166        ata_acpi_handle_hotplug(dev->link->ap, dev, event);
 167}
 168
 169static void ata_acpi_ap_notify_dock(acpi_handle handle, u32 event, void *data)
 170{
 171        struct ata_port *ap = data;
 172
 173        ata_acpi_handle_hotplug(ap, NULL, event);
 174}
 175
 176static void ata_acpi_uevent(struct ata_port *ap, struct ata_device *dev,
 177        u32 event)
 178{
 179        struct kobject *kobj = NULL;
 180        char event_string[20];
 181        char *envp[] = { event_string, NULL };
 182
 183        if (dev) {
 184                if (dev->sdev)
 185                        kobj = &dev->sdev->sdev_gendev.kobj;
 186        } else
 187                kobj = &ap->dev->kobj;
 188
 189        if (kobj) {
 190                snprintf(event_string, 20, "BAY_EVENT=%d", event);
 191                kobject_uevent_env(kobj, KOBJ_CHANGE, envp);
 192        }
 193}
 194
 195static void ata_acpi_ap_uevent(acpi_handle handle, u32 event, void *data)
 196{
 197        ata_acpi_uevent(data, NULL, event);
 198}
 199
 200static void ata_acpi_dev_uevent(acpi_handle handle, u32 event, void *data)
 201{
 202        struct ata_device *dev = data;
 203        ata_acpi_uevent(dev->link->ap, dev, event);
 204}
 205
 206static const struct acpi_dock_ops ata_acpi_dev_dock_ops = {
 207        .handler = ata_acpi_dev_notify_dock,
 208        .uevent = ata_acpi_dev_uevent,
 209};
 210
 211static const struct acpi_dock_ops ata_acpi_ap_dock_ops = {
 212        .handler = ata_acpi_ap_notify_dock,
 213        .uevent = ata_acpi_ap_uevent,
 214};
 215
 216/**
 217 * ata_acpi_dissociate - dissociate ATA host from ACPI objects
 218 * @host: target ATA host
 219 *
 220 * This function is called during driver detach after the whole host
 221 * is shut down.
 222 *
 223 * LOCKING:
 224 * EH context.
 225 */
 226void ata_acpi_dissociate(struct ata_host *host)
 227{
 228        int i;
 229
 230        /* Restore initial _GTM values so that driver which attaches
 231         * afterward can use them too.
 232         */
 233        for (i = 0; i < host->n_ports; i++) {
 234                struct ata_port *ap = host->ports[i];
 235                const struct ata_acpi_gtm *gtm = ata_acpi_init_gtm(ap);
 236
 237                if (ata_ap_acpi_handle(ap) && gtm)
 238                        ata_acpi_stm(ap, gtm);
 239        }
 240}
 241
 242/**
 243 * ata_acpi_gtm - execute _GTM
 244 * @ap: target ATA port
 245 * @gtm: out parameter for _GTM result
 246 *
 247 * Evaluate _GTM and store the result in @gtm.
 248 *
 249 * LOCKING:
 250 * EH context.
 251 *
 252 * RETURNS:
 253 * 0 on success, -ENOENT if _GTM doesn't exist, -errno on failure.
 254 */
 255int ata_acpi_gtm(struct ata_port *ap, struct ata_acpi_gtm *gtm)
 256{
 257        struct acpi_buffer output = { .length = ACPI_ALLOCATE_BUFFER };
 258        union acpi_object *out_obj;
 259        acpi_status status;
 260        int rc = 0;
 261
 262        status = acpi_evaluate_object(ata_ap_acpi_handle(ap), "_GTM", NULL,
 263                                      &output);
 264
 265        rc = -ENOENT;
 266        if (status == AE_NOT_FOUND)
 267                goto out_free;
 268
 269        rc = -EINVAL;
 270        if (ACPI_FAILURE(status)) {
 271                ata_port_err(ap, "ACPI get timing mode failed (AE 0x%x)\n",
 272                             status);
 273                goto out_free;
 274        }
 275
 276        out_obj = output.pointer;
 277        if (out_obj->type != ACPI_TYPE_BUFFER) {
 278                ata_port_warn(ap, "_GTM returned unexpected object type 0x%x\n",
 279                              out_obj->type);
 280
 281                goto out_free;
 282        }
 283
 284        if (out_obj->buffer.length != sizeof(struct ata_acpi_gtm)) {
 285                ata_port_err(ap, "_GTM returned invalid length %d\n",
 286                             out_obj->buffer.length);
 287                goto out_free;
 288        }
 289
 290        memcpy(gtm, out_obj->buffer.pointer, sizeof(struct ata_acpi_gtm));
 291        rc = 0;
 292 out_free:
 293        kfree(output.pointer);
 294        return rc;
 295}
 296
 297EXPORT_SYMBOL_GPL(ata_acpi_gtm);
 298
 299/**
 300 * ata_acpi_stm - execute _STM
 301 * @ap: target ATA port
 302 * @stm: timing parameter to _STM
 303 *
 304 * Evaluate _STM with timing parameter @stm.
 305 *
 306 * LOCKING:
 307 * EH context.
 308 *
 309 * RETURNS:
 310 * 0 on success, -ENOENT if _STM doesn't exist, -errno on failure.
 311 */
 312int ata_acpi_stm(struct ata_port *ap, const struct ata_acpi_gtm *stm)
 313{
 314        acpi_status status;
 315        struct ata_acpi_gtm             stm_buf = *stm;
 316        struct acpi_object_list         input;
 317        union acpi_object               in_params[3];
 318
 319        in_params[0].type = ACPI_TYPE_BUFFER;
 320        in_params[0].buffer.length = sizeof(struct ata_acpi_gtm);
 321        in_params[0].buffer.pointer = (u8 *)&stm_buf;
 322        /* Buffers for id may need byteswapping ? */
 323        in_params[1].type = ACPI_TYPE_BUFFER;
 324        in_params[1].buffer.length = 512;
 325        in_params[1].buffer.pointer = (u8 *)ap->link.device[0].id;
 326        in_params[2].type = ACPI_TYPE_BUFFER;
 327        in_params[2].buffer.length = 512;
 328        in_params[2].buffer.pointer = (u8 *)ap->link.device[1].id;
 329
 330        input.count = 3;
 331        input.pointer = in_params;
 332
 333        status = acpi_evaluate_object(ata_ap_acpi_handle(ap), "_STM", &input,
 334                                      NULL);
 335
 336        if (status == AE_NOT_FOUND)
 337                return -ENOENT;
 338        if (ACPI_FAILURE(status)) {
 339                ata_port_err(ap, "ACPI set timing mode failed (status=0x%x)\n",
 340                             status);
 341                return -EINVAL;
 342        }
 343        return 0;
 344}
 345
 346EXPORT_SYMBOL_GPL(ata_acpi_stm);
 347
 348/**
 349 * ata_dev_get_GTF - get the drive bootup default taskfile settings
 350 * @dev: target ATA device
 351 * @gtf: output parameter for buffer containing _GTF taskfile arrays
 352 *
 353 * This applies to both PATA and SATA drives.
 354 *
 355 * The _GTF method has no input parameters.
 356 * It returns a variable number of register set values (registers
 357 * hex 1F1..1F7, taskfiles).
 358 * The <variable number> is not known in advance, so have ACPI-CA
 359 * allocate the buffer as needed and return it, then free it later.
 360 *
 361 * LOCKING:
 362 * EH context.
 363 *
 364 * RETURNS:
 365 * Number of taskfiles on success, 0 if _GTF doesn't exist.  -EINVAL
 366 * if _GTF is invalid.
 367 */
 368static int ata_device *dev = atm_buf;
atmde=devm" class="sref">gtm_buf;
 269     3   270     3  if 3ata_port *ap = ->link->ap,  271     3     37ef="+code=input" class="sref="sref">acpi_status status;
 272     3     3              ode=acpi_buffer" class="sref">acpi_buffer output = { . 273     3     3    goto acpi_object *out_obj;
 274     3  }
<3 href="drivers=rc" class="sref">rc = 0;
 275
 276     3  /* Buffers for id may.

 277     3  if 3 278     3     3    out_obj =  279     3     3                   280
 281     3     38vers/ata/libata-acpi.c#L262" id="L262" cla3s="line" 3ame="L282"> 282     3  }
<38 class="comment">/* Buffers for id mayers 283
output.length = ACPI_ALLOCATE_BUFFER };
 284     3  if 38ef="+code=in_params" class="f">output.pointer);
/* Buffers for id mayhref="dyerss
 285     3     38vers/ata/libata-acpi.c#L276" id="L276" cla3s="line" 3ame="L286"> 286     3     38a href="+code=status" class="sreref=msg_proba_device *ap),  287     3     3    goto adev, "ACPI set timing mopan>,s: ENTER:ef="d#:pan>,
 288     3  }
<38           ap-> 289
 290     3  /* Buffers for id mayspan>eters.
 291     3  rf">status = acpi_evaluate_object(ata_ap_acpi_handlea hr="sref">atae=ap" class="sref">adev, "_GTM", NULL,
 292 output);
 293     3  out_obj = output.pointer;
 294     3  ret39vers/ata/libata-acpi.c#L265" id="L265" cla3s="line" 3ame="L295"> 295}
ACPI_FAILURE(status)) {
 296
status == AE_NOT_FOUND)
 297adev, "ACPI set timing mospan>>(,
 298
status);
 299rc = 0;
EINVAL;
 300 301out_free;
 302 303 304output.length = output.pointer);
 305ap),  306adev, "ACPI set timing mopan>,s: Runyspan:uot;
,llx,,p 307 298
af">output.length =  299output.pointer);
 310rc = 0;
EINVAL;
 311out_free;
 312int <4 href41href="drivers/ata/libata-acpi.c#L343" id="L343" cla4s="line" 4ame="L313"> 313{
 314     4  out_obj = type != ACPI_TYPE_BUFFER) {
 315     4  str41   adev, "ACPI set timing mospan>type 0x%x\n",
 316     4  str41                out_obj-> 317     4  uni41   goto EINVAL;
 318
out_free;
 319     4   320     4   321     4  out_obj->buffer.length != sizeof(struct ,
t_free" class="sREGS_PERa-acptus" class="srREGS_PERa-acrivers/ata/libata-acpi.c#L278" id="L278" cla4s="line" 4ame="L322"> 322     4  ata_port_warn(atae=ap" class="sref">adev, "ACPI set timing motype 0x%span>ot;,
< 323     4  out_obj->buffer.length);
 324     4   = 0;
EINVAL;
 325     4  out_free;
 326     4   327     4   328     4   329
rc = -out_obj->buffer.length);
 330     4  ;
 331     4  gtm_buf;
aef">out_obj->buffer.pointer, sizeof(struct  332
ap),  333     4  adev, "ACPI set timing mopan>,s: ee it arraatm=pan>,p, atm_cref==an>,
 334     4     4                          gtm_buf;
 = - 335
 336     4  if 4rc;
 337     4     43vers/ata/libata-acpi.c#L348" id="L348" cla4s="line" 4ame="L338"> 338     4  if 43ef="+c_free" class="sref">out_free:
 339     4     43ef="+code=rc" class="sref">ra="sref">clear>atm_buf;
clear>atme=ap" class="sref">adev,  340     4     4              ode=rc" class="sref">rc;
 341     4     4    re/ata/libata-acpi.c#L240" id="L240" cla4s="line" 4ame="L342"> 342     4  }
<44vers/ata/libata-acpi.c#L333" id="L333" cla4s="line" 4ame="L343"> 343     4  ret44comment"> *
 344}
 * RETURNS:
atm_xcods=0x&- dref=m344 xcods=0x&from id l
 345
 * Number of taskfileevice
ref="drivers/ata/libata-acpi.c#L351" id="L351" cla4s="line" 4ame="L346"> 346 * if _GTF is invalid@ger tid l
 347
 */
 348/**
 349 * ata_dev_get_GTF -rivers/ata/libata-acpi.c#L367" id="L367" cla4s="line" 4ame="L350"> 350 * @dev: target ATA d href="drivers/ata/libata-acpi.c#L362" id="L362" cla4s="line" 4ame="L351"> 351 * @gtf: output paramNonvdrivers/ata/libata-acpi.c#L367" id="L367" cla4s="line" 4ame="L352"> 352 *
 353 * This applies to bo href="drivers/ata/libata-acpi.c#L365" id="L365" cla4s="line" 4ame="L354"> 354 *
 355 * The _GTF method hdrivers/ata/libata-acpi.c#L368" id="L368" cla4s="line" 4ame="L356"> 356ra="sref">atm_xcodsask_buf;
atm_xcodsaske=ap"ode=ata_device" class="sref">ata_device *dev =  357ata_acpi_gtm *gtm,  358 359rxcod_sask_buf;
 360r>type);
 361runitput. 362ru *)rs=0x/a> *) 363 364/* Buffers for id maywe alwaysan>
 365 366gtm, );
 367 368stati4 int 46vers/ata/libata-acpi.c#L319" id="L319" cla4s="line" 4ame="L269"> 269     4  /* Buffers for id mayPIO="drivers/ata/libata-acpi.c#L368" id="L368" cla4s="line" 4ame="L270"> 270     4  if 47ef="+code=memcpy" class="sref=0x/a> *)aATA_SHIFT_PIOI_TYPE_BUFFER, );
.ipionter);
 271     4     47ef="+code=input" class="srefxcod_sask_buf;
;
af=0x/a> *) 272     4     47vers/ata/libata-acpi.c#L333" id="L333" cla4s="line" 4ame="L273"> 273     4     4    goto /* Buffers for id mayS>

 274     4  }
<47comment"> *
 275
 * The _GTF method """"""""* n frour errng changed havef 276     4   * if _GTF is inval""""""""*drivers/ata/libata-acpi.c#L368" id="L368" cla4s="line" 4ame="L277"> 277     4  if 4gtm, );
. 278     4     4    type =  279     4     4              elseata/libata-acpi.c#L261" id="L261" cla4s="line" 4ame="L280"> 280
r>type =  281     4     48vers/ata/libata-acpi.c#L262" id="L262" cla4s="line" 4ame="L282"> 282     4  }
<48 class="commenclass="sref">rf=0x/a> *)a>type = , );
.idmanter);
 283
af=0x/a> *) 284     4  if 48vers/ata/libata-acpi.c#L265" id="L265" cla4s="line" 4ame="L285"> 285     4     48ef="+code=in_ode=rc" class="sref">rxcod_sask_buf;
 286     4     48a hre/ata/libata-acpi.c#L240" id="L240" cla4s="line" 4ame="L287"> 287     4     4    go class="sref">r class="sref">EXPORT_SYMBOL_GPL(atm_xcodsask_buf;
atm_xcodsaske=aps/ata/libata-acpi.c#L347" id="L347" cla4s="line" 4ame="L288"> 288     4  }
<48vers/ata/libata-acpi.c#L319" id="L319" cla4s="line" 4ame="L289"> 289
 * ata_dev_get_GTF="drivers/ata/libata-acpi.c#L349" id="L349" cla4s="line" 4ame="L290"> 290     4   * @dev: target ATA ds="sref">cbl_80wire      291     4   * @gtf: output parameap: Portptoycheckrivers/ata/libata-acpi.c#L349" id="L349" cla4s="line" 4ame="L292"> 292  * EH context.@ger tid ldd="SATAusdrivers/ata/libata-acpi.c#L351" id="L351" cla4s="line" 4ame="L293"> 293     4   *
 294     4  ret49comment"> * RETURNS:
 *80wire s=0xdrivers/ata/libata-acpi.c#L367" id="L367" cla4s="line" 4ame="L295"> 295}
 * The _GTF method hdrivers/ata/libata-acpi.c#L368" id="L368" cla4s="line" 4ame="L296"> 296
cbl_80wire_buf;
cbl_80wiree=ap"ode=ata_device" class="sre>ata_port *ap = ata_acpi_gtm *gtm,  297 298
ata_device *dev =  299 300adev, link.)
ENABLE_de=o/s/ata/libata-acpi.c#L278" id="L278" cla5s="line" 5ame="L301"> 301rxcod_sask_buf;
;
 302 303rxcod_sask_buf;
ra="sref">atm_xcodsask_buf;
atm_xcodsaske=ap" class="sref">adev, gtm,  294     5class50                     _dev_get_GTFvers="sunpack_xcodsask_buf;
axcod_sask_buf;
NULL,
NULL,
 295}
 306 307 298
 299 310 311 312int <5 href51href= class="sref">r class="sref">EXPORT_SYMBOL_GPL(cbl_80wire_buf;
cbl_80wiree=ap//ata/libata-acpi.c#L347" id="L347" cla5s="line" 5ame="L313"> 313{
 314     5  ra="sref">atf_to_tm_buf;
atm_to_tme=ap"ode=ata_device" class="sref">ata_device *dev =  315     5  str51   atm_buf;
atmde=dev" class="sref">gtm_buf;
 316     5  str51                tm_buf;
 317     5  uni51   go/ata/libata-acpi.c#L278" id="L278" cla5s8"line" 5ame="L318"> 318
adev, tm_buf;
 319     5   320     5  );
 321     5  );
 322     5  rtm_buf;
 *);
/* Buffers for id may0x1f1 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L323"> 323     5  ;
/* Buffers for id may0x1f2 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L324"> 324     5  );
;
/* Buffers for id may0x1f3 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L325"> 325     5  , ;
/* Buffers for id may0x1f4 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L326"> 326     5  );
;
/* Buffers for id may0x1f5 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L327"> 327     5  ata_device *;
/* Buffers for id may0x1f6 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s8"line" 5ame="L328"> 328     5  ;
;
;
/* Buffers for id may0x1f7 hdrivers/ata/libata-acpi.c#L368" id="L368" cla5s9"line" 5ame="L329"> 329
 330     5   331     5  0 iter_tm_buf;
0 iter_tme=ap"ode=ata_device" class="sref">ata_device *dev =  332
tm_buf;
 333     5  ptm_buf;
 334     5     5      /ata/libata-acpi.c#L278" id="L278" cla5s="line" 5ame="L335"> 335
;
 336     5  if 5/* Buffers for id may" id=".  -EINVAL
 337     5     53comment"> */

 338     5  if 53comment">/**
 339     5     53                 ;
 340     5     54                rtm_buf;
 *) 341     5     54   goto  342     5  }
<54href="drivers/ata/libata-acpi.c#L343" id="L343" cla5s="line" 5ame="L343"> 343     5  ret54vers/ata/libata-acpi.c#L284" id="L284" cla5s="line" 5ame="L344"> 344}
;
 345
/* Buffers for id mayBIOSywrief=", sorry butywe doINVAL 346 * if _GTF is inval================* feae=rfs unless
r explicitlyysaid sodrivers/ata/libata-acpi.c#L367" id="L367" cla5s="line" 5ame="L347"> 347
 */
 348 349/* Buffers for id mayDEVICE CONFIGURATION FREEZEd hre=*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L350"> 350;
 351rtm_buf;
 *) 352 353 354/* Buffers for id maySECURITY FREEZEd hre=*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L355"> 355;
 356 357 358/* Buffers for id maySET MAXd hre=n frSET MAXdFREEZEd hre=*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L359"> 359;
 360rtm_buf;
;
 361 *) 362 *) 363 364 365 366;
 367rtm_buf;
 *) 368stati5 int 56   /* Buffers for id mayinhibit enablarraDIPM=*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L269"> 269     5  ;
 270     5  if 57                rtm_buf;
 271     5     57   goto  272     5     57vers/ata/libata-acpi.c#L333" id="L333" cla5s="line" 5ame="L273"> 273     5     57ef="+code=in_   /* Buffers for id mayinhibit FPDMApnon-zero offers<*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L274"> 274     5  }
<57                     =out_obj" class="srdev->;
 275
 276     5   277     5  if 57   goto  278     5     57vers/ata/libata-acpi.c#L319" id="L319" cla5s="line" 5ame="L279"> 279     5     57                 /* Buffers for id mayinhibit FPDMApauto activhri
<<*drivers/ata/libata-acpi.c#L368" id="L368" cla5s="line" 5ame="L280"> 280
;
 281     5     58   goto rtm_buf;
 282     5  }
<58                 283
 284     5  if 58vers/ata/libata-acpi.c#L265" id="L265" cla5s="line" 5ame="L285"> 285     5     58ef="+code=in_ode=rc"s/ata/libata-acpi.c#L261" id="L261" cla5s="line" 5ame="L286"> 286     5     58a hre/ata/libata-acpi.c#L240" id="L240" cla5s="line" 5ame="L287"> 287     5     58vers/ata/libata-acpi.c#L348" id="L348" cla5s="line" 5ame="L288"> 288     5  }
<58comment">/**
 289
 * ata_dev_get_GTFA ds="sref">run_tf - send  s, 0 if_odgisef="ptoyhostycontrollf=rivers/ata/libata-acpi.c#L349" id="L349" cla5s="line" 5ame="L290"> 290     5   * @dev: target ATA device
aTA
ref="drivers/ata/libata-acpi.c#L351" id="L351" cla5s="line" 5ame="L291"> 291     5   * @gtf: output parameatm: raw
aTA
 s, 0 if_odgisef=yers<(0x1f1 -y0x1f7)rivers/ata/libata-acpi.c#L351" id="L351" cla5s="line" 5ame="L292"> 292  * EH context. 293     5   *
 294     5  ret59comment"> * RETURNS:
 295}
 * The _GTF method h Opri
 296
 * if _GTF is invalidhob_lbal, hob_lbam,=n frhob_lbahdrivers/ata/libata-acpi.c#L367" id="L367" cla5s="line" 5ame="L297"> 297 */
 298
/**
 299 * ata_dev_get_GTFA dodgisef="d  If 300 * @dev: target ATA d durri
< 301 * @gtf: output paramwrieingaa haremai arraodgisef="drivers/ata/libata-acpi.c#L367" id="L367" cla6s="line" 6ame="L302"> 302 * EH context. 303 *
 294     6class60comment"> * RETURNS:
 295}
 * The _GTF method hrivers/ata/libata-acpi.c#L367" id="L367" cla6s6"line" 6ame="L296"> 296
 * if _GTF is invalid href="drivers/ata/libata-acpi.c#L365" id="L365" cla6s="line" 6ame="L307"> 307 */
 298
/**
 299 * ata_dev_get_GTFA drivers/ata/libata-acpi.c#L368" id="L368" cla6s="line" 6ame="L310"> 310run_tfI_TYPE_BUFFERrun_tf    "ode=ata_device" class="sref">ata_device *dev =  311atm_buf;
atmde=dev" class="sref">gtm_buf;
 312int <6 href61                atm_buf;
atmde=dev" class="sref">prev>atm_buf;
atmde=d/ata/libata-acpi.c#L337" id="L337" cla6s="line" 6ame="L313"> 313{
 314     6  pptm_buf;
NULL,
 315     6  str61   rtm_buf;
ptm_buf;
;
 316     6  str61             unsig =rc" class="sref">rerr_sask_buf;
 317     6  uni61   goto levelnter);
 318
descr_buf;
 319     6  msg_buf;
 320     6  rc;
 321     6   322     6  gtm_buf;
 323     6   324     6   325     6   326     6   327     6  atf_to_tm_buf;
atm_to_tme=ap"" class="sref">dev = ;
 328     6   329
atf_to_tm_buf;
atm_to_tme=ap"" class="sref">dev = atm_buf;
atmde=d/Le=input" class="srefptm_buf;
 330     6  rpptm_buf;
 331     6   332
 333     6  0 iter_tm_buf;
0 iter_tme=ap"" class="sref">dev = ;
 334     6     63                     _dev_get_GTFverctm_buf;
;
 335
rerr_sask_buf;
ra="sexec_=rcernalnter);
dev = NULL,
 336     6  if 6NULL,
 337     6     63vers/ata/libata-acpi.c#L348" id="L348" cla6s8"line" 6ame="L338"> 338     6  if 63    339     6     63                  340     6     64                );
rKERN_DEBUGnter);
 341     6     64   goto rsnpr=rcm_buf;
msg_buf;
msg_buf;
/* Bufferstr=rg">"succeeded"rivers///ata/libata-acpi.c#L347" id="L347" cla6s="line" 6ame="L342"> 342     6  }
<64                rc;
 343     6  ret64ef="+code=in_    344}
 345
rAC_ERR_DEV/a>;
 346);
rKERN_INFOnter);
 347
rsnpr=rcm_buf;
msg_buf;
msg_buf;
 348/* Bufferstr=rg">"odj0x%by 349rctm_buf;
is foand_buf;
;
ifeae=rf/a> *) 350rc;
 351 352 353 354rlevelnter);
rKERN_ERRnter);
 355rsnpr=rcm_buf;
msg_buf;
msg_buf;
 356/* Bufferstr=rg">"fail#37(Esask=0x%x Stat=0x%02x Err=0x%02x)"rivers/,ata/libata-acpi.c#L347" id="L347" cla6s="line" 6ame="L357"> 357rerr_sask_buf;
;
is foand_buf;
;
ifeae=rf/a> *) 358rc;
rEIOnter);
 359 360 361 362);
rKERN_INFOnter);
 363rsnpr=rcm_buf;
msg_buf;
msg_buf;
/* Bufferstr=rg">"f iter#37oup"rivers///ata/libata-acpi.c#L347" id="L347" cla6s="line" 6ame="L364"> 364;
 365 366descr_buf;
ra="sget_cmd_descriptput.tm_buf;
is foand_buf;
 367 368stati6 int 66           ;
dev = );
 269     6  /* Bufferstr=rg">"a hrpcmd %02x/%02x:%02x:%02x:%02x:%02x:%02x (%s) %s\n"rivers/,ata/libata-acpi.c#L347" id="L347" cla6s="line" 6ame="L270"> 270     6  if 67                ;
is foand_buf;
tm_buf;
ifeae=rf/a> *)tm_buf;
insacpi_evaluate_objensacpf="+od" class="sref">tm_buf;
ilbalnter);
 271     6     67   goto tm_buf;
ilbam, tm_buf;
ilbangth);
tm_buf;
if">ata_device * 272     6     67                descr_buf;
descr_buf;
/* Bufferstr=rg">"unknown"rivers/)od" class="sref">msg_buf;
 273     6     67vers/ata/libata-acpi.c#L284" id="L284" cla6s="line" 6ame="L274"> 274     6  }
<67             ode=rc"_dev_get_GTFverc;
 275
 276     6   277     6  if 67comment"> */
 278     6     67comment">/**
exec_tfs - an>
thenywrief -acpi
 s, 0 if_seteingsrivers/ata/libata-acpi.c#L351" id="L351" cla6s="line" 6ame="L279"> 279     6     67comment"> * ata_dev_get_GTFA device
aTA
ref="drivers/ata/libata-acpi.c#L351" id="L351" cla6s="line" 6ame="L280"> 280
 * @dev: target ATA denr_execu:7oup par>
 281     6     68comment"> * @gtf: output pararivers/ata/libata-acpi.c#L351" id="L351" cla6s="line" 6ame="L282"> 282     6  }
<68comment"> * EH context. 283
 *
 284     6  if 68comment"> * RETURNS:
 285     6     68comment"> * The _GTF method h EHacontextdrivers/ata/libata-acpi.c#L367" id="L367" cla6s="line" 6ame="L286"> 286     6     68comment"> * if _GTF is invalirivers/ata/libata-acpi.c#L367" id="L367" cla6s="line" 6ame="L287"> 287     6     68comment"> */
 288     6  }
<68comment">/**
 289
 * ata_dev_get_GTFA d-errno 
< 290     6   * @dev: target ATA drivers/ata/libata-acpi.c#L368" id="L368" cla6s="line" 6ame="L291"> 291     6  exec_tfs_buf;
exec_tfse=ap"ode=ata_device" class="sref">ata_device *dev = nr_execui_evaluate_objenr_execu    )ata/libata-acpi.c#L368" id="L368" cla6s="line" 6ame="L292"> 292  293     6  atm_buf;
atmde=dev" class="sref">gtm_buf;
NULL,
patm_buf;
NULL,
 294     6  ret69a href="+code=ata_dev_get_GTFveratm_counpi_evaluate_objeatm_counp    od" class="sref">ii_evaluate_objeiode=ULL" class="sref"c;
 295}
 296
/* Buffers for id mayan>
ts, 0 if"  drivers/ata/libata-acpi.c#L368" id="L368" cla6s="line" 6ame="L297"> 297;
dev =  298
 299;
 300;
 291     7class70vers/ata/libata-acpi.c#L262" id="L262" cla7s="line" 7ame="L302"> 302/* Buffers for id mayexecu&# riem  drivers/ata/libata-acpi.c#L368" id="L368" cla7s="line" 7ame="L303"> 303ii_evaluate_objeiode==<Pparams" class="atm_counpi_evaluate_objeatm_counp    /d" class="sref">ii_evaluate_objeiode=+++PI_TYPE_BUFFER" gtm_buf;
 294     7class70                     _dev_get_GTFverc;
run_tfI_TYPE_BUFFERrun_tf    "" class="sref">dev = ;
patm_buf;
 295}
 296
 307 298
nr_execui_evaluate_objenr_execu    )++/ata/libata-acpi.c#L347" id="L347" cla7s9"line" 7ame="L299"> 299patm_buf;
;
 310 311 312int <7 href71vers/ata/libata-acpi.c#L333" id="L333" cla7s="line" 7ame="L313"> 313{
clear>atm_buf;
clear>atm    "" class="sref">dev =  314     7   315     7  str71    316     7  str71                ;
 317     7  uni71   goto  318
 319     7   320     7   * @dev: target AT="drivers/ata/libata-acpi.c#L349" id="L349" cla7s="line" 7ame="L321"> 321     7   * @gtf: output params="sref">push_id - send Idut ify ds="_toy-acpirivers/ata/libata-acpi.c#L349" id="L349" cla7s="line" 7ame="L322"> 322     7   * EH context.
aTA
ref="drivers/ata/libata-acpi.c#L351" id="L351" cla7s="line" 7ame="L323"> 323     7   *
 324     7   * RETURNS:
 325     7   * The _GTF method h Must bf_afef=yIdut ify (Packet) D="+coy--an>
s its
ds="rivers/ata/libata-acpi.c#L367" id="L367" cla7s6"line" 7ame="L326"> 326     7   * if _GTF is invalidATM a isd durri
< *opri
 327     7   */
 328     7  /**
 329
 * ata_dev_get_GTFA rivers/ata/libata-acpi.c#L367" id="L367" cla7s="line" 7ame="L330"> 330     7   * @dev: target ATA d href="drivers/ata/libata-acpi.c#L362" id="L362" cla7s="line" 7ame="L331"> 331     7   * @gtf: output paramEHacontextdrivers/ata/libata-acpi.c#L367" id="L367" cla7s="line" 7ame="L332"> 332
 * EH context. 333     7   *
 334     7     73comment"> * RETURNS:
 335
 * The _GTF method hdrivers/ata/libata-acpi.c#L368" id="L368" cla7s="line" 7ame="L336"> 336     7  if 7push_id_buf;
push_ide=ap"ode=ata_device" class="sref">ata_device *dev =  337     7     73vers//ata/libata-acpi.c#L278" id="L278" cla7s8"line" 7ame="L338"> 338     7  if 73   apput.->;
. 339     7     73             k" class="sref"aef">="+cus_buf;
="+cus     k" class="sref"="+cus_buf;
 340     7     74             ode=ata_device" class="ef">obj0x&_list_buf;
obj0x&_list     k" class="sref"input_buf;
 341     7     74   goto obj0x&_buf;
obj0x&     k" class="sref"in_par>
s_buf;

s    [1]/ata/libata-acpi.c#L261" id="L261" cla7s="line" 7ame="L342"> 342     7  }
<74vers/ata/libata-acpi.c#L333" id="L333" cla7s="line" 7ame="L343"> 343     7  ret74ef="+code=in_=out_device" class="sremsg_proba_device *apput. 344}
dev = /* Bufferstr=rg">"%s: ixACPe#37;d, port#:Pe#37;d\n"rivers/,ata/libata-acpi.c#L347" id="L347" cla7s="line" 7ame="L345"> 345
 = dev->apput.-> 346 347
/* Buffers for id mayGcpi
 hf -acpi
Idut ify ds="_toy hf -acpi
viay hf _SDD method_hdrivers/ata/libata-acpi.c#L368" id="L368" cla7s8"line" 7ame="L348"> 348/* Buffers for id may_SDD:yers
 349;
is unpi_evaluate_objecounp    =u81/ata/libata-acpi.c#L347" id="L347" cla7s="line" 7ame="L350"> 350ipo=rcer->
s_buf;

s    /ata/libata-acpi.c#L347" id="L347" cla7s="line" 7ame="L351"> 351
s_buf;

s    [0]" class="sref">itypa_device * 352
s_buf;

s    [0]" class="sref">ibuffer->ilengtngth);
dev->;
 353ibuffer->ipo=rcer->u8->dev->;
 354/* Buffers for id mayOutput buffer: _SDD has no 
utput  drivers/ata/libata-acpi.c#L368" id="L368" cla7s="line" 7ame="L355"> 355 356/* Buffers for id mayItNVAL 357
dev = ;
aTA_ID_WORDSI_TYPE_BUFFER 358;
evaluaef>obj0x&_buf;
evaluaef>obj0x&    "" class="sref">a="sf="_sef">handif/a> *)handif    "" class="sref">dev = /* Bufferstr=rg">"_SDD"rivers/,Pe=input" class="srefinput_buf;
 359NULL,
 360
dev = ;
aTA_ID_WORDSI_TYPE_BUFFER 361 362;
 363rENOENTI_TYPE_BUFFER 364 365="+cus_buf;
 366a="sf="_warn/a> *)dev = /* Bufferstr=rg">"a hrp_SDD fail#37(AE 0x%x)\n"rivers/,a_device" class=="+cus_buf;
 367rEIOnter);
 368stati7 int 76            269     7   270     7  if 77             ode=rc"s/ata/libata-acpi.c#L261" id="L261" cla7s="line" 7ame="L271"> 271     7     77   go/ata/libata-acpi.c#L240" id="L240" cla7s="line" 7ame="L272"> 272     7     77vers/ata/libata-acpi.c#L333" id="L333" cla7s="line" 7ame="L273"> 273     7     77comment"> *
 274     7  }
<77comment"> * RETURNS:
on_suspend -
aTA
a hrphook call#37
< 275
 * The _GTF method h @ape
aTA
portdevers/ata/libata-acpi.c#L349" id="L349" cla7s="line" 7ame="L276"> 276     7   * if _GTF is invalirivers/ata/libata-acpi.c#L367" id="L367" cla7s="line" 7ame="L277"> 277     7  if 77comment"> */
boup toybe suspended.  Allrivers/ata/libata-acpi.c#L367" id="L367" cla7s="line" 7ame="L278"> 278     7     77comment">/**
 279     7     77comment"> * ata_dev_get_GTFA dhaEINVALbortsrivers/ata/libata-acpi.c#L351" id="L351" cla7s="line" 7ame="L280"> 280
 * @dev: target ATA dsuspenddrivers/ata/libata-acpi.c#L365" id="L365" cla7s="line" 7ame="L281"> 281     7     78comment"> * @gtf: output pararivers/ata/libata-acpi.c#L351" id="L351" cla7s="line" 7ame="L282"> 282     7  }
<78comment"> * EH context. 283
 *
 284     7  if 78comment"> * RETURNS:
 285     7     78comment"> * The _GTF method h  href="drivers/ata/libata-acpi.c#L365" id="L365" cla7s="line" 7ame="L286"> 286     7     78comment"> * if _GTF is invalia0 
< 287     7     78comment"> */
 288     7  }
<78comme=ata_dev_get_GTFvers/atref">on_suspend_buf;
on_suspende=ap"ode=ata_device" class="sreportput.apput. 289
 290     7  /* Buffers for id maynada="drivers/ata/libata-acpi.c#L368" id="L368" cla7s="line" 7ame="L291"> 291     7   292  293     7   294     7  ret79comment"> * RETURNS:="drivers/ata/libata-acpi.c#L349" id="L349" cla7s="line" 7ame="L295"> 295}
 * The _GTF method h s="sref">on_resume -
aTA
a hrphook call#37
< 296
 * if _GTF is invalia@ape
aTA
portdevers/ata/libata-acpi.c#L349" id="L349" cla7s="line" 7ame="L297"> 297 */
 298
/**
 299 * ata_dev_get_GTFA ditselfp PAresumed bu>
before anymEHaarri
< 300 * @dev: target ATA rivers/ata/libata-acpi.c#L365" id="L365" cla8s1"line" 8ame="L291"> 291     8class80comment"> * @gtf: output param href="drivers/ata/libata-acpi.c#L362" id="L362" cla8s="line" 8ame="L302"> 302 * EH context. 303 *
 294     8class80     voida_dev_get_GTFvers/atref">on_resume_buf;
on_resumeriap"ode=ata_device" class="sreportput.apput. 295}
 296
atm, atmde=dev" class="sref">atm, init>atm, init>atm    "" class="sref">apput. 307ata_device *dev =  298
 299handif/a> *)handif    "" class="sref">apput.atm,  310/* Buffers for id may_GTM valid_hdrivers/ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L311"> 311 312int <8 href81                /* Buffers for id mayrestore timingapar>
 313{
stm, stm    "" class="sref">apput.,  314     8   315     8  str81   /* Buffers for id may_GTF should ifordiately follow _STM soy hat 316     8  str81comment"> * if _GTF is invalllllllllllllllll*an>
 valuesyers 317     8  uni81comment"> */
 318
/**
 319     8   = dev = ;
aULL,
 320     8  rs="sref">clear>atm_buf;
clear>atm    "" class="sref">dev =  321     8  dev =  322     8  rs="sf="_get_GTF_buf;
dev =  323     8  rdev = ;
);
 324     8   325     8   326     8  /* Buffers for id maySaTA _GTF_needs toybe evaula%afef=y_SDD andrivers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L327"> 327     8   */
 328     8  /**
 329
 * ata_dev_get_GTFA================*drivers/ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L330"> 330     8   = dev = ;
aULL,
 331     8  rs="sref">clear>atm_buf;
clear>atm    "" class="sref">dev =  332
dev =  333     8  rdev = ;
);
 334     8     83                     /ata/libata-acpi.c#L240" id="L240" cla8s="line" 8ame="L335"> 335
 336     8  if 8 337     8     83vers/ata/libata-acpi.c#L348" id="L348" cla8s8"line" 8ame="L338"> 338     8  if 83comment">/**
 339     8     83comment"> * ata_dev_get_GTFA ds="sref">set_="+ce - se>
the
port
powf=y="+cerivers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L340"> 340     8     84comment"> * @dev: target ATA deape
aTA
portdevers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L341"> 341     8     84comment"> * @gtf: output param@="+ce:y="+ce, on/offdevers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L342"> 342     8  }
<84comment"> * EH context. 343     8  ret84comment"> *
 344}
 * RETURNS:
 fr_PS3
whenypowf=y
ffdevers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L345"> 345
 * The _GTF method hdrivers/ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L346"> 346set_="+ce, set_="+ceriap"ode=ata_device" class="sreportput.apput.pm_message_tput.="+ce,  347
 348ata_device *dev =  349handif/a> *)handif     k" class="sref"handif/a> *) 350="+cf/a> *)="+ceriap/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L351"> 351 352/* Buffers for id maychannel first and
theny-acpis
ing powf=y
<<> fr"+ca pi.c"rivers/ata/libata-acpi.c#L367" id="L367" cla8s="line" 8ame="L353"> 353 *
 354 *)handif/a> *)handif    "" class="sref">apput. 355="+ce, ievenpi_evaluate_objeevenp    euu8_acpi_gtm" clasPM_EVENT_ONi_evaluate_objePM_EVENT_ONriap/ata/libata-acpi.c#L262" id="L262" cla8s="line" 8ame="L356"> 356aef">bus>set_powf=/a> *)bus>set_powf=    "" class="sref">handif/a> *)a hreSTATE_D0/a> *) 357 358 = dev = ;
ENABLEDI_TYPE_BUFFER 359 *)handif/a> *)handif    "" class="sref">dev =  360 *) 361 362 363, ievenpi_evaluate_objeevenp    e!u8_acpi_gtm" clasPM_EVENT_ONi_evaluate_objePM_EVENT_ONriap/s/ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L364"> 364aef">="+cf/a> *)="+ceriap=u8_acpi_gtm" classef">pm_f="+co_sleep>="+cf/a> *)pm_f="+co_sleep>="+cf    "ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L365"> 365 =  = NULL,
a hreSTATE_D3/a> *) 366="+cf/a> *)="+ceriap==linP0/ata/libata-acpi.c#L262" id="L262" cla8s="line" 8ame="L367"> 367aef">bus>set_powf=/a> *)bus>set_powf=    "" class="sref">handif/a> *)aef">="+cf/a> *)="+ceriap)/ata/libata-acpi.c#L261" id="L261" cla8s8"line" 8ame="L368"> 368stati8 int 86   /* Buffers for id mayTBD:_need_toycheckref 269     8  cef">pm_f="+co_run_wakf/a> *)pm_f="+co_run_wakf    "ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L270"> 270     8  if 87                 =  =  *) 271     8     87   goto  272     8     87                /* Buffers for id mayDittoy drivers/ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L273"> 273     8     87ef="+code=in_   cef">pm_f="+co_run_wakf/a> *)pm_f="+co_run_wakf    "ata/libata-acpi.c#L368" id="L368" cla8s="line" 8ame="L274"> 274     8  }
<87                         =  = ;
 275
aef">bus>set_powf=/a> *)bus>set_powf=    "" class="sref">handif/a> *)a hreSTATE_D0/a> *) 276     8   277     8  if 87   goto  278     8     87    279     8     87             k" class="sref"handif/a> *)handif/a> *)handif    "" class="sref">apput. 280
="+ce, ievenpi_evaluate_objeevenp    e!u8_acpi_gtm" clasPM_EVENT_ONi_evaluate_objePM_EVENT_ONriap/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L281"> 281     8     88   goto aef">bus>set_powf=/a> *)bus>set_powf=    "" class="sref">handif/a> *)a hreSTATE_D3/a> *) 282     8  }
<88comme/ata/libata-acpi.c#L240" id="L240" cla8s="line" 8ame="L283"> 283
 284     8  if 88comment"> * RETURNS:="drivers/ata/libata-acpi.c#L349" id="L349" cla8s="line" 8ame="L285"> 285     8     88comment"> * The _GTF method h s="sref">on_f="cfg -
aTA
a hrphook call#37
< 286     8     88comment"> * if _GTF is invaliaevice
aTA
ref="drivers/ata/libata-acpi.c#L351" id="L351" cla8s="line" 8ame="L287"> 287     8     88comment"> */
 288     8  }
<88comment">/**
boup toybe configureddrivers/ata/libata-acpi.c#L365" id="L365" cla8s="line" 8ame="L289"> 289
 * ata_dev_get_GTFA dIDENTIFY ds="_might_havesbeenymodifi#37afef=ya isdhook is rundrivers/ata/libata-acpi.c#L365" id="L365" cla8s="line" 8ame="L290"> 290     8   * @dev: target ATA rivers/ata/libata-acpi.c#L365" id="L365" cla8s="line" 8ame="L291"> 291     8   * @gtf: output param href="drivers/ata/libata-acpi.c#L362" id="L362" cla8s="line" 8ame="L292"> 292  * EH context. 293     8   *
 294     8  ret89comment"> * RETURNS: h  href="drivers/ata/libata-acpi.c#L365" id="L365" cla8s="line" 8ame="L295"> 295}
 * The _GTF method h Positcpi numbf=y=stIDENTIFY ds="_needs toybe ibareshed, 0y=stnot,rivers/ata/libata-acpi.c#L365" id="L365" cla8s="line" 8ame="L296"> 296
 * if _GTF is invalia-errno 
< 297 */
 298
on_f="cfg, on_f="cfgriap"ode=ata_device" class="sref">ata_device *dev =  299 300apput.->;
. 291     9class901            ode=ata_device" class="sreeh_contextput.eh;
;
ieh_contextput. 292 =d="/a> *)=a="ri  eu8_acpi_gtm" classpput.;
aTA_FLAG_a hreSaTA/a> *) 293     9class903class="comme=ata_dev_get_GTFvernr_execu/a> *) 294     9class904class="comme=ata_dev_get_GTFverr;
 295}
 296
handif/a> *)handif    "" class="sref">dev =  307 298
 299/* Buffers for id maydoywe need_toydoy_GTF?="drivers/ata/libata-acpi.c#L368" id="L368" cla9s="line" 9ame="L310"> 310dev = ;
aTA_DFLAG_a hrePENDINGnter);
 311scf">=d="/a> *)=a="ri  ea=outa=outu"" class="sref">eh;
;
iflags_buf;
aTA_EHI_DID_HARDRESETI_TYPE_BUFFER 312int <9 href91                 313{
 314     9  /* Buffers for id maydoy_SDD =stSaTA "drivers/ata/libata-acpi.c#L368" id="L368" cla9s5"line" 9ame="L315"> 315     9  str91   =d="/a> *)=a="ri  /s/ata/libata-acpi.c#L368" id="L368" cla9s6"line" 9ame="L316"> 316     9  str91                r;
push_id_buf;
push_ide=ap"" class="sref">dev =  317     9  uni91   goto r;
rENOENTI_TYPE_BUFFER 318
er=/a> *)er=de=d/ata/libata-acpi.c#L261" id="L261" cla9s9"line" 9ame="L319"> 319     9   320     9   321     9  /* Buffers for id maydoy_GTF_"drivers/ata/libata-acpi.c#L368" id="L368" cla9s="line" 9ame="L322"> 322     9  ;
exec_tfs_buf;
exec_tfse=ap"" class="sref">dev =  323     9   324     9  er=/a> *)er=de=d/ata/libata-acpi.c#L261" id="L261" cla9s="line" 9ame="L325"> 325     9   326     9  dev = ;
aTA_DFLAG_a hrePENDINGnter);
 327     9   328     9  /* Buffers for id mayibareshtIDENTIFY page_=stanym_GTF_s fo> frhas beenyexecu%"drivers/ata/libata-acpi.c#L368" id="L368" cla9s9"line" 9ame="L329"> 329
 *) 330     9  ;
dev =  331     9   332
 *)dev =  333     9  /* Bufferstr=rg">"fail#37toyIDENTIFY afef=ya hrps fo> fs\n"rivers/)/ata/libata-acpi.c#L261" id="L261" cla9s="line" 9ame="L334"> 334     9     93                             ode=rc"_dev_get_GTFverr;
 335
 336     9  if 93             /ata/libata-acpi.c#L240" id="L240" cla9s="line" 9ame="L337"> 337     9     93vers/ata/libata-acpi.c#L348" id="L348" cla9s8"line" 9ame="L338"> 338     9  if 93    339     9     93     ata/libata-acpi.c#L240" id="L240" cla9s="line" 9ame="L340"> 340     9     94commeytus" class="srescf">er=/a> *)er=de=d:ata/libata-acpi.c#L240" id="L240" cla9s="line" 9ame="L341"> 341     9     94   goto /* Buffers for id mayignore evaluaei
< 342     9  }
<94 class="comme=out_device" class=r;
rEINVALL,
 *)apput.;
aTA_PFLAG_FROZENi_evaluate_objeaTA_PFLAG_FROZENode=)/ata/libata-acpi.c#L262" id="L262" cla9s="line" 9ame="L343"> 343     9  ret94ef="+code=in_    344}
 345
/* Buffers for id mayfail<> frlet EHaodery once more ing unknown IO er=o="  drivers/ata/libata-acpi.c#L368" id="L368" cla9s="line" 9ame="L346"> 346dev = ;
aTA_DFLAG_a hrefAILEDI_TYPE_BUFFER 347
dev = ;
 348;
 349 350 351dev = ;
 352 *)dev = /* Bufferstr=rg">"a hr: fail#37the
second time, disabl#3\n"rivers/)/ata/libata-acpi.c#L261" id="L261" cla9s="line" 9ame="L353"> 353 354/* Buffers for id mayWe candsafely continue =stnom_GTF_s fo> frhas beenyexecurivers/ata/libata-acpi.c#L368" id="L368" cla9s="line" 9ame="L355"> 355 355 318
/** 9ss="sref"9handif/a> *) 317     8  uf="+code=e=link" class="sref"flags_buf;
 = <957a hrefAILEDI_TYPE/a>;
aTA_PFLAG_FROZENi_evaluate_objeaTA_PFLAG_FROZENode=)/ata/libata-acpi.c#L262" id="L262" cla9s="line" 9ame="L343"> 343     9  ret94ef="+code=in_    345
 350<9pan8class86vers/ata/liba9a-acp96ame="L273"> 273     7     77comment"> *9_   , <9 href="="+ceriap" class="sref">ievenpi_eval9ate_objee9enp    e!u8_acpi_gtm" cl9sPM_E96span>
on_suspend -
aTA
a hrphook call#37
<9m_f="+co_sleep>="+cf/a> 9) 275
 *284" clnt"> * if _GTF is invalidev_gavice =  * if _GTF is invaliriveivers/ata/libata-acpi.c#L351" id="L351" cla8s8"line" 8ame="L288"> 9a/libata-9cpi.c#L262" id="L262" cl98s="l96hreflidT is  durri
<boup toybe suspended.  Allriv9_powf=   9"" class="sref">handif/a9 *) 278     7     77comment">/**t_GTFA dIDENTIFY ds284" cla.c#L365" id="L365" cla8s1"line" 8ame="L291"> 9dquest  d9ivers/ata/libata-acpi.c#9368" 96ine" 8ame="L289"> 289
 9dhandif/a9  "ata/libata-acpi.c#L369" id=96"line" 8ame="L290"> 290   ers/ata/libata-acpi.c#L367" id="L367" cla8s="line" 89sref"sdev9/a> =  * @gtf: output param@=ibata-acpi.c#L367" id="L367" cla8s="line" 8ame="L294"> 9    8    987                ;
 279 9   8  ass="sref">apput. 299 300;
 = apput. 332
handif/a> *) 273     7     77comment"> *9if 87   g9to  273     7     77comment"> *9ipowf=   9ta-acpi.c#L261" id="L2619 cla89="lineid="ic ass="sref">apput.;
 307. = aTA_EHIe="L281"> 281     8     , ass="acpi.c#L278" id=get_GTFverscf">=d="/a> 300 *);
handif   9"" cl9ss="sref">appula8s="line" 8ame="L299"> 299=d="/a>iev98=link" class="sref"flags_buf;
 *) 356 *)NO    _DEVICE_WAKEde=rc"s/ata/liba> *)NO    _DEVICE_WAKE cla9s8"line" 9ame="L318"> 318=a="ri  ea=outa=outu"" class="srefbata-acpi9c#L284" id="L284" cla8s=9line"98cpi.c#L368" id="L368" cla9s="line" 9ame="L33pm_class="_susp  275
,  * Th9 _GTF9methodL273"> 273     7     77comment"> *9vers/ata/9ibata-acpi.c#L349" id="L949" c98=link" class="sref"flags_buf;
 287    98    988commid="ic ass="sref">apput.     9  -acpila8s="line" 8ame="L299"> 299 300   9 8  }
<88comment">/**
<98/a> *devbata-acpi.c#L278" id=mref"99< 350="+cf/a> *)="+ceriap/ata/libata-acpi.c#L261" 991   9 8   * @gt9: out990 id="L261" cla8s="line" 8ame="L3id="u  )/ata/libata-ac="L3id="u de=in_=ata_dev_get_Gid="u  )/ata/libata-aid="u de=ief">="+ceriap/ata/libata-acpi.c#L261" 99s="sref"92  * 99d
theny-acpis
ing powf=y
<<> fr"+ca pi.c"r9me="L293"9 293     8  99t;a hr: fail#37the
second ti="+code=)/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L360"> 360 *)   9 8  ret89comment"> * RET9RNS:<99                 href="+codddddddddcontinue/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L362"9"L295"> 295}
 * 99/a>
;
 297 365       9 h8ef="d89comme=ata_dev_9et_GT997a hrefAILEDI_TYP               *);
 *);
ata_device * 332
de=i"ode=/pre>
do="srref"29/de/f61fbe297ee49fd5c6192b889bcfde6ab9da_3/10/libata-acpi.c#L240" id="L240" cla9s10<1 href"p10< a hreSTATE_D3/a> *) *)SYSTEM)NO    de=rc"s/ata/liba> *)SYSTEM)NO    1" i}a/libata-acpi.c#L240" id="L240" cla9s10<2 href"p10<293     8  10 href"s="s_sref" 33k_buf;
 *) * RET10<8 >10,  275
 27210<4 href"p10<}
 273     7     77comment"> *10<5 href"p10 273     7     77comment"> *10<6 href"p10 297 273     7     77comment"> *10<7 href"p1010<"lineid="ic ass="sref">apput.     9  -acpila8s="line" 8ame="L299"> 299 300ata_device *a>10;
10<9 href"p10appula8s="line" 8ame="L299"ref"99bata-acpi.c#L278" id=mref"99<a10+ca>10+c id="L261" cla8s="line" 8ame="L350"> 350="+cf/a> *)="+ceriap/ata/libata-acpi.c#L261" 10+1 href"p1010+ABLEDI_TYPE_BUFFER="+ceriap/ata/libata-acpi.c#L261" 10+2 href"p10"91vers/ata/libata-acpi.10"91>10+href="="+ceriap" class="sref">ievenpi_eval10+3 href"p10ffers for id maydoy_SDD 10ffe>10+3BLEDI_TYPE_BUFFER 360 *) 315 10e" >10+s/ata/libata-a   href="+codddddddddcontinue/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L362"10+5 href"p10la9s6"line" 9ame="L316">10la9>10+ id="L240" cla9s="lin/ata/lef="handif    /ata/libata-acpi.c#L262"10+6 href"p10rs="sref">push_ide=ap"" 10rs=>10+ id="273"> 273     7     77comment"> *1017 href"p10rcde=de!="- class="sref"10rcd>10+7BLEDI_TYPE_BUFFER 365    10+8/ata/libata-a                  *);
 *);
10ffid="273"> 273     7     77comment"> *1021 href"p10"L322"> 322     9  <10"L3>10fL" class="srea href="nr_execu_get_GTFverfalse_buf;
 332
de=i"ode=3"> 273     7     77comment"> *1022 href"p10f">exec_tfse=ap"" class=10f">>10fcpi.c#L368" id="L368"//ata/libata-acae=inputcla                ;
 275
aef">bus>set_powf=/a> *)bus>set_powf= 10f3 href"p10="L324"> 324     9  10="L>10f/a>,  *)SYSTEM)NO    de=rc"s/ata/liba> *)SYSTEM)NO    1" i}a/libata-acpi.c#L240" id="L240" cla9s1024 href"p1061" cla9s="line" 9ame="L1061">10ff="cef">pm_f="+co_sleep>="+cf    "ata/libata-"> href"s="s_sref" 33k_buf;
bus>set_powf= 10f5 href"p10sref">dev = 10f id="L240" clL273"> 273     7     77comment"> *1026 href"p10t= ~" class="sref">aTA_D10t= >10f6if  L273"> 273     7     77comment"> *1027 href"p10ffers for id mayibaresht10ffe>10f" cla9s9"line" 9ame="L339"> 339     9 10f8 href"p10ata/libata-acpi.c#L368" 10ata>10f8lineid="ic ass="sref">apput.-acpila8s="line" 8ame="L299"> 299 30010f href"sreportde=dev" class="sref">apput103a href"p10hrs="sf="_reread_ide=ap"10hrs>10hr="sref">appula8s="line" 8ame="L299scsi_99 291 /libata-acpi.c#L261" id="L2owf=/a> *)bus>set_powf= 1031 href"p10cla9s="line" 9ame="L332"10cla>10hABLEDI_TYPE_BUFFER 350="+cf/a> *)="+ceriap/ata/libata-acpi.c#L261" 1032 href"p10> = appula8s="line" 8ame="L29999="+ceriap/ata/libata-acpi.c#L261" 1033 href"p10n"rivers/)/ata/liba10n&q>10hntinue =stnom_GTF_s fo> frhas beenyexecu
h4 href"p10" cla9s="line" 9ame="L3310" c>10hs="sref">apput. 360 *)10h     9  str91    href="+codddddddddcontinue/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L362"1036 href"p10ta-acpi.c#L348" id="L34810ta->10href">dev = 10h" cla9s9"line" 9ame="L339"> 339     9 1038 href"p10ata/libata-acpi.c#L240" 10ata>10hrefapput. 275
er=/a> *)10h=d:ata/libata-acpi.c#L240" id="L240" cla9s104a href"p10e="L341"> 341     9 10e=">10e=BLEDI_TYPE_BUFFER"regist" _99"regist" _99     273     7     77comment"> *10e2 href"p10a=outa=outu!"" class="sr10a=o>10ehref="="+ceriap" class="sref">ievenpi_eval1043 href"p10"94vers/ata/libata-acpi.10"94>10e3lineid="ic ass="sref">apput.-acpila8s="line" 8ame="L299"> 299 300 f10ffe>10e4href"sreportde=dev" class="sref">apput1045 href"p10bata-acpi.c#L368" id="L310bat>10e5="sref">appula8s="line" 8ame="L299scsi_99 291 /libata-acpi.c#L261" id="L2owf=/a> *)bus>set_powf= 1046 href"p10+ca=outu" class="sref">a10+ca>10erePENDINGnter);
 350="+cf/a> *)="+ceriap/ata/libata-acpi.c#L261" 1047 href"p10="+c|CPI_TYPE_BUFFER" aT10="+>10e7="sref">appula8s="line" 8ame="L29999="+ceriap/ata/libata-acpi.c#L261" 1048 href"p10"line" 9ame="L349"> 349<10"li>10ey_GTF?="drivers/ata/libata-acpi.c#L368" id10e9 href"p10ta-acpi.c#L240" id="L24010ta->10es="sref">apput. 360 *)dev = 10sr    9  str91    href="+codddddddddcontinue/ata/libata-acpi.c#L261" id="L261" cla8s="line" 8ame="L362"1051 href"p10261" id="L261" cla8s="li3TYPE_href-acpi.c#L261" id="L261" cla9s1"li.c#L1_>     7   ="sref">dev = /relas61"  for id maydoy_SDD 10ffe>10+refapput. 275
 frlet EHaodery once mor1" v" class="ame="L318"> 318
a10+ca>10erePEN _99"regist" _99"regist" _99     9ss="srf"ne"61"  class="sref">aTA_D10t= >10f6if  L273"> 273;
10h" cla9s9"line" 95/ata/libatme="s_buf;
10e3lineid="ic abin" cla9s="line" 9ame="L317bin"ef"unregist" _261" _resoura>-acpila8s="line" 8ame="L299"> 299 300<5ta/libata-f="d945  goto handia-f="61" a9s="line" 9ame="L3108" >10f href"sreportde=d6 /ata/liba" id="L240" cla9s=id="L2ba" i>ba" tu" class="sref">a10+ca>10erid="ic ass="sref">apput.     9   *)<>ba"="line" 9ame="L332"10cla>10hAid="ic ass="sref">apput. *) *9_   ba"84" id="L284" cla8s="line" 8ame="L284"> 284ba"class="sreref">ievenpi_eval9ate_obreref>ba"t;rivers/)/ata/liba10n&q>10hntinue =stnom_GT6a>ba"4 9ama-acpi.10"94>10e3lineid="ic aunbin" cla9s="line" 9ame="L317unbin"ef"unregist" _261" _resoura>-acpila8s="line" 8ame="L299"> 299 300<6v" class="pendrivers/ata/li9c
10f href"sreportde=d6href="cef"ne" 8ame="L288"> 9a/libaf"ne">ba"utu" class="sref">a10+ca>10erid="ic ass="sref">apput.     9   *)10+eid="ic ass="sref">apput. *) 9dquestatne">ba"84" id="L284" cla8s="line" 8ame="L284"> 284ba"ta/libata-ne" 8ame="L291"> 9dhandia-ne">ba"r=/a> *)10h=d:ata/libata-ac7 /ata/liba7" cla8s="line" 89sref"sba7" >ba7"s/ata/libat
-accode=link" class="sref" 33k_buf;
 300<7 cla8s="line" 8ame="L294"> 9    8 line">ba719s="line" 9ame="L3108" >10f href"sreportde=d7>     7   flags_buf;
ba7a href="+code=+ata/10> =>10h2="sref">appula8s="line" 8ame="L29999aTA_FLAG_a hreSaTA/a> *)
 =>10h2="srefpcttoat          275
;
ba7s for id mayfail<> frlet EHaodery once mor1"7v" class="sref="_enabl#3   9  "" c="sre>ba7   /ata/libata-acpi10   >10h     is_pcttoat          300<7href="cef"    77comment"> *9if 87 f"   >ba7pi.c#L348" id="L34810ta->1059class94             /ata/li"L345"> 345ba7/ata/libat    77comment"> *9ipowf=at   >ba7ibata-acpi.c#L261" 10ata>10h" cla9s9"line" 97/ata/libatclass90          9rquestatcla>ba7ibata-acpi.c#L240" 10ata>10hpoat          275>aTA_FLAG_a hreSaTto_pcttoat          *);
ba7r=/a> *)10h=d:ata/libata-ac8 /ata/libasref="_enabl#3   9a>, basr  /ata/libata-acnpan8class86    poat          275a/libata-acpi.c#L261"                   c      /at/lib/lib 8) 318ata-acpi.c#L261PCI_CLASS_STORAGE    9class903class="PCI_CLASS_STORAGE    9  /at/=a="rbas cla8s="libuf;
 275a/libata-acpi.c#L261"                   c      /at/lib/lib 8) 318ata-acpi.c#L261PCI_CLASS_STORAGE ID                PCI_CLASS_STORAGE ID ef"aid="L278" cla9s="line" 9ame="L300"> 300<8>     7   outu"" class="srefbata-a  out>basers/ata/libata-acpi.c#L284" id="L284" cla9s="line" 9ame="L314"> 314basclass="sreme="s_buf;
bast;rivers/)/ata/liba10n&q>10hntinue =stnom_GT8a>bas9s="line" 9am#L284" 1d="L284" cla9s="line" 9ame="L314"> 314basv" class="    77comment"> *9vers/a="   >bas-acpi.c#L365" id="L1010 273;
basref">push_ide=ap"" 10rs=>10+ id="273"> 273atcla>bas="d89comme=a"sref"flags_buf;me="L317bin"_hose=link" class="sref""L317bin"_hoseef"unregist" _261" _resoura>-accode=link" class="sref" 33k_buf;
);
 350;
devbas_device *a>10 330A/a> *) 293     9class903class="comme=ata_dev_get_GTFvontinue/ata/libata-acpi.c#L261" id="L2619 /ata/libaata-acpi.c#L261" 991baata>baatrs/ata/libata-acpi.c#L284" 

 * 99d
theny-acpis
baa>     7   <<> fr"+ca pi.c"r9me="L2  <<>>baaers/ata/libat/a>;
 *) *)SYSTEM)NO    1" i}a/libata-ac9class="srebata-acpi.c#L262"994rebat>baaot;rivers/)/ata/libata-acpi.cpan8class86    A/a> *) *)baas for id mayfail<> frlet EHaodery once mor1"9v" class="bata-acpi.c#L262"99ers/a="bat>baa   /ata/libata-acp/a>;
;
baapi.c#L348" id="L34810ta->105

atbat>baaibata-acpi.c#L261" 10ata>10h" cla9s9"line" 99/ata/libatme="s_buf;
10+8/atref""L317gtm=link" class="sref""L317gtmef"unpan8class86    A/a> *)baapi.c#L240" id="L24010pan8class86    A/a> *)
10ffid="273"> 273<1pi.c#L240"1id="L240" cla9s10<1 href"110<  314b1pi.c#L240"1id="L240" cla9s10<2 href"110<291084" id="L284" cla8s="line" 8ame="L284"> 284b1  /ata/lib1ta-acpi.c#L262"10<3 href"110<8 10t;rivers/)/ata/liba10n&q>10hntinue =stnom_G1line" 8ame1"L272"> 27210<4 href"110<}
;me="L317bin"_pila8s="line" 8ame="L299""L317bin"_pila8sef"unregist" _261" _resoura>-accode=link" class="sref" 33k_buf;
appula8s="line" 8ame="L299scsi_99 *)SYSTEM)NO    1" i}a/libata-a1a>     7  1  77comment"> *10<5 href"11010L240" id="L24010pan8class86    AePENDINGnter);
 350;
 *10<6 href"110 29ce *a>10     7  1  77comment"> *10<7 href"110-acpila8s="line" 8ame="L299"> 299     314b1p8     7  1 e="s_buf;
10hA_e="I_TYPE_BUFFER="+ceri1lass="sref1flags_buf;
10<9 href"110appula8s="line" 8ame="L299"ref"99bata-acpi.c#L278" id=mref"99<10hr="sref99"ref"99="+ceri1p/ata/liba1a-acpi.c#L261" 10+1 href"110  * 99d
theny-acpis
b1p/ata/liba1a-acpi.c#L261" 10+2 href"110"9111ta=outu!"" class="sref"nr_execu&A/a> *) 293     9class903class="comme=ata_dev_get_GTFvo/a>
de=i"ode=3"> 273<1 class="sr1f">ievenpi_eval10+3 href"110ffe11ot;rivers/)/ata/libata-acpi10   >10h     sref" mp_attach 9ame="L33pm_classref" mp_attach 9ef"unpan8class86    A/a> *) 3001  /ata/lib1ta-acpi.c#L262"10+4 href"110e" 11la9s="line" 9ame="L1061">10ff="cef">pm_f="+co_sl     *)appula8s="line" 8ame="L29999<[n8class89coscsi_ata/libata-acpi.c#L278" idG_a hreSaTAde=d/ata/"L261" cla9s="lin 331="+ceri1p>     7  1ne" 8ame="L362"10+5 href"110la916"line" 9ame="L316">10elseu  )/ata/libata-aid="u de=ief">="+ceri1p>     7  1ta-acpi.c#L262"10+6 href"110rs=11pi.c#L348" id="L3481061">10ff="cef">pm_f="+co_sl     *)appula8s="line" 8ame="L29999<[n8class89coscsi_ata/libata-acpi.c#L278" idG_a hreSaTAde=d/ata/"L261" cla9s="lin 331="+ceri1p>     7  1  77comment"> *1017 href"110rcd1=de!="- class=d="L284" cla8s="line" 8ame="L284"> 284b1  /ata/lib1ta-acpi.c#L262"10+8 href"110" i1="L261" cla9s9else/a>
de=i"ode=3"> 273<1 ass="sref1="s_buf;
pm_f="+co_sl     *)appula8s="line" 8ame="L29999<[n8class89coscsi_ata/libata-acpi.c#L278" idG_a hreSaTAde=d/ata/"L261" cla9s="lin 331="+ceri1  /ata/lib1ta-acpi.c#L262"102a href"110ffe120e!="- class=d="L284" cla8s="line" 8ame="L284"> 284b1a>     7  1  77comment"> *1021 href"110"L312>  * 99d
theny-acpis
b1a>     7  1  77comment"> *1022 href"110f">12ers/ata/libat/a>;
 360     *)bus>set_powf= 10f3 href"110="L12t;rivers/)/ata/liba10n&q>10hntinue =stnom_G1pi.c#L240"1id="L240" cla9s1024 href"11061"12me="L315"> 315/a>;
bus>set_powf= 10f5 href"110sre12"line" 9ame="L316">10ta->105

     7  1  77comment"> *1026 href"110t= 12ref">push_ide=ap"" 10rs=>10+ id="273"> 273<1a>     7  1  77comment"> *1027 href"110ffe12de!="- class="sref"10rcd>10+7BLEDI_TYPE_BUFFER 365;
     9 10f8 href"110ata12"L261" cla9s9"line"10" i>10+8/ata/libata-a                  *);
 *);
 314b1ev" class=1sref">apput103a href"110hrs13 for id maydoy_GTF_10ffe>10ffid="273"> 273<1 href="cef1>bus>set_powf= 1031 href"110cla1s="line" 9ame="8_acpi_gtm" cl9sPM_E96sontext.     7  1a-acpi.c#L261" 1032 href"110> =1 _PS3 or _PR3 for tine" * if supssrcd> * if attPM_ion,ontext.="+cf/a> 9) 3text.     7  1ne" 8ame="L362"1036 href"110ta-1cpi.c#L348" idn8class89coscsi__ge="u de=in_=ata_dev_gee_Gid="u  )/ata/libata-aid="ui}
xtde=d/ata/libata-acpref"99G_a hreSaTAde=d/ata/ 3w/a>.="+ceri1  /ata/lib1ta-acpi.c#L262"1037 href"110ata13f="d89comme=ata_drc"s/ata/liba> *);
<="u de=in_=ata_dev_gee_Gid=[n8class89coscsi_dev_gTATE_D3_HOT                *gTATE_D3_HOT31="+ceri1 me="L339"1 339     9 1038 href"110ata13a_device *=a="rb1  /ata/lib1ta-acpi.c#L262"1039 href"110cf"13pi.c#L240" id="L24010L348" idn8class89coscsio_sl    De=ataD9class903class="commDe=ataD9dddcontinue/ata/libata-acpi.c#L261" id="L261pi.c#L240"1id="L240" cla9s104a href"110e="14trs/ata/libata-acpi.cn8class89coscsi_ata/libata-acpi.c#L278" idG_a hreSaTAde=d/ata/c id="L261" cla8s="line" 8amcanL261" _of> 332"u 1d="L284" cla9s="line" 9ame="L314"> 314b1  /ata/lib1ta-acpi.c#L262"1041 href"110ta-14>  * 99d
theny-acpis
b1a>     7  1  77comment"> *10e2 href"110a=o14ers/ata/libatta->10 id="L284" cla9s="line" 9ame="L314"> 314b1 class="sr1f">ievenpi_eval1043 href"110"941ers/atd="L284" cla8s="line" 8ame="L284"> 284b1/a> frlet EHaodery once mor11ev" class=1sref">apput1045 href"110bat1-acpi.comme=a"sref"flags_bufis_>-accode=link" class="sis_>-accodeEde=rconste=+ata/10> =>10h2="sref">appula8s="line" 8ame="L29999 29ce *a>10="+ceri1p/ata/liba1a-acpi.c#L261" 1048 href"110"li1484" id="L284" cla8s="line" 8ame="L284"> 284b1ata/libata1acpi.c#L368" id10e9 href"110ta-14r=/a> *)10h=d:ata/libata-a1  /ata/lib1ta-acpi.c#L262"105a href"110sre15"s/ata/libatregist" _261" _resoura>-accode=link" class="sref" 33k_buf;
-accodeef"unregist" _261" _resoura">appula8s="line" 8ame="L2999910f href"sreportde=1_>     7  1="sref">dev = 
de=i"ode=3"> 273<15class="sr1lass95             "t">/r1las6115ot;rivers/)/ata/libata-acpi10   >10h     oat         de=i"ode=3"> 273<15a>10ffta->10 >="+ceri1 v" class=1ame="L318"> 318
10i10   >10h     oat         
 9ss="srf1ne"6115pi.c#L348" idd="L284" cla8s="line" 8ame="L284"> 284b15/ata/liba1flags_buf;
10 >-accode=link" class="sto_>-accodeef"un>
 284b15ta/libata1f="d945  goto handia1f="6115r=/a> *)10h=d:ata/libata-a16 /ata/lib1" id="L240" cla9s=id="L2b1" i>b16"s/ata/libat
appula8s="line" 8ame="L29999);
 350;
<>b1619s="line" 9ame="L3108" >10f href"sreportde=16>     7  1    77comment"> *9_   b16a href="+code=+ata/10> =>10h2="sref>-accode=link" class="sref" 33k_buf;
 *)-accode=link" class="sme="to_>-accodeef"un>
ievenpi_eval9ate_obr1ref>b1"t;rivers/)/ata/liba10n&q>10hntinue =stnom_G16a>b16me="L315"> 315 10e" >10+s/ataode=link" class="sref"aid="L278" cla9s="line" 9ame="L300"> 30016v" class=1pendrivers/ata/li9c
b16"line" 9ame="L316">10ta->105

 9a/libaf1ne">b16ref">push_ide=ap"" 10rs=>10+ id="273"> 273<16/ata/liba1uspended.  Allriv9_powf=a1usp>b16f="d89comme=ata_d> 10e" >10+s/atacompat_pctt 91               compat_pctt 91ef"un 10e" >10+s/ataode=link" class="sref"aiid="L278" cla9s="line" 9ame="L300"> 30016/ata/liba1ne" 8ame="L291"> 9dquesta1ne">b16a_device * 9dhandia1ne">b1"r=/a> *)10h=d:ata/libata-a17 /ata/lib17" cla8s="line" 89sref"sb17" >b17e" class="sreportpu101010h=d:ata/libata-a17 cla8s="l1ne" 8ame="L294"> 9    8 l1ne">b17id="L261" cla8s="li3TYPE_href"flags_buf;me="L317bin"_hose=link" class="sref""L317bin"_hoseef"un 10e" >10+s/ataode=link" class="sref"a/a>b17a href="+codeelse/portpu1010
de=i"ode=3"> 273<17class="sr1class90          9run_war1cla>b17ot;rivers/)/ata/libatid="L310bat>10e5="sref">appula8s="line" 8ame="L299scsi_99appula8s="line" 8ame="L2to_">appula8s=ef"un>
;
b17s for id mayfail<> frlet EHaodery once mor117v" class=1sref="_enabl#3   9  "" c=1sre>b17"line" 9ame="L316">10ta->105f"flags_buf;me="L317bin"_pila8s="line" 8ame="L299""L317bin"_pila8sef"un 10e" >10+s/ataode=link" class="sref"a/a> *9if 87 f1   >b17pi.c#L348" id}0elseu  )/ata/libata-aid="u de=ief">="+ceri17/ata/liba1    77comment"> *9ipowf=a1   >b177_device *b1784" id="L284" cla8s="line" 8ame="L284"> 284b17ta/libata1f"flags_buf;
b17r=/a> *)10h=d:ata/libata-a18 /ata/lib1sref="_enabl#3   9a>, b18"s/ata/libat
appula8s="line" 8ame="L29999);
 350;
;
10f href"sreportde=18>     7  1outu"" class="srefbata-a 1out>b18ers/ata/libatta->10 

;
b18rs/atd="L284" cla8s="line" 8ame="L284"> 284b18a>b18s for id mayfail<> frlet EHaodery once mor11sv" class=1    77comment"> *9vers/a=1   >b18acpi.comme=ade=ap"10hrs>10hr="sref99"rela99typula8s="line" 8amA9"rela99typurs/atf"flags_buf;me="L317bPE_BUFFER10f href"sreportde=18href="cef1buf;
 *)SYSTEM)NO    1" i}a/libata-a18/ata/liba1class90          988a1cla>b187i.c#L348" idDID_HARDRESETodelin"_">appula8s="line" 8amfin"_pila8sef"u"u  )/ata/libata-ai99""L317fin"_pila8s="line" 8ame="L299""L317fin"_pila8sef"uta/liba> *)SYSTEM)NO    1" i}a/libata-a18/ata/liba1lass="sref">devb1s_devi}
10h=d:ata/libata-a19 /ata/lib1ata-acpi.c#L261" 991b1ata>b1atrs/a
10f href"sreportde=1a>     7  1<<> fr"+ca pi.c"r9me="L2 1<<>>b19ers/ata/libatta->10 0bat>10e5="sref">appa>appa>r1bat>b19rs/atd="L284" cla8s="line" 8ame="L284"> 284b19a>b1as for id mayfail<> frlet EHaodery once mor119v" class=1bata-acpi.c#L262"99ers/a=1bat>b1a   /aa-acpi.10"94>10e3lineid="ic ass="sref">_BUFFERef"una-acontinue/ata/libata-acpi.c#L261" id="L2619href="cef1buf;
b19"> 29ce *a>10a1bat>b19de!="- class="sref"10rcd>10+7>appura>appura>;
 284b19ta/libata1bata-acpi.c#L262"99handia1bat>b1api.c#


_> The original LXR software5by the "L284" clhttp://mme/hrforge.net/projects/lx>_>LXR ataeunityef"ut tine"experief="al ="liion5by "L284" clmailto:lx>@#L2ux.no">lx>@#L2ux.noef"u.
_> lx>.#L2ux.no kin"ly hoseed5by "L284" clhttp://www.redpill-#L2pro.no">Redpill LL2pro ASef"ut provider of LL2ux consulting" claopera_ions serla8ss since 1ap5.