€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ%/translations/zh_CN/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/zh_TW/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/it_IT/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ja_JP/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/ko_KR/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/pt_BR/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ%/translations/sp_SP/driver-api/libata”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒlibATA Developer's Guide”h]”hŒlibATA Developer’s Guide”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/driver-api/libata.rst”h´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhhÒh³hÊh´KubhŒ field_body”“”)�”}”(hŒ Jeff Garzik ”h]”hŒ paragraph”“”)�”}”(hŒ Jeff Garzik”h]”hŒ Jeff Garzik”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khhçubah}”(h]”h ]”h"]”h$]”h&]”uh1håhhÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÐh³hÊh´KhhÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Kubhì)�”}”(hŒÿlibATA is a library used inside the Linux kernel to support ATA host controllers and devices. libATA provides an ATA driver API, class transports for ATA and ATAPI devices, and SCSI<->ATA translation for ATA devices according to the T10 SAT specification.”h]”hŒÿlibATA is a library used inside the Linux kernel to support ATA host controllers and devices. libATA provides an ATA driver API, class transports for ATA and ATAPI devices, and SCSI<->ATA translation for ATA devices according to the T10 SAT specification.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K hj h²hubhì)�”}”(hŒ|This Guide documents the libATA driver API, library functions, library internals, and a couple sample ATA low-level drivers.”h]”hŒ|This Guide documents the libATA driver API, library functions, library internals, and a couple sample ATA low-level drivers.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khj h²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒlibata Driver API”h]”hŒlibata Driver API”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjBh²hh³hÊh´Kubhì)�”}”(hŒÃ:c:type:`struct ata_port_operations ` is defined for every low-level libata hardware driver, and it controls how the low-level driver interfaces with the ATA and SCSI layers.”h]”(h)�”}”(hŒ::c:type:`struct ata_port_operations `”h]”hŒliteral”“”)�”}”(hjYh]”hŒstruct ata_port_operations”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1j[hjWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/libata”Œ refdomain”jhŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œata_port_operations”uh1hh³hÊh´KhjSubhŒ‰ is defined for every low-level libata hardware driver, and it controls how the low-level driver interfaces with the ATA and SCSI layers.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjBh²hubhì)�”}”(hXFIS-based drivers will hook into the system with ``->qc_prep()`` and ``->qc_issue()`` high-level hooks. Hardware which behaves in a manner similar to PCI IDE hardware may utilize several generic helpers, defining at a bare minimum the bus I/O addresses of the ATA shadow register blocks.”h]”(hŒ1FIS-based drivers will hook into the system with ”…”�”}”(hj†h²hh³Nh´Nubj\)�”}”(hŒ``->qc_prep()``”h]”hŒ ->qc_prep()”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj†ubhŒ and ”…”�”}”(hj†h²hh³Nh´Nubj\)�”}”(hŒ``->qc_issue()``”h]”hŒ ->qc_issue()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj†ubhŒÊ high-level hooks. Hardware which behaves in a manner similar to PCI IDE hardware may utilize several generic helpers, defining at a bare minimum the bus I/O addresses of the ATA shadow register blocks.”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjBh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ::c:type:`struct ata_port_operations `”h]”h)�”}”(hj½h]”j\)�”}”(hj½h]”hŒstruct ata_port_operations”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-type”eh"]”h$]”h&]”uh1j[hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jzŒata_port_operations”uh1hh³hÊh´K hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¸h²hh³hÊh´K!ubh¶)�”}”(hhh]”(h»)�”}”(hŒ"Post-IDENTIFY device configuration”h]”hŒ"Post-IDENTIFY device configuration”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjãh²hh³hÊh´K$ubhŒ literal_block”“”)�”}”(hŒmode_filter()`` hook is called when libata has built a mask of the possible modes. This is passed to the ``->mode_filter()`` function which should return a mask of valid modes after filtering those unsuitable due to hardware limits. It is not valid to use this interface to add modes.”h]”(hŒRHooks called prior to the issue of SET FEATURES - XFER MODE command. The optional ”…”�”}”(hjIh²hh³Nh´Nubj\)�”}”(hŒ``->mode_filter()``”h]”hŒ->mode_filter()”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjIubhŒZ hook is called when libata has built a mask of the possible modes. This is passed to the ”…”�”}”(hjIh²hh³Nh´Nubj\)�”}”(hŒ``->mode_filter()``”h]”hŒ->mode_filter()”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjIubhŒ  function which should return a mask of valid modes after filtering those unsuitable due to hardware limits. It is not valid to use this interface to add modes.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kpio_mode`` and ``dev->dma_mode`` are guaranteed to be valid when ``->set_piomode()`` and when ``->set_dmamode()`` is called. The timings for any other drive sharing the cable will also be valid at this point. That is the library records the decisions for the modes of each drive on a channel before it attempts to set any of them.”h]”(j\)�”}”(hŒ``dev->pio_mode``”h]”hŒ dev->pio_mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj{ubhŒ and ”…”�”}”(hj{h²hh³Nh´Nubj\)�”}”(hŒ``dev->dma_mode``”h]”hŒ dev->dma_mode”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj{ubhŒ! are guaranteed to be valid when ”…”�”}”(hj{h²hh³Nh´Nubj\)�”}”(hŒ``->set_piomode()``”h]”hŒ->set_piomode()”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj{ubhŒ and when ”…”�”}”(hj{h²hh³Nh´Nubj\)�”}”(hŒ``->set_dmamode()``”h]”hŒ->set_dmamode()”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj{ubhŒÙ is called. The timings for any other drive sharing the cable will also be valid at this point. That is the library records the decisions for the modes of each drive on a channel before it attempts to set any of them.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KChj*h²hubhì)�”}”(hŒs``->post_set_mode()`` is called unconditionally, after the SET FEATURES - XFER MODE command completes successfully.”h]”(j\)�”}”(hŒ``->post_set_mode()``”h]”hŒ->post_set_mode()”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÍubhŒ^ is called unconditionally, after the SET FEATURES - XFER MODE command completes successfully.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KIhj*h²hubhì)�”}”(hŒn``->set_piomode()`` is always called (if present), but ``->set_dma_mode()`` is only called if DMA is possible.”h]”(j\)�”}”(hŒ``->set_piomode()``”h]”hŒ->set_piomode()”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjéubhŒ$ is always called (if present), but ”…”�”}”(hjéh²hh³Nh´Nubj\)�”}”(hŒ``->set_dma_mode()``”h]”hŒ->set_dma_mode()”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjéubhŒ# is only called if DMA is possible.”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KLhj*h²hubeh}”(h]”Œset-pio-dma-mode”ah ]”h"]”Œset pio/dma mode”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K2ubh¶)�”}”(hhh]”(h»)�”}”(hŒTaskfile read/write”h]”hŒTaskfile read/write”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´KPubjõ)�”}”(hŒ‡void (*sff_tf_load) (struct ata_port *ap, struct ata_taskfile *tf); void (*sff_tf_read) (struct ata_port *ap, struct ata_taskfile *tf);”h]”hŒ‡void (*sff_tf_load) (struct ata_port *ap, struct ata_taskfile *tf); void (*sff_tf_read) (struct ata_port *ap, struct ata_taskfile *tf);”…”�”}”hj0sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´KThjh²hubhì)�”}”(hX^``->tf_load()`` is called to load the given taskfile into hardware registers / DMA buffers. ``->tf_read()`` is called to read the hardware registers / DMA buffers, to obtain the current set of taskfile register values. Most drivers for taskfile-based hardware (PIO or MMIO) use :c:func:`ata_sff_tf_load` and :c:func:`ata_sff_tf_read` for these hooks.”h]”(j\)�”}”(hŒ``->tf_load()``”h]”hŒ ->tf_load()”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj>ubhŒM is called to load the given taskfile into hardware registers / DMA buffers. ”…”�”}”(hj>h²hh³Nh´Nubj\)�”}”(hŒ``->tf_read()``”h]”hŒ ->tf_read()”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj>ubhŒ« is called to read the hardware registers / DMA buffers, to obtain the current set of taskfile register values. Most drivers for taskfile-based hardware (PIO or MMIO) use ”…”�”}”(hj>h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_tf_load`”h]”j\)�”}”(hjhh]”hŒata_sff_tf_load()”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjfubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_tf_load”uh1hh³hÊh´KXhj>ubhŒ and ”…”�”}”(hj>h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_tf_read`”h]”j\)�”}”(hj‹h]”hŒata_sff_tf_read()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj‰ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_tf_read”uh1hh³hÊh´KXhj>ubhŒ for these hooks.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KXhjh²hubeh}”(h]”Œtaskfile-read-write”ah ]”h"]”Œtaskfile read/write”ah$]”h&]”uh1hµhj¸h²hh³hÊh´KPubh¶)�”}”(hhh]”(h»)�”}”(hŒPIO data read/write”h]”hŒPIO data read/write”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjºh²hh³hÊh´K_ubjõ)�”}”(hŒPvoid (*sff_data_xfer) (struct ata_device *, unsigned char *, unsigned int, int);”h]”hŒPvoid (*sff_data_xfer) (struct ata_device *, unsigned char *, unsigned int, int);”…”�”}”hjËsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´Kchjºh²hubhì)�”}”(hŒøAll bmdma-style drivers must implement this hook. This is the low-level operation that actually copies the data bytes during a PIO data transfer. Typically the driver will choose one of :c:func:`ata_sff_data_xfer`, or :c:func:`ata_sff_data_xfer32`.”h]”(hŒºAll bmdma-style drivers must implement this hook. This is the low-level operation that actually copies the data bytes during a PIO data transfer. Typically the driver will choose one of ”…”�”}”(hjÙh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_data_xfer`”h]”j\)�”}”(hjãh]”hŒata_sff_data_xfer()”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjáubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_data_xfer”uh1hh³hÊh´KfhjÙubhŒ, or ”…”�”}”(hjÙh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_data_xfer32`”h]”j\)�”}”(hjh]”hŒata_sff_data_xfer32()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_data_xfer32”uh1hh³hÊh´KfhjÙubhŒ.”…”�”}”(hjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kfhjºh²hubeh}”(h]”Œpio-data-read-write”ah ]”h"]”Œpio data read/write”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K_ubh¶)�”}”(hhh]”(h»)�”}”(hŒATA command execute”h]”hŒATA command execute”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj5h²hh³hÊh´Klubjõ)�”}”(hŒGvoid (*sff_exec_command)(struct ata_port *ap, struct ata_taskfile *tf);”h]”hŒGvoid (*sff_exec_command)(struct ata_port *ap, struct ata_taskfile *tf);”…”�”}”hjFsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´Kphj5h²hubhì)�”}”(hŒ¶causes an ATA command, previously loaded with ``->tf_load()``, to be initiated in hardware. Most drivers for taskfile-based hardware use :c:func:`ata_sff_exec_command` for this hook.”h]”(hŒ.causes an ATA command, previously loaded with ”…”�”}”(hjTh²hh³Nh´Nubj\)�”}”(hŒ``->tf_load()``”h]”hŒ ->tf_load()”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjTubhŒL, to be initiated in hardware. Most drivers for taskfile-based hardware use ”…”�”}”(hjTh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_exec_command`”h]”j\)�”}”(hjph]”hŒata_sff_exec_command()”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjnubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_exec_command”uh1hh³hÊh´KshjTubhŒ for this hook.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kshj5h²hubeh}”(h]”Œata-command-execute”ah ]”h"]”Œata command execute”ah$]”h&]”uh1hµhj¸h²hh³hÊh´Klubh¶)�”}”(hhh]”(h»)�”}”(hŒ%Per-cmd ATAPI DMA capabilities filter”h]”hŒ%Per-cmd ATAPI DMA capabilities filter”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŸh²hh³hÊh´Kxubjõ)�”}”(hŒ3int (*check_atapi_dma) (struct ata_queued_cmd *qc);”h]”hŒ3int (*check_atapi_dma) (struct ata_queued_cmd *qc);”…”�”}”hj°sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´K|hjŸh²hubhì)�”}”(hŒ—Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command.”h]”hŒ—Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjŸh²hubhì)�”}”(hŒeThis hook may be specified as NULL, in which case libata will assume that atapi dma can be supported.”h]”hŒeThis hook may be specified as NULL, in which case libata will assume that atapi dma can be supported.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KƒhjŸh²hubeh}”(h]”Œ%per-cmd-atapi-dma-capabilities-filter”ah ]”h"]”Œ%per-cmd atapi dma capabilities filter”ah$]”h&]”uh1hµhj¸h²hh³hÊh´Kxubh¶)�”}”(hhh]”(h»)�”}”(hŒ"Read specific ATA shadow registers”h]”hŒ"Read specific ATA shadow registers”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjâh²hh³hÊh´K‡ubjõ)�”}”(hŒ`u8 (*sff_check_status)(struct ata_port *ap); u8 (*sff_check_altstatus)(struct ata_port *ap);”h]”hŒ`u8 (*sff_check_status)(struct ata_port *ap); u8 (*sff_check_altstatus)(struct ata_port *ap);”…”�”}”hjósbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´K‹hjâh²hubhì)�”}”(hŒÿReads the Status/AltStatus ATA shadow register from hardware. On some hardware, reading the Status register has the side effect of clearing the interrupt condition. Most drivers for taskfile-based hardware use :c:func:`ata_sff_check_status` for this hook.”h]”(hŒÒReads the Status/AltStatus ATA shadow register from hardware. On some hardware, reading the Status register has the side effect of clearing the interrupt condition. Most drivers for taskfile-based hardware use ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_check_status`”h]”j\)�”}”(hj h]”hŒata_sff_check_status()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_check_status”uh1hh³hÊh´K�hjubhŒ for this hook.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K�hjâh²hubeh}”(h]”Œ"read-specific-ata-shadow-registers”ah ]”h"]”Œ"read specific ata shadow registers”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K‡ubh¶)�”}”(hhh]”(h»)�”}”(hŒ"Write specific ATA shadow register”h]”hŒ"Write specific ATA shadow register”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj:h²hh³hÊh´K•ubjõ)�”}”(hŒ4void (*sff_set_devctl)(struct ata_port *ap, u8 ctl);”h]”hŒ4void (*sff_set_devctl)(struct ata_port *ap, u8 ctl);”…”�”}”hjKsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´K™hj:h²hubhì)�”}”(hŒeWrite the device control ATA shadow register to the hardware. Most drivers don't need to define this.”h]”hŒgWrite the device control ATA shadow register to the hardware. Most drivers don’t need to define this.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kœhj:h²hubeh}”(h]”Œ"write-specific-ata-shadow-register”ah ]”h"]”Œ"write specific ata shadow register”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K•ubh¶)�”}”(hhh]”(h»)�”}”(hŒSelect ATA device on bus”h]”hŒSelect ATA device on bus”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjoh²hh³hÊh´K ubjõ)�”}”(hŒAvoid (*sff_dev_select)(struct ata_port *ap, unsigned int device);”h]”hŒAvoid (*sff_dev_select)(struct ata_port *ap, unsigned int device);”…”�”}”hj€sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´K¤hjoh²hubhì)�”}”(hŒÍIssues the low-level hardware command(s) that causes one of N hardware devices to be considered 'selected' (active and available for use) on the ATA bus. This generally has no meaning on FIS-based devices.”h]”hŒÑIssues the low-level hardware command(s) that causes one of N hardware devices to be considered ‘selected’ (active and available for use) on the ATA bus. This generally has no meaning on FIS-based devices.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K§hjoh²hubhì)�”}”(hŒXMost drivers for taskfile-based hardware use :c:func:`ata_sff_dev_select` for this hook.”h]”(hŒ-Most drivers for taskfile-based hardware use ”…”�”}”(hjœh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_dev_select`”h]”j\)�”}”(hj¦h]”hŒata_sff_dev_select()”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_dev_select”uh1hh³hÊh´K«hjœubhŒ for this hook.”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K«hjoh²hubeh}”(h]”Œselect-ata-device-on-bus”ah ]”h"]”Œselect ata device on bus”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒPrivate tuning method”h]”hŒPrivate tuning method”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÕh²hh³hÊh´K¯ubjõ)�”}”(hŒ'void (*set_mode) (struct ata_port *ap);”h]”hŒ'void (*set_mode) (struct ata_port *ap);”…”�”}”hjæsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´K³hjÕh²hubhì)�”}”(hX'By default libata performs drive and controller tuning in accordance with the ATA timing rules and also applies blacklists and cable limits. Some controllers need special handling and have custom tuning rules, typically raid controllers that use ATA commands but do not actually do drive timing.”h]”hX'By default libata performs drive and controller tuning in accordance with the ATA timing rules and also applies blacklists and cable limits. Some controllers need special handling and have custom tuning rules, typically raid controllers that use ATA commands but do not actually do drive timing.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¶hjÕh²hubhŒ block_quote”“”)�”}”(hXd**Warning** This hook should not be used to replace the standard controller tuning logic when a controller has quirks. Replacing the default tuning logic in that case would bypass handling for drive and bridge quirks that may be important to data reliability. If a controller needs to filter the mode selection it should use the mode_filter hook instead. ”h]”(hì)�”}”(hŒ **Warning**”h]”hŒstrong”“”)�”}”(hj h]”hŒWarning”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¼hjubhì)�”}”(hXVThis hook should not be used to replace the standard controller tuning logic when a controller has quirks. Replacing the default tuning logic in that case would bypass handling for drive and bridge quirks that may be important to data reliability. If a controller needs to filter the mode selection it should use the mode_filter hook instead.”h]”hXVThis hook should not be used to replace the standard controller tuning logic when a controller has quirks. Replacing the default tuning logic in that case would bypass handling for drive and bridge quirks that may be important to data reliability. If a controller needs to filter the mode selection it should use the mode_filter hook instead.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¾hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÊh´K¼hjÕh²hubeh}”(h]”Œprivate-tuning-method”ah ]”h"]”Œprivate tuning method”ah$]”h&]”uh1hµhj¸h²hh³hÊh´K¯ubh¶)�”}”(hhh]”(h»)�”}”(hŒControl PCI IDE BMDMA engine”h]”hŒControl PCI IDE BMDMA engine”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj=h²hh³hÊh´KÆubjõ)�”}”(hŒ·void (*bmdma_setup) (struct ata_queued_cmd *qc); void (*bmdma_start) (struct ata_queued_cmd *qc); void (*bmdma_stop) (struct ata_port *ap); u8 (*bmdma_status) (struct ata_port *ap);”h]”hŒ·void (*bmdma_setup) (struct ata_queued_cmd *qc); void (*bmdma_start) (struct ata_queued_cmd *qc); void (*bmdma_stop) (struct ata_port *ap); u8 (*bmdma_status) (struct ata_port *ap);”…”�”}”hjNsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´KÊhj=h²hubhì)�”}”(hŒìWhen setting up an IDE BMDMA transaction, these hooks arm (``->bmdma_setup``), fire (``->bmdma_start``), and halt (``->bmdma_stop``) the hardware's DMA engine. ``->bmdma_status`` is used to read the standard PCI IDE DMA Status register.”h]”(hŒ;When setting up an IDE BMDMA transaction, these hooks arm (”…”�”}”(hj\h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_setup``”h]”hŒ ->bmdma_setup”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj\ubhŒ ), fire (”…”�”}”(hj\h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_start``”h]”hŒ ->bmdma_start”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj\ubhŒ ), and halt (”…”�”}”(hj\h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_stop``”h]”hŒ ->bmdma_stop”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj\ubhŒ) the hardware’s DMA engine. ”…”�”}”(hj\h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_status``”h]”hŒ->bmdma_status”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj\ubhŒ: is used to read the standard PCI IDE DMA Status register.”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÐhj=h²hubhì)�”}”(hŒYThese hooks are typically either no-ops, or simply not implemented, in FIS-based drivers.”h]”hŒYThese hooks are typically either no-ops, or simply not implemented, in FIS-based drivers.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÕhj=h²hubhì)�”}”(hX!Most legacy IDE drivers use :c:func:`ata_bmdma_setup` for the :c:func:`bmdma_setup` hook. :c:func:`ata_bmdma_setup` will write the pointer to the PRD table to the IDE PRD Table Address register, enable DMA in the DMA Command register, and call :c:func:`exec_command` to begin the transfer.”h]”(hŒMost legacy IDE drivers use ”…”�”}”(hjÀh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_setup`”h]”j\)�”}”(hjÊh]”hŒata_bmdma_setup()”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_setup”uh1hh³hÊh´KØhjÀubhŒ for the ”…”�”}”(hjÀh²hh³Nh´Nubh)�”}”(hŒ:c:func:`bmdma_setup`”h]”j\)�”}”(hjíh]”hŒ bmdma_setup()”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ bmdma_setup”uh1hh³hÊh´KØhjÀubhŒ hook. ”…”�”}”(hjÀh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_setup`”h]”j\)�”}”(hjh]”hŒata_bmdma_setup()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_setup”uh1hh³hÊh´KØhjÀubhŒ� will write the pointer to the PRD table to the IDE PRD Table Address register, enable DMA in the DMA Command register, and call ”…”�”}”(hjÀh²hh³Nh´Nubh)�”}”(hŒ:c:func:`exec_command`”h]”j\)�”}”(hj3h]”hŒexec_command()”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ exec_command”uh1hh³hÊh´KØhjÀubhŒ to begin the transfer.”…”�”}”(hjÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KØhj=h²hubhì)�”}”(hŒ²Most legacy IDE drivers use :c:func:`ata_bmdma_start` for the :c:func:`bmdma_start` hook. :c:func:`ata_bmdma_start` will write the ATA_DMA_START flag to the DMA Command register.”h]”(hŒMost legacy IDE drivers use ”…”�”}”(hjZh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_start`”h]”j\)�”}”(hjdh]”hŒata_bmdma_start()”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjbubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_start”uh1hh³hÊh´KÝhjZubhŒ for the ”…”�”}”(hjZh²hh³Nh´Nubh)�”}”(hŒ:c:func:`bmdma_start`”h]”j\)�”}”(hj‡h]”hŒ bmdma_start()”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj…ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ bmdma_start”uh1hh³hÊh´KÝhjZubhŒ hook. ”…”�”}”(hjZh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_start`”h]”j\)�”}”(hjªh]”hŒata_bmdma_start()”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_start”uh1hh³hÊh´KÝhjZubhŒ? will write the ATA_DMA_START flag to the DMA Command register.”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÝhj=h²hubhì)�”}”(hŒ«Many legacy IDE drivers use :c:func:`ata_bmdma_stop` for the :c:func:`bmdma_stop` hook. :c:func:`ata_bmdma_stop` clears the ATA_DMA_START flag in the DMA command register.”h]”(hŒMany legacy IDE drivers use ”…”�”}”(hjÑh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_stop`”h]”j\)�”}”(hjÛh]”hŒata_bmdma_stop()”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÙubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_stop”uh1hh³hÊh´KáhjÑubhŒ for the ”…”�”}”(hjÑh²hh³Nh´Nubh)�”}”(hŒ:c:func:`bmdma_stop`”h]”j\)�”}”(hjþh]”hŒ bmdma_stop()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjüubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ bmdma_stop”uh1hh³hÊh´KáhjÑubhŒ hook. ”…”�”}”(hjÑh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_stop`”h]”j\)�”}”(hj!h]”hŒata_bmdma_stop()”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_stop”uh1hh³hÊh´KáhjÑubhŒ; clears the ATA_DMA_START flag in the DMA command register.”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Káhj=h²hubhì)�”}”(hŒZMany legacy IDE drivers use :c:func:`ata_bmdma_status` as the :c:func:`bmdma_status` hook.”h]”(hŒMany legacy IDE drivers use ”…”�”}”(hjHh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_status`”h]”j\)�”}”(hjRh]”hŒata_bmdma_status()”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_status”uh1hh³hÊh´KåhjHubhŒ as the ”…”�”}”(hjHh²hh³Nh´Nubh)�”}”(hŒ:c:func:`bmdma_status`”h]”j\)�”}”(hjuh]”hŒbmdma_status()”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjsubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ bmdma_status”uh1hh³hÊh´KåhjHubhŒ hook.”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kåhj=h²hubeh}”(h]”Œcontrol-pci-ide-bmdma-engine”ah ]”h"]”Œcontrol pci ide bmdma engine”ah$]”h&]”uh1hµhj¸h²hh³hÊh´KÆubh¶)�”}”(hhh]”(h»)�”}”(hŒHigh-level taskfile hooks”h]”hŒHigh-level taskfile hooks”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¤h²hh³hÊh´Kéubjõ)�”}”(hŒoenum ata_completion_errors (*qc_prep) (struct ata_queued_cmd *qc); int (*qc_issue) (struct ata_queued_cmd *qc);”h]”hŒoenum ata_completion_errors (*qc_prep) (struct ata_queued_cmd *qc); int (*qc_issue) (struct ata_queued_cmd *qc);”…”�”}”hjµsbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´Kíhj¤h²hubhì)�”}”(hX“Higher-level hooks, these two hooks can potentially supersede several of the above taskfile/DMA engine hooks. ``->qc_prep`` is called after the buffers have been DMA-mapped, and is typically used to populate the hardware's DMA scatter-gather table. Some drivers use the standard :c:func:`ata_bmdma_qc_prep` and :c:func:`ata_bmdma_dumb_qc_prep` helper functions, but more advanced drivers roll their own.”h]”(hŒnHigher-level hooks, these two hooks can potentially supersede several of the above taskfile/DMA engine hooks. ”…”�”}”(hjÃh²hh³Nh´Nubj\)�”}”(hŒ ``->qc_prep``”h]”hŒ ->qc_prep”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÃubhŒž is called after the buffers have been DMA-mapped, and is typically used to populate the hardware’s DMA scatter-gather table. Some drivers use the standard ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_bmdma_qc_prep`”h]”j\)�”}”(hjßh]”hŒata_bmdma_qc_prep()”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_qc_prep”uh1hh³hÊh´KñhjÃubhŒ and ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ :c:func:`ata_bmdma_dumb_qc_prep`”h]”j\)�”}”(hj h]”hŒata_bmdma_dumb_qc_prep()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_bmdma_dumb_qc_prep”uh1hh³hÊh´KñhjÃubhŒ< helper functions, but more advanced drivers roll their own.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kñhj¤h²hubhì)�”}”(hX ``->qc_issue`` is used to make a command active, once the hardware and S/G tables have been prepared. IDE BMDMA drivers use the helper function :c:func:`ata_sff_qc_issue` for taskfile protocol-based dispatch. More advanced drivers implement their own ``->qc_issue``.”h]”(j\)�”}”(hŒ``->qc_issue``”h]”hŒ ->qc_issue”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj) ubhŒ‚ is used to make a command active, once the hardware and S/G tables have been prepared. IDE BMDMA drivers use the helper function ”…”�”}”(hj) h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_qc_issue`”h]”j\)�”}”(hjA h]”hŒata_sff_qc_issue()”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj? ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_qc_issue”uh1hh³hÊh´Køhj) ubhŒQ for taskfile protocol-based dispatch. More advanced drivers implement their own ”…”�”}”(hj) h²hh³Nh´Nubj\)�”}”(hŒ``->qc_issue``”h]”hŒ ->qc_issue”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj) ubhŒ.”…”�”}”(hj) h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Køhj¤h²hubhì)�”}”(hŒ‡:c:func:`ata_sff_qc_issue` calls ``->sff_tf_load()``, ``->bmdma_setup()``, and ``->bmdma_start()`` as necessary to initiate a transfer.”h]”(h)�”}”(hŒ:c:func:`ata_sff_qc_issue`”h]”j\)�”}”(hj€ h]”hŒata_sff_qc_issue()”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj~ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_qc_issue”uh1hh³hÊh´Kýhjz ubhŒ calls ”…”�”}”(hjz h²hh³Nh´Nubj\)�”}”(hŒ``->sff_tf_load()``”h]”hŒ->sff_tf_load()”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjz ubhŒ, ”…”�”}”(hjz h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_setup()``”h]”hŒ->bmdma_setup()”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjz ubhŒ, and ”…”�”}”(hjz h²hh³Nh´Nubj\)�”}”(hŒ``->bmdma_start()``”h]”hŒ->bmdma_start()”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjz ubhŒ% as necessary to initiate a transfer.”…”�”}”(hjz h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kýhj¤h²hubeh}”(h]”Œhigh-level-taskfile-hooks”ah ]”h"]”Œhigh-level taskfile hooks”ah$]”h&]”uh1hµhj¸h²hh³hÊh´Kéubh¶)�”}”(hhh]”(h»)�”}”(hŒ!Exception and probe handling (EH)”h]”hŒ!Exception and probe handling (EH)”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjå h²hh³hÊh´Mubjõ)�”}”(hŒIvoid (*freeze) (struct ata_port *ap); void (*thaw) (struct ata_port *ap);”h]”hŒIvoid (*freeze) (struct ata_port *ap); void (*thaw) (struct ata_port *ap);”…”�”}”hjö sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´Mhjå h²hubhì)�”}”(hŒð:c:func:`ata_port_freeze` is called when HSM violations or some other condition disrupts normal operation of the port. A frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset.”h]”(h)�”}”(hŒ:c:func:`ata_port_freeze`”h]”j\)�”}”(hj h]”hŒata_port_freeze()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_port_freeze”uh1hh³hÊh´M hj ubhŒ× is called when HSM violations or some other condition disrupts normal operation of the port. A frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjå h²hubhì)�”}”(hXThe optional ``->freeze()`` callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen.”h]”(hŒ The optional ”…”�”}”(hj1 h²hh³Nh´Nubj\)�”}”(hŒ``->freeze()``”h]”hŒ ->freeze()”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj1 ubhŒì callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen.”…”�”}”(hj1 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjå h²hubhì)�”}”(hŒ³The optional ``->thaw()`` callback is called to perform the opposite of ``->freeze()``: prepare the port for normal operation once again. Unmask interrupts, start DMA engine, etc.”h]”(hŒ The optional ”…”�”}”(hjQ h²hh³Nh´Nubj\)�”}”(hŒ ``->thaw()``”h]”hŒ->thaw()”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQ ubhŒ/ callback is called to perform the opposite of ”…”�”}”(hjQ h²hh³Nh´Nubj\)�”}”(hŒ``->freeze()``”h]”hŒ ->freeze()”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQ ubhŒ]: prepare the port for normal operation once again. Unmask interrupts, start DMA engine, etc.”…”�”}”(hjQ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjå h²hubjõ)�”}”(hŒ,void (*error_handler) (struct ata_port *ap);”h]”hŒ,void (*error_handler) (struct ata_port *ap);”…”�”}”hjƒ sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´Mhjå h²hubhì)�”}”(hŒÈ``->error_handler()`` is a driver's hook into probe, hotplug, and recovery and other exceptional conditions. The primary responsibility of an implementation is to call :c:func:`ata_std_error_handler`.”h]”(j\)�”}”(hŒ``->error_handler()``”h]”hŒ->error_handler()”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‘ ubhŒ• is a driver’s hook into probe, hotplug, and recovery and other exceptional conditions. The primary responsibility of an implementation is to call ”…”�”}”(hj‘ h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_std_error_handler`”h]”j\)�”}”(hj© h]”hŒata_std_error_handler()”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj§ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_std_error_handler”uh1hh³hÊh´Mhj‘ ubhŒ.”…”�”}”(hj‘ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjå h²hubhì)�”}”(hX :c:func:`ata_std_error_handler` will perform a standard error handling sequence to resurrect failed devices, detach lost devices and add new devices (if any). This function will call the various reset operations for a port, as needed. These operations are as follows.”h]”(h)�”}”(hŒ:c:func:`ata_std_error_handler`”h]”j\)�”}”(hjÖ h]”hŒata_std_error_handler()”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_std_error_handler”uh1hh³hÊh´M hjÐ ubhŒì will perform a standard error handling sequence to resurrect failed devices, detach lost devices and add new devices (if any). This function will call the various reset operations for a port, as needed. These operations are as follows.”…”�”}”(hjÐ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjå h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒmThe 'prereset' operation (which may be NULL) is called during an EH reset, before any other action is taken. ”h]”hì)�”}”(hŒlThe 'prereset' operation (which may be NULL) is called during an EH reset, before any other action is taken.”h]”hŒpThe ‘prereset’ operation (which may be NULL) is called during an EH reset, before any other action is taken.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M%hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ h²hh³hÊh´Nubj )�”}”(hŒ¦The 'postreset' hook (which may be NULL) is called after the EH reset is performed. Based on existing conditions, severity of the problem, and hardware capabilities, ”h]”hì)�”}”(hŒ¥The 'postreset' hook (which may be NULL) is called after the EH reset is performed. Based on existing conditions, severity of the problem, and hardware capabilities,”h]”hŒ©The ‘postreset’ hook (which may be NULL) is called after the EH reset is performed. Based on existing conditions, severity of the problem, and hardware capabilities,”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M(hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ h²hh³hÊh´Nubj )�”}”(hX3Either the 'softreset' operation or the 'hardreset' operation will be called to perform the low-level EH reset. If both operations are defined, 'hardreset' is preferred and used. If both are not defined, no low-level reset is performed and EH assumes that an ATA class device is connected through the link. ”h]”hì)�”}”(hX2Either the 'softreset' operation or the 'hardreset' operation will be called to perform the low-level EH reset. If both operations are defined, 'hardreset' is preferred and used. If both are not defined, no low-level reset is performed and EH assumes that an ATA class device is connected through the link.”h]”hX>Either the ‘softreset’ operation or the ‘hardreset’ operation will be called to perform the low-level EH reset. If both operations are defined, ‘hardreset’ is preferred and used. If both are not defined, no low-level reset is performed and EH assumes that an ATA class device is connected through the link.”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M,hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jý h³hÊh´M%hjå h²hubjõ)�”}”(hŒ6void (*post_internal_cmd) (struct ata_queued_cmd *qc);”h]”hŒ6void (*post_internal_cmd) (struct ata_queued_cmd *qc);”…”�”}”hjT sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´M4hjå h²hubhì)�”}”(hŒ•Perform any hardware-specific actions necessary to finish processing after executing a probe-time or EH-time command via :c:func:`ata_exec_internal`.”h]”(hŒyPerform any hardware-specific actions necessary to finish processing after executing a probe-time or EH-time command via ”…”�”}”(hjb h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_exec_internal`”h]”j\)�”}”(hjl h]”hŒata_exec_internal()”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_exec_internal”uh1hh³hÊh´M7hjb ubhŒ.”…”�”}”(hjb h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M7hjå h²hubeh}”(h]”Œexception-and-probe-handling-eh”ah ]”h"]”Œ!exception and probe handling (eh)”ah$]”h&]”uh1hµhj¸h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒHardware interrupt handling”h]”hŒHardware interrupt handling”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj› h²hh³hÊh´M<ubjõ)�”}”(hŒairqreturn_t (*irq_handler)(int, void *, struct pt_regs *); void (*irq_clear) (struct ata_port *);”h]”hŒairqreturn_t (*irq_handler)(int, void *, struct pt_regs *); void (*irq_clear) (struct ata_port *);”…”�”}”hj¬ sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´M@hj› h²hubhì)�”}”(hŒÐ``->irq_handler`` is the interrupt handling routine registered with the system, by libata. ``->irq_clear`` is called during probe just before the interrupt handler is registered, to be sure hardware is quiet.”h]”(j\)�”}”(hŒ``->irq_handler``”h]”hŒ ->irq_handler”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjº ubhŒJ is the interrupt handling routine registered with the system, by libata. ”…”�”}”(hjº h²hh³Nh´Nubj\)�”}”(hŒ``->irq_clear``”h]”hŒ ->irq_clear”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjº ubhŒf is called during probe just before the interrupt handler is registered, to be sure hardware is quiet.”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MDhj› h²hubhì)�”}”(hŒoThe second argument, dev_instance, should be cast to a pointer to :c:type:`struct ata_host_set `.”h]”(hŒBThe second argument, dev_instance, should be cast to a pointer to ”…”�”}”(hjè h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct ata_host_set `”h]”j\)�”}”(hjò h]”hŒstruct ata_host_set”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-type”eh"]”h$]”h&]”uh1j[hjð ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jzŒ ata_host_set”uh1hh³hÊh´MHhjè ubhŒ.”…”�”}”(hjè h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MHhj› h²hubhì)�”}”(hŒÑMost legacy IDE drivers use :c:func:`ata_sff_interrupt` for the irq_handler hook, which scans all ports in the host_set, determines which queued command was active (if any), and calls ata_sff_host_intr(ap,qc).”h]”(hŒMost legacy IDE drivers use ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_interrupt`”h]”j\)�”}”(hj# h]”hŒata_sff_interrupt()”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj! ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_interrupt”uh1hh³hÊh´MKhj ubhŒš for the irq_handler hook, which scans all ports in the host_set, determines which queued command was active (if any), and calls ata_sff_host_intr(ap,qc).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MKhj› h²hubhì)�”}”(hŒ§Most legacy IDE drivers use :c:func:`ata_sff_irq_clear` for the :c:func:`irq_clear` hook, which simply clears the interrupt and error flags in the DMA status register.”h]”(hŒMost legacy IDE drivers use ”…”�”}”(hjJ h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_sff_irq_clear`”h]”j\)�”}”(hjT h]”hŒata_sff_irq_clear()”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjR ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_sff_irq_clear”uh1hh³hÊh´MOhjJ ubhŒ for the ”…”�”}”(hjJ h²hh³Nh´Nubh)�”}”(hŒ:c:func:`irq_clear`”h]”j\)�”}”(hjw h]”hŒ irq_clear()”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hju ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ irq_clear”uh1hh³hÊh´MOhjJ ubhŒT hook, which simply clears the interrupt and error flags in the DMA status register.”…”�”}”(hjJ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MOhj› h²hubeh}”(h]”Œhardware-interrupt-handling”ah ]”h"]”Œhardware interrupt handling”ah$]”h&]”uh1hµhj¸h²hh³hÊh´M<ubh¶)�”}”(hhh]”(h»)�”}”(hŒSATA phy read/write”h]”hŒSATA phy read/write”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¦ h²hh³hÊh´MTubjõ)�”}”(hŒ§int (*scr_read) (struct ata_port *ap, unsigned int sc_reg, u32 *val); int (*scr_write) (struct ata_port *ap, unsigned int sc_reg, u32 val);”h]”hŒ§int (*scr_read) (struct ata_port *ap, unsigned int sc_reg, u32 *val); int (*scr_write) (struct ata_port *ap, unsigned int sc_reg, u32 val);”…”�”}”hj· sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´MXhj¦ h²hubhì)�”}”(hŒoRead and write standard SATA phy registers. sc_reg is one of SCR_STATUS, SCR_CONTROL, SCR_ERROR, or SCR_ACTIVE.”h]”hŒoRead and write standard SATA phy registers. sc_reg is one of SCR_STATUS, SCR_CONTROL, SCR_ERROR, or SCR_ACTIVE.”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M^hj¦ h²hubeh}”(h]”Œsata-phy-read-write”ah ]”h"]”Œsata phy read/write”ah$]”h&]”uh1hµhj¸h²hh³hÊh´MTubh¶)�”}”(hhh]”(h»)�”}”(hŒInit and shutdown”h]”hŒInit and shutdown”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÛ h²hh³hÊh´Mbubjõ)�”}”(hŒ„int (*port_start) (struct ata_port *ap); void (*port_stop) (struct ata_port *ap); void (*host_stop) (struct ata_host_set *host_set);”h]”hŒ„int (*port_start) (struct ata_port *ap); void (*port_stop) (struct ata_port *ap); void (*host_stop) (struct ata_host_set *host_set);”…”�”}”hjì sbah}”(h]”h ]”h"]”h$]”h&]”jjuh1jôh³hÊh´MfhjÛ h²hubhì)�”}”(hX7``->port_start()`` is called just after the data structures for each port are initialized. Typically this is used to alloc per-port DMA buffers / tables / rings, enable DMA engines, and similar tasks. Some drivers also use this entry point as a chance to allocate driver-private memory for ``ap->private_data``.”h]”(j\)�”}”(hŒ``->port_start()``”h]”hŒ->port_start()”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjú ubhX is called just after the data structures for each port are initialized. Typically this is used to alloc per-port DMA buffers / tables / rings, enable DMA engines, and similar tasks. Some drivers also use this entry point as a chance to allocate driver-private memory for ”…”�”}”(hjú h²hh³Nh´Nubj\)�”}”(hŒ``ap->private_data``”h]”hŒap->private_data”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjú ubhŒ.”…”�”}”(hjú h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MkhjÛ h²hubhì)�”}”(hŒ½Many drivers use :c:func:`ata_port_start` as this hook or call it from their own :c:func:`port_start` hooks. :c:func:`ata_port_start` allocates space for a legacy IDE PRD table and returns.”h]”(hŒMany drivers use ”…”�”}”(hj( h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_port_start`”h]”j\)�”}”(hj2 h]”hŒata_port_start()”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj0 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_port_start”uh1hh³hÊh´Mqhj( ubhŒ( as this hook or call it from their own ”…”�”}”(hj( h²hh³Nh´Nubh)�”}”(hŒ:c:func:`port_start`”h]”j\)�”}”(hjU h]”hŒ port_start()”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjS ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ port_start”uh1hh³hÊh´Mqhj( ubhŒ hooks. ”…”�”}”(hj( h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_port_start`”h]”j\)�”}”(hjx h]”hŒata_port_start()”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjv ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_port_start”uh1hh³hÊh´Mqhj( ubhŒ8 allocates space for a legacy IDE PRD table and returns.”…”�”}”(hj( h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MqhjÛ h²hubhì)�”}”(hŒÞ``->port_stop()`` is called after ``->host_stop()``. Its sole function is to release DMA/memory resources, now that they are no longer actively being used. Many drivers also free driver-private data from port at this time.”h]”(j\)�”}”(hŒ``->port_stop()``”h]”hŒ ->port_stop()”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŸ ubhŒ is called after ”…”�”}”(hjŸ h²hh³Nh´Nubj\)�”}”(hŒ``->host_stop()``”h]”hŒ ->host_stop()”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŸ ubhŒ«. Its sole function is to release DMA/memory resources, now that they are no longer actively being used. Many drivers also free driver-private data from port at this time.”…”�”}”(hjŸ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MuhjÛ h²hubhì)�”}”(hŒá``->host_stop()`` is called after all ``->port_stop()`` calls have completed. The hook must finalize hardware shutdown, release DMA and other resources, etc. This hook may be specified as NULL, in which case it is not called.”h]”(j\)�”}”(hŒ``->host_stop()``”h]”hŒ ->host_stop()”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÍ ubhŒ is called after all ”…”�”}”(hjÍ h²hh³Nh´Nubj\)�”}”(hŒ``->port_stop()``”h]”hŒ ->port_stop()”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÍ ubhŒª calls have completed. The hook must finalize hardware shutdown, release DMA and other resources, etc. This hook may be specified as NULL, in which case it is not called.”…”�”}”(hjÍ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MyhjÛ h²hubeh}”(h]”Œinit-and-shutdown”ah ]”h"]”Œinit and shutdown”ah$]”h&]”uh1hµhj¸h²hh³hÊh´Mbubeh}”(h]”Œstruct-ata-port-operations”ah ]”h"]”Œstruct ata_port_operations”ah$]”h&]”uh1hµhjBh²hh³hÊh´K!ubeh}”(h]”Œlibata-driver-api”ah ]”h"]”Œlibata driver api”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒError handling”h]”hŒError handling”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mubhì)�”}”(hŒžThis chapter describes how errors are handled under libata. Readers are advised to read SCSI EH (Documentation/scsi/scsi_eh.rst) and ATA exceptions doc first.”h]”hŒžThis chapter describes how errors are handled under libata. Readers are advised to read SCSI EH (Documentation/scsi/scsi_eh.rst) and ATA exceptions doc first.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hjh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒOrigins of commands”h]”hŒOrigins of commands”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj2h²hh³hÊh´M†ubhì)�”}”(hXJIn libata, a command is represented with :c:type:`struct ata_queued_cmd ` or qc. qc's are preallocated during port initialization and repetitively used for command executions. Currently only one qc is allocated per port but yet-to-be-merged NCQ branch allocates one for each tag and maps each qc to NCQ tag 1-to-1.”h]”(hŒ)In libata, a command is represented with ”…”�”}”(hjCh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct ata_queued_cmd `”h]”j\)�”}”(hjMh]”hŒstruct ata_queued_cmd”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-type”eh"]”h$]”h&]”uh1j[hjKubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jzŒata_queued_cmd”uh1hh³hÊh´MˆhjCubhŒó or qc. qc’s are preallocated during port initialization and repetitively used for command executions. Currently only one qc is allocated per port but yet-to-be-merged NCQ branch allocates one for each tag and maps each qc to NCQ tag 1-to-1.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mˆhj2h²hubhì)�”}”(hX#libata commands can originate from two sources - libata itself and SCSI midlayer. libata internal commands are used for initialization and error handling. All normal blk requests and commands for SCSI emulation are passed as SCSI commands through queuecommand callback of SCSI host template.”h]”hX#libata commands can originate from two sources - libata itself and SCSI midlayer. libata internal commands are used for initialization and error handling. All normal blk requests and commands for SCSI emulation are passed as SCSI commands through queuecommand callback of SCSI host template.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj2h²hubeh}”(h]”Œorigins-of-commands”ah ]”h"]”Œorigins of commands”ah$]”h&]”uh1hµhjh²hh³hÊh´M†ubh¶)�”}”(hhh]”(h»)�”}”(hŒHow commands are issued”h]”hŒHow commands are issued”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŠh²hh³hÊh´M–ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXInternal commands Once allocated qc's taskfile is initialized for the command to be executed. qc currently has two mechanisms to notify completion. One is via ``qc->complete_fn()`` callback and the other is completion ``qc->waiting``. ``qc->complete_fn()`` callback is the asynchronous path used by normal SCSI translated commands and ``qc->waiting`` is the synchronous (issuer sleeps in process context) path used by internal commands. Once initialization is complete, host_set lock is acquired and the qc is issued. ”h]”(hŒterm”“”)�”}”(hŒInternal commands”h]”hŒInternal commands”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´M¢hj¢ubhŒ definition”“”)�”}”(hhh]”(hì)�”}”(hX¢Once allocated qc's taskfile is initialized for the command to be executed. qc currently has two mechanisms to notify completion. One is via ``qc->complete_fn()`` callback and the other is completion ``qc->waiting``. ``qc->complete_fn()`` callback is the asynchronous path used by normal SCSI translated commands and ``qc->waiting`` is the synchronous (issuer sleeps in process context) path used by internal commands.”h]”(hŒ�Once allocated qc’s taskfile is initialized for the command to be executed. qc currently has two mechanisms to notify completion. One is via ”…”�”}”(hj»h²hh³Nh´Nubj\)�”}”(hŒ``qc->complete_fn()``”h]”hŒqc->complete_fn()”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj»ubhŒ& callback and the other is completion ”…”�”}”(hj»h²hh³Nh´Nubj\)�”}”(hŒ``qc->waiting``”h]”hŒ qc->waiting”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj»ubhŒ. ”…”�”}”(hj»h²hh³Nh´Nubj\)�”}”(hŒ``qc->complete_fn()``”h]”hŒqc->complete_fn()”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj»ubhŒO callback is the asynchronous path used by normal SCSI translated commands and ”…”�”}”(hj»h²hh³Nh´Nubj\)�”}”(hŒ``qc->waiting``”h]”hŒ qc->waiting”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj»ubhŒV is the synchronous (issuer sleeps in process context) path used by internal commands.”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M™hj¸ubhì)�”}”(hŒPOnce initialization is complete, host_set lock is acquired and the qc is issued.”h]”hŒPOnce initialization is complete, host_set lock is acquired and the qc is issued.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¡hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´M¢hj�ubj¡)�”}”(hXÛSCSI commands All libata drivers use :c:func:`ata_scsi_queuecmd` as ``hostt->queuecommand`` callback. scmds can either be simulated or translated. No qc is involved in processing a simulated scmd. The result is computed right away and the scmd is completed. ``qc->complete_fn()`` callback is used for completion notification. ATA commands use :c:func:`ata_scsi_qc_complete` while ATAPI commands use :c:func:`atapi_qc_complete`. Both functions end up calling ``qc->scsidone`` to notify upper layer when the qc is finished. After translation is completed, the qc is issued with :c:func:`ata_qc_issue`. Note that SCSI midlayer invokes hostt->queuecommand while holding host_set lock, so all above occur while holding host_set lock. ”h]”(j§)�”}”(hŒ SCSI commands”h]”hŒ SCSI commands”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´M±hj+ubj·)�”}”(hhh]”(hì)�”}”(hŒóAll libata drivers use :c:func:`ata_scsi_queuecmd` as ``hostt->queuecommand`` callback. scmds can either be simulated or translated. No qc is involved in processing a simulated scmd. The result is computed right away and the scmd is completed.”h]”(hŒAll libata drivers use ”…”�”}”(hj@h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_scsi_queuecmd`”h]”j\)�”}”(hjJh]”hŒata_scsi_queuecmd()”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjHubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_queuecmd”uh1hh³hÊh´M¥hj@ubhŒ as ”…”�”}”(hj@h²hh³Nh´Nubj\)�”}”(hŒ``hostt->queuecommand``”h]”hŒhostt->queuecommand”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj@ubhŒ¦ callback. scmds can either be simulated or translated. No qc is involved in processing a simulated scmd. The result is computed right away and the scmd is completed.”…”�”}”(hj@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¥hj=ubhì)�”}”(hXU``qc->complete_fn()`` callback is used for completion notification. ATA commands use :c:func:`ata_scsi_qc_complete` while ATAPI commands use :c:func:`atapi_qc_complete`. Both functions end up calling ``qc->scsidone`` to notify upper layer when the qc is finished. After translation is completed, the qc is issued with :c:func:`ata_qc_issue`.”h]”(j\)�”}”(hŒ``qc->complete_fn()``”h]”hŒqc->complete_fn()”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjƒubhŒ@ callback is used for completion notification. ATA commands use ”…”�”}”(hjƒh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_scsi_qc_complete`”h]”j\)�”}”(hj›h]”hŒata_scsi_qc_complete()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_qc_complete”uh1hh³hÊh´MªhjƒubhŒ while ATAPI commands use ”…”�”}”(hjƒh²hh³Nh´Nubh)�”}”(hŒ:c:func:`atapi_qc_complete`”h]”j\)�”}”(hj¾h]”hŒatapi_qc_complete()”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒatapi_qc_complete”uh1hh³hÊh´MªhjƒubhŒ . Both functions end up calling ”…”�”}”(hjƒh²hh³Nh´Nubj\)�”}”(hŒ``qc->scsidone``”h]”hŒ qc->scsidone”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjƒubhŒf to notify upper layer when the qc is finished. After translation is completed, the qc is issued with ”…”�”}”(hjƒh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_issue`”h]”j\)�”}”(hjóh]”hŒata_qc_issue()”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ ata_qc_issue”uh1hh³hÊh´MªhjƒubhŒ.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mªhj=ubhì)�”}”(hŒ€Note that SCSI midlayer invokes hostt->queuecommand while holding host_set lock, so all above occur while holding host_set lock.”h]”hŒ€Note that SCSI midlayer invokes hostt->queuecommand while holding host_set lock, so all above occur while holding host_set lock.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M°hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´M±hj�h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠh²hh³hÊh´Nubeh}”(h]”Œhow-commands-are-issued”ah ]”h"]”•Œhow commands are issued”ah$]”h&]”uh1hµhjh²hh³hÊh´M–ubh¶)�”}”(hhh]”(h»)�”}”(hŒHow commands are processed”h]”hŒHow commands are processed”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjBh²hh³hÊh´M´ubhì)�”}”(hŒÏDepending on which protocol and which controller are used, commands are processed differently. For the purpose of discussion, a controller which uses taskfile interface and all standard callbacks is assumed.”h]”hŒÏDepending on which protocol and which controller are used, commands are processed differently. For the purpose of discussion, a controller which uses taskfile interface and all standard callbacks is assumed.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¶hjBh²hubhì)�”}”(hŒ†Currently 6 ATA command protocols are used. They can be sorted into the following four categories according to how they are processed.”h]”hŒ†Currently 6 ATA command protocols are used. They can be sorted into the following four categories according to how they are processed.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MºhjBh²hubjœ)�”}”(hhh]”(j¡)�”}”(hŒÅATA NO DATA or DMA ATA_PROT_NODATA and ATA_PROT_DMA fall into this category. These types of commands don't require any software intervention once issued. Device will raise interrupt on completion. ”h]”(j§)�”}”(hŒATA NO DATA or DMA”h]”hŒATA NO DATA or DMA”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÀhjrubj·)�”}”(hhh]”hì)�”}”(hŒ±ATA_PROT_NODATA and ATA_PROT_DMA fall into this category. These types of commands don't require any software intervention once issued. Device will raise interrupt on completion.”h]”hŒ³ATA_PROT_NODATA and ATA_PROT_DMA fall into this category. These types of commands don’t require any software intervention once issued. Device will raise interrupt on completion.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¾hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÀhjoubj¡)�”}”(hŒ²ATA PIO ATA_PROT_PIO is in this category. libata currently implements PIO with polling. ATA_NIEN bit is set to turn off interrupt and pio_task on ata_wq performs polling and IO. ”h]”(j§)�”}”(hŒATA PIO”h]”hŒATA PIO”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÅhj¡ubj·)�”}”(hhh]”hì)�”}”(hŒ©ATA_PROT_PIO is in this category. libata currently implements PIO with polling. ATA_NIEN bit is set to turn off interrupt and pio_task on ata_wq performs polling and IO.”h]”hŒ©ATA_PROT_PIO is in this category. libata currently implements PIO with polling. ATA_NIEN bit is set to turn off interrupt and pio_task on ata_wq performs polling and IO.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÃhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÅhjoh²hubj¡)�”}”(hXATAPI NODATA or DMA ATA_PROT_ATAPI_NODATA and ATA_PROT_ATAPI_DMA are in this category. packet_task is used to poll BSY bit after issuing PACKET command. Once BSY is turned off by the device, packet_task transfers CDB and hands off processing to interrupt handler. ”h]”(j§)�”}”(hŒATAPI NODATA or DMA”h]”hŒATAPI NODATA or DMA”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MËhjÐubj·)�”}”(hhh]”hì)�”}”(hŒóATA_PROT_ATAPI_NODATA and ATA_PROT_ATAPI_DMA are in this category. packet_task is used to poll BSY bit after issuing PACKET command. Once BSY is turned off by the device, packet_task transfers CDB and hands off processing to interrupt handler.”h]”hŒóATA_PROT_ATAPI_NODATA and ATA_PROT_ATAPI_DMA are in this category. packet_task is used to poll BSY bit after issuing PACKET command. Once BSY is turned off by the device, packet_task transfers CDB and hands off processing to interrupt handler.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÈhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MËhjoh²hubj¡)�”}”(hŒØATAPI PIO ATA_PROT_ATAPI is in this category. ATA_NIEN bit is set and, as in ATAPI NODATA or DMA, packet_task submits cdb. However, after submitting cdb, further processing (data transfer) is handed off to pio_task. ”h]”(j§)�”}”(hŒ ATAPI PIO”h]”hŒ ATAPI PIO”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÑhjÿubj·)�”}”(hhh]”hì)�”}”(hŒÍATA_PROT_ATAPI is in this category. ATA_NIEN bit is set and, as in ATAPI NODATA or DMA, packet_task submits cdb. However, after submitting cdb, further processing (data transfer) is handed off to pio_task.”h]”hŒÍATA_PROT_ATAPI is in this category. ATA_NIEN bit is set and, as in ATAPI NODATA or DMA, packet_task submits cdb. However, after submitting cdb, further processing (data transfer) is handed off to pio_task.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÎhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÑhjoh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjBh²hh³hÊh´Nubeh}”(h]”Œhow-commands-are-processed”ah ]”h"]”Œhow commands are processed”ah$]”h&]”uh1hµhjh²hh³hÊh´M´ubh¶)�”}”(hhh]”(h»)�”}”(hŒHow commands are completed”h]”hŒHow commands are completed”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj<h²hh³hÊh´MÔubhì)�”}”(hX7Once issued, all qc's are either completed with :c:func:`ata_qc_complete` or time out. For commands which are handled by interrupts, :c:func:`ata_host_intr` invokes :c:func:`ata_qc_complete`, and, for PIO tasks, pio_task invokes :c:func:`ata_qc_complete`. In error cases, packet_task may also complete commands.”h]”(hŒ2Once issued, all qc’s are either completed with ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjWh]”hŒata_qc_complete()”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MÖhjMubhŒ< or time out. For commands which are handled by interrupts, ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_host_intr`”h]”j\)�”}”(hjzh]”hŒata_host_intr()”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ ata_host_intr”uh1hh³hÊh´MÖhjMubhŒ invokes ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hj�h]”hŒata_qc_complete()”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MÖhjMubhŒ', and, for PIO tasks, pio_task invokes ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjÀh]”hŒata_qc_complete()”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj¾ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MÖhjMubhŒ9. In error cases, packet_task may also complete commands.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÖhj<h²hubhì)�”}”(hŒ-:c:func:`ata_qc_complete` does the following.”h]”(h)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjíh]”hŒata_qc_complete()”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MÜhjçubhŒ does the following.”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÜhj<h²hubhŒenumerated_list”“”)�”}”(hhh]”(j )�”}”(hŒDMA memory is unmapped. ”h]”hì)�”}”(hŒDMA memory is unmapped.”h]”hŒDMA memory is unmapped.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÞhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hŒ-ATA_QCFLAG_ACTIVE is cleared from qc->flags. ”h]”hì)�”}”(hŒ,ATA_QCFLAG_ACTIVE is cleared from qc->flags.”h]”hŒ,ATA_QCFLAG_ACTIVE is cleared from qc->flags.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Màhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hŒ¥:c:expr:`qc->complete_fn` callback is invoked. If the return value of the callback is not zero. Completion is short circuited and :c:func:`ata_qc_complete` returns. ”h]”hì)�”}”(hŒ¤:c:expr:`qc->complete_fn` callback is invoked. If the return value of the callback is not zero. Completion is short circuited and :c:func:`ata_qc_complete` returns.”h]”(hŒ desc_inline”“”)�”}”(hŒqc->complete_fn”h]”(h)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jZhjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”Œ identifier”Œ reftarget”j^Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbuh1hhjSubhŒdesc_sig_operator”“”)�”}”(hŒ->”h]”hŒ->”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”Œo”ah"]”h$]”h&]”uh1jhjSubj[)�”}”(hŒ complete_fn”h]”hŒ complete_fn”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjSubeh}”(h]”h ]”(Œc-expr”Œsig”Œ sig-inline”jheh"]”h$]”h&]”uh1jQhjMubhŒi callback is invoked. If the return value of the callback is not zero. Completion is short circuited and ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hj­h]”hŒata_qc_complete()”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MâhjMubhŒ returns.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MâhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hX:c:func:`__ata_qc_complete` is called, which does 1. ``qc->flags`` is cleared to zero. 2. ``ap->active_tag`` and ``qc->tag`` are poisoned. 3. ``qc->waiting`` is cleared & completed (in that order). 4. qc is deallocated by clearing appropriate bit in ``ap->qactive``. ”h]”(hì)�”}”(hŒ1:c:func:`__ata_qc_complete` is called, which does”h]”(h)�”}”(hŒ:c:func:`__ata_qc_complete`”h]”j\)�”}”(hjäh]”hŒ__ata_qc_complete()”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjâubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ__ata_qc_complete”uh1hh³hÊh´MæhjÞubhŒ is called, which does”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MæhjÚubj)�”}”(hhh]”(j )�”}”(hŒ"``qc->flags`` is cleared to zero. ”h]”hì)�”}”(hŒ!``qc->flags`` is cleared to zero.”h]”(j\)�”}”(hŒ ``qc->flags``”h]”hŒ qc->flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubhŒ is cleared to zero.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mèhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hŒ1``ap->active_tag`` and ``qc->tag`` are poisoned. ”h]”hì)�”}”(hŒ0``ap->active_tag`` and ``qc->tag`` are poisoned.”h]”(j\)�”}”(hŒ``ap->active_tag``”h]”hŒap->active_tag”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj8ubhŒ and ”…”�”}”(hj8h²hh³Nh´Nubj\)�”}”(hŒ ``qc->tag``”h]”hŒqc->tag”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj8ubhŒ are poisoned.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mêhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hŒ8``qc->waiting`` is cleared & completed (in that order). ”h]”hì)�”}”(hŒ7``qc->waiting`` is cleared & completed (in that order).”h]”(j\)�”}”(hŒ``qc->waiting``”h]”hŒ qc->waiting”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjpubhŒ( is cleared & completed (in that order).”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mìhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubj )�”}”(hŒBqc is deallocated by clearing appropriate bit in ``ap->qactive``. ”h]”hì)�”}”(hŒAqc is deallocated by clearing appropriate bit in ``ap->qactive``.”h]”(hŒ1qc is deallocated by clearing appropriate bit in ”…”�”}”(hj–h²hh³Nh´Nubj\)�”}”(hŒ``ap->qactive``”h]”hŒ ap->qactive”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj–ubhŒ.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mîhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jÂjÃjÄhjÅjÆuh1jhj<h²hh³hÊh´MÞubhì)�”}”(hŒ‘So, it basically notifies upper layer and deallocates qc. One exception is short-circuit path in #3 which is used by :c:func:`atapi_qc_complete`.”h]”(hŒuSo, it basically notifies upper layer and deallocates qc. One exception is short-circuit path in #3 which is used by ”…”�”}”(hjÓh²hh³Nh´Nubh)�”}”(hŒ:c:func:`atapi_qc_complete`”h]”j\)�”}”(hjÝh]”hŒatapi_qc_complete()”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒatapi_qc_complete”uh1hh³hÊh´MðhjÓubhŒ.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mðhj<h²hubhì)�”}”(hŒØFor all non-ATAPI commands, whether it fails or not, almost the same code path is taken and very little error handling takes place. A qc is completed with success status if it succeeded, with failed status otherwise.”h]”hŒØFor all non-ATAPI commands, whether it fails or not, almost the same code path is taken and very little error handling takes place. A qc is completed with success status if it succeeded, with failed status otherwise.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Móhj<h²hubhì)�”}”(hXHowever, failed ATAPI commands require more handling as REQUEST SENSE is needed to acquire sense data. If an ATAPI command fails, :c:func:`ata_qc_complete` is invoked with error status, which in turn invokes :c:func:`atapi_qc_complete` via ``qc->complete_fn()`` callback.”h]”(hŒ‚However, failed ATAPI commands require more handling as REQUEST SENSE is needed to acquire sense data. If an ATAPI command fails, ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjh]”hŒata_qc_complete()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MøhjubhŒ5 is invoked with error status, which in turn invokes ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:func:`atapi_qc_complete`”h]”j\)�”}”(hj?h]”hŒatapi_qc_complete()”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒatapi_qc_complete”uh1hh³hÊh´MøhjubhŒ via ”…”�”}”(hjh²hh³Nh´Nubj\)�”}”(hŒ``qc->complete_fn()``”h]”hŒqc->complete_fn()”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubhŒ callback.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Møhj<h²hubhì)�”}”(hX…This makes :c:func:`atapi_qc_complete` set ``scmd->result`` to SAM_STAT_CHECK_CONDITION, complete the scmd and return 1. As the sense data is empty but ``scmd->result`` is CHECK CONDITION, SCSI midlayer will invoke EH for the scmd, and returning 1 makes :c:func:`ata_qc_complete` to return without deallocating the qc. This leads us to :c:func:`ata_scsi_error` with partially completed qc.”h]”(hŒ This makes ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ:c:func:`atapi_qc_complete`”h]”j\)�”}”(hj‚h]”hŒatapi_qc_complete()”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒatapi_qc_complete”uh1hh³hÊh´MýhjxubhŒ set ”…”�”}”(hjxh²hh³Nh´Nubj\)�”}”(hŒ``scmd->result``”h]”hŒ scmd->result”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjxubhŒ] to SAM_STAT_CHECK_CONDITION, complete the scmd and return 1. As the sense data is empty but ”…”�”}”(hjxh²hh³Nh´Nubj\)�”}”(hŒ``scmd->result``”h]”hŒ scmd->result”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjxubhŒV is CHECK CONDITION, SCSI midlayer will invoke EH for the scmd, and returning 1 makes ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjÉh]”hŒata_qc_complete()”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´MýhjxubhŒ9 to return without deallocating the qc. This leads us to ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_scsi_error`”h]”j\)�”}”(hjìh]”hŒata_scsi_error()”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjêubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_error”uh1hh³hÊh´MýhjxubhŒ with partially completed qc.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mýhj<h²hubeh}”(h]”Œhow-commands-are-completed”ah ]”h"]”Œhow commands are completed”ah$]”h&]”uh1hµhjh²hh³hÊh´MÔubh¶)�”}”(hhh]”(h»)�”}”(hŒ:c:func:`ata_scsi_error`”h]”h)�”}”(hj h]”j\)�”}”(hj h]”hŒata_scsi_error()”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_error”uh1hh³hÊh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mubhì)�”}”(hXš:c:func:`ata_scsi_error` is the current ``transportt->eh_strategy_handler()`` for libata. As discussed above, this will be entered in two cases - timeout and ATAPI error completion. This function will check if a qc is active and has not failed yet. Such a qc will be marked with AC_ERR_TIMEOUT such that EH will know to handle it later. Then it calls low level libata driver's :c:func:`error_handler` callback.”h]”(h)�”}”(hŒ:c:func:`ata_scsi_error`”h]”j\)�”}”(hjLh]”hŒata_scsi_error()”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_error”uh1hh³hÊh´MhjFubhŒ is the current ”…”�”}”(hjFh²hh³Nh´Nubj\)�”}”(hŒ%``transportt->eh_strategy_handler()``”h]”hŒ!transportt->eh_strategy_handler()”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjFubhX. for libata. As discussed above, this will be entered in two cases - timeout and ATAPI error completion. This function will check if a qc is active and has not failed yet. Such a qc will be marked with AC_ERR_TIMEOUT such that EH will know to handle it later. Then it calls low level libata driver’s ”…”�”}”(hjFh²hh³Nh´Nubh)�”}”(hŒ:c:func:`error_handler`”h]”j\)�”}”(hj�h]”hŒerror_handler()”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ error_handler”uh1hh³hÊh´MhjFubhŒ callback.”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjh²hubhì)�”}”(hXšWhen the :c:func:`error_handler` callback is invoked it stops BMDMA and completes the qc. Note that as we're currently in EH, we cannot call scsi_done. As described in SCSI EH doc, a recovered scmd should be either retried with :c:func:`scsi_queue_insert` or finished with :c:func:`scsi_finish_command`. Here, we override ``qc->scsidone`` with :c:func:`scsi_finish_command` and calls :c:func:`ata_qc_complete`.”h]”(hŒ When the ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:func:`error_handler`”h]”j\)�”}”(hj²h]”hŒerror_handler()”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ error_handler”uh1hh³hÊh´Mhj¨ubhŒÆ callback is invoked it stops BMDMA and completes the qc. Note that as we’re currently in EH, we cannot call scsi_done. As described in SCSI EH doc, a recovered scmd should be either retried with ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:func:`scsi_queue_insert`”h]”j\)�”}”(hjÕh]”hŒscsi_queue_insert()”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒscsi_queue_insert”uh1hh³hÊh´Mhj¨ubhŒ or finished with ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:func:`scsi_finish_command`”h]”j\)�”}”(hjøh]”hŒscsi_finish_command()”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjöubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒscsi_finish_command”uh1hh³hÊh´Mhj¨ubhŒ. Here, we override ”…”�”}”(hj¨h²hh³Nh´Nubj\)�”}”(hŒ``qc->scsidone``”h]”hŒ qc->scsidone”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¨ubhŒ with ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:func:`scsi_finish_command`”h]”j\)�”}”(hj-h]”hŒscsi_finish_command()”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒscsi_finish_command”uh1hh³hÊh´Mhj¨ubhŒ and calls ”…”�”}”(hj¨h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjPh]”hŒata_qc_complete()”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´Mhj¨ubhŒ.”…”�”}”(hj¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjh²hubhì)�”}”(hŒäIf EH is invoked due to a failed ATAPI qc, the qc here is completed but not deallocated. The purpose of this half-completion is to use the qc as place holder to make EH code reach this place. This is a bit hackish, but it works.”h]”hŒäIf EH is invoked due to a failed ATAPI qc, the qc here is completed but not deallocated. The purpose of this half-completion is to use the qc as place holder to make EH code reach this place. This is a bit hackish, but it works.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjh²hubhì)�”}”(hX¡Once control reaches here, the qc is deallocated by invoking :c:func:`__ata_qc_complete` explicitly. Then, internal qc for REQUEST SENSE is issued. Once sense data is acquired, scmd is finished by directly invoking :c:func:`scsi_finish_command` on the scmd. Note that as we already have completed and deallocated the qc which was associated with the scmd, we don't need to/cannot call :c:func:`ata_qc_complete` again.”h]”(hŒ=Once control reaches here, the qc is deallocated by invoking ”…”�”}”(hj…h²hh³Nh´Nubh)�”}”(hŒ:c:func:`__ata_qc_complete`”h]”j\)�”}”(hj�h]”hŒ__ata_qc_complete()”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒ__ata_qc_complete”uh1hh³hÊh´Mhj…ubhŒ explicitly. Then, internal qc for REQUEST SENSE is issued. Once sense data is acquired, scmd is finished by directly invoking ”…”�”}”(hj…h²hh³Nh´Nubh)�”}”(hŒ:c:func:`scsi_finish_command`”h]”j\)�”}”(hj²h]”hŒscsi_finish_command()”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒscsi_finish_command”uh1hh³hÊh´Mhj…ubhŒ� on the scmd. Note that as we already have completed and deallocated the qc which was associated with the scmd, we don’t need to/cannot call ”…”�”}”(hj…h²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_qc_complete`”h]”j\)�”}”(hjÕh]”hŒata_qc_complete()”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_qc_complete”uh1hh³hÊh´Mhj…ubhŒ again.”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjh²hubeh}”(h]”Œata-scsi-error”ah ]”h"]”Œata_scsi_error()”ah$]”h&]”uh1hµhjh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒProblems with the current EH”h]”hŒProblems with the current EH”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M"ubjþ )�”}”(hhh]”(j )�”}”(hX>Error representation is too crude. Currently any and all error conditions are represented with ATA STATUS and ERROR registers. Errors which aren't ATA device errors are treated as ATA device errors by setting ATA_ERR bit. Better error descriptor which can properly represent ATA and other errors/exceptions is needed. ”h]”hì)�”}”(hX=Error representation is too crude. Currently any and all error conditions are represented with ATA STATUS and ERROR registers. Errors which aren't ATA device errors are treated as ATA device errors by setting ATA_ERR bit. Better error descriptor which can properly represent ATA and other errors/exceptions is needed.”h]”hX?Error representation is too crude. Currently any and all error conditions are represented with ATA STATUS and ERROR registers. Errors which aren’t ATA device errors are treated as ATA device errors by setting ATA_ERR bit. Better error descriptor which can properly represent ATA and other errors/exceptions is needed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M$hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hŒyWhen handling timeouts, no action is taken to make device forget about the timed out command and ready for new commands. ”h]”hì)�”}”(hŒxWhen handling timeouts, no action is taken to make device forget about the timed out command and ready for new commands.”h]”hŒxWhen handling timeouts, no action is taken to make device forget about the timed out command and ready for new commands.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M*hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hŒ÷EH handling via :c:func:`ata_scsi_error` is not properly protected from usual command processing. On EH entrance, the device is not in quiescent state. Timed out commands may succeed or fail any time. pio_task and atapi_task may still be running. ”h]”hì)�”}”(hŒöEH handling via :c:func:`ata_scsi_error` is not properly protected from usual command processing. On EH entrance, the device is not in quiescent state. Timed out commands may succeed or fail any time. pio_task and atapi_task may still be running.”h]”(hŒEH handling via ”…”�”}”(hjLh²hh³Nh´Nubh)�”}”(hŒ:c:func:`ata_scsi_error`”h]”j\)�”}”(hjVh]”hŒata_scsi_error()”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”(jgjhŒc-func”eh"]”h$]”h&]”uh1j[hjTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jtŒ refdomain”jhŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jzŒata_scsi_error”uh1hh³hÊh´M-hjLubhŒÎ is not properly protected from usual command processing. On EH entrance, the device is not in quiescent state. Timed out commands may succeed or fail any time. pio_task and atapi_task may still be running.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M-hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hŒåToo weak error recovery. Devices / controllers causing HSM mismatch errors and other errors quite often require reset to return to known state. Also, advanced error handling is necessary to support features like NCQ and hotplug. ”h]”hì)�”}”(hŒäToo weak error recovery. Devices / controllers causing HSM mismatch errors and other errors quite often require reset to return to known state. Also, advanced error handling is necessary to support features like NCQ and hotplug.”h]”hŒäToo weak error recovery. Devices / controllers causing HSM mismatch errors and other errors quite often require reset to return to known state. Also, advanced error handling is necessary to support features like NCQ and hotplug.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M2hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubj )�”}”(hXóATA errors are directly handled in the interrupt handler and PIO errors in pio_task. This is problematic for advanced error handling for the following reasons. First, advanced error handling often requires context and internal qc execution. Second, even a simple failure (say, CRC error) needs information gathering and could trigger complex error handling (say, resetting & reconfiguring). Having multiple code paths to gather information, enter EH and trigger actions makes life painful. Third, scattered EH code makes implementing low level drivers difficult. Low level drivers override libata callbacks. If EH is scattered over several places, each affected callbacks should perform its part of error handling. This can be error prone and painful. ”h]”(hì)�”}”(hŒŸATA errors are directly handled in the interrupt handler and PIO errors in pio_task. This is problematic for advanced error handling for the following reasons.”h]”hŒŸATA errors are directly handled in the interrupt handler and PIO errors in pio_task. This is problematic for advanced error handling for the following reasons.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M7hj›ubhì)�”}”(hŒPFirst, advanced error handling often requires context and internal qc execution.”h]”hŒPFirst, advanced error handling often requires context and internal qc execution.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M;hj›ubhì)�”}”(hŒøSecond, even a simple failure (say, CRC error) needs information gathering and could trigger complex error handling (say, resetting & reconfiguring). Having multiple code paths to gather information, enter EH and trigger actions makes life painful.”h]”hŒøSecond, even a simple failure (say, CRC error) needs information gathering and could trigger complex error handling (say, resetting & reconfiguring). Having multiple code paths to gather information, enter EH and trigger actions makes life painful.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M>hj›ubhì)�”}”(hXThird, scattered EH code makes implementing low level drivers difficult. Low level drivers override libata callbacks. If EH is scattered over several places, each affected callbacks should perform its part of error handling. This can be error prone and painful.”h]”hXThird, scattered EH code makes implementing low level drivers difficult. Low level drivers override libata callbacks. If EH is scattered over several places, each affected callbacks should perform its part of error handling. This can be error prone and painful.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MChj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jR Œ-”uh1jý h³hÊh´M$hjh²hubeh}”(h]”Œproblems-with-the-current-eh”ah ]”h"]”Œproblems with the current eh”ah$]”h&]”uh1hµhjh²hh³hÊh´M"ubeh}”(h]”Œerror-handling”ah ]”h"]”Œerror handling”ah$]”h&]”uh1hµhh·h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒlibata Library”h]”hŒlibata Library”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjôh²hh³hÊh´MIubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œata_link_next (C function)”Œc.ata_link_next”hNt”auh1jhjôh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒjstruct ata_link * ata_link_next (struct ata_link *link, struct ata_port *ap, enum ata_link_iter_mode mode)”h]”hŒdesc_signature_line”“”)�”}”(hŒhstruct ata_link *ata_link_next(struct ata_link *link, struct ata_port *ap, enum ata_link_iter_mode mode)”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j'hj#h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K¦ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j9hj#h²hh³j8h´K¦ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jOŒmodname”NŒ classname”Njwjz)�”}”j}]”jxŒ ASTIdentifier”“”)�”}”jsŒ ata_link_next”sbŒc.ata_link_next”†”asbuh1hhj#h²hh³j8h´K¦ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#h²hh³j8h´K¦ubhŒdesc_sig_punctuation”“”)�”}”(hjS h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j~hj#h²hh³j8h´K¦ubhŒ desc_name”“”)�”}”(hŒ ata_link_next”h]”j[)�”}”(hjmh]”hŒ ata_link_next”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”jjuh1jŽhj#h²hh³j8h´K¦ubhŒdesc_parameterlist”“”)�”}”(hŒJ(struct ata_link *link, struct ata_port *ap, enum ata_link_iter_mode mode)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj±ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÕŒmodname”NŒ classname”Njwjz)�”}”j}]”jkŒc.ata_link_next”†”asbuh1hhj±ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj±ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj±ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj«ubj°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jEŒmodname”NŒ classname”Njwjz)�”}”j}]”jkŒc.ata_link_next”†”asbuh1hhj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj!ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj«ubj°)�”}”(hŒenum ata_link_iter_mode mode”h]”(j()�”}”(hŒenum”h]”hŒenum”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubh)�”}”(hhh]”j[)�”}”(hŒata_link_iter_mode”h]”hŒata_link_iter_mode”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¶Œmodname”NŒ classname”Njwjz)�”}”j}]”jkŒc.ata_link_next”†”asbuh1hhj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubj[)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj«ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj#h²hh³j8h´K¦ubeh}”(h]”h ]”h"]”h$]”h&]”jjŒ add_permalink”ˆuh1j!Œsphinx_line_type”Œ declarator”hjh²hh³j8h´K¦ubah}”(h]”jah ]”(j¢Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j8h´K¦hjh²hubhŒ desc_content”“”)�”}”(hhh]”hì)�”}”(hŒlink iteration helper”h]”hŒlink iteration helper”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K¦hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³j8h´K¦ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”Œdomain”jhŒobjtype”j+Œdesctype”j+Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhjôh³Nh´NubhŒ container”“”)�”}”(hX8**Parameters** ``struct ata_link *link`` the previous link, NULL to start ``struct ata_port *ap`` ATA port containing links to iterate ``enum ata_link_iter_mode mode`` iteration mode, one of ATA_LITER_* **Description** LOCKING: Host lock or EH context. **Return** Pointer to the next link.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj=h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kªhj7ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ;``struct ata_link *link`` the previous link, NULL to start ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj\h]”hŒstruct ata_link *link”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K§hjVubj·)�”}”(hhh]”hì)�”}”(hŒ the previous link, NULL to start”h]”hŒ the previous link, NULL to start”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jqh´K§hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jqh´K§hjSubj¡)�”}”(hŒ=``struct ata_port *ap`` ATA port containing links to iterate ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj•h]”hŒstruct ata_port *ap”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K¨hj�ubj·)�”}”(hhh]”hì)�”}”(hŒ$ATA port containing links to iterate”h]”hŒ$ATA port containing links to iterate”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jªh´K¨hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jªh´K¨hjSubj¡)�”}”(hŒD``enum ata_link_iter_mode mode`` iteration mode, one of ATA_LITER_* ”h]”(j§)�”}”(hŒ ``enum ata_link_iter_mode mode``”h]”j\)�”}”(hjÎh]”hŒenum ata_link_iter_mode mode”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K©hjÈubj·)�”}”(hhh]”hì)�”}”(hŒ"iteration mode, one of ATA_LITER_*”h]”hŒ"iteration mode, one of ATA_LITER_*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jãh´K©hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jãh´K©hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj7ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K«hj7ubj)�”}”(hŒ"LOCKING: Host lock or EH context. ”h]”hì)�”}”(hŒ!LOCKING: Host lock or EH context.”h]”hŒ!LOCKING: Host lock or EH context.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kªhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j1h´Kªhj7ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj:h]”hŒReturn”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K­hj7ubhì)�”}”(hŒPointer to the next link.”h]”hŒPointer to the next link.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´K®hj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_next (C function)”Œc.ata_dev_next”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmstruct ata_device * ata_dev_next (struct ata_device *dev, struct ata_link *link, enum ata_dev_iter_mode mode)”h]”j")�”}”(hŒkstruct ata_device *ata_dev_next(struct ata_device *dev, struct ata_link *link, enum ata_dev_iter_mode mode)”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{h²hh³jŒh´Kâubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒ ata_dev_next”sbŒc.ata_dev_next”†”asbuh1hhj{h²hh³jŒh´Kâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{h²hh³jŒh´Kâubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj{h²hh³jŒh´Kâubj�)�”}”(hŒ ata_dev_next”h]”j[)�”}”(hj¼h]”hŒ ata_dev_next”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj{h²hh³jŒh´Kâubjª)�”}”(hŒL(struct ata_device *dev, struct ata_link *link, enum ata_dev_iter_mode mode)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”jºŒc.ata_dev_next”†”asbuh1hhjõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõubj)�”}”(hjS h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjõubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjñubj°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‰Œmodname”NŒ classname”Njwjz)�”}”j}]”jºŒc.ata_dev_next”†”asbuh1hhjeubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeubj)�”}”(hjS h]”hŒ*”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjeubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjñubj°)�”}”(hŒenum ata_dev_iter_mode mode”h]”(j()�”}”(hj—h]”hŒenum”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÕubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕubh)�”}”(hhh]”j[)�”}”(hŒata_dev_iter_mode”h]”hŒata_dev_iter_mode”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jùŒmodname”NŒ classname”Njwjz)�”}”j}]”jºŒc.ata_dev_next”†”asbuh1hhjÕubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕubj[)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj{h²hh³jŒh´Kâubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjwh²hh³jŒh´Kâubah}”(h]”jrah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jŒh´Kâhjth²hubj)�”}”(hhh]”hì)�”}”(hŒdevice iteration helper”h]”hŒdevice iteration helper”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´KâhjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjth²hh³jŒh´Kâubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jej1jej2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX@**Parameters** ``struct ata_device *dev`` the previous device, NULL to start ``struct ata_link *link`` ATA link containing devices to iterate ``enum ata_dev_iter_mode mode`` iteration mode, one of ATA_DITER_* **Description** LOCKING: Host lock or EH context. **Return** Pointer to the next device.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kæhjiubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_device *dev`` the previous device, NULL to start ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjŽh]”hŒstruct ata_device *dev”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kãhjˆubj·)�”}”(hhh]”hì)�”}”(hŒ"the previous device, NULL to start”h]”hŒ"the previous device, NULL to start”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j£h´Kãhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j£h´Kãhj…ubj¡)�”}”(hŒA``struct ata_link *link`` ATA link containing devices to iterate ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjÇh]”hŒstruct ata_link *link”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´KähjÁubj·)�”}”(hhh]”hì)�”}”(hŒ&ATA link containing devices to iterate”h]”hŒ&ATA link containing devices to iterate”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÜh´KähjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÜh´Kähj…ubj¡)�”}”(hŒC``enum ata_dev_iter_mode mode`` iteration mode, one of ATA_DITER_* ”h]”(j§)�”}”(hŒ``enum ata_dev_iter_mode mode``”h]”j\)�”}”(hjh]”hŒenum ata_dev_iter_mode mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kåhjúubj·)�”}”(hhh]”hì)�”}”(hŒ"iteration mode, one of ATA_DITER_*”h]”hŒ"iteration mode, one of ATA_DITER_*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Kåhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´Kåhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjiubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj;h]”hŒ Description”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kçhjiubj)�”}”(hŒ"LOCKING: Host lock or EH context. ”h]”hì)�”}”(hŒ!LOCKING: Host lock or EH context.”h]”hŒ!LOCKING: Host lock or EH context.”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´KæhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jch´Kæhjiubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjlh]”hŒReturn”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kéhjiubhì)�”}”(hŒPointer to the next device.”h]”hŒPointer to the next device.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Kêhjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒatapi_cmd_type (C function)”Œc.atapi_cmd_type”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint atapi_cmd_type (u8 opcode)”h]”j")�”}”(hŒint atapi_cmd_type(u8 opcode)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j±hj­h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­h²hh³jÂh´Mubj�)�”}”(hŒatapi_cmd_type”h]”j[)�”}”(hŒatapi_cmd_type”h]”hŒatapi_cmd_type”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÑubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj­h²hh³jÂh´Mubjª)�”}”(hŒ (u8 opcode)”h]”j°)�”}”(hŒ u8 opcode”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jöŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj×sbŒc.atapi_cmd_type”†”asbuh1hhjíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíubj[)�”}”(hŒopcode”h]”hŒopcode”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjéubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj­h²hh³jÂh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj©h²hh³jÂh´Mubah}”(h]”j¤ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÂh´Mhj¦h²hubj)�”}”(hhh]”hì)�”}”(hŒ-Determine ATAPI command type from SCSI opcode”h]”hŒ-Determine ATAPI command type from SCSI opcode”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦h²hh³jÂh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jdj1jdj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒÁ**Parameters** ``u8 opcode`` SCSI opcode **Description** Determine ATAPI command type from **opcode**. LOCKING: None. **Return** ATAPI_{READ|WRITE|READ_CD|PASS_THRU|MISC}”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjhubjœ)�”}”(hhh]”j¡)�”}”(hŒ``u8 opcode`` SCSI opcode ”h]”(j§)�”}”(hŒ ``u8 opcode``”h]”j\)�”}”(hj�h]”hŒ u8 opcode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj‡ubj·)�”}”(hhh]”hì)�”}”(hŒ SCSI opcode”h]”hŒ SCSI opcode”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¢h´Mhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¢h´Mhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjhubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÈh]”hŒ Description”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhjhubj)�”}”(hŒ>Determine ATAPI command type from **opcode**. LOCKING: None. ”h]”(hì)�”}”(hŒ-Determine ATAPI command type from **opcode**.”h]”(hŒ"Determine ATAPI command type from ”…”�”}”(hjâh²hh³Nh´Nubj )�”}”(hŒ **opcode**”h]”hŒopcode”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjâubhŒ.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjÞubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´Mhjhubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M#hjhubhì)�”}”(hŒ)ATAPI_{READ|WRITE|READ_CD|PASS_THRU|MISC}”h]”hŒ)ATAPI_{READ|WRITE|READ_CD|PASS_THRU|MISC}”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M$hjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_pack_xfermask (C function)”Œc.ata_pack_xfermask”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒgunsigned int ata_pack_xfermask (unsigned int pio_mask, unsigned int mwdma_mask, unsigned int udma_mask)”h]”j")�”}”(hŒfunsigned int ata_pack_xfermask(unsigned int pio_mask, unsigned int mwdma_mask, unsigned int udma_mask)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj[ h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[ h²hh³jm h´MZubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj[ h²hh³jm h´MZubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[ h²hh³jm h´MZubj�)�”}”(hŒata_pack_xfermask”h]”j[)�”}”(hŒata_pack_xfermask”h]”hŒata_pack_xfermask”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj˜ ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj[ h²hh³jm h´MZubjª)�”}”(hŒH(unsigned int pio_mask, unsigned int mwdma_mask, unsigned int udma_mask)”h]”(j°)�”}”(hŒunsigned int pio_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj´ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj´ ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj´ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj´ ubj[)�”}”(hŒpio_mask”h]”hŒpio_mask”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj´ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj° ubj°)�”}”(hŒunsigned int mwdma_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj%!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubj[)�”}”(hŒ mwdma_mask”h]”hŒ mwdma_mask”…”�”}”(hjA!h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj° ubj°)�”}”(hŒunsigned int udma_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjV!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV!ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjV!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV!ubj[)�”}”(hŒ udma_mask”h]”hŒ udma_mask”…”�”}”(hj’!h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjV!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj° ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj[ h²hh³jm h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjW h²hh³jm h´MZubah}”(h]”jR ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jm h´MZhjT h²hubj)�”}”(hhh]”hì)�”}”(hŒ-Pack pio, mwdma and udma masks into xfer_mask”h]”hŒ-Pack pio, mwdma and udma masks into xfer_mask”…”�”}”(hj¼!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MZhj¹!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT h²hh³jm h´MZubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÔ!j1jÔ!j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX5**Parameters** ``unsigned int pio_mask`` pio_mask ``unsigned int mwdma_mask`` mwdma_mask ``unsigned int udma_mask`` udma_mask **Description** Pack **pio_mask**, **mwdma_mask** and **udma_mask** into a single unsigned int xfer_mask. LOCKING: None. **Return** Packed xfer_mask.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÞ!h]”hŒ Parameters”…”�”}”(hjà!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M^hjØ!ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ#``unsigned int pio_mask`` pio_mask ”h]”(j§)�”}”(hŒ``unsigned int pio_mask``”h]”j\)�”}”(hjý!h]”hŒunsigned int pio_mask”…”�”}”(hjÿ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjû!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M[hj÷!ubj·)�”}”(hhh]”hì)�”}”(hŒpio_mask”h]”hŒpio_mask”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"h´M[hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj÷!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j"h´M[hjô!ubj¡)�”}”(hŒ'``unsigned int mwdma_mask`` mwdma_mask ”h]”(j§)�”}”(hŒ``unsigned int mwdma_mask``”h]”j\)�”}”(hj6"h]”hŒunsigned int mwdma_mask”…”�”}”(hj8"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj4"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M\hj0"ubj·)�”}”(hhh]”hì)�”}”(hŒ mwdma_mask”h]”hŒ mwdma_mask”…”�”}”(hjO"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK"h´M\hjL"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj0"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jK"h´M\hjô!ubj¡)�”}”(hŒ%``unsigned int udma_mask`` udma_mask ”h]”(j§)�”}”(hŒ``unsigned int udma_mask``”h]”j\)�”}”(hjo"h]”hŒunsigned int udma_mask”…”�”}”(hjq"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjm"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M]hji"ubj·)�”}”(hhh]”hì)�”}”(hŒ udma_mask”h]”hŒ udma_mask”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„"h´M]hj…"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hji"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j„"h´M]hjô!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjØ!ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjª"h]”hŒ Description”…”�”}”(hj¬"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M_hjØ!ubj)�”}”(hŒjPack **pio_mask**, **mwdma_mask** and **udma_mask** into a single unsigned int xfer_mask. LOCKING: None. ”h]”(hì)�”}”(hŒYPack **pio_mask**, **mwdma_mask** and **udma_mask** into a single unsigned int xfer_mask.”h]”(hŒPack ”…”�”}”(hjÄ"h²hh³Nh´Nubj )�”}”(hŒ **pio_mask**”h]”hŒpio_mask”…”�”}”(hjÌ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ"ubhŒ, ”…”�”}”(hjÄ"h²hh³Nh´Nubj )�”}”(hŒ**mwdma_mask**”h]”hŒ mwdma_mask”…”�”}”(hjÞ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ"ubhŒ and ”…”�”}”(hjÄ"h²hh³Nh´Nubj )�”}”(hŒ **udma_mask**”h]”hŒ udma_mask”…”�”}”(hjð"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ"ubhŒ& into a single unsigned int xfer_mask.”…”�”}”(hjÄ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M^hjÀ"ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MahjÀ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#h´M^hjØ!ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj #h]”hŒReturn”…”�”}”(hj"#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MdhjØ!ubhì)�”}”(hŒPacked xfer_mask.”h]”hŒPacked xfer_mask.”…”�”}”(hj6#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MehjØ!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_xfer_mask2mode (C function)”Œc.ata_xfer_mask2mode”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.u8 ata_xfer_mask2mode (unsigned int xfer_mask)”h]”j")�”}”(hŒ-u8 ata_xfer_mask2mode(unsigned int xfer_mask)”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjh#h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhje#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jj#Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_xfer_mask2mode”sbŒc.ata_xfer_mask2mode”†”asbuh1hhja#h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hja#h²hh³j‰#h´M’ubj�)�”}”(hŒata_xfer_mask2mode”h]”j[)�”}”(hj†#h]”hŒata_xfer_mask2mode”…”�”}”(hjœ#h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj˜#ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhja#h²hh³j‰#h´M’ubjª)�”}”(hŒ(unsigned int xfer_mask)”h]”j°)�”}”(hŒunsigned int xfer_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj·#h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj³#ubj:•)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³#ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓ#h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj³#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá#h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³#ubj[)�”}”(hŒ xfer_mask”h]”hŒ xfer_mask”…”�”}”(hjï#h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj³#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¯#ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hja#h²hh³j‰#h´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj]#h²hh³j‰#h´M’ubah}”(h]”jX#ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j‰#h´M’hjZ#h²hubj)�”}”(hhh]”hì)�”}”(hŒ,Find matching XFER_* for the given xfer_mask”h]”hŒ,Find matching XFER_* for the given xfer_mask”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M’hj$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ#h²hh³j‰#h´M’ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j1$j1j1$j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX**Parameters** ``unsigned int xfer_mask`` xfer_mask of interest **Description** Return matching XFER_* value for **xfer_mask**. Only the highest bit of **xfer_mask** is considered. LOCKING: None. **Return** Matching XFER_* value, 0xff if no match found.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj;$h]”hŒ Parameters”…”�”}”(hj=$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M–hj5$ubjœ)�”}”(hhh]”j¡)�”}”(hŒ1``unsigned int xfer_mask`` xfer_mask of interest ”h]”(j§)�”}”(hŒ``unsigned int xfer_mask``”h]”j\)�”}”(hjZ$h]”hŒunsigned int xfer_mask”…”�”}”(hj\$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjX$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M“hjT$ubj·)�”}”(hhh]”hì)�”}”(hŒxfer_mask of interest”h]”hŒxfer_mask of interest”…”�”}”(hjs$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jo$h´M“hjp$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjT$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jo$h´M“hjQ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj5$ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj•$h]”hŒ Description”…”�”}”(hj—$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M•hj5$ubj)�”}”(hŒvReturn matching XFER_* value for **xfer_mask**. Only the highest bit of **xfer_mask** is considered. LOCKING: None. ”h]”(hì)�”}”(hŒeReturn matching XFER_* value for **xfer_mask**. Only the highest bit of **xfer_mask** is considered.”h]”(hŒ!Return matching XFER_* value for ”…”�”}”(hj¯$h²hh³Nh´Nubj )�”}”(hŒ **xfer_mask**”h]”hŒ xfer_mask”…”�”}”(hj·$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¯$ubhŒ. Only the highest bit of ”…”�”}”(hj¯$h²hh³Nh´Nubj )�”}”(hŒ **xfer_mask**”h]”hŒ xfer_mask”…”�”}”(hjÉ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¯$ubhŒ is considered.”…”�”}”(hj¯$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M”hj«$ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjâ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M—hj«$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³já$h´M”hj5$ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjù$h]”hŒReturn”…”�”}”(hjû$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mšhj5$ubhì)�”}”(hŒ.Matching XFER_* value, 0xff if no match found.”h]”hŒ.Matching XFER_* value, 0xff if no match found.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M›hj5$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_xfer_mode2mask (C function)”Œc.ata_xfer_mode2mask”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.unsigned int ata_xfer_mode2mask (u8 xfer_mode)”h]”j")�”}”(hŒ-unsigned int ata_xfer_mode2mask(u8 xfer_mode)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj>%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj:%h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:%h²hh³jL%h´M«ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj[%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj:%h²hh³jL%h´M«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:%h²hh³jL%h´M«ubj�)�”}”(hŒata_xfer_mode2mask”h]”j[)�”}”(hŒata_xfer_mode2mask”h]”hŒata_xfer_mode2mask”…”�”}”(hj{%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjw%ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj:%h²hh³jL%h´M«ubjª)�”}”(hŒ(u8 xfer_mode)”h]”j°)�”}”(hŒ u8 xfer_mode”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjš%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj—%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jœ%Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj}%sbŒc.ata_xfer_mode2mask”†”asbuh1hhj“%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“%ubj[)�”}”(hŒ xfer_mode”h]”hŒ xfer_mode”…”�”}”(hjÈ%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj“%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj�%ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj:%h²hh³jL%h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj6%h²hh³jL%h´M«ubah}”(h]”j1%ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jL%h´M«hj3%h²hubj)�”}”(hhh]”hì)�”}”(hŒ"Find matching xfer_mask for XFER_*”h]”hŒ"Find matching xfer_mask for XFER_*”…”�”}”(hjò%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M«hjï%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3%h²hh³jL%h´M«ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j &j1j &j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒÉ**Parameters** ``u8 xfer_mode`` XFER_* of interest **Description** Return matching xfer_mask for **xfer_mode**. LOCKING: None. **Return** Matching xfer_mask, 0 if no match found.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj&h]”hŒ Parameters”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¯hj&ubjœ)�”}”(hhh]”j¡)�”}”(hŒ$``u8 xfer_mode`` XFER_* of interest ”h]”(j§)�”}”(hŒ``u8 xfer_mode``”h]”j\)�”}”(hj3&h]”hŒ u8 xfer_mode”…”�”}”(hj5&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj1&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¬hj-&ubj·)�”}”(hhh]”hì)�”}”(hŒXFER_* of interest”h]”hŒXFER_* of interest”…”�”}”(hjL&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jH&h´M¬hjI&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj-&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jH&h´M¬hj*&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj&ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjn&h]”hŒ Description”…”�”}”(hjp&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M®hj&ubj)�”}”(hŒ=Return matching xfer_mask for **xfer_mode**. LOCKING: None. ”h]”(hì)�”}”(hŒ,Return matching xfer_mask for **xfer_mode**.”h]”(hŒReturn matching xfer_mask for ”…”�”}”(hjˆ&h²hh³Nh´Nubj )�”}”(hŒ **xfer_mode**”h]”hŒ xfer_mode”…”�”}”(hj�&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjˆ&ubhŒ.”…”�”}”(hjˆ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M­hj„&ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¯hj„&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¨&h´M­hj&ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÀ&h]”hŒReturn”…”�”}”(hjÂ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M²hj&ubhì)�”}”(hŒ(Matching xfer_mask, 0 if no match found.”h]”hŒ(Matching xfer_mask, 0 if no match found.”…”�”}”(hjÖ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M³hj&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_xfer_mode2shift (C function)”Œc.ata_xfer_mode2shift”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ&int ata_xfer_mode2shift (u8 xfer_mode)”h]”j")�”}”(hŒ%int ata_xfer_mode2shift(u8 xfer_mode)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj'h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'h²hh³j'h´MÃubj�)�”}”(hŒata_xfer_mode2shift”h]”j[)�”}”(hŒata_xfer_mode2shift”h]”hŒata_xfer_mode2shift”…”�”}”(hj&'h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"'ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj'h²hh³j'h´MÃubjª)�”}”(hŒ(u8 xfer_mode)”h]”j°)�”}”(hŒ u8 xfer_mode”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjE'h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjB'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jG'Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj('sbŒc.ata_xfer_mode2shift”†”asbuh1hhj>'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>'ubj[)�”}”(hŒ xfer_mode”h]”hŒ xfer_mode”…”�”}”(hjs'h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj>'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj:'ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj'h²hh³j'h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjý&h²hh³j'h´MÃubah}”(h]”jø&ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j'h´MÃhjú&h²hubj)�”}”(hhh]”hì)�”}”(hŒ#Find matching xfer_shift for XFER_*”h]”hŒ#Find matching xfer_shift for XFER_*”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÃhjš'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú&h²hh³j'h´MÃubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jµ'j1jµ'j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒÌ**Parameters** ``u8 xfer_mode`` XFER_* of interest **Description** Return matching xfer_shift for **xfer_mode**. LOCKING: None. **Return** Matching xfer_shift, -1 if no match found.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¿'h]”hŒ Parameters”…”�”}”(hjÁ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÇhj¹'ubjœ)�”}”(hhh]”j¡)�”}”(hŒ$``u8 xfer_mode`` XFER_* of interest ”h]”(j§)�”}”(hŒ``u8 xfer_mode``”h]”j\)�”}”(hjÞ'h]”hŒ u8 xfer_mode”…”�”}”(hjà'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÜ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÄhjØ'ubj·)�”}”(hhh]”hì)�”}”(hŒXFER_* of interest”h]”hŒXFER_* of interest”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jó'h´MÄhjô'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjØ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jó'h´MÄhjÕ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¹'ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj(h]”hŒ Description”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÆhj¹'ubj)�”}”(hŒ>Return matching xfer_shift for **xfer_mode**. LOCKING: None. ”h]”(hì)�”}”(hŒ-Return matching xfer_shift for **xfer_mode**.”h]”(hŒReturn matching xfer_shift for ”…”�”}”(hj3(h²hh³Nh´Nubj )�”}”(hŒ **xfer_mode**”h]”hŒ xfer_mode”…”�”}”(hj;(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3(ubhŒ.”…”�”}”(hj3(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÅhj/(ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjT(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÇhj/(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jS(h´MÅhj¹'ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjk(h]”hŒReturn”…”�”}”(hjm(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hji(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÊhj¹'ubhì)�”}”(hŒ*Matching xfer_shift, -1 if no match found.”h]”hŒ*Matching xfer_shift, -1 if no match found.”…”�”}”(hj�(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MËhj¹'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_mode_string (C function)”Œc.ata_mode_string”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5const char * ata_mode_string (unsigned int xfer_mask)”h]”j")�”}”(hŒ3const char *ata_mode_string(unsigned int xfer_mask)”h]”(j()�”}”(hŒconst”h]”hŒconst”…”�”}”(hj°(h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¬(h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬(h²hh³j¾(h´MÚubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÍ(h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¬(h²hh³j¾(h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ(h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬(h²hh³j¾(h´MÚubj)�”}”(hjS h]”hŒ*”…”�”}”(hjé(h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¬(h²hh³j¾(h´MÚubj�)�”}”(hŒata_mode_string”h]”j[)�”}”(hŒata_mode_string”h]”hŒata_mode_string”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjö(ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¬(h²hh³j¾(h´MÚubjª)�”}”(hŒ(unsigned int xfer_mask)”h]”j°)�”}”(hŒunsigned int xfer_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj2)h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj)ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)ubj[)�”}”(hŒ xfer_mask”h]”hŒ xfer_mask”…”�”}”(hjN)h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj)ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¬(h²hh³j¾(h´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¨(h²hh³j¾(h´MÚubah}”(h]”j£(ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¾(h´MÚhj¥(h²hubj)�”}”(hhh]”hì)�”}”(hŒconvert xfer_mask to string”h]”hŒconvert xfer_mask to string”…”�”}”(hjx)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÚhju)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥(h²hh³j¾(h´MÚubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j�)j1j�)j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX[**Parameters** ``unsigned int xfer_mask`` mask of bits supported; only highest bit counts. **Description** Determine string which represents the highest speed (highest bit in **modemask**). LOCKING: None. **Return** Constant C string representing highest speed listed in **mode_mask**, or the constant C string "".”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjš)h]”hŒ Parameters”…”�”}”(hjœ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÞhj”)ubjœ)�”}”(hhh]”j¡)�”}”(hŒL``unsigned int xfer_mask`` mask of bits supported; only highest bit counts. ”h]”(j§)�”}”(hŒ``unsigned int xfer_mask``”h]”j\)�”}”(hj¹)h]”hŒunsigned int xfer_mask”…”�”}”(hj»)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj·)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÛhj³)ubj·)�”}”(hhh]”hì)�”}”(hŒ0mask of bits supported; only highest bit counts.”h]”hŒ0mask of bits supported; only highest bit counts.”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÎ)h´MÛhjÏ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÎ)h´MÛhj°)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj”)ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjô)h]”hŒ Description”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÝhj”)ubj)�”}”(hŒcDetermine string which represents the highest speed (highest bit in **modemask**). LOCKING: None. ”h]”(hì)�”}”(hŒRDetermine string which represents the highest speed (highest bit in **modemask**).”h]”(hŒDDetermine string which represents the highest speed (highest bit in ”…”�”}”(hj*h²hh³Nh´Nubj )�”}”(hŒ **modemask**”h]”hŒmodemask”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*ubhŒ).”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÜhj *ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj/*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mßhj *ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j.*h´MÜhj”)ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjF*h]”hŒReturn”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mâhj”)ubhì)�”}”(hŒgConstant C string representing highest speed listed in **mode_mask**, or the constant C string "".”h]”(hŒ7Constant C string representing highest speed listed in ”…”�”}”(hj\*h²hh³Nh´Nubj )�”}”(hŒ **mode_mask**”h]”hŒ mode_mask”…”�”}”(hjd*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\*ubhŒ', or the constant C string “â€�.”…”�”}”(hj\*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mãhj”)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_classify (C function)”Œc.ata_dev_classify”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=unsigned int ata_dev_classify (const struct ata_taskfile *tf)”h]”j")�”}”(hŒ/h´MQhj?/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj#/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j>/h´MQhjç.ubj¡)�”}”(hŒ6``unsigned int ofs`` offset into identify device page ”h]”(j§)�”}”(hŒ``unsigned int ofs``”h]”j\)�”}”(hjb/h]”hŒunsigned int ofs”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj`/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MRhj\/ubj·)�”}”(hhh]”hì)�”}”(hŒ offset into identify device page”h]”hŒ offset into identify device page”…”�”}”(hj{/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jw/h´MRhjx/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj\/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jw/h´MRhjç.ubj¡)�”}”(hŒI``unsigned int len`` length of string to return. must be an even number. ”h]”(j§)�”}”(hŒ``unsigned int len``”h]”j\)�”}”(hj›/h]”hŒunsigned int len”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj™/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MShj•/ubj·)�”}”(hhh]”hì)�”}”(hŒ3length of string to return. must be an even number.”h]”hŒ3length of string to return. must be an even number.”…”�”}”(hj´/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j°/h´MShj±/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj•/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j°/h´MShjç.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjË.ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÖ/h]”hŒ Description”…”�”}”(hjØ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MUhjË.ubj)�”}”(hŒ²The strings in the IDENTIFY DEVICE page are broken up into 16-bit chunks. Run through the string, and output each 8-bit chunk linearly, regardless of platform. LOCKING: caller.”h]”(hì)�”}”(hŒ The strings in the IDENTIFY DEVICE page are broken up into 16-bit chunks. Run through the string, and output each 8-bit chunk linearly, regardless of platform.”h]”hŒ The strings in the IDENTIFY DEVICE page are broken up into 16-bit chunks. Run through the string, and output each 8-bit chunk linearly, regardless of platform.”…”�”}”(hjð/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MThjì/ubhì)�”}”(hŒLOCKING: caller.”h]”hŒLOCKING: caller.”…”�”}”(hjÿ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MXhjì/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jþ/h´MThjË.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_id_c_string (C function)”Œc.ata_id_c_string”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒZvoid ata_id_c_string (const u16 *id, unsigned char *s, unsigned int ofs, unsigned int len)”h]”j")�”}”(hŒYvoid ata_id_c_string(const u16 *id, unsigned char *s, unsigned int ofs, unsigned int len)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj40h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj00h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj00h²hh³jB0h´Mtubj�)�”}”(hŒata_id_c_string”h]”j[)�”}”(hŒata_id_c_string”h]”hŒata_id_c_string”…”�”}”(hjU0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQ0ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj00h²hh³jB0h´Mtubjª)�”}”(hŒE(const u16 *id, unsigned char *s, unsigned int ofs, unsigned int len)”h]”(j°)�”}”(hŒ const u16 *id”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjq0h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjm0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm0ubh)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŒ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‘0Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjW0sbŒc.ata_id_c_string”†”asbuh1hhjm0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm0ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj½0h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjm0ubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hjÊ0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjm0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji0ubj°)�”}”(hŒunsigned char *s”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjã0h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjß0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß0ubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÿ0h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjß0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß0ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjß0ubj[)�”}”(hjå-h]”hŒs”…”�”}”(hj(1h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjß0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji0ubj°)�”}”(hŒunsigned int ofs”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj@1h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj<1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<1ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj<1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<1ubj[)�”}”(hŒofs”h]”hŒofs”…”�”}”(hjx1h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj<1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji0ubj°)�”}”(hŒunsigned int len”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‘1h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�1ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj­1h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�1ubj[)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÉ1h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji0ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj00h²hh³jB0h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj,0h²hh³jB0h´Mtubah}”(h]”j'0ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jB0h´Mthj)0h²hubj)�”}”(hhh]”hì)�”}”(hŒ*Convert IDENTIFY DEVICE page into C string”h]”hŒ*Convert IDENTIFY DEVICE page into C string”…”�”}”(hjó1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mthjð1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)0h²hh³jB0h´Mtubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j 2j1j 2j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXÿ**Parameters** ``const u16 *id`` IDENTIFY DEVICE results we will examine ``unsigned char *s`` string into which data is output ``unsigned int ofs`` offset into identify device page ``unsigned int len`` length of string to return. must be an odd number. **Description** This function is identical to ata_id_string except that it trims trailing spaces and terminates the resulting string with null. **len** must be actual maximum length (even number) + 1. LOCKING: caller.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj2h]”hŒ Parameters”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mxhj2ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ:``const u16 *id`` IDENTIFY DEVICE results we will examine ”h]”(j§)�”}”(hŒ``const u16 *id``”h]”j\)�”}”(hj42h]”hŒ const u16 *id”…”�”}”(hj62h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj22ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Muhj.2ubj·)�”}”(hhh]”hì)�”}”(hŒ'IDENTIFY DEVICE results we will examine”h]”hŒ'IDENTIFY DEVICE results we will examine”…”�”}”(hjM2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jI2h´MuhjJ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj.2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jI2h´Muhj+2ubj¡)�”}”(hŒ6``unsigned char *s`` string into which data is output ”h]”(j§)�”}”(hŒ``unsigned char *s``”h]”j\)�”}”(hjm2h]”hŒunsigned char *s”…”�”}”(hjo2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjk2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mvhjg2ubj·)�”}”(hhh]”hì)�”}”(hŒ string into which data is output”h]”hŒ string into which data is output”…”�”}”(hj†2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚2h´Mvhjƒ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjg2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‚2h´Mvhj+2ubj¡)�”}”(hŒ6``unsigned int ofs`` offset into identify device page ”h]”(j§)�”}”(hŒ``unsigned int ofs``”h]”j\)�”}”(hj¦2h]”hŒunsigned int ofs”…”�”}”(hj¨2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¤2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mwhj 2ubj·)�”}”(hhh]”hì)�”}”(hŒ offset into identify device page”h]”hŒ offset into identify device page”…”�”}”(hj¿2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j»2h´Mwhj¼2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj 2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j»2h´Mwhj+2ubj¡)�”}”(hŒH``unsigned int len`` length of string to return. must be an odd number. ”h]”(j§)�”}”(hŒ``unsigned int len``”h]”j\)�”}”(hjß2h]”hŒunsigned int len”…”�”}”(hjá2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÝ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MxhjÙ2ubj·)�”}”(hhh]”hì)�”}”(hŒ2length of string to return. must be an odd number.”h]”hŒ2length of string to return. must be an odd number.”…”�”}”(hjø2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jô2h´Mxhjõ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÙ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jô2h´Mxhj+2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj2ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj3h]”hŒ Description”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mzhj2ubj)�”}”(hŒËThis function is identical to ata_id_string except that it trims trailing spaces and terminates the resulting string with null. **len** must be actual maximum length (even number) + 1. LOCKING: caller.”h]”(hì)�”}”(hŒ¹This function is identical to ata_id_string except that it trims trailing spaces and terminates the resulting string with null. **len** must be actual maximum length (even number) + 1.”h]”(hŒ�This function is identical to ata_id_string except that it trims trailing spaces and terminates the resulting string with null. ”…”�”}”(hj43h²hh³Nh´Nubj )�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hj<3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj43ubhŒ1 must be actual maximum length (even number) + 1.”…”�”}”(hj43h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Myhj03ubhì)�”}”(hŒLOCKING: caller.”h]”hŒLOCKING: caller.”…”�”}”(hjU3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M}hj03ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jT3h´Myhj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_id_xfermask (C function)”Œc.ata_id_xfermask”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,unsigned int ata_id_xfermask (const u16 *id)”h]”j")�”}”(hŒ+unsigned int ata_id_xfermask(const u16 *id)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŠ3h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj†3h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†3h²hh³j˜3h´Mžubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj§3h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj†3h²hh³j˜3h´Mžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†3h²hh³j˜3h´Mžubj�)�”}”(hŒata_id_xfermask”h]”j[)�”}”(hŒata_id_xfermask”h]”hŒata_id_xfermask”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÃ3ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj†3h²hh³j˜3h´Mžubjª)�”}”(hŒ(const u16 *id)”h]”j°)�”}”(hŒ const u16 *id”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjã3h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjß3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð3h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß3ubh)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjþ3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j4Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÉ3sbŒc.ata_id_xfermask”†”asbuh1hhjß3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß3ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj/4h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjß3ubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hj<4h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjß3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÛ3ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj†3h²hh³j˜3h´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj‚3h²hh³j˜3h´Mžubah}”(h]”j}3ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j˜3h´Mžhj3h²hubj)�”}”(hhh]”hì)�”}”(hŒ-Compute xfermask from the given IDENTIFY data”h]”hŒ-Compute xfermask from the given IDENTIFY data”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mžhjc4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3h²hh³j˜3h´Mžubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j~4j1j~4j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXH**Parameters** ``const u16 *id`` IDENTIFY data to compute xfer mask from **Description** Compute the xfermask for this device. This is not as trivial as it seems if we must consider early devices correctly. FIXME: pre IDE drive timing (do we care ?). LOCKING: None. **Return** Computed xfermask”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjˆ4h]”hŒ Parameters”…”�”}”(hjŠ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¢hj‚4ubjœ)�”}”(hhh]”j¡)�”}”(hŒ:``const u16 *id`` IDENTIFY data to compute xfer mask from ”h]”(j§)�”}”(hŒ``const u16 *id``”h]”j\)�”}”(hj§4h]”hŒ const u16 *id”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¥4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŸhj¡4ubj·)�”}”(hhh]”hì)�”}”(hŒ'IDENTIFY data to compute xfer mask from”h]”hŒ'IDENTIFY data to compute xfer mask from”…”�”}”(hjÀ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼4h´MŸhj½4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¼4h´MŸhjž4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‚4ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjâ4h]”hŒ Description”…”�”}”(hjä4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjà4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¡hj‚4ubj)�”}”(hŒ³Compute the xfermask for this device. This is not as trivial as it seems if we must consider early devices correctly. FIXME: pre IDE drive timing (do we care ?). LOCKING: None. ”h]”(hì)�”}”(hŒuCompute the xfermask for this device. This is not as trivial as it seems if we must consider early devices correctly.”h]”hŒuCompute the xfermask for this device. This is not as trivial as it seems if we must consider early devices correctly.”…”�”}”(hjü4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjø4ubhì)�”}”(hŒ+FIXME: pre IDE drive timing (do we care ?).”h]”hŒ+FIXME: pre IDE drive timing (do we care ?).”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M£hjø4ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¥hjø4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j 5h´M hj‚4ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj15h]”hŒReturn”…”�”}”(hj35h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¨hj‚4ubhì)�”}”(hŒComputed xfermask”h]”hŒComputed xfermask”…”�”}”(hjG5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M©hj‚4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_pio_need_iordy (C function)”Œc.ata_pio_need_iordy”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?unsigned int ata_pio_need_iordy (const struct ata_device *adev)”h]”j")�”}”(hŒ>unsigned int ata_pio_need_iordy(const struct ata_device *adev)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjv5h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjr5h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr5h²hh³j„5h´M¡ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj“5h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjr5h²hh³j„5h´M¡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr5h²hh³j„5h´M¡ubj�)�”}”(hŒata_pio_need_iordy”h]”j[)�”}”(hŒata_pio_need_iordy”h]”hŒata_pio_need_iordy”…”�”}”(hj³5h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¯5ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjr5h²hh³j„5h´M¡ubjª)�”}”(hŒ(const struct ata_device *adev)”h]”j°)�”}”(hŒconst struct ata_device *adev”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjÏ5h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjË5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjË5ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjê5h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjË5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjË5ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j 6Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjµ5sbŒc.ata_pio_need_iordy”†”asbuh1hhjË5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjË5ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj66h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjË5ubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjC6h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjË5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÇ5ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjr5h²hh³j„5h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjn5h²hh³j„5h´M¡ubah}”(h]”ji5ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j„5h´M¡hjk5h²hubj)�”}”(hhh]”hì)�”}”(hŒcheck if iordy needed”h]”hŒcheck if iordy needed”…”�”}”(hjm6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¡hjj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjk5h²hh³j„5h´M¡ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j…6j1j…6j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒÇ**Parameters** ``const struct ata_device *adev`` ATA device **Description** Check if the current speed of the device requires IORDY. Used by various controllers for chip configuration.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�6h]”hŒ Parameters”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¥hj‰6ubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``const struct ata_device *adev`` ATA device ”h]”(j§)�”}”(hŒ!``const struct ata_device *adev``”h]”j\)�”}”(hj®6h]”hŒconst struct ata_device *adev”…”�”}”(hj°6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¬6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¢hj¨6ubj·)�”}”(hhh]”hì)�”}”(hŒ ATA device”h]”hŒ ATA device”…”�”}”(hjÇ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃ6h´M¢hjÄ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¨6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÃ6h´M¢hj¥6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰6ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjé6h]”hŒ Description”…”�”}”(hjë6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjç6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¤hj‰6ubj)�”}”(hŒlCheck if the current speed of the device requires IORDY. Used by various controllers for chip configuration.”h]”hì)�”}”(hŒlCheck if the current speed of the device requires IORDY. Used by various controllers for chip configuration.”h]”hŒlCheck if the current speed of the device requires IORDY. Used by various controllers for chip configuration.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M£hjÿ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j7h´M£hj‰6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_do_dev_read_id (C function)”Œc.ata_do_dev_read_id”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]unsigned int ata_do_dev_read_id (struct ata_device *dev, struct ata_taskfile *tf, __le16 *id)”h]”j")�”}”(hŒ\unsigned int ata_do_dev_read_id(struct ata_device *dev, struct ata_taskfile *tf, __le16 *id)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj87h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj47h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj47h²hh³jF7h´MÚubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjU7h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj47h²hh³jF7h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj47h²hh³jF7h´MÚubj�)�”}”(hŒata_do_dev_read_id”h]”j[)�”}”(hŒata_do_dev_read_id”h]”hŒata_do_dev_read_id”…”�”}”(hju7h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjq7ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj47h²hh³jF7h´MÚubjª)�”}”(hŒ=(struct ata_device *dev, struct ata_taskfile *tf, __le16 *id)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘7h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�7ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¯7h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j±7Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjw7sbŒc.ata_do_dev_read_id”†”asbuh1hhj�7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�7ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÝ7h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj�7ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjê7h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰7ubj°)�”}”(hŒstruct ata_taskfile *tf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÿ7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿ7ubh)�”}”(hhh]”j[)�”}”(hŒ ata_taskfile”h]”hŒ ata_taskfile”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j#8Œmodname”NŒ classname”Njwjz)�”}”j}]”jË7Œc.ata_do_dev_read_id”†”asbuh1hhjÿ7ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿ7ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjM8h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÿ7ubj[)�”}”(hŒtf”h]”hŒtf”…”�”}”(hjZ8h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÿ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰7ubj°)�”}”(hŒ __le16 *id”h]”(h)�”}”(hhh]”j[)�”}”(hŒ__le16”h]”hŒ__le16”…”�”}”(hjv8h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjs8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jx8Œmodname”NŒ classname”Njwjz)�”}”j}]”jË7Œc.ata_do_dev_read_id”†”asbuh1hhjo8ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”8h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjo8ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjo8ubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hj¯8h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjo8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰7ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj47h²hh³jF7h´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj07h²hh³jF7h´MÚubah}”(h]”j+7ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jF7h´MÚhj-7h²hubj)�”}”(hhh]”hì)�”}”(hŒdefault ID read method”h]”hŒdefault ID read method”…”�”}”(hjÙ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÚhjÖ8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-7h²hh³jF7h´MÚubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jñ8j1jñ8j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXW**Parameters** ``struct ata_device *dev`` device ``struct ata_taskfile *tf`` proposed taskfile ``__le16 *id`` data buffer **Description** Issue the identify taskfile and hand back the buffer containing identify data. For some RAID controllers and for pre ATA devices this function is wrapped or replaced by the driver”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjû8h]”hŒ Parameters”…”�”}”(hjý8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjù8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÞhjõ8ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ"``struct ata_device *dev`` device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj9h]”hŒstruct ata_device *dev”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÛhj9ubj·)�”}”(hhh]”hì)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj39h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/9h´MÛhj09ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j/9h´MÛhj9ubj¡)�”}”(hŒ.``struct ata_taskfile *tf`` proposed taskfile ”h]”(j§)�”}”(hŒ``struct ata_taskfile *tf``”h]”j\)�”}”(hjS9h]”hŒstruct ata_taskfile *tf”…”�”}”(hjU9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÜhjM9ubj·)�”}”(hhh]”hì)�”}”(hŒproposed taskfile”h]”hŒproposed taskfile”…”�”}”(hjl9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh9h´MÜhji9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjM9ubeh}”(h]”h • ]”h"]”h$]”h&]”uh1j h³jh9h´MÜhj9ubj¡)�”}”(hŒ``__le16 *id`` data buffer ”h]”(j§)�”}”(hŒ``__le16 *id``”h]”j\)�”}”(hjŒ9h]”hŒ __le16 *id”…”�”}”(hjŽ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŠ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÝhj†9ubj·)�”}”(hhh]”hì)�”}”(hŒ data buffer”h]”hŒ data buffer”…”�”}”(hj¥9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡9h´MÝhj¢9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj†9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¡9h´MÝhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjõ8ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÇ9h]”hŒ Description”…”�”}”(hjÉ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mßhjõ8ubj)�”}”(hŒ³Issue the identify taskfile and hand back the buffer containing identify data. For some RAID controllers and for pre ATA devices this function is wrapped or replaced by the driver”h]”hì)�”}”(hŒ³Issue the identify taskfile and hand back the buffer containing identify data. For some RAID controllers and for pre ATA devices this function is wrapped or replaced by the driver”h]”hŒ³Issue the identify taskfile and hand back the buffer containing identify data. For some RAID controllers and for pre ATA devices this function is wrapped or replaced by the driver”…”�”}”(hjá9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÞhjÝ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jï9h´MÞhjõ8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_cable_40wire (C function)”Œc.ata_cable_40wire”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_cable_40wire (struct ata_port *ap)”h]”j")�”}”(hŒ)int ata_cable_40wire(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj:h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mø ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:h²hh³j$:h´Mø ubj�)�”}”(hŒata_cable_40wire”h]”j[)�”}”(hŒata_cable_40wire”h]”hŒata_cable_40wire”…”�”}”(hj7:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj3:ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj:h²hh³j$:h´Mø ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjO:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO:ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjq:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjn:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”js:Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj9:sbŒc.ata_cable_40wire”†”asbuh1hhjO:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjO:ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjŸ:h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjO:ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj¬:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjO:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjK:ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj:h²hh³j$:h´Mø ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj:h²hh³j$:h´Mø ubah}”(h]”j :ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j$:h´Mø hj :h²hubj)�”}”(hhh]”hì)�”}”(hŒreturn 40 wire cable type”h]”hŒreturn 40 wire cable type”…”�”}”(hjÖ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mø hjÓ:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj :h²hh³j$:h´Mø ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jî:j1jî:j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒ”**Parameters** ``struct ata_port *ap`` port **Description** Helper method for drivers which want to hardwire 40 wire cable detection.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjø:h]”hŒ Parameters”…”�”}”(hjú:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mü hjò:ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``struct ata_port *ap`` port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj;h]”hŒstruct ata_port *ap”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mù hj;ubj·)�”}”(hhh]”hì)�”}”(hŒport”h]”hŒport”…”�”}”(hj0;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,;h´Mù hj-;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j,;h´Mù hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjò:ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjR;h]”hŒ Description”…”�”}”(hjT;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mû hjò:ubj)�”}”(hŒIHelper method for drivers which want to hardwire 40 wire cable detection.”h]”hì)�”}”(hŒIHelper method for drivers which want to hardwire 40 wire cable detection.”h]”hŒIHelper method for drivers which want to hardwire 40 wire cable detection.”…”�”}”(hjl;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mú hjh;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jz;h´Mú hjò:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_cable_80wire (C function)”Œc.ata_cable_80wire”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_cable_80wire (struct ata_port *ap)”h]”j")�”}”(hŒ)int ata_cable_80wire(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡;h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�;h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�;h²hh³j¯;h´M ubj�)�”}”(hŒata_cable_80wire”h]”j[)�”}”(hŒata_cable_80wire”h]”hŒata_cable_80wire”…”�”}”(hjÂ;h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¾;ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj�;h²hh³j¯;h´M ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÞ;h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÚ;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚ;ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjü;h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjù;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jþ;Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÄ;sbŒc.ata_cable_80wire”†”asbuh1hhjÚ;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚ;ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj*<h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÚ;ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj7<h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÖ;ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj�;h²hh³j¯;h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj™;h²hh³j¯;h´M ubah}”(h]”j”;ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¯;h´M hj–;h²hubj)�”}”(hhh]”hì)�”}”(hŒreturn 80 wire cable type”h]”hŒreturn 80 wire cable type”…”�”}”(hja<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj^<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–;h²hh³j¯;h´M ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jy<j1jy<j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒ”**Parameters** ``struct ata_port *ap`` port **Description** Helper method for drivers which want to hardwire 80 wire cable detection.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjƒ<h]”hŒ Parameters”…”�”}”(hj…<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj}<ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``struct ata_port *ap`` port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj¢<h]”hŒstruct ata_port *ap”…”�”}”(hj¤<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjœ<ubj·)�”}”(hhh]”hì)�”}”(hŒport”h]”hŒport”…”�”}”(hj»<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j·<h´M hj¸<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjœ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j·<h´M hj™<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj}<ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÝ<h]”hŒ Description”…”�”}”(hjß<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj}<ubj)�”}”(hŒIHelper method for drivers which want to hardwire 80 wire cable detection.”h]”hì)�”}”(hŒIHelper method for drivers which want to hardwire 80 wire cable detection.”h]”hŒIHelper method for drivers which want to hardwire 80 wire cable detection.”…”�”}”(hj÷<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjó<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j=h´M hj}<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_cable_unknown (C function)”Œc.ata_cable_unknown”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+int ata_cable_unknown (struct ata_port *ap)”h]”j")�”}”(hŒ*int ata_cable_unknown(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj,=h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj(=h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj(=h²hh³j:=h´M ubj�)�”}”(hŒata_cable_unknown”h]”j[)�”}”(hŒata_cable_unknown”h]”hŒata_cable_unknown”…”�”}”(hjM=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjI=ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj(=h²hh³j:=h´M ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hji=h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hje=ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hje=ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj‡=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj„=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‰=Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjO=sbŒc.ata_cable_unknown”†”asbuh1hhje=ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hje=ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjµ=h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hje=ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjÂ=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhje=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hja=ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj(=h²hh³j:=h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj$=h²hh³j:=h´M ubah}”(h]”j=ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j:=h´M hj!=h²hubj)�”}”(hhh]”hì)�”}”(hŒreturn unknown PATA cable.”h]”hŒreturn unknown PATA cable.”…”�”}”(hjì=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjé=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!=h²hh³j:=h´M ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j>j1j>j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒƒ**Parameters** ``struct ata_port *ap`` port **Description** Helper method for drivers which have no PATA cable detection.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj>h]”hŒ Parameters”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj>ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``struct ata_port *ap`` port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj->h]”hŒstruct ata_port *ap”…”�”}”(hj/>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj+>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj'>ubj·)�”}”(hhh]”hì)�”}”(hŒport”h]”hŒport”…”�”}”(hjF>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jB>h´M hjC>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj'>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jB>h´M hj$>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj>ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjh>h]”hŒ Description”…”�”}”(hjj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjf>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj>ubj)�”}”(hŒ=Helper method for drivers which have no PATA cable detection.”h]”hì)�”}”(hj€>h]”hŒ=Helper method for drivers which have no PATA cable detection.”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj~>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�>h´M hj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_cable_ignore (C function)”Œc.ata_cable_ignore”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_cable_ignore (struct ata_port *ap)”h]”j")�”}”(hŒ)int ata_cable_ignore(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¶>h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj²>h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M! ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²>h²hh³jÄ>h´M! ubj�)�”}”(hŒata_cable_ignore”h]”j[)�”}”(hŒata_cable_ignore”h]”hŒata_cable_ignore”…”�”}”(hj×>h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÓ>ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj²>h²hh³jÄ>h´M! ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjó>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjï>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjï>ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j?Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÙ>sbŒc.ata_cable_ignore”†”asbuh1hhjï>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjï>ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjï>ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjL?h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjï>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjë>ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj²>h²hh³jÄ>h´M! ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj®>h²hh³jÄ>h´M! ubah}”(h]”j©>ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÄ>h´M! hj«>h²hubj)�”}”(hhh]”hì)�”}”(hŒreturn ignored PATA cable.”h]”hŒreturn ignored PATA cable.”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M! hjs?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«>h²hh³jÄ>h´M! ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jŽ?j1jŽ?j2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒ—**Parameters** ``struct ata_port *ap`` port **Description** Helper method for drivers which don't use cable type to limit transfer mode.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj˜?h]”hŒ Parameters”…”�”}”(hjš?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj–?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M% hj’?ubjœ)�”}”(hhh]”j¡)�”}”(hŒ``struct ata_port *ap`` port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj·?h]”hŒstruct ata_port *ap”…”�”}”(hj¹?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjµ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M" hj±?ubj·)�”}”(hhh]”hì)�”}”(hŒport”h]”hŒport”…”�”}”(hjÐ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ?h´M" hjÍ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj±?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÌ?h´M" hj®?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj’?ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjò?h]”hŒ Description”…”�”}”(hjô?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjð?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M$ hj’?ubj)�”}”(hŒLHelper method for drivers which don't use cable type to limit transfer mode.”h]”hì)�”}”(hŒLHelper method for drivers which don't use cable type to limit transfer mode.”h]”hŒNHelper method for drivers which don’t use cable type to limit transfer mode.”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M# hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j@h´M# hj’?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_cable_sata (C function)”Œc.ata_cable_sata”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(int ata_cable_sata (struct ata_port *ap)”h]”j")�”}”(hŒ'int ata_cable_sata(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjA@h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj=@h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M. ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=@h²hh³jO@h´M. ubj�)�”}”(hŒata_cable_sata”h]”j[)�”}”(hŒata_cable_sata”h]”hŒata_cable_sata”…”�”}”(hjb@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj^@ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj=@h²hh³jO@h´M. ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj~@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjz@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz@ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjœ@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj™@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jž@Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjd@sbŒc.ata_cable_sata”†”asbuh1hhjz@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz@ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÊ@h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjz@ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj×@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjz@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjv@ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj=@h²hh³jO@h´M. ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj9@h²hh³jO@h´M. ubah}”(h]”j4@ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jO@h´M. hj6@h²hubj)�”}”(hhh]”hì)�”}”(hŒreturn SATA cable type”h]”hŒreturn SATA cable type”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M. hjþ@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6@h²hh³jO@h´M. ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jAj1jAj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒv**Parameters** ``struct ata_port *ap`` port **Description** Helper method for drivers which have SATA cables”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj#Ah]”hŒ Parameters”…”�”}”(hj%Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M2 hjAubjœ)�”}”(hhh]”j¡)�”}”(hŒ``struct ata_port *ap`` port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjBAh]”hŒstruct ata_port *ap”…”�”}”(hjDAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj@Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M/ hj``unsigned long deadline`` deadline jiffies for the operation ”h]”(j§)�”}”(hŒ``unsigned long deadline``”h]”j\)�”}”(hj‚Hh]”hŒunsigned long deadline”…”�”}”(hj„Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj|Hubj·)�”}”(hhh]”hì)�”}”(hŒ"deadline jiffies for the operation”h]”hŒ"deadline jiffies for the operation”…”�”}”(hj›Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—Hh´Mhj˜Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—Hh´Mhj@Hubj¡)�”}”(hŒO``int (*check_ready)(struct ata_link *link)`` callback to check link readiness ”h]”(j§)�”}”(hŒ-``int (*check_ready)(struct ata_link *link)``”h]”j\)�”}”(hj»Hh]”hŒ)int (*check_ready)(struct ata_link *link)”…”�”}”(hj½Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¹Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjµHubj·)�”}”(hhh]”hì)�”}”(hŒ callback to check link readiness”h]”hŒ callback to check link readiness”…”�”}”(hjÔHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÐHh´MhjÑHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjµHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÐHh´Mhj@Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj$Hubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjöHh]”hŒ Description”…”�”}”(hjøHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjôHubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj$Hubj)�”}”(hŒEWait for **link** to become ready after reset. LOCKING: EH context. ”h]”(hì)�”}”(hŒ.Wait for **link** to become ready after reset.”h]”(hŒ Wait for ”…”�”}”(hjIh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubhŒ to become ready after reset.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj Iubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hj1Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hj Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0Ih´M hj$Hubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjHIh]”hŒReturn”…”�”}”(hjJIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjFIubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj$Hubhì)�”}”(hŒ>0 if **link** is ready before **deadline**; otherwise, -errno.”h]”(hŒ0 if ”…”�”}”(hj^Ih²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hjfIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^IubhŒ is ready before ”…”�”}”(hj^Ih²hh³Nh´Nubj )�”}”(hŒ **deadline**”h]”hŒdeadline”…”�”}”(hjxIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^IubhŒ; otherwise, -errno.”…”�”}”(hj^Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj$Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_std_prereset (C function)”Œc.ata_std_prereset”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒDint ata_std_prereset (struct ata_link *link, unsigned long deadline)”h]”j")�”}”(hŒCint ata_std_prereset(struct ata_link *link, unsigned long deadline)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj±Ih²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj­Ih²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­Ih²hh³j¿Ih´Mubj�)�”}”(hŒata_std_prereset”h]”j[)�”}”(hŒata_std_prereset”h]”hŒata_std_prereset”…”�”}”(hjÒIh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÎIubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj­Ih²hh³j¿Ih´Mubjª)�”}”(hŒ/(struct ata_link *link, unsigned long deadline)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjîIh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjêIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêIubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jJŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÔIsbŒc.ata_std_prereset”†”asbuh1hhjêIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjêIubj)�”}”(hjS h]”hŒ*”…”�”}”(hj:Jh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjêIubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjGJh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjêIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjæIubj°)�”}”(hŒunsigned long deadline”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj`Jh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj\Jubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnJh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\Jubj²)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj|Jh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj\Jubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠJh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\Jubj[)�”}”(hŒdeadline”h]”hŒdeadline”…”�”}”(hj˜Jh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj\Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjæIubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj­Ih²hh³j¿Ih´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj©Ih²hh³j¿Ih´Mubah}”(h]”j¤Iah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¿Ih´Mhj¦Ih²hubj)�”}”(hhh]”hì)�”}”(hŒprepare for reset”h]”hŒprepare for reset”…”�”}”(hjÂJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj¿Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦Ih²hh³j¿Ih´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÚJj1jÚJj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX **Parameters** ``struct ata_link *link`` ATA link to be reset ``unsigned long deadline`` deadline jiffies for the operation **Description** **link** is about to be reset. Initialize it. Failure from prereset makes libata abort whole reset sequence and give up that port, so prereset should be best-effort. It does its best to prepare for reset sequence but if things go wrong, it should just whine, not fail. LOCKING: Kernel thread context (may sleep) **Return** Always 0.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjäJh]”hŒ Parameters”…”�”}”(hjæJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjâJubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjÞJubjœ)�”}”(hhh]”(j¡)�”}”(hŒ/``struct ata_link *link`` ATA link to be reset ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjKh]”hŒstruct ata_link *link”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjýJubj·)�”}”(hhh]”hì)�”}”(hŒATA link to be reset”h]”hŒATA link to be reset”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKh´MhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjýJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jKh´MhjúJubj¡)�”}”(hŒ>``unsigned long deadline`` deadline jiffies for the operation ”h]”(j§)�”}”(hŒ``unsigned long deadline``”h]”j\)�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj:Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj6Kubj·)�”}”(hhh]”hì)�”}”(hŒ"deadline jiffies for the operation”h]”hŒ"deadline jiffies for the operation”…”�”}”(hjUKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQKh´MhjRKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj6Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jQKh´MhjúJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÞJubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjwKh]”hŒ Description”…”�”}”(hjyKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjuKubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M hjÞJubj)�”}”(hX<**link** is about to be reset. Initialize it. Failure from prereset makes libata abort whole reset sequence and give up that port, so prereset should be best-effort. It does its best to prepare for reset sequence but if things go wrong, it should just whine, not fail. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hX**link** is about to be reset. Initialize it. Failure from prereset makes libata abort whole reset sequence and give up that port, so prereset should be best-effort. It does its best to prepare for reset sequence but if things go wrong, it should just whine, not fail.”h]”(j )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hj•Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘KubhX is about to be reset. Initialize it. Failure from prereset makes libata abort whole reset sequence and give up that port, so prereset should be best-effort. It does its best to prepare for reset sequence but if things go wrong, it should just whine, not fail.”…”�”}”(hj‘Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj�Kubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hj®Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M%hj�Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j­Kh´MhjÞJubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÅKh]”hŒReturn”…”�”}”(hjÇKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃKubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M(hjÞJubhì)�”}”(hŒ Always 0.”h]”hŒ Always 0.”…”�”}”(hjÛKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M)hjÞJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_std_postreset (C function)”Œc.ata_std_postreset”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒEvoid ata_std_postreset (struct ata_link *link, unsigned int *classes)”h]”j")�”}”(hŒDvoid ata_std_postreset(struct ata_link *link, unsigned int *classes)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjLh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MJubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjLh²hh³jLh´MJubj�)�”}”(hŒata_std_postreset”h]”j[)�”}”(hŒata_std_postreset”h]”hŒata_std_postreset”…”�”}”(hj+Lh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj'Lubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjLh²hh³jLh´MJubjª)�”}”(hŒ.(struct ata_link *link, unsigned int *classes)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjGLh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjCLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCLubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjeLh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjbLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jgLŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj-LsbŒc.ata_std_postreset”†”asbuh1hhjCLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Lh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCLubj)�”}”(hjS h]”hŒ*”…”�”}”(hj“Lh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjCLubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjCLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj?Lubj°)�”}”(hŒunsigned int *classes”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¹Lh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjµLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµLubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕLh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjµLubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµLubj)�”}”(hjS h]”hŒ*”…”�”}”(hjñLh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjµLubj[)�”}”(hŒclasses”h]”hŒclasses”…”�”}”(hjþLh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj?Lubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjLh²hh³jLh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjLh²hh³jLh´MJubah}”(h]”jýKah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jLh´MJhjÿKh²hubj)�”}”(hhh]”hì)�”}”(hŒstandard postreset callback”h]”hŒstandard postreset callback”…”�”}”(hj(Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MJhj%Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿKh²hh³jLh´MJubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j@Mj1j@Mj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXx**Parameters** ``struct ata_link *link`` the target ata_link ``unsigned int *classes`` classes of attached devices **Description** This function is invoked after a successful reset. Note that the device might have been reset more than once using different reset methods before postreset is invoked. LOCKING: Kernel thread context (may sleep)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjJMh]”hŒ Parameters”…”�”}”(hjLMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHMubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MNhjDMubjœ)�”}”(hhh]”(j¡)�”}”(hŒ.``struct ata_link *link`` the target ata_link ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjiMh]”hŒstruct ata_link *link”…”�”}”(hjkMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjgMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MKhjcMubj·)�”}”(hhh]”hì)�”}”(hŒthe target ata_link”h]”hŒthe target ata_link”…”�”}”(hj‚Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j~Mh´MKhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjcMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j~Mh´MKhj`Mubj¡)�”}”(hŒ6``unsigned int *classes`` classes of attached devices ”h]”(j§)�”}”(hŒ``unsigned int *classes``”h]”j\)�”}”(hj¢Mh]”hŒunsigned int *classes”…”�”}”(hj¤Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MLhjœMubj·)�”}”(hhh]”hì)�”}”(hŒclasses of attached devices”h]”hŒclasses of attached devices”…”�”}”(hj»Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j·Mh´MLhj¸Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjœMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j·Mh´MLhj`Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjDMubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÝMh]”hŒ Description”…”�”}”(hjßMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛMubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MNhjDMubj)�”}”(hŒÔThis function is invoked after a successful reset. Note that the device might have been reset more than once using different reset methods before postreset is invoked. LOCKING: Kernel thread context (may sleep)”h]”(hì)�”}”(hŒ¨This function is invoked after a successful reset. Note that the device might have been reset more than once using different reset methods before postreset is invoked.”h]”hŒ¨This function is invoked after a successful reset. Note that the device might have been reset more than once using different reset methods before postreset is invoked.”…”�”}”(hj÷Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MMhjóMubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MQhjóMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jNh´MMhjDMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_dev_set_feature (C function)”Œc.ata_dev_set_feature”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒOunsigned int ata_dev_set_feature (struct ata_device *dev, u8 subcmd, u8 action)”h]”j")�”}”(hŒNunsigned int ata_dev_set_feature(struct ata_device *dev, u8 subcmd, u8 action)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj;Nh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj7Nh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Nh²hh³jINh´M­ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjXNh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj7Nh²hh³jINh´M­ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj7Nh²hh³jINh´M­ubj�)�”}”(hŒata_dev_set_feature”h]”j[)�”}”(hŒata_dev_set_feature”h]”hŒata_dev_set_feature”…”�”}”(hjxNh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjtNubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj7Nh²hh³jINh´M­ubjª)�”}”(hŒ.(struct ata_device *dev, u8 subcmd, u8 action)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj”Nh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Nubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj²Nh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¯Nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j´NŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjzNsbŒc.ata_dev_set_feature”†”asbuh1hhj�Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒNh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�Nubj)�”}”(hjS h]”hŒ*”…”�”}”(hjàNh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj�Nubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjíNh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŒNubj°)�”}”(hŒ u8 subcmd”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j OŒmodname”NŒ classname”Njwjz)�”}”j}]”jÎNŒc.ata_dev_set_feature”†”asbuh1hhjOubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjOubj[)�”}”(hŒsubcmd”h]”hŒsubcmd”…”�”}”(hj5Oh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŒNubj°)�”}”(hŒ u8 action”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjQOh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjNOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jSOŒmodname”NŒ classname”Njwjz)�”}”j}]”jÎNŒc.ata_dev_set_feature”†”asbuh1hhjJOubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJOubj[)�”}”(hŒaction”h]”hŒaction”…”�”}”(hj}Oh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjJOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŒNubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj7Nh²hh³jINh´M­ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj3Nh²hh³jINh´M­ubah}”(h]”j.Nah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jINh´M­hj0Nh²hubj)�”}”(hhh]”hì)�”}”(hŒIssue SET FEATURES”h]”hŒIssue SET FEATURES”…”�”•}”(hj§Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M­hj¤Oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0Nh²hh³jINh´M­ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¿Oj1j¿Oj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX˜**Parameters** ``struct ata_device *dev`` Device to which command will be sent ``u8 subcmd`` The SET FEATURES subcommand to be sent ``u8 action`` The sector count represents a subcommand specific action **Description** Issue SET FEATURES command to device **dev** on port **ap** with sector count LOCKING: PCI/etc. bus probe sem. **Return** 0 on success, AC_ERR_* mask otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÉOh]”hŒ Parameters”…”�”}”(hjËOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇOubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M±hjÃOubjœ)�”}”(hhh]”(j¡)�”}”(hŒ@``struct ata_device *dev`` Device to which command will be sent ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjèOh]”hŒstruct ata_device *dev”…”�”}”(hjêOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjæOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M®hjâOubj·)�”}”(hhh]”hì)�”}”(hŒ$Device to which command will be sent”h]”hŒ$Device to which command will be sent”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jýOh´M®hjþOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjâOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jýOh´M®hjßOubj¡)�”}”(hŒ5``u8 subcmd`` The SET FEATURES subcommand to be sent ”h]”(j§)�”}”(hŒ ``u8 subcmd``”h]”j\)�”}”(hj!Ph]”hŒ u8 subcmd”…”�”}”(hj#Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¯hjPubj·)�”}”(hhh]”hì)�”}”(hŒ&The SET FEATURES subcommand to be sent”h]”hŒ&The SET FEATURES subcommand to be sent”…”�”}”(hj:Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j6Ph´M¯hj7Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j6Ph´M¯hjßOubj¡)�”}”(hŒG``u8 action`` The sector count represents a subcommand specific action ”h]”(j§)�”}”(hŒ ``u8 action``”h]”j\)�”}”(hjZPh]”hŒ u8 action”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjXPubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M°hjTPubj·)�”}”(hhh]”hì)�”}”(hŒ8The sector count represents a subcommand specific action”h]”hŒ8The sector count represents a subcommand specific action”…”�”}”(hjsPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³joPh´M°hjpPubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjTPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³joPh´M°hjßOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÃOubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj•Ph]”hŒ Description”…”�”}”(hj—Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M²hjÃOubj)�”}”(hŒpIssue SET FEATURES command to device **dev** on port **ap** with sector count LOCKING: PCI/etc. bus probe sem. ”h]”(hì)�”}”(hŒMIssue SET FEATURES command to device **dev** on port **ap** with sector count”h]”(hŒ%Issue SET FEATURES command to device ”…”�”}”(hj¯Ph²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj·Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¯PubhŒ on port ”…”�”}”(hj¯Ph²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjÉPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¯PubhŒ with sector count”…”�”}”(hj¯Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M±hj«Pubhì)�”}”(hŒ LOCKING: PCI/etc. bus probe sem.”h]”hŒ LOCKING: PCI/etc. bus probe sem.”…”�”}”(hjâPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M³hj«Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jáPh´M±hjÃOubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjùPh]”hŒReturn”…”�”}”(hjûPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¶hjÃOubhì)�”}”(hŒ&0 on success, AC_ERR_* mask otherwise.”h]”hŒ&0 on success, AC_ERR_* mask otherwise.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M·hjÃOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_std_qc_defer (C function)”Œc.ata_std_qc_defer”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0int ata_std_qc_defer (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ/int ata_std_qc_defer(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj>Qh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj:Qh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:Qh²hh³jLQh´Mubj�)�”}”(hŒata_std_qc_defer”h]”j[)�”}”(hŒata_std_qc_defer”h]”hŒata_std_qc_defer”…”�”}”(hj_Qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj[Qubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj:Qh²hh³jLQh´Mubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj{Qh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjwQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwQubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj™Qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj–Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j›QŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjaQsbŒc.ata_std_qc_defer”†”asbuh1hhjwQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwQubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÇQh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjwQubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÔQh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjwQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjsQubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj:Qh²hh³jLQh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj6Qh²hh³jLQh´Mubah}”(h]”j1Qah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jLQh´Mhj3Qh²hubj)�”}”(hhh]”hì)�”}”(hŒ'Check whether a qc needs to be deferred”h]”hŒ'Check whether a qc needs to be deferred”…”�”}”(hjþQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjûQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3Qh²hh³jLQh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jRj1jRj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX¸**Parameters** ``struct ata_queued_cmd *qc`` ATA command in question **Description** Non-NCQ commands cannot run with any other command, NCQ or not. As upper layer only knows the queue depth, we are responsible for maintaining exclusion. This function checks whether a new command **qc** can be issued. LOCKING: spin_lock_irqsave(host lock) **Return** ATA_DEFER_* if deferring is needed, 0 otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj Rh]”hŒ Parameters”…”�”}”(hj"Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjRubjœ)�”}”(hhh]”j¡)�”}”(hŒ6``struct ata_queued_cmd *qc`` ATA command in question ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj?Rh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjARh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj=Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj9Rubj·)�”}”(hhh]”hì)�”}”(hŒATA command in question”h]”hŒATA command in question”…”�”}”(hjXRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jTRh´MhjURubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj9Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jTRh´Mhj6Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjRubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjzRh]”hŒ Description”…”�”}”(hj|Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjxRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjRubj)�”}”(hXNon-NCQ commands cannot run with any other command, NCQ or not. As upper layer only knows the queue depth, we are responsible for maintaining exclusion. This function checks whether a new command **qc** can be issued. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒÛNon-NCQ commands cannot run with any other command, NCQ or not. As upper layer only knows the queue depth, we are responsible for maintaining exclusion. This function checks whether a new command **qc** can be issued.”h]”(hŒÆNon-NCQ commands cannot run with any other command, NCQ or not. As upper layer only knows the queue depth, we are responsible for maintaining exclusion. This function checks whether a new command ”…”�”}”(hj”Rh²hh³Nh´Nubj )�”}”(hŒ**qc**”h]”hŒqc”…”�”}”(hjœRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”RubhŒ can be issued.”…”�”}”(hj”Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj�Rubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjµRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M"hj�Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´Rh´MhjRubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÌRh]”hŒReturn”…”�”}”(hjÎRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊRubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M%hjRubhì)�”}”(hŒ0ATA_DEFER_* if deferring is needed, 0 otherwise.”h]”hŒ0ATA_DEFER_* if deferring is needed, 0 otherwise.”…”�”}”(hjâRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M&hjRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_qc_complete (C function)”Œc.ata_qc_complete”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_qc_complete (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ/void ata_qc_complete(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj Sh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Múubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Sh²hh³jSh´Múubj�)�”}”(hŒata_qc_complete”h]”j[)�”}”(hŒata_qc_complete”h]”hŒata_qc_complete”…”�”}”(hj2Sh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj.Subah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj Sh²hh³jSh´Múubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjNSh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjJSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJSubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjlSh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjiSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jnSŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj4SsbŒc.ata_qc_complete”†”asbuh1hhjJSubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒSh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJSubj)�”}”(hjS h]”hŒ*”…”�”}”(hjšSh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjJSubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj§Sh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjJSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjFSubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj Sh²hh³jSh´Múubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj Sh²hh³jSh´Múubah}”(h]”jSah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jSh´MúhjSh²hubj)�”}”(hhh]”hì)�”}”(hŒComplete an active ATA command”h]”hŒComplete an active ATA command”…”�”}”(hjÑSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MúhjÎSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjSh²hh³jSh´Múubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jéSj1jéSj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX×**Parameters** ``struct ata_queued_cmd *qc`` Command to complete **Description** Indicate to the mid and upper layers that an ATA command has completed, with either an ok or not-ok status. Refrain from calling this function multiple times when successfully completing multiple NCQ commands. ata_qc_complete_multiple() should be used instead, which will properly update IRQ expect state. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjóSh]”hŒ Parameters”…”�”}”(hjõSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñSubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MþhjíSubjœ)�”}”(hhh]”j¡)�”}”(hŒ2``struct ata_queued_cmd *qc`` Command to complete ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjTh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mûhj Tubj·)�”}”(hhh]”hì)�”}”(hŒCommand to complete”h]”hŒCommand to complete”…”�”}”(hj+Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'Th´Mûhj(Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j'Th´Mûhj Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjíSubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjMTh]”hŒ Description”…”�”}”(hjOTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjKTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MýhjíSubj)�”}”(hXYIndicate to the mid and upper layers that an ATA command has completed, with either an ok or not-ok status. Refrain from calling this function multiple times when successfully completing multiple NCQ commands. ata_qc_complete_multiple() should be used instead, which will properly update IRQ expect state. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒkIndicate to the mid and upper layers that an ATA command has completed, with either an ok or not-ok status.”h]”hŒkIndicate to the mid and upper layers that an ATA command has completed, with either an ok or not-ok status.”…”�”}”(hjgTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MühjcTubhì)�”}”(hŒÅRefrain from calling this function multiple times when successfully completing multiple NCQ commands. ata_qc_complete_multiple() should be used instead, which will properly update IRQ expect state.”h]”hŒÅRefrain from calling this function multiple times when successfully completing multiple NCQ commands. ata_qc_complete_multiple() should be used instead, which will properly update IRQ expect state.”…”�”}”(hjvTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÿhjcTubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj…Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjcTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³juTh´MühjíSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_qc_get_active (C function)”Œc.ata_qc_get_active”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+u64 ata_qc_get_active (struct ata_port *ap)”h]”j")�”}”(hŒ*u64 ata_qc_get_active(struct ata_port *ap)”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj½Th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjºTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¿TŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_qc_get_active”sbŒc.ata_qc_get_active”†”asbuh1hhj¶Th²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶Th²hh³jÞTh´Mmubj�)�”}”(hŒata_qc_get_active”h]”j[)�”}”(hjÛTh]”hŒata_qc_get_active”…”�”}”(hjñTh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjíTubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¶Th²hh³jÞTh´Mmubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj'Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j,UŒmodname”NŒ classname”Njwjz)�”}”j}]”jÙTŒc.ata_qc_get_active”†”asbuh1hhjUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjUubj)�”}”(hjS h]”hŒ*”…”�”}”(hjVUh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjUubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjcUh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjUubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¶Th²hh³jÞTh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj²Th²hh³jÞTh´Mmubah}”(h]”j­Tah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÞTh´Mmhj¯Th²hubj)�”}”(hhh]”hì)�”}”(hŒget bitmask of active qcs”h]”hŒget bitmask of active qcs”…”�”}”(hj�Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MmhjŠUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯Th²hh³jÞTh´Mmubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¥Uj1j¥Uj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒŸ**Parameters** ``struct ata_port *ap`` port in question **Description** LOCKING: spin_lock_irqsave(host lock) **Return** Bitmask of active qcs”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¯Uh]”hŒ Parameters”…”�”}”(hj±Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mqhj©Uubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_port *ap`` port in question ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjÎUh]”hŒstruct ata_port *ap”…”�”}”(hjÐUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÌUubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MnhjÈUubj·)�”}”(hhh]”hì)�”}”(hŒport in question”h]”hŒport in question”…”�”}”(hjçUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jãUh´MnhjäUubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÈUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jãUh´MnhjÅUubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj©Uubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj Vh]”hŒ Description”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mphj©Uubj)�”}”(hŒ&LOCKING: spin_lock_irqsave(host lock) ”h]”hì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj#Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MohjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j1Vh´Mohj©Uubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj:Vh]”hŒReturn”…”�”}”(hjdj1j>dj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXD**Parameters** ``struct device *dev`` generic device this host is associated with ``const struct ata_port_info * const * ppi`` array of ATA port_info to initialize host with ``int n_ports`` number of ATA ports attached to this host **Description** Allocate ATA host and initialize with info from **ppi**. If NULL terminated, **ppi** may contain fewer entries than **n_ports**. The last entry will be used for the remaining ports. LOCKING: Inherited from calling layer (may sleep). **Return** Allocate ATA host on success, NULL on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjHdh]”hŒ Parameters”…”�”}”(hjJdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjFdubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”•h´M2hjBdubjœ)�”}”(hhh]”(j¡)�”}”(hŒC``struct device *dev`` generic device this host is associated with ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j\)�”}”(hjgdh]”hŒstruct device *dev”…”�”}”(hjidh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjedubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M/hjadubj·)�”}”(hhh]”hì)�”}”(hŒ+generic device this host is associated with”h]”hŒ+generic device this host is associated with”…”�”}”(hj€dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|dh´M/hj}dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjadubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j|dh´M/hj^dubj¡)�”}”(hŒ\``const struct ata_port_info * const * ppi`` array of ATA port_info to initialize host with ”h]”(j§)�”}”(hŒ,``const struct ata_port_info * const * ppi``”h]”j\)�”}”(hj dh]”hŒ(const struct ata_port_info * const * ppi”…”�”}”(hj¢dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjždubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M0hjšdubj·)�”}”(hhh]”hì)�”}”(hŒ.array of ATA port_info to initialize host with”h]”hŒ.array of ATA port_info to initialize host with”…”�”}”(hj¹dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµdh´M0hj¶dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjšdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jµdh´M0hj^dubj¡)�”}”(hŒ:``int n_ports`` number of ATA ports attached to this host ”h]”(j§)�”}”(hŒ``int n_ports``”h]”j\)�”}”(hjÙdh]”hŒ int n_ports”…”�”}”(hjÛdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj×dubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M1hjÓdubj·)�”}”(hhh]”hì)�”}”(hŒ)number of ATA ports attached to this host”h]”hŒ)number of ATA ports attached to this host”…”�”}”(hjòdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jîdh´M1hjïdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÓdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jîdh´M1hj^dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjBdubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjeh]”hŒ Description”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M3hjBdubj)�”}”(hŒíAllocate ATA host and initialize with info from **ppi**. If NULL terminated, **ppi** may contain fewer entries than **n_ports**. The last entry will be used for the remaining ports. LOCKING: Inherited from calling layer (may sleep). ”h]”(hì)�”}”(hŒ·Allocate ATA host and initialize with info from **ppi**. If NULL terminated, **ppi** may contain fewer entries than **n_ports**. The last entry will be used for the remaining ports.”h]”(hŒ0Allocate ATA host and initialize with info from ”…”�”}”(hj.eh²hh³Nh´Nubj )�”}”(hŒ**ppi**”h]”hŒppi”…”�”}”(hj6eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.eubhŒ. If NULL terminated, ”…”�”}”(hj.eh²hh³Nh´Nubj )�”}”(hŒ**ppi**”h]”hŒppi”…”�”}”(hjHeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.eubhŒ may contain fewer entries than ”…”�”}”(hj.eh²hh³Nh´Nubj )�”}”(hŒ **n_ports**”h]”hŒn_ports”…”�”}”(hjZeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.eubhŒ7. The last entry will be used for the remaining ports.”…”�”}”(hj.eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M2hj*eubhì)�”}”(hŒ2LOCKING: Inherited from calling layer (may sleep).”h]”hŒ2LOCKING: Inherited from calling layer (may sleep).”…”�”}”(hjseh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M7hj*eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jreh´M2hjBdubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjŠeh]”hŒReturn”…”�”}”(hjŒeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjˆeubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M:hjBdubhì)�”}”(hŒ.Allocate ATA host on success, NULL on failure.”h]”hŒ.Allocate ATA host on success, NULL on failure.”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M7hjBdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_host_start (C function)”Œc.ata_host_start”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_host_start (struct ata_host *host)”h]”j")�”}”(hŒ)int ata_host_start(struct ata_host *host)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÏeh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjËeh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M£ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjËeh²hh³jÝeh´M£ubj�)�”}”(hŒata_host_start”h]”j[)�”}”(hŒata_host_start”h]”hŒata_host_start”…”�”}”(hjðeh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjìeubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjËeh²hh³jÝeh´M£ubjª)�”}”(hŒ(struct ata_host *host)”h]”j°)�”}”(hŒstruct ata_host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjfubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjfubh)�”}”(hhh]”j[)�”}”(hŒata_host”h]”hŒata_host”…”�”}”(hj*fh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj'fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j,fŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjòesbŒc.ata_host_start”†”asbuh1hhjfubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJfh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjfubj)�”}”(hjS h]”hŒ*”…”�”}”(hjXfh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjfubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjefh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjfubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjËeh²hh³jÝeh´M£ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÇeh²hh³jÝeh´M£ubah}”(h]”jÂeah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÝeh´M£hjÄeh²hubj)�”}”(hhh]”hì)�”}”(hŒ%start and freeze ports of an ATA host”h]”hŒ%start and freeze ports of an ATA host”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M£hjŒfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄeh²hh³jÝeh´M£ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j§fj1j§fj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXý**Parameters** ``struct ata_host *host`` ATA host to start ports for **Description** Start and then freeze ports of **host**. Started status is recorded in host->flags, so this function can be called multiple times. Ports are guaranteed to get started only once. If host->ops is not initialized yet, it is set to the first non-dummy port ops. LOCKING: Inherited from calling layer (may sleep). **Return** 0 if all ports are started successfully, -errno otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj±fh]”hŒ Parameters”…”�”}”(hj³fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¯fubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M§hj«fubjœ)�”}”(hhh]”j¡)�”}”(hŒ6``struct ata_host *host`` ATA host to start ports for ”h]”(j§)�”}”(hŒ``struct ata_host *host``”h]”j\)�”}”(hjÐfh]”hŒstruct ata_host *host”…”�”}”(hjÒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÎfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¤hjÊfubj·)�”}”(hhh]”hì)�”}”(hŒATA host to start ports for”h]”hŒATA host to start ports for”…”�”}”(hjéfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jåfh´M¤hjæfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÊfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jåfh´M¤hjÇfubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj«fubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj gh]”hŒ Description”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj gubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¦hj«fubj)�”}”(hX9Start and then freeze ports of **host**. Started status is recorded in host->flags, so this function can be called multiple times. Ports are guaranteed to get started only once. If host->ops is not initialized yet, it is set to the first non-dummy port ops. LOCKING: Inherited from calling layer (may sleep). ”h]”(hì)�”}”(hXStart and then freeze ports of **host**. Started status is recorded in host->flags, so this function can be called multiple times. Ports are guaranteed to get started only once. If host->ops is not initialized yet, it is set to the first non-dummy port ops.”h]”(hŒStart and then freeze ports of ”…”�”}”(hj%gh²hh³Nh´Nubj )�”}”(hŒ**host**”h]”hŒhost”…”�”}”(hj-gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%gubhŒÝ. Started status is recorded in host->flags, so this function can be called multiple times. Ports are guaranteed to get started only once. If host->ops is not initialized yet, it is set to the first non-dummy port ops.”…”�”}”(hj%gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¥hj!gubhì)�”}”(hŒ2LOCKING: Inherited from calling layer (may sleep).”h]”hŒ2LOCKING: Inherited from calling layer (may sleep).”…”�”}”(hjFgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M«hj!gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jEgh´M¥hj«fubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj]gh]”hŒReturn”…”�”}”(hj_gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[gubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M®hj«fubhì)�”}”(hŒ:0 if all ports are started successfully, -errno otherwise.”h]”hŒ:0 if all ports are started successfully, -errno otherwise.”…”�”}”(hjsgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¯hj«fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_host_init (C function)”Œc.ata_host_init”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ_void ata_host_init (struct ata_host *host, struct device *dev, struct ata_port_operations *ops)”h]”j")�”}”(hŒ^void ata_host_init(struct ata_host *host, struct device *dev, struct ata_port_operations *ops)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢gh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjžgh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Môubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±gh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjžgh²hh³j°gh´Môubj�)�”}”(hŒ ata_host_init”h]”j[)�”}”(hŒ ata_host_init”h]”hŒ ata_host_init”…”�”}”(hjÃgh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¿gubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjžgh²hh³j°gh´Môubjª)�”}”(hŒL(struct ata_host *host, struct device *dev, struct ata_port_operations *ops)”h]”(j°)�”}”(hŒstruct ata_host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjßgh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÛgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛgubh)�”}”(hhh]”j[)�”}”(hŒata_host”h]”hŒata_host”…”�”}”(hjýgh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjúgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÿgŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÅgsbŒc.ata_host_init”†”asbuh1hhjÛgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛgubj)�”}”(hjS h]”hŒ*”…”�”}”(hj+hh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÛgubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hj8hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÛgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj×gubj°)�”}”(hŒstruct device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjQhh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjMhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMhubh)�”}”(hhh]”j[)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjohh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjlhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jqhŒmodname”NŒ classname”Njwjz)�”}”j}]”jhŒc.ata_host_init”†”asbuh1hhjMhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMhubj)�”}”(hjS h]”hŒ*”…”�”}”(hj›hh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjMhubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¨hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjMhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj×gubj°)�”}”(hŒstruct ata_port_operations *ops”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÁhh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj½hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½hubh)�”}”(hhh]”j[)�”}”(hŒata_port_operations”h]”hŒata_port_operations”…”�”}”(hjßhh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÜhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jáhŒmodname”NŒ classname”Njwjz)�”}”j}]”jhŒc.ata_host_init”†”asbuh1hhj½hubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½hubj)�”}”(hjS h]”hŒ*”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj½hubj[)�”}”(hŒops”h]”hŒops”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj½hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj×gubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjžgh²hh³j°gh´Môubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjšgh²hh³j°gh´Môubah}”(h]”j•gah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j°gh´Môhj—gh²hubj)�”}”(hhh]”hì)�”}”(hŒ.Initialize a host struct for sas (ipr, libsas)”h]”hŒ.Initialize a host struct for sas (ipr, libsas)”…”�”}”(hjBih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Môhj?ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—gh²hh³j°gh´Môubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jZij1jZij2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒ£**Parameters** ``struct ata_host *host`` host to initialize ``struct device *dev`` device host is attached to ``struct ata_port_operations *ops`` port_ops”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjdih]”hŒ Parameters”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjbiubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Møhj^iubjœ)�”}”(hhh]”(j¡)�”}”(hŒ-``struct ata_host *host`` host to initialize ”h]”(j§)�”}”(hŒ``struct ata_host *host``”h]”j\)�”}”(hjƒih]”hŒstruct ata_host *host”…”�”}”(hj…ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj�iubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mõhj}iubj·)�”}”(hhh]”hì)�”}”(hŒhost to initialize”h]”hŒhost to initialize”…”�”}”(hjœih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j˜ih´Mõhj™iubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj}iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j˜ih´Mõhjziubj¡)�”}”(hŒ2``struct device *dev`` device host is attached to ”h]”(j§)�”}”(hŒ``struct device *dev``”h]”j\)�”}”(hj¼ih]”hŒstruct device *dev”…”�”}”(hj¾ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjºiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Möhj¶iubj·)�”}”(hhh]”hì)�”}”(hŒdevice host is attached to”h]”hŒdevice host is attached to”…”�”}”(hjÕih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÑih´MöhjÒiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¶iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÑih´Möhjziubj¡)�”}”(hŒ,``struct ata_port_operations *ops`` port_ops”h]”(j§)�”}”(hŒ#``struct ata_port_operations *ops``”h]”j\)�”}”(hjõih]”hŒstruct ata_port_operations *ops”…”�”}”(hj÷ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjóiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Møhjïiubj·)�”}”(hhh]”hì)�”}”(hŒport_ops”h]”hŒport_ops”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M÷hj jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjïiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j jh´Møhjziubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj^iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_host_register (C function)”Œc.ata_host_register”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒSint ata_host_register (struct ata_host *host, const struct scsi_host_template *sht)”h]”j")�”}”(hŒRint ata_host_register(struct ata_host *host, const struct scsi_host_template *sht)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjOjh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjKjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjKjh²hh³j]jh´M4ubj�)�”}”(hŒata_host_register”h]”j[)�”}”(hŒata_host_register”h]”hŒata_host_register”…”�”}”(hjpjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjljubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjKjh²hh³j]jh´M4ubjª)�”}”(hŒ=(struct ata_host *host, const struct scsi_host_template *sht)”h]”(j°)�”}”(hŒstruct ata_host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŒjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjˆjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆjubh)�”}”(hhh]”j[)�”}”(hŒata_host”h]”hŒata_host”…”�”}”(hjªjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj§jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¬jŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjrjsbŒc.ata_host_register”†”asbuh1hhjˆjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆjubj)�”}”(hjS h]”hŒ*”…”�”}”(hjØjh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjˆjubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjåjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjˆjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj„jubj°)�”}”(hŒ$const struct scsi_host_template *sht”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjþjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjújubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjújubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjújubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjújubh)�”}”(hhh]”j[)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hj7kh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj4kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j9kŒmodname”NŒ classname”Njwjz)�”}”j}]”jÆjŒc.ata_host_register”†”asbuh1hhjújubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUkh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjújubj)�”}”(hjS h]”hŒ*”…”�”}”(hjckh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjújubj[)�”}”(hŒsht”h]”hŒsht”…”�”}”(hjpkh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjújubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj„jubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjKjh²hh³j]jh´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjGjh²hh³j]jh´M4ubah}”(h]”jBjah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j]jh´M4hjDjh²hubj)�”}”(hhh]”hì)�”}”(hŒregister initialized ATA host”h]”hŒregister initialized ATA host”…”�”}”(hjškh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M4hj—kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDjh²hh³j]jh´M4ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j²kj1j²kj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXæ**Parameters** ``struct ata_host *host`` ATA host to register ``const struct scsi_host_template *sht`` template for SCSI host **Description** Register initialized ATA host. **host** is allocated using ata_host_alloc() and fully initialized by LLD. This function starts ports, registers **host** with ATA and SCSI layers and probe registered devices. LOCKING: Inherited from calling layer (may sleep). **Return** 0 on success, -errno otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¼kh]”hŒ Parameters”…”�”}”(hj¾kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjºkubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M8hj¶kubjœ)�”}”(hhh]”(j¡)�”}”(hŒ/``struct ata_host *host`` ATA host to register ”h]”(j§)�”}”(hŒ``struct ata_host *host``”h]”j\)�”}”(hjÛkh]”hŒstruct ata_host *host”…”�”}”(hjÝkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÙkubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M5hjÕkubj·)�”}”(hhh]”hì)�”}”(hŒATA host to register”h]”hŒATA host to register”…”�”}”(hjôkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jðkh´M5hjñkubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÕkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jðkh´M5hjÒkubj¡)�”}”(hŒ@``const struct scsi_host_template *sht`` template for SCSI host ”h]”(j§)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”j\)�”}”(hjlh]”hŒ$const struct scsi_host_template *sht”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M6hjlubj·)�”}”(hhh]”hì)�”}”(hŒtemplate for SCSI host”h]”hŒtemplate for SCSI host”…”�”}”(hj-lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)lh´M6hj*lubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j)lh´M6hjÒkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¶kubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjOlh]”hŒ Description”…”�”}”(hjQlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjMlubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M8hj¶kubj)�”}”(hXRegister initialized ATA host. **host** is allocated using ata_host_alloc() and fully initialized by LLD. This function starts ports, registers **host** with ATA and SCSI layers and probe registered devices. LOCKING: Inherited from calling layer (may sleep). ”h]”(hì)�”}”(hŒÑRegister initialized ATA host. **host** is allocated using ata_host_alloc() and fully initialized by LLD. This function starts ports, registers **host** with ATA and SCSI layers and probe registered devices.”h]”(hŒ Register initialized ATA host. ”…”�”}”(hjilh²hh³Nh´Nubj )�”}”(hŒ**host**”h]”hŒhost”…”�”}”(hjqlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjilubhŒj is allocated using ata_host_alloc() and fully initialized by LLD. This function starts ports, registers ”…”�”}”(hjilh²hh³Nh´Nubj )�”}”(hŒ**host**”h]”hŒhost”…”�”}”(hjƒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjilubhŒ7 with ATA and SCSI layers and probe registered devices.”…”�”}”(hjilh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M7hjelubhì)�”}”(hŒ2LOCKING: Inherited from calling layer (may sleep).”h]”hŒ2LOCKING: Inherited from calling layer (may sleep).”…”�”}”(hjœlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M<hjelubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j›lh´M7hj¶kubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj³lh]”hŒReturn”…”�”}”(hjµlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±lubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M?hj¶kubhì)�”}”(hŒ0 on success, -errno otherwise.”h]”hŒ0 on success, -errno otherwise.”…”�”}”(hjÉlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M@hj¶kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_host_activate (C function)”Œc.ata_host_activate”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ�int ata_host_activate (struct ata_host *host, int irq, irq_handler_t irq_handler, unsigned long irq_flags, const struct scsi_host_template *sht)”h]”j")�”}”(hŒ�int ata_host_activate(struct ata_host *host, int irq, irq_handler_t irq_handler, unsigned long irq_flags, const struct scsi_host_template *sht)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjølh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjôlh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŠubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôlh²hh³jmh´MŠubj�)�”}”(hŒata_host_activate”h]”j[)�”}”(hŒata_host_activate”h]”hŒata_host_activate”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjmubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjôlh²hh³jmh´MŠubjª)�”}”(hŒz(struct ata_host *host, int irq, irq_handler_t irq_handler, unsigned long irq_flags, const struct scsi_host_template *sht)”h]”(j°)�”}”(hŒstruct ata_host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj5mh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj1mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1mubh)�”}”(hhh]”j[)�”}”(hŒata_host”h]”hŒata_host”…”�”}”(hjSmh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjPmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jUmŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjmsbŒc.ata_host_activate”†”asbuh1hhj1mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj1mubj)�”}”(hjS h]”hŒ*”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj1mubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjŽmh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj1mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj-mubj°)�”}”(hŒint irq”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj§mh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj£mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£mubj[)�”}”(hŒirq”h]”hŒirq”…”�”}”(hjÃmh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj£mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj-mubj°)�”}”(hŒirq_handler_t irq_handler”h]”(h)�”}”(hhh]”j[)�”}”(hŒ irq_handler_t”h]”hŒ irq_handler_t”…”�”}”(hjßmh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÜmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jámŒmodname”NŒ classname”Njwjz)�”}”j}]”jomŒc.ata_host_activate”†”asbuh1hhjØmubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýmh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØmubj[)�”}”(hŒ irq_handler”h]”hŒ irq_handler”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjØmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj-mubj°)�”}”(hŒunsigned long irq_flags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj$nh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj nubj²)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj@nh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj nubj[)�”}”(hŒ irq_flags”h]”hŒ irq_flags”…”�”}”(hj\nh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj-mubj°)�”}”(hŒ$const struct scsi_host_template *sht”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjunh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjqnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqnubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjqnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqnubh)�”}”(hhh]”j[)�”}”(hŒscsi_host_template”h]”hŒscsi_host_template”…”�”}”(hj®nh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj«nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j°nŒmodname”NŒ classname”Njwjz)�”}”j}]”jomŒc.ata_host_activate”†”asbuh1hhjqnubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌnh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqnubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÚnh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjqnubj[)�”}”(hŒsht”h]”hŒsht”…”�”}”(hjçnh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjqnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj-mubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjôlh²hh³jmh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjðlh²hh³jmh´MŠubah}”(h]”jëlah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jmh´MŠhjílh²hubj)�”}”(hhh]”hì)�”}”(hŒ'start host, request IRQ and register it”h]”hŒ'start host, request IRQ and register it”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŠhjoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjílh²hh³jmh´MŠubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j)oj1j)oj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX[**Parameters** ``struct ata_host *host`` target ATA host ``int irq`` IRQ to request ``irq_handler_t irq_handler`` irq_handler used when requesting IRQ ``unsigned long irq_flags`` irq_flags used when requesting IRQ ``const struct scsi_host_template *sht`` scsi_host_template to use when registering the host **Description** After allocating an ATA host and initializing it, most libata LLDs perform three steps to activate the host - start host, request IRQ and register it. This helper takes necessary arguments and performs the three steps in one go. An invalid IRQ skips the IRQ registration and expects the host to have set polling mode on the port. In this case, **irq_handler** should be NULL. LOCKING: Inherited from calling layer (may sleep). **Return** 0 on success, -errno otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj3oh]”hŒ Parameters”…”�”}”(hj5oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1oubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŽhj-oubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_host *host`` target ATA host ”h]”(j§)�”}”(hŒ``struct ata_host *host``”h]”j\)�”}”(hjRoh]”hŒstruct ata_host *host”…”�”}”(hjToh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjPoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M‹hjLoubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATA host”h]”hŒtarget ATA host”…”�”}”(hjkoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jgoh´M‹hjhoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjLoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jgoh´M‹hjIoubj¡)�”}”(hŒ``int irq`` IRQ to request ”h]”(j§)�”}”(hŒ ``int irq``”h]”j\)�”}”(hj‹oh]”hŒint irq”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‰oubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŒhj…oubj·)�”}”(hhh]”hì)�”}”(hŒIRQ to request”h]”hŒIRQ to request”…”�”}”(hj¤oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j oh´MŒhj¡oubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj…oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j oh´MŒhjIoubj¡)�”}”(hŒC``irq_handler_t irq_handler`` irq_handler used when requesting IRQ ”h]”(j§)�”}”(hŒ``irq_handler_t irq_handler``”h]”j\)�”}”(hjÄoh]”hŒirq_handler_t irq_handler”…”�”}”(hjÆoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÂoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M�hj¾oubj·)�”}”(hhh]”hì)�”}”(hŒ$irq_handler used when requesting IRQ”h]”hŒ$irq_handler used when requesting IRQ”…”�”}”(hjÝoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙoh´M�hjÚoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¾oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÙoh´M�hjIoubj¡)�”}”(hŒ?``unsigned long irq_flags`` irq_flags used when requesting IRQ ”h]”(j§)�”}”(hŒ``unsigned long irq_flags``”h]”j\)�”}”(hjýoh]”hŒunsigned long irq_flags”…”�”}”(hjÿoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjûoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MŽhj÷oubj·)�”}”(hhh]”hì)�”}”(hŒ"irq_flags used when requesting IRQ”h]”hŒ"irq_flags used when requesting IRQ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jph´MŽhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj÷oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jph´MŽhjIoubj¡)�”}”(hŒ]``const struct scsi_host_template *sht`` scsi_host_template to use when registering the host ”h]”(j§)�”}”(hŒ(``const struct scsi_host_template *sht``”h]”j\)�”}”(hj6ph]”hŒ$const struct scsi_host_template *sht”…”�”}”(hj8ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj4pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M�hj0pubj·)�”}”(hhh]”hì)�”}”(hŒ3scsi_host_template to use when registering the host”h]”hŒ3scsi_host_template to use when registering the host”…”�”}”(hjOph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKph´M�hjLpubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj0pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jKph´M�hjIoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj-oubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjqph]”hŒ Description”…”�”}”(hjsph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjopubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M‘hj-oubj)�”}”(hX®After allocating an ATA host and initializing it, most libata LLDs perform three steps to activate the host - start host, request IRQ and register it. This helper takes necessary arguments and performs the three steps in one go. An invalid IRQ skips the IRQ registration and expects the host to have set polling mode on the port. In this case, **irq_handler** should be NULL. LOCKING: Inherited from calling layer (may sleep). ”h]”(hì)�”}”(hŒåAfter allocating an ATA host and initializing it, most libata LLDs perform three steps to activate the host - start host, request IRQ and register it. This helper takes necessary arguments and performs the three steps in one go.”h]”hŒåAfter allocating an ATA host and initializing it, most libata LLDs perform three steps to activate the host - start host, request IRQ and register it. This helper takes necessary arguments and performs the three steps in one go.”…”�”}”(hj‹ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M�hj‡pubhì)�”}”(hŒ’An invalid IRQ skips the IRQ registration and expects the host to have set polling mode on the port. In this case, **irq_handler** should be NULL.”h]”(hŒsAn invalid IRQ skips the IRQ registration and expects the host to have set polling mode on the port. In this case, ”…”�”}”(hjšph²hh³Nh´Nubj )�”}”(hŒ**irq_handler**”h]”hŒ irq_handler”…”�”}”(hj¢ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjšpubhŒ should be NULL.”…”�”}”(hjšph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M•hj‡pubhì)�”}”(hŒ2LOCKING: Inherited from calling layer (may sleep).”h]”hŒ2LOCKING: Inherited from calling layer (may sleep).”…”�”}”(hj»ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M™hj‡pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j™ph´M�hj-oubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÒph]”hŒReturn”…”�”}”(hjÔph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÐpubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mœhj-oubhì)�”}”(hŒ0 on success, -errno otherwise.”h]”hŒ0 on success, -errno otherwise.”…”�”}”(hjèph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M�hj-oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_host_detach (C function)”Œc.ata_host_detach”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void ata_host_detach (struct ata_host *host)”h]”j")�”}”(hŒ+void ata_host_detach(struct ata_host *host)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjqh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqh²hh³j%qh´M"ubj�)�”}”(hŒata_host_detach”h]”j[)�”}”(hŒata_host_detach”h]”hŒata_host_detach”…”�”}”(hj8qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj4qubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjqh²hh³j%qh´M"ubjª)�”}”(hŒ(struct ata_host *host)”h]”j°)�”}”(hŒstruct ata_host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjPqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaqh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPqubh)�”}”(hhh]”j[)�”}”(hŒata_host”h]”hŒata_host”…”�”}”(hjrqh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjoqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jtqŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj:qsbŒc.ata_host_detach”†”asbuh1hhjPqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPqubj)�”}”(hjS h]”hŒ*”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjPqubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hj­qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjPqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjLqubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjqh²hh³j%qh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjqh²hh³j%qh´M"ubah}”(h]”j qah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j%qh´M"hj qh²hubj)�”}”(hhh]”hì)�”}”(hŒDetach all ports of an ATA host”h]”hŒDetach all ports of an ATA host”…”�”}”(hj×qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M"hjÔqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj qh²hh³j%qh´M"ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jïqj1jïqj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hŒ¦**Parameters** ``struct ata_host *host`` Host to detach **Description** Detach all ports of **host**. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjùqh]”hŒ Parameters”…”�”}”(hjûqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷qubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M&hjóqubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_host *host`` Host to detach ”h]”(j§)�”}”(hŒ``struct ata_host *host``”h]”j\)�”}”(hjrh]”hŒstruct ata_host *host”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M#hjrubj·)�”}”(hhh]”hì)�”}”(hŒHost to detach”h]”hŒHost to detach”…”�”}”(hj1rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-rh´M#hj.rubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j-rh´M#hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóqubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjSrh]”hŒ Description”…”�”}”(hjUrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQrubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M%hjóqubj)�”}”(hŒJDetach all ports of **host**. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒDetach all ports of **host**.”h]”(hŒDetach all ports of ”…”�”}”(hjmrh²hh³Nh´Nubj )�”}”(hŒ**host**”h]”hŒhost”…”�”}”(hjurh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmrubhŒ.”…”�”}”(hjmrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M$hjirubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjŽrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M&hjirubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�rh´M$hjóqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_pci_remove_one (C function)”Œc.ata_pci_remove_one”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.void ata_pci_remove_one (struct pci_dev *pdev)”h]”j")�”}”(hŒ-void ata_pci_remove_one(struct pci_dev *pdev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃrh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¿rh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M9ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¿rh²hh³jÑrh´M9ubj�)�”}”(hŒata_pci_remove_one”h]”j[)�”}”(hŒata_pci_remove_one”h]”hŒata_pci_remove_one”…”�”}”(hjärh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjàrubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¿rh²hh³jÑrh´M9ubjª)�”}”(hŒ(struct pci_dev *pdev)”h]”j°)�”}”(hŒstruct pci_dev *pdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjürubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjürubh)�”}”(hhh]”j[)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j sŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjærsbŒc.ata_pci_remove_one”†”asbuh1hhjürubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjürubj)�”}”(hjS h]”hŒ*”…”�”}”(hjLsh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjürubj[)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjYsh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjürubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjørubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¿rh²hh³jÑrh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj»rh²hh³jÑrh´M9ubah}”(h]”j¶rah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÑrh´M9hj¸rh²hubj)�”}”(hhh]”hì)�”}”(hŒ%PCI layer callback for device removal”h]”hŒ%PCI layer callback for device removal”…”�”}”(hjƒsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M9hj€sh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸rh²hh³jÑrh´M9ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j›sj1j›sj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX>**Parameters** ``struct pci_dev *pdev`` PCI device that was removed **Description** PCI layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres. LOCKING: Inherited from PCI layer (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¥sh]”hŒ Parameters”…”�”}”(hj§sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£subah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M=hjŸsubjœ)�”}”(hhh]”j¡)�”}”(hŒ5``struct pci_dev *pdev`` PCI device that was removed ”h]”(j§)�”}”(hŒ``struct pci_dev *pdev``”h]”j\)�”}”(hjÄsh]”hŒstruct pci_dev *pdev”…”�”}”(hjÆsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÂsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M:hj¾subj·)�”}”(hhh]”hì)�”}”(hŒPCI device that was removed”h]”hŒPCI device that was removed”…”�”}”(hjÝsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙsh´M:hjÚsubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¾subeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÙsh´M:hj»subah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŸsubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÿsh]”hŒ Description”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjýsubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M<hjŸsubj)�”}”(hŒÌPCI layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres. LOCKING: Inherited from PCI layer (may sleep).”h]”(hì)�”}”(hŒœPCI layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres.”h]”hŒœPCI layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M;hjtubhì)�”}”(hŒ.LOCKING: Inherited from PCI layer (may sleep).”h]”hŒ.LOCKING: Inherited from PCI layer (may sleep).”…”�”}”(hj(th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M?hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'th´M;hjŸsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ata_platform_remove_one (C function)”Œc.ata_platform_remove_one”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ;void ata_platform_remove_one (struct platform_device *pdev)”h]”j")�”}”(hŒ:void ata_platform_remove_one(struct platform_device *pdev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj]th²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjYth²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¼ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjYth²hh³jkth´M¼ubj�)�”}”(hŒata_platform_remove_one”h]”j[)�”}”(hŒata_platform_remove_one”h]”hŒata_platform_remove_one”…”�”}”(hj~th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjztubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjYth²hh³jkth´M¼ubjª)�”}”(hŒ(struct platform_device *pdev)”h]”j°)�”}”(hŒstruct platform_device *pdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjšth²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj–tubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj–tubh)�”}”(hhh]”j[)�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj¸th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jºtŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj€tsbŒc.ata_platform_remove_one”†”asbuh1hhj–tubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj–tubj)�”}”(hjS h]”hŒ*”…”�”}”(hjæth²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj–tubj[)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjóth²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj–tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj’tubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjYth²hh³jkth´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjUth²hh³jkth´M¼ubah}”(h]”jPtah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jkth´M¼hjRth²hubj)�”}”(hhh]”hì)�”}”(hŒ*Platform layer callback for device removal”h]”hŒ*Platform layer callback for device removal”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¼hjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRth²hh³jkth´M¼ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j5uj1j5uj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXU**Parameters** ``struct platform_device *pdev`` Platform device that was removed **Description** Platform layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres. LOCKING: Inherited from platform layer (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj?uh]”hŒ Parameters”…”�”}”(hjAuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÀhj9uubjœ)�”}”(hhh]”j¡)�”}”(hŒB``struct platform_device *pdev`` Platform device that was removed ”h]”(j§)�”}”(hŒ ``struct platform_device *pdev``”h]”j\)�”}”(hj^uh]”hŒstruct platform_device *pdev”…”�”}”(hj`uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj\uubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M½hjXuubj·)�”}”(hhh]”hì)�”}”(hŒ Platform device that was removed”h]”hŒ Platform device that was removed”…”�”}”(hjwuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jsuh´M½hjtuubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjXuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jsuh´M½hjUuubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj9uubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj™uh]”hŒ Description”…”�”}”(hj›uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj—uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¿hj9uubj)�”}”(hŒÖPlatform layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres. LOCKING: Inherited from platform layer (may sleep).”h]”(hì)�”}”(hŒ¡Platform layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres.”h]”hŒ¡Platform layer indicates to libata via this hook that hot-unplug or module unload event has occurred. Detach all ports. Resource release is handled via devres.”…”�”}”(hj³uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M¾hj¯uubhì)�”}”(hŒ3LOCKING: Inherited from platform layer (may sleep).”h]”hŒ3LOCKING: Inherited from platform layer (may sleep).”…”�”}”(hjÂuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MÂhj¯uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁuh´M¾hj9uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_msleep (C function)”Œ c.ata_msleep”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void ata_msleep (struct ata_port *ap, unsigned int msecs)”h]”j")�”}”(hŒ8void ata_msleep(struct ata_port *ap, unsigned int msecs)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷uh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjóuh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjóuh²hh³jvh´Mubj�)�”}”(hŒ ata_msleep”h]”j[)�”}”(hŒ ata_msleep”h]”hŒ ata_msleep”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjvubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjóuh²hh³jvh´Mubjª)�”}”(hŒ)(struct ata_port *ap, unsigned int msecs)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj4vh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj0vubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0vubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjRvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjOvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jTvŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjvsbŒ c.ata_msleep”†”asbuh1hhj0vubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0vubj)�”}”(hjS h]”hŒ*”…”�”}”(hj€vh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj0vubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj0vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj,vubj°)�”}”(hŒunsigned int msecs”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦vh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¢vubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢vubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂvh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¢vubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢vubj[)�”}”(hŒmsecs”h]”hŒmsecs”…”�”}”(hjÞvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¢vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj,vubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjóuh²hh³jvh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjïuh²hh³jvh´Mubah}”(h]”jêuah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jvh´Mhjìuh²hubj)�”}”(hhh]”hì)�”}”(hŒATA EH owner aware msleep”h]”hŒATA EH owner aware msleep”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìuh²hh³jvh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j wj1j wj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hXÖ**Parameters** ``struct ata_port *ap`` ATA port to attribute the sleep to ``unsigned int msecs`` duration to sleep in milliseconds **Description** Sleeps **msecs**. If the current task is owner of **ap**'s EH, the ownership is released before going to sleep and reacquired after the sleep is complete. IOW, other ports sharing the **ap->host** will be allowed to own the EH while this task is sleeping. LOCKING: Might sleep.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj*wh]”hŒ Parameters”…”�”}”(hj,wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(wubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj$wubjœ)�”}”(hhh]”(j¡)�”}”(hŒ;``struct ata_port *ap`` ATA port to attribute the sleep to ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjIwh]”hŒstruct ata_port *ap”…”�”}”(hjKwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjGwubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjCwubj·)�”}”(hhh]”hì)�”}”(hŒ"ATA port to attribute the sleep to”h]”hŒ"ATA port to attribute the sleep to”…”�”}”(hjbwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j^wh´Mhj_wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjCwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j^wh´Mhj@wubj¡)�”}”(hŒ9``unsigned int msecs`` duration to sleep in milliseconds ”h]”(j§)�”}”(hŒ``unsigned int msecs``”h]”j\)�”}”(hj‚wh]”hŒunsigned int msecs”…”�”}”(hj„wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj|wubj·)�”}”(hhh]”hì)�”}”(hŒ!duration to sleep in milliseconds”h]”hŒ!duration to sleep in milliseconds”…”�”}”(hj›wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—wh´Mhj˜wubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—wh´Mhj@wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj$wubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj½wh]”hŒ Description”…”�”}”(hj¿wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»wubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´Mhj$wubj)�”}”(hXSleeps **msecs**. If the current task is owner of **ap**'s EH, the ownership is released before going to sleep and reacquired after the sleep is complete. IOW, other ports sharing the **ap->host** will be allowed to own the EH while this task is sleeping. LOCKING: Might sleep.”h]”(hì)�”}”(hXSleeps **msecs**. If the current task is owner of **ap**'s EH, the ownership is released before going to sleep and reacquired after the sleep is complete. IOW, other ports sharing the **ap->host** will be allowed to own the EH while this task is sleeping.”h]”(hŒSleeps ”…”�”}”(hj×wh²hh³Nh´Nubj )�”}”(hŒ **msecs**”h]”hŒmsecs”…”�”}”(hjßwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×wubhŒ#. If the current task is owner of ”…”�”}”(hj×wh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjñwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×wubhŒƒâ€™s EH, the ownership is released before going to sleep and reacquired after the sleep is complete. IOW, other ports sharing the ”…”�”}”(hj×wh²hh³Nh´Nubj )�”}”(hŒ **ap->host**”h]”hŒap->host”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×wubhŒ; will be allowed to own the EH while this task is sleeping.”…”�”}”(hj×wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjÓwubhì)�”}”(hŒLOCKING: Might sleep.”h]”hŒLOCKING: Might sleep.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MhjÓwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jxh´Mhj$wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_wait_register (C function)”Œc.ata_wait_register”hNt”auh1jhjôh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ~u32 ata_wait_register (struct ata_port *ap, void __iomem *reg, u32 mask, u32 val, unsigned int interval, unsigned int timeout)”h]”j")�”}”(hŒ}u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val, unsigned int interval, unsigned int timeout)”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjTxh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jVxŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_wait_register”sbŒc.ata_wait_register”†”asbuh1hhjMxh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvxh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMxh²hh³juxh´M0ubj�)�”}”(hŒata_wait_register”h]”j[)�”}”(hjrxh]”hŒata_wait_register”…”�”}”(hjˆxh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj„xubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjMxh²hh³juxh´M0ubjª)�”}”(hŒh(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val, unsigned int interval, unsigned int timeout)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj£xh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjŸxubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°xh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸxubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjÁxh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¾xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÃxŒmodname”NŒ classname”Njwjz)�”}”j}]”jpxŒc.ata_wait_register”†”asbuh1hhjŸxubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßxh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸxubj)�”}”(hjS h]”hŒ*”…”�”}”(hjíxh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjŸxubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjúxh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŸxubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubj°)�”}”(hŒvoid __iomem *reg”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j¾a•h"]”h$]”h&]”uh1j±hjyubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!yh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjyubhŒ__iomem”…”�”}”(hjyh²hh³Nh´Nubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3yh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjyubj)�”}”(hjS h]”hŒ*”…”�”}”(hjAyh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjyubj[)�”}”(hŒreg”h]”hŒreg”…”�”}”(hjNyh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubj°)�”}”(hŒu32 mask”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjjyh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjgyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jlyŒmodname”NŒ classname”Njwjz)�”}”j}]”jpxŒc.ata_wait_register”†”asbuh1hhjcyubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjcyubj[)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj–yh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjcyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubj°)�”}”(hŒu32 val”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj²yh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¯yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j´yŒmodname”NŒ classname”Njwjz)�”}”j}]”jpxŒc.ata_wait_register”†”asbuh1hhj«yubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj«yubj[)�”}”(hŒval”h]”hŒval”…”�”}”(hjÞyh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj«yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubj°)�”}”(hŒunsigned int interval”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj÷yh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjóyubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjóyubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjóyubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!zh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjóyubj[)�”}”(hŒinterval”h]”hŒinterval”…”�”}”(hj/zh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjóyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubj°)�”}”(hŒunsigned int timeout”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjHzh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjDzubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVzh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjDzubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjdzh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjDzubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrzh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjDzubj[)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hj€zh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjDzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›xubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjMxh²hh³juxh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjIxh²hh³juxh´M0ubah}”(h]”jDxah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³juxh´M0hjFxh²hubj)�”}”(hhh]”hì)�”}”(hŒ!wait until register value changes”h]”hŒ!wait until register value changes”…”�”}”(hjªzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M0hj§zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjFxh²hh³juxh´M0ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÂzj1jÂzj2‰j3‰j4‰uh1jh²hhjôh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_port *ap`` ATA port to wait register for, can be NULL ``void __iomem *reg`` IO-mapped register ``u32 mask`` Mask to apply to read register value ``u32 val`` Wait condition ``unsigned int interval`` polling interval in milliseconds ``unsigned int timeout`` timeout in milliseconds **Description** Waiting for some bits of register to change is a common operation for ATA controllers. This function reads 32bit LE IO-mapped register **reg** and tests for the following condition. (***reg** & mask) != val If the condition is met, it returns; otherwise, the process is repeated after **interval_msec** until timeout. LOCKING: Kernel thread context (may sleep) **Return** The final register value.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÌzh]”hŒ Parameters”…”�”}”(hjÎzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M4hjÆzubjœ)�”}”(hhh]”(j¡)�”}”(hŒC``struct ata_port *ap`` ATA port to wait register for, can be NULL ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjëzh]”hŒstruct ata_port *ap”…”�”}”(hjízh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjézubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M1hjåzubj·)�”}”(hhh]”hì)�”}”(hŒ*ATA port to wait register for, can be NULL”h]”hŒ*ATA port to wait register for, can be NULL”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j{h´M1hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjåzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j{h´M1hjâzubj¡)�”}”(hŒ)``void __iomem *reg`` IO-mapped register ”h]”(j§)�”}”(hŒ``void __iomem *reg``”h]”j\)�”}”(hj${h]”hŒvoid __iomem *reg”…”�”}”(hj&{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj"{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M2hj{ubj·)�”}”(hhh]”hì)�”}”(hŒIO-mapped register”h]”hŒIO-mapped register”…”�”}”(hj={h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9{h´M2hj:{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j9{h´M2hjâzubj¡)�”}”(hŒ2``u32 mask`` Mask to apply to read register value ”h]”(j§)�”}”(hŒ ``u32 mask``”h]”j\)�”}”(hj]{h]”hŒu32 mask”…”�”}”(hj_{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj[{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M3hjW{ubj·)�”}”(hhh]”hì)�”}”(hŒ$Mask to apply to read register value”h]”hŒ$Mask to apply to read register value”…”�”}”(hjv{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jr{h´M3hjs{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjW{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jr{h´M3hjâzubj¡)�”}”(hŒ``u32 val`` Wait condition ”h]”(j§)�”}”(hŒ ``u32 val``”h]”j\)�”}”(hj–{h]”hŒu32 val”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj”{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M4hj�{ubj·)�”}”(hhh]”hì)�”}”(hŒWait condition”h]”hŒWait condition”…”�”}”(hj¯{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j«{h´M4hj¬{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j«{h´M4hjâzubj¡)�”}”(hŒ;``unsigned int interval`` polling interval in milliseconds ”h]”(j§)�”}”(hŒ``unsigned int interval``”h]”j\)�”}”(hjÏ{h]”hŒunsigned int interval”…”�”}”(hjÑ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÍ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M5hjÉ{ubj·)�”}”(hhh]”hì)�”}”(hŒ polling interval in milliseconds”h]”hŒ polling interval in milliseconds”…”�”}”(hjè{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jä{h´M5hjå{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÉ{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jä{h´M5hjâzubj¡)�”}”(hŒ1``unsigned int timeout`` timeout in milliseconds ”h]”(j§)�”}”(hŒ``unsigned int timeout``”h]”j\)�”}”(hj|h]”hŒunsigned int timeout”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M6hj|ubj·)�”}”(hhh]”hì)�”}”(hŒtimeout in milliseconds”h]”hŒtimeout in milliseconds”…”�”}”(hj!|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|h´M6hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j|h´M6hjâzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÆzubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjC|h]”hŒ Description”…”�”}”(hjE|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjA|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M8hjÆzubj)�”}”(hXmWaiting for some bits of register to change is a common operation for ATA controllers. This function reads 32bit LE IO-mapped register **reg** and tests for the following condition. (***reg** & mask) != val If the condition is met, it returns; otherwise, the process is repeated after **interval_msec** until timeout. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hŒ¶Waiting for some bits of register to change is a common operation for ATA controllers. This function reads 32bit LE IO-mapped register **reg** and tests for the following condition.”h]”(hŒˆWaiting for some bits of register to change is a common operation for ATA controllers. This function reads 32bit LE IO-mapped register ”…”�”}”(hj]|h²hh³Nh´Nubj )�”}”(hŒ**reg**”h]”hŒreg”…”�”}”(hje|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]|ubhŒ' and tests for the following condition.”…”�”}”(hj]|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M7hjY|ubhì)�”}”(hŒ(***reg** & mask) != val”h]”(hŒ(”…”�”}”(hj~|h²hh³Nh´Nubj )�”}”(hŒ***reg**”h]”hŒ*reg”…”�”}”(hj†|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~|ubhŒ & mask) != val”…”�”}”(hj~|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M;hjY|ubhì)�”}”(hŒnIf the condition is met, it returns; otherwise, the process is repeated after **interval_msec** until timeout.”h]”(hŒNIf the condition is met, it returns; otherwise, the process is repeated after ”…”�”}”(hjŸ|h²hh³Nh´Nubj )�”}”(hŒ**interval_msec**”h]”hŒ interval_msec”…”�”}”(hj§|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŸ|ubhŒ until timeout.”…”�”}”(hjŸ|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M=hjY|ubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hjÀ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´M@hjY|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j}|h´M7hjÆzubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj×|h]”hŒReturn”…”�”}”(hjÙ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MChjÆzubhì)�”}”(hŒThe final register value.”h]”hŒThe final register value.”…”�”}”(hjí|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:587: ./drivers/ata/libata-core.c”h´MDhjÆzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjôh²hh³Nh´Nubeh}”(h]”Œlibata-library”ah ]”h"]”Œlibata library”ah$]”h&]”uh1hµhh·h²hh³hÊh´MIubh¶)�”}”(hhh]”(h»)�”}”(hŒlibata Core Internals”h]”hŒlibata Core Internals”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj }h²hh³hÊh´MOubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_phys_link (C function)”Œc.ata_dev_phys_link”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒlink** only when **dev** is on slave link. For all other cases, it's the same as **dev->link**. LOCKING: Don't care. **Return** Pointer to the found physical link.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjR~h]”hŒ Parameters”…”�”}”(hjT~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjP~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjL~ubjœ)�”}”(hhh]”j¡)�”}”(hŒC``struct ata_device *dev`` ATA device to look up physical link for ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjq~h]”hŒstruct ata_device *dev”…”�”}”(hjs~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjo~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhjk~ubj·)�”}”(hhh]”hì)�”}”(hŒ'ATA device to look up physical link for”h]”hŒ'ATA device to look up physical link for”…”�”}”(hjŠ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†~h´Mhj‡~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjk~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j†~h´Mhjh~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjL~ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¬~h]”hŒ Description”…”�”}”(hj®~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjª~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjL~ubj)�”}”(hŒÔLook up physical link which **dev** is attached to. Note that this is different from **dev->link** only when **dev** is on slave link. For all other cases, it's the same as **dev->link**. LOCKING: Don't care. ”h]”(hì)�”}”(hŒ½Look up physical link which **dev** is attached to. Note that this is different from **dev->link** only when **dev** is on slave link. For all other cases, it's the same as **dev->link**.”h]”(hŒLook up physical link which ”…”�”}”(hjÆ~h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÎ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ~ubhŒ3 is attached to. Note that this is different from ”…”�”}”(hjÆ~h²hh³Nh´Nubj )�”}”(hŒ **dev->link**”h]”hŒ dev->link”…”�”}”(hjà~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ~ubhŒ only when ”…”�”}”(hjÆ~h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjò~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ~ubhŒ< is on slave link. For all other cases, it’s the same as ”…”�”}”(hjÆ~h²hh³Nh´Nubj )�”}”(hŒ **dev->link**”h]”hŒ dev->link”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ~ubhŒ.”…”�”}”(hjÆ~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjÂ~ubhì)�”}”(hŒLOCKING: Don't care.”h]”hŒLOCKING: Don’t care.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjÂ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´MhjL~ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj4h]”hŒReturn”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M!hjL~ubhì)�”}”(hŒ#Pointer to the found physical link.”h]”hŒ#Pointer to the found physical link.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M"hjL~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_force_cbl (C function)”Œc.ata_force_cbl”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(void ata_force_cbl (struct ata_port *ap)”h]”j")�”}”(hŒ'void ata_force_cbl(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjuh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjuh²hh³j‡h´M2ubj�)�”}”(hŒ ata_force_cbl”h]”j[)�”}”(hŒ ata_force_cbl”h]”hŒ ata_force_cbl”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj–ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjuh²hh³j‡h´M2ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÖŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjœsbŒc.ata_force_cbl”†”asbuh1hhj²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj²ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj®ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjuh²hh³j‡h´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjqh²hh³j‡h´M2ubah}”(h]”jlah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j‡h´M2hjnh²hubj)�”}”(hhh]”hì)�”}”(hŒ*force cable type according to libata.force”h]”hŒ*force cable type according to libata.force”…”�”}”(hj9€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M2hj6€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnh²hh³j‡h´M2ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jQ€j1jQ€j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX‹**Parameters** ``struct ata_port *ap`` ATA port of interest **Description** Force cable type according to libata.force and whine about it. The last entry which has matching port number is used, so it can be specified as part of device force parameters. For example, both "a:40c,1.00:udma4" and "1.00:40c,udma4" have the same effect. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj[€h]”hŒ Parameters”…”�”}”(hj]€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjY€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M6hjU€ubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``struct ata_port *ap`` ATA port of interest ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjz€h]”hŒstruct ata_port *ap”…”�”}”(hj|€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjx€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M3hjt€ubj·)�”}”(hhh]”hì)�”}”(hŒATA port of interest”h]”hŒATA port of interest”…”�”}”(hj“€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�€h´M3hj�€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjt€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�€h´M3hjq€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjU€ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjµ€h]”hŒ Description”…”�”}”(hj·€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M5hjU€ubj)�”}”(hXForce cable type according to libata.force and whine about it. The last entry which has matching port number is used, so it can be specified as part of device force parameters. For example, both "a:40c,1.00:udma4" and "1.00:40c,udma4" have the same effect. LOCKING: EH context.”h]”(hì)�”}”(hXForce cable type according to libata.force and whine about it. The last entry which has matching port number is used, so it can be specified as part of device force parameters. For example, both "a:40c,1.00:udma4" and "1.00:40c,udma4" have the same effect.”h]”hX Force cable type according to libata.force and whine about it. The last entry which has matching port number is used, so it can be specified as part of device force parameters. For example, both “a:40c,1.00:udma4â€� and “1.00:40c,udma4â€� have the same effect.”…”�”}”(hjÏ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M4hjË€ubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjÞ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M:hjË€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÝ€h´M4hjU€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_force_pflags (C function)”Œc.ata_force_pflags”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void ata_force_pflags (struct ata_port *ap)”h]”j")�”}”(hŒ*void ata_force_pflags(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�h²hh³j!�h´MRubj�)�”}”(hŒata_force_pflags”h]”j[)�”}”(hŒata_force_pflags”h]”hŒata_force_pflags”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj0�ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj�h²hh³j!�h´MRubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjP�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjL�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL�ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjn�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjk�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jp�Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj6�sbŒc.ata_force_pflags”†”asbuh1hhjL�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjL�ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj©�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjL�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjH�ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj�h²hh³j!�h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj �h²hh³j!�h´MRubah}”(h]”j�ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j!�h´MRhj�h²hubj)�”}”(hhh]”hì)�”}”(hŒ*force port flags according to libata.force”h]”hŒ*force port flags according to libata.force”…”�”}”(hjÓ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MRhjÐ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³j!�h´MRubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jë�j1jë�j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ´**Parameters** ``struct ata_port *ap`` ATA port of interest **Description** Force port flags according to libata.force and whine about it. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjõ�h]”hŒ Parameters”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MVhjï�ubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``struct ata_port *ap`` ATA port of interest ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj‚h]”hŒstruct ata_port *ap”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MShj‚ubj·)�”}”(hhh]”hì)�”}”(hŒATA port of interest”h]”hŒATA port of interest”…”�”}”(hj-‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)‚h´MShj*‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j)‚h´MShj ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjï�ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjO‚h]”hŒ Description”…”�”}”(hjQ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjM‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MUhjï�ubj)�”}”(hŒTForce port flags according to libata.force and whine about it. LOCKING: EH context.”h]”(hì)�”}”(hŒ>Force port flags according to libata.force and whine about it.”h]”hŒ>Force port flags according to libata.force and whine about it.”…”�”}”(hji‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MThje‚ubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjx‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MVhje‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jw‚h´MThjï�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_force_link_limits (C function)”Œc.ata_force_link_limits”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void ata_force_link_limits (struct ata_link *link)”h]”j")�”}”(hŒ1void ata_force_link_limits(struct ata_link *link)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj­‚h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj©‚h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Moubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj©‚h²hh³j»‚h´Moubj�)�”}”(hŒata_force_link_limits”h]”j[)�”}”(hŒata_force_link_limits”h]”hŒata_force_link_limits”…”�”}”(hj΂h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÊ‚ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj©‚h²hh³j»‚h´Moubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjê‚h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjæ‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæ‚ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j ƒŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjЂsbŒc.ata_force_link_limits”†”asbuh1hhjæ‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(ƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæ‚ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj6ƒh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjæ‚ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjCƒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjæ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjâ‚ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj©‚h²hh³j»‚h´Moubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¥‚h²hh³j»‚h´Moubah}”(h]”j ‚ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j»‚h´Mohj¢‚h²hubj)�”}”(hhh]”hì)�”}”(hŒ+force link limits according to libata.force”h]”hŒ+force link limits according to libata.force”…”�”}”(hjmƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mohjjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢‚h²hh³j»‚h´Moubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j…ƒj1j…ƒj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXƒ**Parameters** ``struct ata_link *link`` ATA link of interest **Description** Force link flags and SATA spd limit according to libata.force and whine about it. When only the port part is specified (e.g. 1:), the limit applies to all links connected to both the host link and all fan-out ports connected via PMP. If the device part is specified as 0 (e.g. 1.00:), it specifies the first fan-out link not the host link. Device number 15 always points to the host link whether PMP is attached or not. If the controller has slave link, device number 16 points to it. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�ƒh]”hŒ Parameters”…”�”}”(hj‘ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mshj‰ƒubjœ)�”}”(hhh]”j¡)�”}”(hŒ/``struct ata_link *link`` ATA link of interest ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj®ƒh]”hŒstruct ata_link *link”…”�”}”(hj°ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¬ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mphj¨ƒubj·)�”}”(hhh]”hì)�”}”(hŒATA link of interest”h]”hŒATA link of interest”…”�”}”(hjǃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃh´Mphjăubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¨ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÃh´Mphj¥ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰ƒubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjéƒh]”hŒ Description”…”�”}”(hjëƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjçƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mrhj‰ƒubj)�”}”(hXþForce link flags and SATA spd limit according to libata.force and whine about it. When only the port part is specified (e.g. 1:), the limit applies to all links connected to both the host link and all fan-out ports connected via PMP. If the device part is specified as 0 (e.g. 1.00:), it specifies the first fan-out link not the host link. Device number 15 always points to the host link whether PMP is attached or not. If the controller has slave link, device number 16 points to it. LOCKING: EH context.”h]”(hì)�”}”(hXèForce link flags and SATA spd limit according to libata.force and whine about it. When only the port part is specified (e.g. 1:), the limit applies to all links connected to both the host link and all fan-out ports connected via PMP. If the device part is specified as 0 (e.g. 1.00:), it specifies the first fan-out link not the host link. Device number 15 always points to the host link whether PMP is attached or not. If the controller has slave link, device number 16 points to it.”h]”hXèForce link flags and SATA spd limit according to libata.force and whine about it. When only the port part is specified (e.g. 1:), the limit applies to all links connected to both the host link and all fan-out ports connected via PMP. If the device part is specified as 0 (e.g. 1.00:), it specifies the first fan-out link not the host link. Device number 15 always points to the host link whether PMP is attached or not. If the controller has slave link, device number 16 points to it.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mqhjÿƒubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mzhjÿƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„h´Mqhj‰ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_force_xfermask (C function)”Œc.ata_force_xfermask”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_force_xfermask (struct ata_device *dev)”h]”j")�”}”(hŒ/void ata_force_xfermask(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjG„h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjC„h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjC„h²hh³jU„h´M©ubj�)�”}”(hŒata_force_xfermask”h]”j[)�”}”(hŒata_force_xfermask”h]”hŒata_force_xfermask”…”�”}”(hjh„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjd„ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjC„h²hh³jU„h´M©ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj„„h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj€„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€„ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¢„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŸ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¤„Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjj„sbŒc.ata_force_xfermask”†”asbuh1hhj€„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€„ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjЄh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj€„ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÝ„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj|„ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjC„h²hh³jU„h´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj?„h²hh³jU„h´M©ubah}”(h]”j:„ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jU„h´M©hj<„h²hubj)�”}”(hhh]”hì)�”}”(hŒ(force xfermask according to libata.force”h]”hŒ(force xfermask according to libata.force”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M©hj…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<„h²hh³jU„h´M©ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j…j1j…j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX-**Parameters** ``struct ata_device *dev`` ATA device of interest **Description** Force xfer_mask according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj)…h]”hŒ Parameters”…”�”}”(hj+…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M­hj#…ubjœ)�”}”(hhh]”j¡)�”}”(hŒ2``struct ata_device *dev`` ATA device of interest ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjH…h]”hŒstruct ata_device *dev”…”�”}”(hjJ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjF…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MªhjB…ubj·)�”}”(hhh]”hì)�”}”(hŒATA device of interest”h]”hŒATA device of interest”…”�”}”(hja…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]…h´Mªhj^…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjB…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j]…h´Mªhj?…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj#…ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjƒ…h]”hŒ Description”…”�”}”(hj……h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¬hj#…ubj)�”}”(hŒ¾Force xfer_mask according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link. LOCKING: EH context.”h]”(hì)�”}”(hŒ¨Force xfer_mask according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link.”h]”hŒ¨Force xfer_mask according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link.”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M«hj™…ubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hj¬…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¯hj™…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j«…h´M«hj#…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_force_quirks (C function)”Œc.ata_force_quirks”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.void ata_force_quirks (struct ata_device *dev)”h]”j")�”}”(hŒ-void ata_force_quirks(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjá…h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÝ…h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Múubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝ…h²hh³jï…h´Múubj�)�”}”(hŒata_force_quirks”h]”j[)�”}”(hŒata_force_quirks”h]”hŒata_force_quirks”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjþ…ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÝ…h²hh³jï…h´Múubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+†h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj<†h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj9†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j>†Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj†sbŒc.ata_force_quirks”†”asbuh1hhj†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\†h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjj†h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj†ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjw†h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj†ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÝ…h²hh³jï…h´Múubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÙ…h²hh³jï…h´Múubah}”(h]”jÔ…ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jï…h´MúhjÖ…h²hubj)�”}”(hhh]”hì)�”}”(hŒ&force quirks according to libata.force”h]”hŒ&force quirks according to libata.force”…”�”}”(hj¡†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Múhjž†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖ…h²hh³jï…h´Múubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¹†j1j¹†j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX***Parameters** ``struct ata_device *dev`` ATA device of interest **Description** Force quirks according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÆh]”hŒ Parameters”…”�”}”(hjņh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mþhj½†ubjœ)�”}”(hhh]”j¡)�”}”(hŒ2``struct ata_device *dev`` ATA device of interest ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjâ†h]”hŒstruct ata_device *dev”…”�”}”(hjä†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjà†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mûhj܆ubj·)�”}”(hhh]”hì)�”}”(hŒATA device of interest”h]”hŒATA device of interest”…”�”}”(hjû†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷†h´Mûhjø†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj܆ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j÷†h´MûhjÙ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj½†ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj‡h]”hŒ Description”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mýhj½†ubj)�”}”(hŒ»Force quirks according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link. LOCKING: EH context.”h]”(hì)�”}”(hŒ¥Force quirks according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link.”h]”hŒ¥Force quirks according to libata.force and whine about it. For consistency with link selection, device number 15 selects the first device connected to the host link.”…”�”}”(hj7‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mühj3‡ubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjF‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhj3‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jE‡h´Mühj½†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ata_set_rwcmd_protocol (C function)”Œc.ata_set_rwcmd_protocol”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMbool ata_set_rwcmd_protocol (struct ata_device *dev, struct ata_taskfile *tf)”h]”j")�”}”(hŒLbool ata_set_rwcmd_protocol(struct ata_device *dev, struct ata_taskfile *tf)”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj{‡h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjw‡h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjw‡h²hh³jˆ‡h´Maubj�)�”}”(hŒata_set_rwcmd_protocol”h]”j[)�”}”(hŒata_set_rwcmd_protocol”h]”hŒata_set_rwcmd_protocol”…”�”}”(hj›‡h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj—‡ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjw‡h²hh³jˆ‡h´Maubjª)�”}”(hŒ1(struct ata_device *dev, struct ata_taskfile *tf)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj·‡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj³‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjćh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³‡ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÕ‡h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÒ‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jׇŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj�‡sbŒc.ata_set_rwcmd_protocol”†”asbuh1hhj³‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³‡ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj³‡ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj³‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¯‡ubj°)�”}”(hŒstruct ata_taskfile *tf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj)ˆh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj%ˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj%ˆubh)�”}”(hhh]”j[)�”}”(hŒ ata_taskfile”h]”hŒ ata_taskfile”…”�”}”(hjGˆh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjDˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jIˆŒmodname”NŒ classname”Njwjz)�”}”j}]”jñ‡Œc.ata_set_rwcmd_protocol”†”asbuh1hhj%ˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeˆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj%ˆubj)�”}”(hjS h]”hŒ*”…”�”}”(hjsˆh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj%ˆubj[)�”}”(hŒtf”h]”hŒtf”…”�”}”(hj€ˆh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj%ˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¯‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjw‡h²hh³jˆ‡h´Maubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjs‡h²hh³jˆ‡h´Maubah}”(h]”jn‡ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jˆ‡h´Mahjp‡h²hubj)�”}”(hhh]”hì)�”}”(hŒ%set taskfile r/w command and protocol”h]”hŒ%set taskfile r/w command and protocol”…”�”}”(hjªˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mahj§ˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp‡h²hh³jˆ‡h´Maubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jˆj1jˆj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX>**Parameters** ``struct ata_device *dev`` target device for the taskfile ``struct ata_taskfile *tf`` taskfile to examine and configure **Description** Examine the device configuration and tf->flags to determine the proper read/write command and protocol to use for **tf**. LOCKING: caller.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj̈h]”hŒ Parameters”…”�”}”(hjΈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjʈubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mehjƈubjœ)�”}”(hhh]”(j¡)�”}”(hŒ:``struct ata_device *dev`` target device for the taskfile ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjëˆh]”hŒstruct ata_device *dev”…”�”}”(hjíˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjéˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mbhjåˆubj·)�”}”(hhh]”hì)�”}”(hŒtarget device for the taskfile”h]”hŒtarget device for the taskfile”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‰h´Mbhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjåˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‰h´Mbhjâˆubj¡)�”}”(hŒ>``struct ata_taskfile *tf`` taskfile to examine and configure ”h]”(j§)�”}”(hŒ``struct ata_taskfile *tf``”h]”j\)�”}”(hj$‰h]”hŒstruct ata_taskfile *tf”…”�”}”(hj&‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj"‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mchj‰ubj·)�”}”(hhh]”hì)�”}”(hŒ!taskfile to examine and configure”h]”hŒ!taskfile to examine and configure”…”�”}”(hj=‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9‰h´Mchj:‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j9‰h´Mchjâˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjƈubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj_‰h]”hŒ Description”…”�”}”(hja‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mehjƈubj)�”}”(hŒ‹Examine the device configuration and tf->flags to determine the proper read/write command and protocol to use for **tf**. LOCKING: caller.”h]”(hì)�”}”(hŒyExamine the device configuration and tf->flags to determine the proper read/write command and protocol to use for **tf**.”h]”(hŒrExamine the device configuration and tf->flags to determine the proper read/write command and protocol to use for ”…”�”}”(hjy‰h²hh³Nh´Nubj )�”}”(hŒ**tf**”h]”hŒtf”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjy‰ubhŒ.”…”�”}”(hjy‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mdhju‰ubhì)�”}”(hŒLOCKING: caller.”h]”hŒLOCKING: caller.”…”�”}”(hjš‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mghju‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j™‰h´Mdhjƈubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_tf_read_block (C function)”Œc.ata_tf_read_block”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMu64 ata_tf_read_block (const struct ata_taskfile *tf, struct ata_device *dev)”h]”j")�”}”(hŒLu64 ata_tf_read_block(const struct ata_taskfile *tf, struct ata_device *dev)”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÒ‰h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjωubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÔ‰Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_tf_read_block”sbŒc.ata_tf_read_block”†”asbuh1hhjˉh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô‰h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˉh²hh³jó‰h´MŒubj�)�”}”(hŒata_tf_read_block”h]”j[)�”}”(hjð‰h]”hŒata_tf_read_block”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŠubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjˉh²hh³jó‰h´MŒubjª)�”}”(hŒ7(const struct ata_taskfile *tf, struct ata_device *dev)”h]”(j°)�”}”(hŒconst struct ata_taskfile *tf”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj!Šh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjŠubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Šh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŠubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj<Šh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjŠubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŠubh)�”}”(hhh]”j[)�”}”(hŒ ata_taskfile”h]”hŒ ata_taskfile”…”�”}”(hjZŠh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjWŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j\ŠŒmodname”NŒ classname”Njwjz)�”}”j}]”jc.ata_tf_read_block”†”asbuh1hhjŠubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŠubj)�”}”(hjS h]”hŒ*”…”�”}”(hj†Šh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjŠubj[)�”}”(hŒtf”h]”hŒtf”…”�”}”(hj“Šh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŠubj°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¬Šh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¨Šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Šh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¨Šubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÊŠh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÇŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÌŠŒmodname”NŒ classname”Njwjz)�”}”j}]”jc.ata_tf_read_block”†”asbuh1hhj¨Šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¨Šubj)�”}”(hjS h]”hŒ*”…”�”}”(hjöŠh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¨Šubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¨Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŠubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjˉh²hh³jó‰h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjljh²hh³jó‰h´MŒubah}”(h]”j‰ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jó‰h´MŒhjĉh²hubj)�”}”(hhh]”hì)�”}”(hŒ$Read block address from ATA taskfile”h]”hŒ$Read block address from ATA taskfile”…”�”}”(hj-‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŒhj*‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjĉh²hh³jó‰h´MŒubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jE‹j1jE‹j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX“**Parameters** ``const struct ata_taskfile *tf`` ATA taskfile of interest ``struct ata_device *dev`` ATA device **tf** belongs to **Description** LOCKING: None. Read block address from **tf**. This function can handle all three address formats - LBA, LBA48 and CHS. tf->protocol and flags select the address format to use. **Return** Block address read from **tf**.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjO‹h]”hŒ Parameters”…”�”}”(hjQ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjM‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hjI‹ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ;``const struct ata_taskfile *tf`` ATA taskfile of interest ”h]”(j§)�”}”(hŒ!``const struct ata_taskfile *tf``”h]”j\)�”}”(hjn‹h]”hŒconst struct ata_taskfile *tf”…”�”}”(hjp‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjl‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hjh‹ubj·)�”}”(hhh]”hì)�”}”(hŒATA taskfile of interest”h]”hŒATA taskfile of interest”…”�”}”(hj‡‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒ‹h´M�hj„‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjh‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jƒ‹h´M�hje‹ubj¡)�”}”(hŒ8``struct ata_device *dev`` ATA device **tf** belongs to ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj§‹h]”hŒstruct ata_device *dev”…”�”}”(hj©‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¥‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŽhj¡‹ubj·)�”}”(hhh]”hì)�”}”(hŒATA device **tf** belongs to”h]”(hŒ ATA device ”…”�”}”(hjÀ‹h²hh³Nh´Nubj )�”}”(hŒ**tf**”h]”hŒtf”…”�”}”(hjÈ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ‹ubhŒ belongs to”…”�”}”(hjÀ‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼‹h´MŽhj½‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¼‹h´MŽhje‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjI‹ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjô‹h]”hŒ Description”…”�”}”(hjö‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hjI‹ubj)�”}”(hŒ´LOCKING: None. Read block address from **tf**. This function can handle all three address formats - LBA, LBA48 and CHS. tf->protocol and flags select the address format to use. ”h]”(hì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hj Œubhì)�”}”(hŒ£Read block address from **tf**. This function can handle all three address formats - LBA, LBA48 and CHS. tf->protocol and flags select the address format to use.”h]”(hŒRead block address from ”…”�”}”(hjŒh²hh³Nh´Nubj )�”}”(hŒ**tf**”h]”hŒtf”…”�”}”(hj%Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒubhŒ…. This function can handle all three address formats - LBA, LBA48 and CHS. tf->protocol and flags select the address format to use.”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M’hj Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒh´M�hjI‹ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjFŒh]”hŒReturn”…”�”}”(hjHŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjDŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M–hjI‹ubhì)�”}”(hŒBlock address read from **tf**.”h]”(hŒBlock address read from ”…”�”}”(hj\Œh²hh³Nh´Nubj )�”}”(hŒ**tf**”h]”hŒtf”…”�”}”(hjdŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ŒubhŒ.”…”�”}”(hj\Œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M—hjI‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_build_rw_tf (C function)”Œc.ata_build_rw_tf”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒrint ata_build_rw_tf (struct ata_queued_cmd *qc, u64 block, u32 n_block, unsigned int tf_flags, int cdl, int class)”h]”j")�”}”(hŒqint ata_build_rw_tf(struct ata_queued_cmd *qc, u64 block, u32 n_block, unsigned int tf_flags, int cdl, int class)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj™Œh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÑubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Œh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™Œh²hh³j«Œh´MÑubj�)�”}”(hŒata_build_rw_tf”h]”j[)�”}”(hŒata_build_rw_tf”h]”hŒata_build_rw_tf”…”�”}”(hj¾Œh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjºŒubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj™Œh²hh³j«Œh´MÑubjª)�”}”(hŒ^(struct ata_queued_cmd *qc, u64 block, u32 n_block, unsigned int tf_flags, int cdl, int class)”h]”(j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÚŒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÖŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçŒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖŒubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjøŒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjõŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”júŒŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÀŒsbŒc.ata_build_rw_tf”†”asbuh1hhjÖŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖŒubj)�”}”(hjS h]”hŒ*”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÖŒubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÖŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubj°)�”}”(hŒ u64 block”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjO�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjL�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jQ�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.ata_build_rw_tf”†”asbuh1hhjH�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjH�ubj[)�”}”(hŒblock”h]”hŒblock”…”�”}”(hj{�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjH�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubj°)�”}”(hŒ u32 n_block”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj—�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj”�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j™�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.ata_build_rw_tf”†”asbuh1hhj��ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj��ubj[)�”}”(hŒn_block”h]”hŒn_block”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj��ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubj°)�”}”(hŒunsigned int tf_flags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”• h ]”j¾ah"]”h$]”h&]”uh1j±hjØ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ�ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjø�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjØ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØ�ubj[)�”}”(hŒtf_flags”h]”hŒtf_flags”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjØ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubj°)�”}”(hŒint cdl”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj-Žh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj)Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Žh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)Žubj[)�”}”(hŒcdl”h]”hŒcdl”…”�”}”(hjIŽh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj)Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubj°)�”}”(hŒ int class”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjbŽh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj^Žubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj^Žubj[)�”}”(hŒclass”h]”hŒclass”…”�”}”(hj~Žh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj^Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÒŒubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj™Œh²hh³j«Œh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj•Œh²hh³j«Œh´MÑubah}”(h]”j�Œah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j«Œh´MÑhj’Œh²hubj)�”}”(hhh]”hì)�”}”(hŒ/Build ATA taskfile for given read/write request”h]”hŒ/Build ATA taskfile for given read/write request”…”�”}”(hj¨Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÑhj¥Žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’Œh²hh³j«Œh´MÑubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÀŽj1jÀŽj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXA**Parameters** ``struct ata_queued_cmd *qc`` Metadata associated with the taskfile to build ``u64 block`` Block address ``u32 n_block`` Number of blocks ``unsigned int tf_flags`` RW/FUA etc... ``int cdl`` Command duration limit index ``int class`` IO priority class **Description** LOCKING: None. Build ATA taskfile for the command **qc** for read/write request described by **block**, **n_block**, **tf_flags** and **class**. 0 on success, -ERANGE if the request is too large for **dev**, -EINVAL if the request is invalid.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÊŽh]”hŒ Parameters”…”�”}”(hjÌŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÕhjÄŽubjœ)�”}”(hhh]”(j¡)�”}”(hŒM``struct ata_queued_cmd *qc`` Metadata associated with the taskfile to build ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjéŽh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjëŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjçŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÒhjãŽubj·)�”}”(hhh]”hì)�”}”(hŒ.Metadata associated with the taskfile to build”h]”hŒ.Metadata associated with the taskfile to build”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþŽh´MÒhjÿŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjãŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jþŽh´MÒhjàŽubj¡)�”}”(hŒ``u64 block`` Block address ”h]”(j§)�”}”(hŒ ``u64 block``”h]”j\)�”}”(hj"�h]”hŒ u64 block”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÓhj�ubj·)�”}”(hhh]”hì)�”}”(hŒ Block address”h]”hŒ Block address”…”�”}”(hj;�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7�h´MÓhj8�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j7�h´MÓhjàŽubj¡)�”}”(hŒ!``u32 n_block`` Number of blocks ”h]”(j§)�”}”(hŒ``u32 n_block``”h]”j\)�”}”(hj[�h]”hŒ u32 n_block”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjY�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÔhjU�ubj·)�”}”(hhh]”hì)�”}”(hŒNumber of blocks”h]”hŒNumber of blocks”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jp�h´MÔhjq�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjU�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jp�h´MÔhjàŽubj¡)�”}”(hŒ(``unsigned int tf_flags`` RW/FUA etc... ”h]”(j§)�”}”(hŒ``unsigned int tf_flags``”h]”j\)�”}”(hj”�h]”hŒunsigned int tf_flags”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj’�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÕhjŽ�ubj·)�”}”(hhh]”hì)�”}”(hŒ RW/FUA etc...”h]”hŒ RW/FUA etc...”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©�h´MÕhjª�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j©�h´MÕhjàŽubj¡)�”}”(hŒ)``int cdl`` Command duration limit index ”h]”(j§)�”}”(hŒ ``int cdl``”h]”j\)�”}”(hjÍ�h]”hŒint cdl”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjË�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÖhjÇ�ubj·)�”}”(hhh]”hì)�”}”(hŒCommand duration limit index”h]”hŒCommand duration limit index”…”�”}”(hjæ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâ�h´MÖhjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÇ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jâ�h´MÖhjàŽubj¡)�”}”(hŒ ``int class`` IO priority class ”h]”(j§)�”}”(hŒ ``int class``”h]”j\)�”}”(hj�h]”hŒ int class”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M×hj�ubj·)�”}”(hhh]”hì)�”}”(hŒIO priority class”h]”hŒIO priority class”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´M×hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�h´M×hjàŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÄŽubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjA�h]”hŒ Description”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÙhjÄŽubj)�”}”(hŒõLOCKING: None. Build ATA taskfile for the command **qc** for read/write request described by **block**, **n_block**, **tf_flags** and **class**. 0 on success, -ERANGE if the request is too large for **dev**, -EINVAL if the request is invalid.”h]”(hì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MØhjW�ubhì)�”}”(hŒ�Build ATA taskfile for the command **qc** for read/write request described by **block**, **n_block**, **tf_flags** and **class**.”h]”(hŒ#Build ATA taskfile for the command ”…”�”}”(hjj�h²hh³Nh´Nubj )�”}”(hŒ**qc**”h]”hŒqc”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj�ubhŒ% for read/write request described by ”…”�”}”(hjj�h²hh³Nh´Nubj )�”}”(hŒ **block**”h]”hŒblock”…”�”}”(hj„�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj�ubhŒ, ”…”�”}”(hjj�h²hh³Nh´Nubj )�”}”(hŒ **n_block**”h]”hŒn_block”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj�ubhŒ, ”…”�”}”hjj�sbj )�”}”(hŒ **tf_flags**”h]”hŒtf_flags”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj�ubhŒ and ”…”�”}”(hjj�h²hh³Nh´Nubj )�”}”(hŒ **class**”h]”hŒclass”…”�”}”(hjº�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj�ubhŒ.”…”�”}”(hjj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÛhjW�ubhì)�”}”(hŒa0 on success, -ERANGE if the request is too large for **dev**, -EINVAL if the request is invalid.”h]”(hŒ60 on success, -ERANGE if the request is too large for ”…”�”}”(hjÓ�h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ�ubhŒ$, -EINVAL if the request is invalid.”…”�”}”(hjÓ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MßhjW�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji�h´MØhjÄŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_unpack_xfermask (C function)”Œc.ata_unpack_xfermask”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ|void ata_unpack_xfermask (unsigned int xfer_mask, unsigned int *pio_mask, unsigned int *mwdma_mask, unsigned int *udma_mask)”h]”j")�”}”(hŒ{void ata_unpack_xfermask(unsigned int xfer_mask, unsigned int *pio_mask, unsigned int *mwdma_mask, unsigned int *udma_mask)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj‘h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Msubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘h²hh³j(‘h´Msubj�)�”}”(hŒata_unpack_xfermask”h]”j[)�”}”(hŒata_unpack_xfermask”h]”hŒata_unpack_xfermask”…”�”}”(hj;‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj7‘ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj‘h²hh³j(‘h´Msubjª)�”}”(hŒc(unsigned int xfer_mask, unsigned int *pio_mask, unsigned int *mwdma_mask, unsigned int *udma_mask)”h]”(j°)�”}”(hŒunsigned int xfer_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjW‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjS‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjS‘ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjs‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjS‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjS‘ubj[)�”}”(hŒ xfer_mask”h]”hŒ xfer_mask”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjS‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjO‘ubj°)�”}”(hŒunsigned int *pio_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¨‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¤‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤‘ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄ‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¤‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¤‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjà‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¤‘ubj[)�”}”(hŒpio_mask”h]”hŒpio_mask”…”�”}”(hjí‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¤‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjO‘ubj°)�”}”(hŒunsigned int *mwdma_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj’ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj"’h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj’ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj>’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj’ubj[)�”}”(hŒ mwdma_mask”h]”hŒ mwdma_mask”…”�”}”(hjK’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjO‘ubj°)�”}”(hŒunsigned int *udma_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjd’h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj`’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`’ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj€’h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj`’ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`’ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjœ’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj`’ubj[)�”}”(hŒ udma_mask”h]”hŒ udma_mask”…”�”}”(hj©’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj`’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjO‘ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj‘h²hh³j(‘h´Msubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj‘h²hh³j(‘h´Msubah}”(h]”j ‘ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j(‘h´Mshj‘h²hubj)�”}”(hhh]”hì)�”}”(hŒ/Unpack xfer_mask into pio, mwdma and udma masks”h]”hŒ/Unpack xfer_mask into pio, mwdma and udma masks”…”�”}”(hjÓ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MshjÐ’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘h²hh³j(‘h´Msubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jë’j1jë’j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXk**Parameters** ``unsigned int xfer_mask`` xfer_mask to unpack ``unsigned int *pio_mask`` resulting pio_mask ``unsigned int *mwdma_mask`` resulting mwdma_mask ``unsigned int *udma_mask`` resulting udma_mask **Description** Unpack **xfer_mask** into **pio_mask**, **mwdma_mask** and **udma_mask**. Any NULL destination masks will be ignored.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjõ’h]”hŒ Parameters”…”�”}”(hj÷’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjó’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mwhjï’ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ/``unsigned int xfer_mask`` xfer_mask to unpack ”h]”(j§)�”}”(hŒ``unsigned int xfer_mask``”h]”j\)�”}”(hj“h]”hŒunsigned int xfer_mask”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mthj“ubj·)�”}”(hhh]”hì)�”}”(hŒxfer_mask to unpack”h]”hŒxfer_mask to unpack”…”�”}”(hj-“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)“h´Mthj*“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j)“h´Mthj “ubj¡)�”}”(hŒ.``unsigned int *pio_mask`` resulting pio_mask ”h]”(j§)�”}”(hŒ``unsigned int *pio_mask``”h]”j\)�”}”(hjM“h]”hŒunsigned int *pio_mask”…”�”}”(hjO“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjK“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MuhjG“ubj·)�”}”(hhh]”hì)�”}”(hŒresulting pio_mask”h]”hŒresulting pio_mask”…”�”}”(hjf“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jb“h´Muhjc“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjG“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jb“h´Muhj “ubj¡)�”}”(hŒ2``unsigned int *mwdma_mask`` resulting mwdma_mask ”h]”(j§)�”}”(hŒ``unsigned int *mwdma_mask``”h]”j\)�”}”(hj†“h]”hŒunsigned int *mwdma_mask”…”�”}”(hjˆ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj„“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mvhj€“ubj·)�”}”(hhh]”hì)�”}”(hŒresulting mwdma_mask”h]”hŒresulting mwdma_mask”…”�”}”(hjŸ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j›“h´Mvhjœ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj€“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j›“h´Mvhj “ubj¡)�”}”(hŒ0``unsigned int *udma_mask`` resulting udma_mask ”h]”(j§)�”}”(hŒ``unsigned int *udma_mask``”h]”j\)�”}”(hj¿“h]”hŒunsigned int *udma_mask”…”�”}”(hjÁ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj½“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mwhj¹“ubj·)�”}”(hhh]”hì)�”}”(hŒresulting udma_mask”h]”hŒresulting udma_mask”…”�”}”(hjØ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÔ“h´MwhjÕ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¹“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÔ“h´Mwhj “ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjï’ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjú“h]”hŒ Description”…”�”}”(hjü“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Myhjï’ubj)�”}”(hŒuUnpack **xfer_mask** into **pio_mask**, **mwdma_mask** and **udma_mask**. Any NULL destination masks will be ignored.”h]”hì)�”}”(hŒuUnpack **xfer_mask** into **pio_mask**, **mwdma_mask** and **udma_mask**. Any NULL destination masks will be ignored.”h]”(hŒUnpack ”…”�”}”(hj”h²hh³Nh´Nubj )�”}”(hŒ **xfer_mask**”h]”hŒ xfer_mask”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”ubhŒ into ”…”�”}”(hj”h²hh³Nh´Nubj )�”}”(hŒ **pio_mask**”h]”hŒpio_mask”…”�”}”(hj.”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”ubhŒ, ”…”�”}”(hj”h²hh³Nh´Nubj )�”}”(hŒ**mwdma_mask**”h]”hŒ mwdma_mask”…”�”}”(hj@”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”ubhŒ and ”…”�”}”(hj”h²hh³Nh´Nubj )�”}”(hŒ **udma_mask**”h]”hŒ udma_mask”…”�”}”(hjR”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”ubhŒ-. Any NULL destination masks will be ignored.”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mxhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jj”h´Mxhjï’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(ata_read_native_max_address (C function)”Œc.ata_read_native_max_address”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒJint ata_read_native_max_address (struct ata_device *dev, u64 *max_sectors)”h]”j")�”}”(hŒIint ata_read_native_max_address(struct ata_device *dev, u64 *max_sectors)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘”h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�”h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�”h²hh³jŸ”h´M»ubj�)�”}”(hŒata_read_native_max_address”h]”j[)�”}”(hŒata_read_native_max_address”h]”hŒata_read_native_max_address”…”�”}”(hj²”h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj®”ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj�”h²hh³jŸ”h´M»ubjª)�”}”(hŒ*(struct ata_device *dev, u64 *max_sectors)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjΔh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÊ”ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊ”ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjì”h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjé”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj´”sbŒc.ata_read_native_max_address”†”asbuh1hhjÊ”ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÊ”ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÊ”ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj'•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÊ”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÆ”ubj°)�”}”(hŒu64 *max_sectors”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjC•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj@•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jE•Œmodname”NŒ classname”Njwjz)�”}”j}]”j•Œc.ata_read_native_max_address”†”asbuh1hhj<•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj<•ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjo•h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj<•ubj[)�”}”(hŒ max_sectors”h]”hŒ max_sectors”…”�”}”(hj|•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj<•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÆ”ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj�”h²hh³jŸ”h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj‰”h²hh³jŸ”h´M»ubah}”(h]”j„”ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jŸ”h´M»hj†”h²hubj)�”}”(hhh]”hì)�”}”(hŒRead native max address”h]”hŒRead native max address”…”�”}”(hj¦•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M»hj£•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj†”h²hh³jŸ”h´M»ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¾•j1j¾•j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXD**Parameters** ``struct ata_device *dev`` target device ``u64 *max_sectors`` out parameter for the result native max address **Description** Perform an LBA48 or LBA28 native size query upon the device in question. **Return** 0 on success, -EACCES if command is aborted by the drive. -EIO on other errors.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÈ•h]”hŒ Parameters”…”�”}”(hjÊ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¿hj•ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjç•h]”hŒstruct ata_device *dev”…”�”}”(hjé•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjå•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¼hjá•ubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jü•h´M¼hjý•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjá•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jü•h´M¼hjÞ•ubj¡)�”}”(hŒE``u64 *max_sectors`` out parameter for the result native max address ”h]”(j§)�”}”(hŒ``u64 *max_sectors``”h]”j\)�”}”(hj –h]”hŒu64 *max_sectors”…”�”}”(hj"–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M½hj–ubj·)�”}”(hhh]”hì)�”}”(hŒ/out parameter for the result native max address”h]”hŒ/out parameter for the result native max address”…”�”}”(hj9–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5–h´M½hj6–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j5–h´M½hjÞ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj•ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj[–h]”hŒ Description”…”�”}”(hj]–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjY–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¿hj•ubj)�”}”(hŒIPerform an LBA48 or LBA28 native size query upon the device in question. ”h]”hì)�”}”(hŒHPerform an LBA48 or LBA28 native size query upon the device in question.”h]”hŒHPerform an LBA48 or LBA28 native size query upon the device in question.”…”�”}”(hju–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¾hjq–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒ–h´M¾hj•ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjŒ–h]”hŒReturn”…”�”}”(hjŽ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÁhj•ubhì)�”}”(hŒO0 on success, -EACCES if command is aborted by the drive. -EIO on other errors.”h]”hŒO0 on success, -EACCES if command is aborted by the drive. -EIO on other errors.”…”�”}”(hj¢–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÂhj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_set_max_sectors (C function)”Œc.ata_set_max_sectors”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAint ata_set_max_sectors (struct ata_device *dev, u64 new_sectors)”h]”j")�”}”(hŒ@int ata_set_max_sectors(struct ata_device *dev, u64 new_sectors)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÑ–h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÍ–h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mîubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÍ–h²hh³jß–h´Mîubj�)�”}”(hŒata_set_max_sectors”h]”j[)�”}”(hŒata_set_max_sectors”h]”hŒata_set_max_sectors”…”�”}”(hjò–h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjî–ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÍ–h²hh³jß–h´Mîubjª)�”}”(hŒ)(struct ata_device *dev, u64 new_sectors)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj —ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj —ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj,—h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj)—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j.—Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjô–sbŒc.ata_set_max_sectors”†”asbuh1hhj —ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj —ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjZ—h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj —ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjg—h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj —ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj—ubj°)�”}”(hŒu64 new_sectors”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjƒ—h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j…—Œmodname”NŒ classname”Njwjz)�”}”j}]”jH—Œc.ata_set_max_sectors”†”asbuh1hhj|—ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj|—ubj[)�”}”(hŒ new_sectors”h]”hŒ new_sectors”…”�”}”(hj¯—h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj|—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj—ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÍ–h²hh³jß–h´Mîubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÉ–h²hh³jß–h´Mîubah}”(h]”jÄ–ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jß–h´MîhjÆ–h²hubj)�”}”(hhh]”hì)�”}”(hŒSet max sectors”h]”hŒSet max sectors”…”�”}”(hjÙ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MîhjÖ—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆ–h²hh³jß–h´Mîubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jñ—j1jñ—j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXR**Parameters** ``struct ata_device *dev`` target device ``u64 new_sectors`` new max sectors value to set for the device **Description** Set max sectors of **dev** to **new_sectors**. **Return** 0 on success, -EACCES if command is aborted or denied (due to previous non-volatile SET_MAX) by the drive. -EIO on other errors.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjû—h]”hŒ Parameters”…”�”}”(hjý—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjù—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mòhjõ—ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj˜h]”hŒstruct ata_device *dev”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mïhj˜ubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hj3˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/˜h´Mïhj0˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j/˜h´Mïhj˜ubj¡)�”}”(hŒ@``u64 new_sectors`` new max sectors value to set for the device ”h]”(j§)�”}”(hŒ``u64 new_sectors``”h]”j\)�”}”(hjS˜h]”hŒu64 new_sectors”…”�”}”(hjU˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MðhjM˜ubj·)�”}”(hhh]”hì)�”}”(hŒ+new max sectors value to set for the device”h]”hŒ+new max sectors value to set for the device”…”�”}”(hjl˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh˜h´Mðhji˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjM˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh˜h´Mðhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjõ—ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjŽ˜h]”hŒ Description”…”�”}”(hj�˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mòhjõ—ubj)�”}”(hŒ/Set max sectors of **dev** to **new_sectors**. ”h]”hì)�”}”(hŒ.Set max sectors of **dev** to **new_sectors**.”h]”(hŒSet max sectors of ”…”�”}”(hj¨˜h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj°˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨˜ubhŒ to ”…”�”}”(hj¨˜h²hh³Nh´Nubj )�”}”(hŒ**new_sectors**”h]”hŒ new_sectors”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨˜ubhŒ.”…”�”}”(hj¨˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mñhj¤˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÚ˜h´Mñhjõ—ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjã˜h]”hŒReturn”…”�”}”(hjå˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjá˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Móhjõ—ubhì)�”}”(hŒ�0 on success, -EACCES if command is aborted or denied (due to previous non-volatile SET_MAX) by the drive. -EIO on other errors.”h]”hŒ�0 on success, -EACCES if command is aborted or denied (due to previous non-volatile SET_MAX) by the drive. -EIO on other errors.”…”�”}”(hjù˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Môhjõ—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_hpa_resize (C function)”Œc.ata_hpa_resize”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+int ata_hpa_resize (struct ata_device *dev)”h]”j")�”}”(hŒ*int ata_hpa_resize(struct ata_device *dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj(™h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj$™h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M(ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$™h²hh³j6™h´M(ubj�)�”}”(hŒata_hpa_resize”h]”j[)�”}”(hŒata_hpa_resize”h]”hŒata_hpa_resize”…”�”}”(hjI™h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjE™ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj$™h²hh³j6™h´M(ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hja™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hja™ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjƒ™h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j…™Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjK™sbŒc.ata_hpa_resize”†”asbuh1hhja™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£™h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hja™ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj±™h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hja™ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¾™h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhja™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj]™ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj$™h²hh³j6™h´M(ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj ™h²hh³j6™h´M(ubah}”(h]”j™ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j6™h´M(hj™h²hubj)�”}”(hhh]”hì)�”}”(hŒResize a device with an HPA set”h]”hŒResize a device with an HPA set”…”�”}”(hjè™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M(hjå™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™h²hh³j6™h´M(ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jšj1jšj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX@**Parameters** ``struct ata_device *dev`` Device to resize **Description** Read the size of an LBA28 or LBA48 disk with HPA features and resize it if required to the full size of the media. The caller must check the drive has the HPA feature set enabled. **Return** 0 on success, -errno on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj šh]”hŒ Parameters”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M,hjšubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct ata_device *dev`` Device to resize ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj)šh]”hŒstruct ata_device *dev”…”�”}”(hj+šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj'šubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M)hj#šubj·)�”}”(hhh]”hì)�”}”(hŒDevice to resize”h]”hŒDevice to resize”…”�”}”(hjBšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>šh´M)hj?šubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj#šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j>šh´M)hj šubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjšubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjdšh]”hŒ Description”…”�”}”(hjfšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjbšubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M+hjšubj)�”}”(hŒ´Read the size of an LBA28 or LBA48 disk with HPA features and resize it if required to the full size of the media. The caller must check the drive has the HPA feature set enabled. ”h]”hì)�”}”(hŒ³Read the size of an LBA28 or LBA48 disk with HPA features and resize it if required to the full size of the media. The caller must check the drive has the HPA feature set enabled.”h]”hŒ³Read the size of an LBA28 or LBA48 disk with HPA features and resize it if required to the full size of the media. The caller must check the drive has the HPA feature set enabled.”…”�”}”(hj~šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M*hjzšubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒšh´M*hjšubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj•šh]”hŒReturn”…”�”}”(hj—šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“šubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M.hjšubhì)�”}”(hŒ 0 on success, -errno on failure.”h]”hŒ 0 on success, -errno on failure.”…”�”}”(hj«šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M/hjšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dump_id (C function)”Œ c.ata_dump_id”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ8void ata_dump_id (struct ata_device *dev, const u16 *id)”h]”j")�”}”(hŒ7void ata_dump_id(struct ata_device *dev, const u16 *id)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚšh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÖšh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mˆubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéšh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖšh²hh³jèšh´Mˆubj�)�”}”(hŒ ata_dump_id”h]”j[)�”}”(hŒ ata_dump_id”h]”hŒ ata_dump_id”…”�”}”(hjûšh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj÷šubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÖšh²hh³jèšh´Mˆubjª)�”}”(hŒ'(struct ata_device *dev, const u16 *id)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj5›h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj2›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j7›Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjýšsbŒ c.ata_dump_id”†”asbuh1hhj›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjc›h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj›ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjp›h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›ubj°)�”}”(hŒ const u16 *id”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj‰›h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj…›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…›ubh)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj§›h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¤›ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j©›Œmodname”NŒ classname”Njwjz)�”}”j}]”jQ›Œ c.ata_dump_id”†”asbuh1hhj…›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ›h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…›ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÓ›h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj…›ubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hjà›h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj…›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj›ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÖšh²hh³jèšh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÒšh²hh³jèšh´Mˆubah}”(h]”jÍšah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jèšh´MˆhjÏšh²hubj)�”}”(hhh]”hì)�”}”(hŒ%IDENTIFY DEVICE info debugging output”h]”hŒ%IDENTIFY DEVICE info debugging output”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mˆhjœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏšh²hh³jèšh´Mˆubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j"œj1j"œj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_device *dev`` device from which the information is fetched ``const u16 *id`` IDENTIFY DEVICE page to dump **Description** Dump selected 16-bit words from the given IDENTIFY DEVICE page. LOCKING: caller.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj,œh]”hŒ Parameters”…”�”}”(hj.œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*œubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŒhj&œubjœ)�”}”(hhh]”(j¡)�”}”(hŒH``struct ata_device *dev`` device from which the information is fetched ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjKœh]”hŒstruct ata_device *dev”…”�”}”(hjMœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjIœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M‰hjEœubj·)�”}”(hhh]”hì)�”}”(hŒ,device from which the information is fetched”h]”hŒ,device from which the information is fetched”…”�”}”(hjdœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`œh´M‰hjaœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjEœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j`œh´M‰hjBœubj¡)�”}”(hŒ/``const u16 *id`` IDENTIFY DEVICE page to dump ”h]”(j§)�”}”(hŒ``const u16 *id``”h]”j\)�”}”(hj„œh]”hŒ const u16 *id”…”�”}”(hj†œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‚œubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŠhj~œubj·)�”}”(hhh]”hì)�”}”(hŒIDENTIFY DEVICE page to dump”h]”hŒIDENTIFY DEVICE page to dump”…”�”}”(hj�œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j™œh´MŠhjšœubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj~œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j™œh´MŠhjBœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj&œubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¿œh]”hŒ Description”…”�”}”(hjÁœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½œubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŒhj&œubj)�”}”(hŒQDump selected 16-bit words from the given IDENTIFY DEVICE page. LOCKING: caller.”h]”(hì)�”}”(hŒ?Dump selected 16-bit words from the given IDENTIFY DEVICE page.”h]”hŒ?Dump selected 16-bit words from the given IDENTIFY DEVICE page.”…”�”}”(hjÙœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M‹hjÕœubhì)�”}”(hŒLOCKING: caller.”h]”hŒLOCKING: caller.”…”�”}”(hjèœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŽhjÕœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jçœh´M‹hj&œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_exec_internal (C function)”Œc.ata_exec_internal”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ¶unsigned int ata_exec_internal (struct ata_device *dev, struct ata_taskfile *tf, const u8 *cdb, enum dma_data_direction dma_dir, void *buf, unsigned int buflen, unsigned int timeout)”h]”j")�”}”(hŒµunsigned int ata_exec_internal(struct ata_device *dev, struct ata_taskfile *tf, const u8 *cdb, enum dma_data_direction dma_dir, void *buf, unsigned int buflen, unsigned int timeout)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�h²hh³j+�h´Mëubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj�h²hh³j+�h´Mëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�h²hh³j+�h´Mëubj�)�”}”(hŒata_exec_internal”h]”j[)�”}”(hŒata_exec_internal”h]”hŒata_exec_internal”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjV�ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj�h²hh³j+�h´Mëubjª)�”}”(hŒ—(struct ata_device *dev, struct ata_taskfile *tf, const u8 *cdb, enum dma_data_direction dma_dir, void *buf, unsigned int buflen, unsigned int timeout)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjr�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr�ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‘�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j–�Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj\�sbŒc.ata_exec_internal”†”asbuh1hhjr�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjr�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÂ�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjr�ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÏ�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjr�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒstruct ata_taskfile *tf”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjä�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä�ubh)�”}”(hhh]”j[)�”}”(hŒ ata_taskfile”h]”hŒ ata_taskfile”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jžŒmodname”NŒ classname”Njwjz)�”}”j}]”j°�Œc.ata_exec_internal”†”asbuh1hhjä�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$žh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj2žh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjä�ubj[)�”}”(hŒtf”h]”hŒtf”…”�”}”(hj?žh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjä�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒ const u8 *cdb”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjXžh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjTžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hježh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTžubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjvžh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjsžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jxžŒmodname”NŒ classname”Njwjz)�”}”j}]”j°�Œc.ata_exec_internal”†”asbuh1hhjTžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”žh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTžubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¢žh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjTžubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hj¯žh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjTžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒenum dma_data_direction dma_dir”h]”(j()�”}”(hj—h]”hŒenum”…”�”}”(hjÈžh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÄžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕžh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄžubh)�”}”(hhh]”j[)�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjæžh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjãžubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j螌modname”NŒ classname”Njwjz)�”}”j}]”j°�Œc.ata_exec_internal”†”asbuh1hhjÄžubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄžubj[)�”}”(hŒdma_dir”h]”hŒdma_dir”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÄžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒ void *buf”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+Ÿh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj'Ÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj'Ÿubj)�”}”(hjS h]”hŒ*”…”�”}”(hjGŸh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj'Ÿubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjTŸh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj'Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒunsigned int buflen”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjmŸh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjiŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjiŸubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰Ÿh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjiŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjiŸubj[)�”}”(hŒbuflen”h]”hŒbuflen”…”�”}”(hj¥Ÿh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjiŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubj°)�”}”(hŒunsigned int timeout”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¾Ÿh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjºŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºŸubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚŸh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjºŸubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèŸh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºŸubj[)�”}”(hŒtimeout”h]”hŒtimeout”…”�”}”(hjöŸh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjºŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjn�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj�h²hh³j+�h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj�h²hh³j+�h´Mëubah}”(h]”j�ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j+�h´Mëhj�h²hubj)�”}”(hhh]”hì)�”}”(hŒexecute libata internal command”h]”hŒexecute libata internal command”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mëhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³j+�h´Mëubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j8 j1j8 j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX}**Parameters** ``struct ata_device *dev`` Device to which the command is sent ``struct ata_taskfile *tf`` Taskfile registers for the command and the result ``const u8 *cdb`` CDB for packet command ``enum dma_data_direction dma_dir`` Data transfer direction of the command ``void *buf`` Data buffer of the command ``unsigned int buflen`` Length of data buffer ``unsigned int timeout`` Timeout in msecs (0 for default) **Description** Executes libata internal command with timeout. **tf** contains the command on entry and the result on return. Timeout and error conditions are reported via the return value. No recovery action is taken after a command times out. It is the caller's duty to clean up after timeout. LOCKING: None. Should be called with kernel context, might sleep. **Return** Zero on success, AC_ERR_* mask on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjB h]”hŒ Parameters”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mïhj< ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ?``struct ata_device *dev`` Device to which the command is sent ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hja h]”hŒstruct ata_device *dev”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mìhj[ ubj·)�”}”(hhh]”hì)�”}”(hŒ#Device to which the command is sent”h]”hŒ#Device to which the command is sent”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jv h´Mìhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jv h´MìhjX ubj¡)�”}”(hŒN``struct ata_taskfile *tf`` Taskfile registers for the command and the result ”h]”(j§)�”}”(hŒ``struct ata_taskfile *tf``”h]”j\)�”}”(hjš h]”hŒstruct ata_taskfile *tf”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Míhj” ubj·)�”}”(hhh]”hì)�”}”(hŒ1Taskfile registers for the command and the result”h]”hŒ1Taskfile registers for the command and the result”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯ h´Míhj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj” ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¯ h´MíhjX ubj¡)�”}”(hŒ)``const u8 *cdb`` CDB for packet command ”h]”(j§)�”}”(hŒ``const u8 *cdb``”h]”j\)�”}”(hjÓ h]”hŒ const u8 *cdb”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MîhjÍ ubj·)�”}”(hhh]”hì)�”}”(hŒCDB for packet command”h]”hŒCDB for packet command”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jè h´Mîhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÍ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jè h´MîhjX ubj¡)�”}”(hŒK``enum dma_data_direction dma_dir`` Data transfer direction of the command ”h]”(j§)�”}”(hŒ#``enum dma_data_direction dma_dir``”h]”j\)�”}”(hj ¡h]”hŒenum dma_data_direction dma_dir”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mïhj¡ubj·)�”}”(hhh]”hì)�”}”(hŒ&Data transfer direction of the command”h]”hŒ&Data transfer direction of the command”…”�”}”(hj%¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!¡h´Mïhj"¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j!¡h´MïhjX ubj¡)�”}”(hŒ)``void *buf`` Data buffer of the command ”h]”(j§)�”}”(hŒ ``void *buf``”h]”j\)�”}”(hjE¡h]”hŒ void *buf”…”�”}”(hjG¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjC¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mðhj?¡ubj·)�”}”(hhh]”hì)�”}”(hŒData buffer of the command”h]”hŒData buffer of the command”…”�”}”(hj^¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZ¡h´Mðhj[¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj?¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jZ¡h´MðhjX ubj¡)�”}”(hŒ.``unsigned int buflen`` Length of data buffer ”h]”(j§)�”}”(hŒ``unsigned int buflen``”h]”j\)�”}”(hj~¡h]”hŒunsigned int buflen”…”�”}”(hj€¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj|¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mñhjx¡ubj·)�”}”(hhh]”hì)�”}”(hŒLength of data buffer”h]”hŒLength of data buffer”…”�”}”(hj—¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“¡h´Mñhj”¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjx¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j“¡h´MñhjX ubj¡)�”}”(hŒ:``unsigned int timeout`` Timeout in msecs (0 for default) ”h]”(j§)�”}”(hŒ``unsigned int timeout``”h]”j\)�”}”(hj·¡h]”hŒunsigned int timeout”…”�”}”(hj¹¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjµ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mòhj±¡ubj·)�”}”(hhh]”hì)�”}”(hŒ Timeout in msecs (0 for default)”h]”hŒ Timeout in msecs (0 for default)”…”�”}”(hjСh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ¡h´MòhjÍ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj±¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÌ¡h´MòhjX ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj< ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjò¡h]”hŒ Description”…”�”}”(hjô¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjð¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Môhj< ubj)�”}”(hX\Executes libata internal command with timeout. **tf** contains the command on entry and the result on return. Timeout and error conditions are reported via the return value. No recovery action is taken after a command times out. It is the caller's duty to clean up after timeout. LOCKING: None. Should be called with kernel context, might sleep. ”h]”(hì)�”}”(hXExecutes libata internal command with timeout. **tf** contains the command on entry and the result on return. Timeout and error conditions are reported via the return value. No recovery action is taken after a command times out. It is the caller's duty to clean up after timeout.”h]”(hŒ/Executes libata internal command with timeout. ”…”�”}”(hj ¢h²hh³Nh´Nubj )�”}”(hŒ**tf**”h]”hŒtf”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ¢ubhŒä contains the command on entry and the result on return. Timeout and error conditions are reported via the return value. No recovery action is taken after a command times out. It is the caller’s duty to clean up after timeout.”…”�”}”(hj ¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Móhj¢ubhì)�”}”(hŒBLOCKING: None. Should be called with kernel context, might sleep.”h]”hŒBLOCKING: None. Should be called with kernel context, might sleep.”…”�”}”(hj-¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mùhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,¢h´Móhj< ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjD¢h]”hŒReturn”…”�”}”(hjF¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mühj< ubhì)�”}”(hŒ)Zero on success, AC_ERR_* mask on failure”h]”hŒ)Zero on success, AC_ERR_* mask on failure”…”�”}”(hjZ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mýhj< ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_pio_mask_no_iordy (C function)”Œc.ata_pio_mask_no_iordy”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9u32 ata_pio_mask_no_iordy (const struct ata_device *adev)”h]”j")�”}”(hŒ8u32 ata_pio_mask_no_iordy(const struct ata_device *adev)”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŒ¢h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‰¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŽ¢Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_pio_mask_no_iordy”sbŒc.ata_pio_mask_no_iordy”†”asbuh1hhj…¢h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÃubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj…¢h²hh³j­¢h´MÃubj�)�”}”(hŒata_pio_mask_no_iordy”h]”j[)�”}”(hjª¢h]”hŒata_pio_mask_no_iordy”…”�”}”(hjÀ¢h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼¢ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj…¢h²hh³j­¢h´MÃubjª)�”}”(hŒ(const struct ata_device *adev)”h]”j°)�”}”(hŒconst struct ata_device *adev”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjÛ¢h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj×¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj×¢ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjö¢h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj×¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj×¢ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j£Œmodname”NŒ classname”Njwjz)�”}”j}]”j¨¢Œc.ata_pio_mask_no_iordy”†”asbuh1hhj×¢ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj×¢ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj@£h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj×¢ubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjM£h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj×¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÓ¢ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj…¢h²hh³j­¢h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj�¢h²hh³j­¢h´MÃubah}”(h]”j|¢ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j­¢h´MÃhj~¢h²hubj)�”}”(hhh]”hì)�”}”(hŒReturn the non IORDY mask”h]”hŒReturn the non IORDY mask”…”�”}”(hjw£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÃhjt£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~¢h²hh³j­¢h´MÃubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j�£j1j�£j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÀ**Parameters** ``const struct ata_device *adev`` ATA device **Description** Compute the highest mode possible if we are not using iordy. Return -1 if no iordy mode is available.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj™£h]”hŒ Parameters”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj—£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÇhj“£ubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``const struct ata_device *adev`` ATA device ”h]”(j§)�”}”(hŒ!``const struct ata_device *adev``”h]”j\)�”}”(hj¸£h]”hŒconst struct ata_device *adev”…”�”}”(hjº£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¶£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÄhj²£ubj·)�”}”(hhh]”hì)�”}”(hŒ ATA device”h]”hŒ ATA device”…”�”}”(hjÑ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÍ£h´MÄhjΣubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj²£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÍ£h´MÄhj¯£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj“£ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjó£h]”hŒ Description”…”�”}”(hjõ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÆhj“£ubj)�”}”(hŒeCompute the highest mode possible if we are not using iordy. Return -1 if no iordy mode is available.”h]”hì)�”}”(hŒeCompute the highest mode possible if we are not using iordy. Return -1 if no iordy mode is available.”•h]”hŒeCompute the highest mode possible if we are not using iordy. Return -1 if no iordy mode is available.”…”�”}”(hj ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÅhj ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¤h´MÅhj“£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_read_id (C function)”Œc.ata_dev_read_id”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`int ata_dev_read_id (struct ata_device *dev, unsigned int *p_class, unsigned int flags, u16 *id)”h]”j")�”}”(hŒ_int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, unsigned int flags, u16 *id)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjB¤h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>¤h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>¤h²hh³jP¤h´Mìubj�)�”}”(hŒata_dev_read_id”h]”j[)�”}”(hŒata_dev_read_id”h]”hŒata_dev_read_id”…”�”}”(hjc¤h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj_¤ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj>¤h²hh³jP¤h´Mìubjª)�”}”(hŒL(struct ata_device *dev, unsigned int *p_class, unsigned int flags, u16 *id)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{¤ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjš¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŸ¤Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsje¤sbŒc.ata_dev_read_id”†”asbuh1hhj{¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{¤ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjˤh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj{¤ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjؤh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjw¤ubj°)�”}”(hŒunsigned int *p_class”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjñ¤h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjí¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ¤h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí¤ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjí¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjí¤ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj)¥h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjí¤ubj[)�”}”(hŒp_class”h]”hŒp_class”…”�”}”(hj6¥h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjí¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjw¤ubj°)�”}”(hŒunsigned int flags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjO¥h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjK¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjK¥ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjk¥h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjK¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjK¥ubj[)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj‡¥h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjK¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjw¤ubj°)�”}”(hŒu16 *id”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj£¥h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¥¥Œmodname”NŒ classname”Njwjz)�”}”j}]”j¹¤Œc.ata_dev_read_id”†”asbuh1hhjœ¥ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ¥h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjœ¥ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÏ¥h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjœ¥ubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hjÜ¥h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjœ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjw¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj>¤h²hh³jP¤h´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj:¤h²hh³jP¤h´Mìubah}”(h]”j5¤ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jP¤h´Mìhj7¤h²hubj)�”}”(hhh]”hì)�”}”(hŒ&Read ID data from the specified device”h]”hŒ&Read ID data from the specified device”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mìhj¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7¤h²hh³jP¤h´Mìubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¦j1j¦j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX¢**Parameters** ``struct ata_device *dev`` target device ``unsigned int *p_class`` pointer to class of the target device (may be changed) ``unsigned int flags`` ATA_READID_* flags ``u16 *id`` buffer to read IDENTIFY data into **Description** Read ID data from the specified device. ATA_CMD_ID_ATA is performed on ATA devices and ATA_CMD_ID_ATAPI on ATAPI devices. This function also issues ATA_CMD_INIT_DEV_PARAMS for pre-ATA4 drives. FIXME: ATA_CMD_ID_ATA is optional for early drives and right now we abort if we hit that case. LOCKING: Kernel thread context (may sleep) **Return** 0 on success, -errno otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj(¦h]”hŒ Parameters”…”�”}”(hj*¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mðhj"¦ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjG¦h]”hŒstruct ata_device *dev”…”�”}”(hjI¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjE¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MíhjA¦ubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hj`¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j\¦h´Míhj]¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjA¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j\¦h´Míhj>¦ubj¡)�”}”(hŒQ``unsigned int *p_class`` pointer to class of the target device (may be changed) ”h]”(j§)�”}”(hŒ``unsigned int *p_class``”h]”j\)�”}”(hj€¦h]”hŒunsigned int *p_class”…”�”}”(hj‚¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj~¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mîhjz¦ubj·)�”}”(hhh]”hì)�”}”(hŒ6pointer to class of the target device (may be changed)”h]”hŒ6pointer to class of the target device (may be changed)”…”�”}”(hj™¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•¦h´Mîhj–¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjz¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j•¦h´Mîhj>¦ubj¡)�”}”(hŒ*``unsigned int flags`` ATA_READID_* flags ”h]”(j§)�”}”(hŒ``unsigned int flags``”h]”j\)�”}”(hj¹¦h]”hŒunsigned int flags”…”�”}”(hj»¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj·¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mïhj³¦ubj·)�”}”(hhh]”hì)�”}”(hŒATA_READID_* flags”h]”hŒATA_READID_* flags”…”�”}”(hjÒ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jΦh´MïhjϦubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj³¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jΦh´Mïhj>¦ubj¡)�”}”(hŒ.``u16 *id`` buffer to read IDENTIFY data into ”h]”(j§)�”}”(hŒ ``u16 *id``”h]”j\)�”}”(hjò¦h]”hŒu16 *id”…”�”}”(hjô¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjð¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mðhjì¦ubj·)�”}”(hhh]”hì)�”}”(hŒ!buffer to read IDENTIFY data into”h]”hŒ!buffer to read IDENTIFY data into”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§h´Mðhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjì¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j§h´Mðhj>¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj"¦ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj-§h]”hŒ Description”…”�”}”(hj/§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mòhj"¦ubj)�”}”(hXORead ID data from the specified device. ATA_CMD_ID_ATA is performed on ATA devices and ATA_CMD_ID_ATAPI on ATAPI devices. This function also issues ATA_CMD_INIT_DEV_PARAMS for pre-ATA4 drives. FIXME: ATA_CMD_ID_ATA is optional for early drives and right now we abort if we hit that case. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hŒÂRead ID data from the specified device. ATA_CMD_ID_ATA is performed on ATA devices and ATA_CMD_ID_ATAPI on ATAPI devices. This function also issues ATA_CMD_INIT_DEV_PARAMS for pre-ATA4 drives.”h]”hŒÂRead ID data from the specified device. ATA_CMD_ID_ATA is performed on ATA devices and ATA_CMD_ID_ATAPI on ATAPI devices. This function also issues ATA_CMD_INIT_DEV_PARAMS for pre-ATA4 drives.”…”�”}”(hjG§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MñhjC§ubhì)�”}”(hŒ^FIXME: ATA_CMD_ID_ATA is optional for early drives and right now we abort if we hit that case.”h]”hŒ^FIXME: ATA_CMD_ID_ATA is optional for early drives and right now we abort if we hit that case.”…”�”}”(hjV§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MöhjC§ubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hje§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MùhjC§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jU§h´Mñhj"¦ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj|§h]”hŒReturn”…”�”}”(hj~§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjz§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mühj"¦ubhì)�”}”(hŒ0 on success, -errno otherwise.”h]”hŒ0 on success, -errno otherwise.”…”�”}”(hj’§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mýhj"¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ata_dev_power_set_standby (C function)”Œc.ata_dev_power_set_standby”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ7void ata_dev_power_set_standby (struct ata_device *dev)”h]”j")�”}”(hŒ6void ata_dev_power_set_standby(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÁ§h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj½§h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Móubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЧh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½§h²hh³jϧh´Móubj�)�”}”(hŒata_dev_power_set_standby”h]”j[)�”}”(hŒata_dev_power_set_standby”h]”hŒata_dev_power_set_standby”…”�”}”(hjâ§h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÞ§ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj½§h²hh³jϧh´Móubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjþ§h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjú§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjú§ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¨Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjä§sbŒc.ata_dev_power_set_standby”†”asbuh1hhjú§ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjú§ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjJ¨h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjú§ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjW¨h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjú§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjö§ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj½§h²hh³jϧh´Móubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¹§h²hh³jϧh´Móubah}”(h]”j´§ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jϧh´Móhj¶§h²hubj)�”}”(hhh]”hì)�”}”(hŒ"Set a device power mode to standby”h]”hŒ"Set a device power mode to standby”…”�”}”(hj�¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Móhj~¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶§h²hh³jϧh´Móubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j™¨j1j™¨j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_device *dev`` target device **Description** Issue a STANDBY IMMEDIATE command to set a device power mode to standby. For an HDD device, this spins down the disks. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj£¨h]”hŒ Parameters”…”�”}”(hj¥¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M÷hj�¨ubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj¨h]”hŒstruct ata_device *dev”…”�”}”(hjĨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÀ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Môhj¼¨ubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hjÛ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jרh´Môhjبubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¼¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jרh´Môhj¹¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�¨ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjý¨h]”hŒ Description”…”�”}”(hjÿ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Möhj�¨ubj)�”}”(hŒ£Issue a STANDBY IMMEDIATE command to set a device power mode to standby. For an HDD device, this spins down the disks. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒvIssue a STANDBY IMMEDIATE command to set a device power mode to standby. For an HDD device, this spins down the disks.”h]”hŒvIssue a STANDBY IMMEDIATE command to set a device power mode to standby. For an HDD device, this spins down the disks.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mõhj©ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj&©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Møhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%©h´Mõhj�¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ata_dev_power_set_active (C function)”Œc.ata_dev_power_set_active”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ6void ata_dev_power_set_active (struct ata_device *dev)”h]”j")�”}”(hŒ5void ata_dev_power_set_active(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[©h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjW©h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW©h²hh³ji©h´M!ubj�)�”}”(hŒata_dev_power_set_active”h]”j[)�”}”(hŒata_dev_power_set_active”h]”hŒata_dev_power_set_active”…”�”}”(hj|©h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjx©ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjW©h²hh³ji©h´M!ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj˜©h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj”©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”©ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¶©h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj³©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¸©Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj~©sbŒc.ata_dev_power_set_active”†”asbuh1hhj”©ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ©h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj”©ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjä©h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj”©ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjñ©h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj”©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj�©ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjW©h²hh³ji©h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjS©h²hh³ji©h´M!ubah}”(h]”jN©ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³ji©h´M!hjP©h²hubj)�”}”(hhh]”hì)�”}”(hŒ!Set a device power mode to active”h]”hŒ!Set a device power mode to active”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M!hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP©h²hh³ji©h´M!ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j3ªj1j3ªj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXU**Parameters** ``struct ata_device *dev`` target device **Description** Issue a VERIFY command to enter to ensure that the device is in the active power mode. For a spun-down HDD (standby or idle power mode), the VERIFY command will complete after the disk spins up. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj=ªh]”hŒ Parameters”…”�”}”(hj?ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ªubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M%hj7ªubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj\ªh]”hŒstruct ata_device *dev”…”�”}”(hj^ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjZªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M"hjVªubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hjuªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jqªh´M"hjrªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjVªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jqªh´M"hjSªubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj7ªubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj—ªh]”hŒ Description”…”�”}”(hj™ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj•ªubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M$hj7ªubj)�”}”(hŒïIssue a VERIFY command to enter to ensure that the device is in the active power mode. For a spun-down HDD (standby or idle power mode), the VERIFY command will complete after the disk spins up. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒÂIssue a VERIFY command to enter to ensure that the device is in the active power mode. For a spun-down HDD (standby or idle power mode), the VERIFY command will complete after the disk spins up.”h]”hŒÂIssue a VERIFY command to enter to ensure that the device is in the active power mode. For a spun-down HDD (standby or idle power mode), the VERIFY command will complete after the disk spins up.”…”�”}”(hj±ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M#hj­ªubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjÀªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M'hj­ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¿ªh´M#hj7ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_read_log_page (C function)”Œc.ata_read_log_page”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiunsigned int ata_read_log_page (struct ata_device *dev, u8 log, u8 page, void *buf, unsigned int sectors)”h]”j")�”}”(hŒhunsigned int ata_read_log_page(struct ata_device *dev, u8 log, u8 page, void *buf, unsigned int sectors)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjõªh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjñªh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjñªh²hh³j«h´MGubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjñªh²hh³j«h´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjñªh²hh³j«h´MGubj�)�”}”(hŒata_read_log_page”h]”j[)�”}”(hŒata_read_log_page”h]”hŒata_read_log_page”…”�”}”(hj2«h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj.«ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjñªh²hh³j«h´MGubjª)�”}”(hŒJ(struct ata_device *dev, u8 log, u8 page, void *buf, unsigned int sectors)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjN«h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjJ«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJ«ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjl«h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhji«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jn«Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj4«sbŒc.ata_read_log_page”†”asbuh1hhjJ«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjJ«ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjš«h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjJ«ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj§«h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjJ«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjF«ubj°)�”}”(hŒu8 log”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÀ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÅ«Œmodname”NŒ classname”Njwjz)�”}”j}]”jˆ«Œc.ata_read_log_page”†”asbuh1hhj¼«ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼«ubj[)�”}”(hŒlog”h]”hŒlog”…”�”}”(hjï«h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjF«ubj°)�”}”(hŒu8 page”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j ¬Œmodname”NŒ classname”Njwjz)�”}”j}]”jˆ«Œc.ata_read_log_page”†”asbuh1hhj¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ubj[)�”}”(hŒpage”h]”hŒpage”…”�”}”(hj7¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjF«ubj°)�”}”(hŒ void *buf”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjP¬h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjL¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjL¬ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjl¬h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjL¬ubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjy¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjL¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjF«ubj°)�”}”(hŒunsigned int sectors”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’¬h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjެubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjެubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj®¬h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjެubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjެubj[)�”}”(hŒsectors”h]”hŒsectors”…”�”}”(hjʬh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjެubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjF«ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjñªh²hh³j«h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjíªh²hh³j«h´MGubah}”(h]”jèªah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j«h´MGhjêªh²hubj)�”}”(hhh]”hì)�”}”(hŒread a specific log page”h]”hŒread a specific log page”…”�”}”(hjô¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MGhjñ¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêªh²hh³j«h´MGubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j ­j1j ­j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX}**Parameters** ``struct ata_device *dev`` target device ``u8 log`` log to read ``u8 page`` page to read ``void *buf`` buffer to store read page ``unsigned int sectors`` number of sectors to read **Description** Read log page using READ_LOG_EXT command. LOCKING: Kernel thread context (may sleep). **Return** 0 on success, AC_ERR_* mask otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj­h]”hŒ Parameters”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MKhj­ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj5­h]”hŒstruct ata_device *dev”…”�”}”(hj7­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj3­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MHhj/­ubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hjN­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJ­h´MHhjK­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj/­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jJ­h´MHhj,­ubj¡)�”}”(hŒ``u8 log`` log to read ”h]”(j§)�”}”(hŒ ``u8 log``”h]”j\)�”}”(hjn­h]”hŒu8 log”…”�”}”(hjp­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjl­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MIhjh­ubj·)�”}”(hhh]”hì)�”}”(hŒ log to read”h]”hŒ log to read”…”�”}”(hj‡­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒ­h´MIhj„­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjh­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jƒ­h´MIhj,­ubj¡)�”}”(hŒ``u8 page`` page to read ”h]”(j§)�”}”(hŒ ``u8 page``”h]”j\)�”}”(hj§­h]”hŒu8 page”…”�”}”(hj©­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¥­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MJhj¡­ubj·)�”}”(hhh]”hì)�”}”(hŒ page to read”h]”hŒ page to read”…”�”}”(hjÀ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼­h´MJhj½­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¼­h´MJhj,­ubj¡)�”}”(hŒ(``void *buf`` buffer to store read page ”h]”(j§)�”}”(hŒ ``void *buf``”h]”j\)�”}”(hjà­h]”hŒ void *buf”…”�”}”(hjâ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÞ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MKhjÚ­ubj·)�”}”(hhh]”hì)�”}”(hŒbuffer to store read page”h]”hŒbuffer to store read page”…”�”}”(hjù­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõ­h´MKhjö­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÚ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jõ­h´MKhj,­ubj¡)�”}”(hŒ3``unsigned int sectors`` number of sectors to read ”h]”(j§)�”}”(hŒ``unsigned int sectors``”h]”j\)�”}”(hj®h]”hŒunsigned int sectors”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MLhj®ubj·)�”}”(hhh]”hì)�”}”(hŒnumber of sectors to read”h]”hŒnumber of sectors to read”…”�”}”(hj2®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.®h´MLhj/®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j.®h´MLhj,­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj­ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjT®h]”hŒ Description”…”�”}”(hjV®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MNhj­ubj)�”}”(hŒWRead log page using READ_LOG_EXT command. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒ)Read log page using READ_LOG_EXT command.”h]”hŒ)Read log page using READ_LOG_EXT command.”…”�”}”(hjn®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MMhjj®ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj}®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MOhjj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j|®h´MMhj­ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj”®h]”hŒReturn”…”�”}”(hj–®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MRhj­ubhì)�”}”(hŒ&0 on success, AC_ERR_* mask otherwise.”h]”hŒ&0 on success, AC_ERR_* mask otherwise.”…”�”}”(hjª®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MShj­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_configure (C function)”Œc.ata_dev_configure”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.int ata_dev_configure (struct ata_device *dev)”h]”j")�”}”(hŒ-int ata_dev_configure(struct ata_device *dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ®h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÕ®h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÔ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕ®h²hh³jç®h´MÔ ubj�)�”}”(hŒata_dev_configure”h]”j[)�”}”(hŒata_dev_configure”h]”hŒata_dev_configure”…”�”}”(hjú®h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjö®ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÕ®h²hh³jç®h´MÔ ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj4¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj1¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j6¯Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjü®sbŒc.ata_dev_configure”†”asbuh1hhj¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjb¯h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¯ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjo¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¯ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÕ®h²hh³jç®h´MÔ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÑ®h²hh³jç®h´MÔ ubah}”(h]”jÌ®ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jç®h´MÔ hjήh²hubj)�”}”(hhh]”hì)�”}”(hŒ(Configure the specified ATA/ATAPI device”h]”hŒ(Configure the specified ATA/ATAPI device”…”�”}”(hj™¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÔ hj–¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjήh²hh³jç®h´MÔ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j±¯j1j±¯j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX1**Parameters** ``struct ata_device *dev`` Target device to configure **Description** Configure **dev** according to **dev->id**. Generic and low-level driver specific fixups are also applied. LOCKING: Kernel thread context (may sleep) **Return** 0 on success, -errno otherwise”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj»¯h]”hŒ Parameters”…”�”}”(hj½¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¹¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MØ hjµ¯ubjœ)�”}”(hhh]”j¡)�”}”(hŒ6``struct ata_device *dev`` Target device to configure ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÚ¯h]”hŒstruct ata_device *dev”…”�”}”(hjܯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjدubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÕ hjÔ¯ubj·)�”}”(hhh]”hì)�”}”(hŒTarget device to configure”h]”hŒTarget device to configure”…”�”}”(hjó¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jï¯h´MÕ hjð¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÔ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jï¯h´MÕ hjѯubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjµ¯ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj°h]”hŒ Description”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M× hjµ¯ubj)�”}”(hŒ˜Configure **dev** according to **dev->id**. Generic and low-level driver specific fixups are also applied. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hŒkConfigure **dev** according to **dev->id**. Generic and low-level driver specific fixups are also applied.”h]”(hŒ Configure ”…”�”}”(hj/°h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj7°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/°ubhŒ according to ”…”�”}”(hj/°h²hh³Nh´Nubj )�”}”(hŒ **dev->id**”h]”hŒdev->id”…”�”}”(hjI°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/°ubhŒA. Generic and low-level driver specific fixups are also applied.”…”�”}”(hj/°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÖ hj+°ubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hjb°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÙ hj+°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ja°h´MÖ hjµ¯ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjy°h]”hŒReturn”…”�”}”(hj{°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjw°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÜ hjµ¯ubhì)�”}”(hŒ0 on success, -errno otherwise”h]”hŒ0 on success, -errno otherwise”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÝ hjµ¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#sata_print_link_status (C function)”Œc.sata_print_link_status”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3void sata_print_link_status (struct ata_link *link)”h]”j")�”}”(hŒ2void sata_print_link_status(struct ata_link *link)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾°h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjº°h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M; ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͰh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjº°h²hh³j̰h´M; ubj�)�”}”(hŒsata_print_link_status”h]”j[)�”}”(hŒsata_print_link_status”h]”hŒsata_print_link_status”…”�”}”(hjß°h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÛ°ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjº°h²hh³j̰h´M; ubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjû°h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj÷°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷°ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j±Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjá°sbŒc.sata_print_link_status”†”asbuh1hhj÷°ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9±h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷°ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjG±h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj÷°ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjT±h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj÷°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjó°ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjº°h²hh³j̰h´M; ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¶°h²hh³j̰h´M; ubah}”(h]”j±°ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j̰h´M; hj³°h²hubj)�”}”(hhh]”hì)�”}”(hŒPrint SATA link status”h]”hŒPrint SATA link status”…”�”}”(hj~±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M; hj{±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³°h²hh³j̰h´M; ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j–±j1j–±j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ½**Parameters** ``struct ata_link *link`` SATA link to printk link status about **Description** This function prints link speed and status of a SATA link. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj ±h]”hŒ Parameters”…”�”}”(hj¢±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjž±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M? hjš±ubjœ)�”}”(hhh]”j¡)�”}”(hŒ@``struct ata_link *link`` SATA link to printk link status about ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj¿±h]”hŒstruct ata_link *link”…”�”}”(hjÁ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj½±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M< hj¹±ubj·)�”}”(hhh]”hì)�”}”(hŒ%SATA link to printk link status about”h]”hŒ%SATA link to printk link status about”…”�”}”(hjرh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÔ±h´M< hjÕ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¹±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÔ±h´M< hj¶±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjš±ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjú±h]”hŒ Description”…”�”}”(hjü±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M> hjš±ubj)�”}”(hŒJThis function prints link speed and status of a SATA link. LOCKING: None.”h]”(hì)�”}”(hŒ:This function prints link speed and status of a SATA link.”h]”hŒ:This function prints link speed and status of a SATA link.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M= hj²ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj#²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M? hj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"²h´M= hjš±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_timing_cycle2mode (C function)”Œc.ata_timing_cycle2mode”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=u8 ata_timing_cycle2mode (unsigned int xfer_shift, int cycle)”h]”j")�”}”(hŒ³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM²h²hh³j|²h´Mj ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jY³j1jY³j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXÿ**Parameters** ``unsigned int xfer_shift`` ATA_SHIFT_* value for transfer type to examine. ``int cycle`` cycle duration in ns **Description** Return matching xfer mode for **cycle**. The returned mode is of the transfer type specified by **xfer_shift**. If **cycle** is too slow for **xfer_shift**, 0xff is returned. If **cycle** is faster than the fastest known mode, the fasted mode is returned. LOCKING: None. **Return** Matching xfer_mode, 0xff if no match found.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjc³h]”hŒ Parameters”…”�”}”(hje³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mn hj]³ubjœ)�”}”(hhh]”(j¡)�”}”(hŒL``unsigned int xfer_shift`` ATA_SHIFT_* value for transfer type to examine. ”h]”(j§)�”}”(hŒ``unsigned int xfer_shift``”h]”j\)�”}”(hj‚³h]”hŒunsigned int xfer_shift”…”�”}”(hj„³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mk hj|³ubj·)�”}”(hhh]”hì)�”}”(hŒ/ATA_SHIFT_* value for transfer type to examine.”h]”hŒ/ATA_SHIFT_* value for transfer type to examine.”…”�”}”(hj›³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—³h´Mk hj˜³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—³h´Mk hjy³ubj¡)�”}”(hŒ#``int cycle`` cycle duration in ns ”h]”(j§)�”}”(hŒ ``int cycle``”h]”j\)�”}”(hj»³h]”hŒ int cycle”…”�”}”(hj½³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¹³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Ml hjµ³ubj·)�”}”(hhh]”hì)�”}”(hŒcycle duration in ns”h]”hŒcycle duration in ns”…”�”}”(hjÔ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jгh´Ml hjѳubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjµ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jгh´Ml hjy³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj]³ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjö³h]”hŒ Description”…”�”}”(hjø³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjô³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mn hj]³ubj)�”}”(hXReturn matching xfer mode for **cycle**. The returned mode is of the transfer type specified by **xfer_shift**. If **cycle** is too slow for **xfer_shift**, 0xff is returned. If **cycle** is faster than the fastest known mode, the fasted mode is returned. LOCKING: None. ”h]”(hì)�”}”(hXReturn matching xfer mode for **cycle**. The returned mode is of the transfer type specified by **xfer_shift**. If **cycle** is too slow for **xfer_shift**, 0xff is returned. If **cycle** is faster than the fastest known mode, the fasted mode is returned.”h]”(hŒReturn matching xfer mode for ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ **cycle**”h]”hŒcycle”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ:. The returned mode is of the transfer type specified by ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ**xfer_shift**”h]”hŒ xfer_shift”…”�”}”(hj*´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ. If ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ **cycle**”h]”hŒcycle”…”�”}”(hj<´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ is too slow for ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ**xfer_shift**”h]”hŒ xfer_shift”…”�”}”(hjN´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒ, 0xff is returned. If ”…”�”}”(hj´h²hh³Nh´Nubj )�”}”(hŒ **cycle**”h]”hŒcycle”…”�”}”(hj`´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´ubhŒD is faster than the fastest known mode, the fasted mode is returned.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mm hj ´ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjy´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mr hj ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jx´h´Mm hj]³ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj�´h]”hŒReturn”…”�”}”(hj’´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mu hj]³ubhì)�”}”(hŒ+Matching xfer_mode, 0xff if no match found.”h]”hŒ+Matching xfer_mode, 0xff if no match found.”…”�”}”(hj¦´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mv hj]³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ata_down_xfermask_limit (C function)”Œc.ata_down_xfermask_limit”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFint ata_down_xfermask_limit (struct ata_device *dev, unsigned int sel)”h]”j")�”}”(hŒEint ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕ´h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÑ´h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mž ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä´h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑ´h²hh³jã´h´Mž ubj�)�”}”(hŒata_down_xfermask_limit”h]”j[)�”}”(hŒata_down_xfermask_limit”h]”hŒata_down_xfermask_limit”…”�”}”(hjö´h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjò´ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÑ´h²hh³jã´h´Mž ubjª)�”}”(hŒ*(struct ata_device *dev, unsigned int sel)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj0µh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj-µubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j2µŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjø´sbŒc.ata_down_xfermask_limit”†”asbuh1hhjµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPµh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµubj)�”}”(hjS h]”hŒ*”…”�”}”(hj^µh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjµubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjkµh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj µubj°)�”}”(hŒunsigned int sel”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj„µh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj€µubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’µh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€µubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj€µubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®µh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€µubj[)�”}”(hŒsel”h]”hŒsel”…”�”}”(hj¼µh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj µubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÑ´h²hh³jã´h´Mž ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÍ´h²hh³jã´h´Mž ubah}”(h]”jÈ´ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jã´h´Mž hjÊ´h²hubj)�”}”(hhh]”hì)�”}”(hŒadjust dev xfer masks downward”h]”hŒadjust dev xfer masks downward”…”�”}”(hjæµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mž hjãµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ´h²hh³jã´h´Mž ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jþµj1jþµj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXŒ**Parameters** ``struct ata_device *dev`` Device to adjust xfer masks ``unsigned int sel`` ATA_DNXFER_* selector **Description** Adjust xfer masks of **dev** downward. Note that this function does not apply the change. Invoking ata_set_mode() afterwards will apply the limit. LOCKING: Inherited from caller. **Return** 0 on success, negative errno on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¶h]”hŒ Parameters”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¢ hj¶ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ7``struct ata_device *dev`` Device to adjust xfer masks ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj'¶h]”hŒstruct ata_device *dev”…”�”}”(hj)¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj%¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MŸ hj!¶ubj·)�”}”(hhh]”hì)�”}”(hŒDevice to adjust xfer masks”h]”hŒDevice to adjust xfer masks”…”�”}”(hj@¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<¶h´MŸ hj=¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj!¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j<¶h´MŸ hj¶ubj¡)�”}”(hŒ+``unsigned int sel`` ATA_DNXFER_* selector ”h]”(j§)�”}”(hŒ``unsigned int sel``”h]”j\)�”}”(hj`¶h]”hŒunsigned int sel”…”�”}”(hjb¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj^¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M  hjZ¶ubj·)�”}”(hhh]”hì)�”}”(hŒATA_DNXFER_* selector”h]”hŒATA_DNXFER_* selector”…”�”}”(hjy¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ju¶h´M  hjv¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjZ¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³ju¶h´M  hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¶ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj›¶h]”hŒ Description”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¢ hj¶ubj)�”}”(hŒ¶Adjust xfer masks of **dev** downward. Note that this function does not apply the change. Invoking ata_set_mode() afterwards will apply the limit. LOCKING: Inherited from caller. ”h]”(hì)�”}”(hŒ”Adjust xfer masks of **dev** downward. Note that this function does not apply the change. Invoking ata_set_mode() afterwards will apply the limit.”h]”(hŒAdjust xfer masks of ”…”�”}”(hjµ¶h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj½¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ¶ubhŒx downward. Note that this function does not apply the change. Invoking ata_set_mode() afterwards will apply the limit.”…”�”}”(hjµ¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¡ hj±¶ubhì)�”}”(hŒLOCKING: Inherited from caller.”h]”hŒLOCKING: Inherited from caller.”…”�”}”(hjÖ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¥ hj±¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÕ¶h´M¡ hj¶ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjí¶h]”hŒReturn”…”�”}”(hjï¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¨ hj¶ubhì)�”}”(hŒ'0 on success, negative errno on failure”h]”hŒ'0 on success, negative errno on failure”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M© hj¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_wait_ready (C function)”Œc.ata_wait_ready”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmint ata_wait_ready (struct ata_link *link, unsigned long deadline, int (*check_ready)(struct ata_link *link))”h]”j")�”}”(hŒlint ata_wait_ready(struct ata_link *link, unsigned long deadline, int (*check_ready)(struct ata_link *link))”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj2·h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj.·h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.·h²hh³j@·h´M®ubj�)�”}”(hŒata_wait_ready”h]”j[)�”}”(hŒata_wait_ready”h]”hŒata_wait_ready”…”�”}”(hjS·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjO·ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj.·h²hh³j@·h´M®ubjª)�”}”(hŒZ(struct ata_link *link, unsigned long deadline, int (*check_ready)(struct ata_link *link))”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjo·h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjk·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjk·ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŠ·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j�·Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjU·sbŒc.ata_wait_ready”†”asbuh1hhjk·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjk·ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj»·h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjk·ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjÈ·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjk·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjg·ubj°)�”}”(hŒunsigned long deadline”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjá·h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÝ·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝ·ubj²)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjý·h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÝ·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝ·ubj[)�”}”(hŒdeadline”h]”hŒdeadline”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÝ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjg·ubj°)�”}”(hŒ)int (*check_ready)(struct ata_link *link)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj2¸h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj.¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.¸ubj)�”}”(hj8Gh]”hŒ(”…”�”}”(hjN¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj[¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubj[)�”}”(hŒ check_ready”h]”hŒ check_ready”…”�”}”(hjh¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj.¸ubj)�”}”(hjaGh]”hŒ)”…”�”}”(hjv¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubj)�”}”(hj8Gh]”hŒ(”…”�”}”(hjƒ¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj.¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.¸ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj®¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj«¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j°¸Œmodname”NŒ classname”Njwjz)�”}”j}]”j©·Œc.ata_wait_ready”†”asbuh1hhj.¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj.¸ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÚ¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjç¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj.¸ubj)�”}”(hjaGh]”hŒ)”…”�”}”(hjõ¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj.¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjg·ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj.·h²hh³j@·h´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj*·h²hh³j@·h´M®ubah}”(h]”j%·ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j@·h´M®hj'·h²hubj)�”}”(hhh]”hì)�”}”(hŒwait for link to become ready”h]”hŒwait for link to become ready”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M®hj¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'·h²hh³j@·h´M®ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j6¹j1j6¹j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX|**Parameters** ``struct ata_link *link`` link to be waited on ``unsigned long deadline`` deadline jiffies for the operation ``int (*check_ready)(struct ata_link *link)`` callback to check link readiness **Description** Wait for **link** to become ready. **check_ready** should return positive number if **link** is ready, 0 if it isn't, -ENODEV if link doesn't seem to be occupied, other errno for other error conditions. Transient -ENODEV conditions are allowed for ATA_TMOUT_FF_WAIT. LOCKING: EH context. **Return** 0 if **link** is ready before **deadline**; otherwise, -errno.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj@¹h]”hŒ Parameters”…”�”}”(hjB¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M²hj:¹ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ/``struct ata_link *link`` link to be waited on ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj_¹h]”hŒstruct ata_link *link”…”�”}”(hja¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj]¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¯hjY¹ubj·)�”}”(hhh]”hì)�”}”(hŒlink to be waited on”h]”hŒlink to be waited on”…”�”}”(hjx¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt¹•#h´M¯hju¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjY¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jt¹h´M¯hjV¹ubj¡)�”}”(hŒ>``unsigned long deadline`` deadline jiffies for the operation ”h]”(j§)�”}”(hŒ``unsigned long deadline``”h]”j\)�”}”(hj˜¹h]”hŒunsigned long deadline”…”�”}”(hjš¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj–¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M°hj’¹ubj·)�”}”(hhh]”hì)�”}”(hŒ"deadline jiffies for the operation”h]”hŒ"deadline jiffies for the operation”…”�”}”(hj±¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­¹h´M°hj®¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj’¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j­¹h´M°hjV¹ubj¡)�”}”(hŒO``int (*check_ready)(struct ata_link *link)`` callback to check link readiness ”h]”(j§)�”}”(hŒ-``int (*check_ready)(struct ata_link *link)``”h]”j\)�”}”(hjѹh]”hŒ)int (*check_ready)(struct ata_link *link)”…”�”}”(hjÓ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjϹubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M±hj˹ubj·)�”}”(hhh]”hì)�”}”(hŒ callback to check link readiness”h]”hŒ callback to check link readiness”…”�”}”(hjê¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jæ¹h´M±hjç¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj˹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jæ¹h´M±hjV¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj:¹ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj ºh]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M³hj:¹ubj)�”}”(hX#Wait for **link** to become ready. **check_ready** should return positive number if **link** is ready, 0 if it isn't, -ENODEV if link doesn't seem to be occupied, other errno for other error conditions. Transient -ENODEV conditions are allowed for ATA_TMOUT_FF_WAIT. LOCKING: EH context. ”h]”(hì)�”}”(hŒËWait for **link** to become ready. **check_ready** should return positive number if **link** is ready, 0 if it isn't, -ENODEV if link doesn't seem to be occupied, other errno for other error conditions.”h]”(hŒ Wait for ”…”�”}”(hj&ºh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hj.ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ºubhŒ to become ready. ”…”�”}”(hj&ºh²hh³Nh´Nubj )�”}”(hŒ**check_ready**”h]”hŒ check_ready”…”�”}”(hj@ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ºubhŒ" should return positive number if ”…”�”}”(hj&ºh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hjRºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ºubhŒr is ready, 0 if it isn’t, -ENODEV if link doesn’t seem to be occupied, other errno for other error conditions.”…”�”}”(hj&ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M²hj"ºubhì)�”}”(hŒ?Transient -ENODEV conditions are allowed for ATA_TMOUT_FF_WAIT.”h]”hŒ?Transient -ENODEV conditions are allowed for ATA_TMOUT_FF_WAIT.”…”�”}”(hjkºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M·hj"ºubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjzºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mºhj"ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jjºh´M²hj:¹ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj‘ºh]”hŒReturn”…”�”}”(hj“ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M½hj:¹ubhì)�”}”(hŒ>0 if **link** is ready before **deadline**; otherwise, -errno.”h]”(hŒ0 if ”…”�”}”(hj§ºh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hj¯ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ºubhŒ is ready before ”…”�”}”(hj§ºh²hh³Nh´Nubj )�”}”(hŒ **deadline**”h]”hŒdeadline”…”�”}”(hjÁºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§ºubhŒ; otherwise, -errno.”…”�”}”(hj§ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¾hj:¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_dev_same_device (C function)”Œc.ata_dev_same_device”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ[int ata_dev_same_device (struct ata_device *dev, unsigned int new_class, const u16 *new_id)”h]”j")�”}”(hŒZint ata_dev_same_device(struct ata_device *dev, unsigned int new_class, const u16 *new_id)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjúºh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjöºh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj »h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjöºh²hh³j»h´Mcubj�)�”}”(hŒata_dev_same_device”h]”j[)�”}”(hŒata_dev_same_device”h]”hŒata_dev_same_device”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj»ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjöºh²hh³j»h´Mcubjª)�”}”(hŒC(struct ata_device *dev, unsigned int new_class, const u16 *new_id)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj7»h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj3»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3»ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjU»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjR»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jW»Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj»sbŒc.ata_dev_same_device”†”asbuh1hhj3»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3»ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjƒ»h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj3»ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj3»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj/»ubj°)�”}”(hŒunsigned int new_class”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj©»h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¥»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥»ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÅ»h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¥»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥»ubj[)�”}”(hŒ new_class”h]”hŒ new_class”…”�”}”(hjá»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¥»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj/»ubj°)�”}”(hŒconst u16 *new_id”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjú»h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjö»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjö»ubh)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¼Œmodname”NŒ classname”Njwjz)�”}”j}]”jq»Œc.ata_dev_same_device”†”asbuh1hhjö»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjö»ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjö»ubj[)�”}”(hŒnew_id”h]”hŒnew_id”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjö»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj/»ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjöºh²hh³j»h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjòºh²hh³j»h´Mcubah}”(h]”jíºah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j»h´Mchjïºh²hubj)�”}”(hhh]”hì)�”}”(hŒ2Determine whether new ID matches configured device”h]”hŒ2Determine whether new ID matches configured device”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mchjx¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïºh²hh³j»h´Mcubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j“¼j1j“¼j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXÉ**Parameters** ``struct ata_device *dev`` device to compare against ``unsigned int new_class`` class of the new device ``const u16 *new_id`` IDENTIFY page of the new device **Description** Compare **new_class** and **new_id** against **dev** and determine whether **dev** is the device indicated by **new_class** and **new_id**. LOCKING: None. **Return** 1 if **dev** matches **new_class** and **new_id**, 0 otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�¼h]”hŒ Parameters”…”�”}”(hjŸ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mghj—¼ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ5``struct ata_device *dev`` device to compare against ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj¼¼h]”hŒstruct ata_device *dev”…”�”}”(hj¾¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjº¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mdhj¶¼ubj·)�”}”(hhh]”hì)�”}”(hŒdevice to compare against”h]”hŒdevice to compare against”…”�”}”(hjÕ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jѼh´MdhjÒ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¶¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jѼh´Mdhj³¼ubj¡)�”}”(hŒ3``unsigned int new_class`` class of the new device ”h]”(j§)�”}”(hŒ``unsigned int new_class``”h]”j\)�”}”(hjõ¼h]”hŒunsigned int new_class”…”�”}”(hj÷¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjó¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mehjï¼ubj·)�”}”(hhh]”hì)�”}”(hŒclass of the new device”h]”hŒclass of the new device”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ½h´Mehj ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjï¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j ½h´Mehj³¼ubj¡)�”}”(hŒ6``const u16 *new_id`` IDENTIFY page of the new device ”h]”(j§)�”}”(hŒ``const u16 *new_id``”h]”j\)�”}”(hj.½h]”hŒconst u16 *new_id”…”�”}”(hj0½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj,½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mfhj(½ubj·)�”}”(hhh]”hì)�”}”(hŒIDENTIFY page of the new device”h]”hŒIDENTIFY page of the new device”…”�”}”(hjG½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jC½h´MfhjD½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj(½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jC½h´Mfhj³¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj—¼ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hji½h]”hŒ Description”…”�”}”(hjk½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjg½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhhj—¼ubj)�”}”(hŒœCompare **new_class** and **new_id** against **dev** and determine whether **dev** is the device indicated by **new_class** and **new_id**. LOCKING: None. ”h]”(hì)�”}”(hŒ‹Compare **new_class** and **new_id** against **dev** and determine whether **dev** is the device indicated by **new_class** and **new_id**.”h]”(hŒCompare ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ **new_class**”h]”hŒ new_class”…”�”}”(hj‹½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ and ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ **new_id**”h]”hŒnew_id”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ against ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¯½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ and determine whether ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÁ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ is the device indicated by ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ **new_class**”h]”hŒ new_class”…”�”}”(hjÓ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ and ”…”�”}”(hjƒ½h²hh³Nh´Nubj )�”}”(hŒ **new_id**”h]”hŒnew_id”…”�”}”(hjå½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ½ubhŒ.”…”�”}”(hjƒ½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mghj½ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjþ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mkhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jý½h´Mghj—¼ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj¾h]”hŒReturn”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mnhj—¼ubhì)�”}”(hŒ?1 if **dev** matches **new_class** and **new_id**, 0 otherwise.”h]”(hŒ1 if ”…”�”}”(hj+¾h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj3¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+¾ubhŒ matches ”…”�”}”(hj+¾h²hh³Nh´Nubj )�”}”(hŒ **new_class**”h]”hŒ new_class”…”�”}”(hjE¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+¾ubhŒ and ”…”�”}”(hj+¾h²hh³Nh´Nubj )�”}”(hŒ **new_id**”h]”hŒnew_id”…”�”}”(hjW¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+¾ubhŒ, 0 otherwise.”…”�”}”(hj+¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mohj—¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_reread_id (C function)”Œc.ata_dev_reread_id”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIint ata_dev_reread_id (struct ata_device *dev, unsigned int readid_flags)”h]”j")�”}”(hŒHint ata_dev_reread_id(struct ata_device *dev, unsigned int readid_flags)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŒ¾h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M”ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŒ¾h²hh³jž¾h´M”ubj�)�”}”(hŒata_dev_reread_id”h]”j[)�”}”(hŒata_dev_reread_id”h]”hŒata_dev_reread_id”…”�”}”(hj±¾h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj­¾ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjŒ¾h²hh³jž¾h´M”ubjª)�”}”(hŒ3(struct ata_device *dev, unsigned int readid_flags)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjɾubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjɾubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjë¾h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjè¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jí¾Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj³¾sbŒc.ata_dev_reread_id”†”asbuh1hhjɾubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjɾubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjɾubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj&¿h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjɾubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjžubj°)�”}”(hŒunsigned int readid_flags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj?¿h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj;¿ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;¿ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj[¿h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj;¿ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;¿ubj[)�”}”(hŒ readid_flags”h]”hŒ readid_flags”…”�”}”(hjw¿h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj;¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjžubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjŒ¾h²hh³jž¾h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjˆ¾h²hh³jž¾h´M”ubah}”(h]”jƒ¾ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jž¾h´M”hj…¾h²hubj)�”}”(hhh]”hì)�”}”(hŒRe-read IDENTIFY data”h]”hŒRe-read IDENTIFY data”…”�”}”(hj¡¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M”hjž¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…¾h²hh³jž¾h´M”ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¹¿j1j¹¿j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX>**Parameters** ``struct ata_device *dev`` target ATA device ``unsigned int readid_flags`` read ID flags **Description** Re-read IDENTIFY page and make sure **dev** is still attached to the port. LOCKING: Kernel thread context (may sleep) **Return** 0 on success, negative errno otherwise”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÿh]”hŒ Parameters”…”�”}”(hjÅ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M˜hj½¿ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ-``struct ata_device *dev`` target ATA device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjâ¿h]”hŒstruct ata_device *dev”…”�”}”(hjä¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjà¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M•hjÜ¿ubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATA device”h]”hŒtarget ATA device”…”�”}”(hjû¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷¿h´M•hjø¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÜ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j÷¿h´M•hjÙ¿ubj¡)�”}”(hŒ,``unsigned int readid_flags`` read ID flags ”h]”(j§)�”}”(hŒ``unsigned int readid_flags``”h]”j\)�”}”(hjÀh]”hŒunsigned int readid_flags”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M–hjÀubj·)�”}”(hhh]”hì)�”}”(hŒ read ID flags”h]”hŒ read ID flags”…”�”}”(hj4Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0Àh´M–hj1Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j0Àh´M–hjÙ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj½¿ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjVÀh]”hŒ Description”…”�”}”(hjXÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjTÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M˜hj½¿ubj)�”}”(hŒwRe-read IDENTIFY page and make sure **dev** is still attached to the port. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hŒJRe-read IDENTIFY page and make sure **dev** is still attached to the port.”h]”(hŒ$Re-read IDENTIFY page and make sure ”…”�”}”(hjpÀh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjxÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpÀubhŒ is still attached to the port.”…”�”}”(hjpÀh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M—hjlÀubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hj‘Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MšhjlÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Àh´M—hj½¿ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj¨Àh]”hŒReturn”…”�”}”(hjªÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hj½¿ubhì)�”}”(hŒ&0 on success, negative errno otherwise”h]”hŒ&0 on success, negative errno otherwise”…”�”}”(hj¾Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mžhj½¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_revalidate (C function)”Œc.ata_dev_revalidate”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒbint ata_dev_revalidate (struct ata_device *dev, unsigned int new_class, unsigned int readid_flags)”h]”j")�”}”(hŒaint ata_dev_revalidate(struct ata_device *dev, unsigned int new_class, unsigned int readid_flags)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjíÀh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjéÀh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjéÀh²hh³jûÀh´Mµubj�)�”}”(hŒata_dev_revalidate”h]”j[)�”}”(hŒata_dev_revalidate”h]”hŒata_dev_revalidate”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj Áubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjéÀh²hh³jûÀh´Mµubjª)�”}”(hŒK(struct ata_device *dev, unsigned int new_class, unsigned int readid_flags)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj*Áh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj&Áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Áh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&Áubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjHÁh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjEÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jJÁŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÁsbŒc.ata_dev_revalidate”†”asbuh1hhj&Áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&Áubj)�”}”(hjS h]”hŒ*”…”�”}”(hjvÁh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj&Áubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjƒÁh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj&Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj"Áubj°)�”}”(hŒunsigned int new_class”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjœÁh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj˜Áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜Áubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸Áh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj˜Áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜Áubj[)�”}”(hŒ new_class”h]”hŒ new_class”…”�”}”(hjÔÁh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj˜Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj"Áubj°)�”}”(hŒunsigned int readid_flags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjíÁh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjéÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÁh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjéÁubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjéÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjéÁubj[)�”}”(hŒ readid_flags”h]”hŒ readid_flags”…”�”}”(hj%Âh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjéÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj"Áubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjéÀh²hh³jûÀh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjåÀh²hh³jûÀh´Mµubah}”(h]”jàÀah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jûÀh´MµhjâÀh²hubj)�”}”(hhh]”hì)�”}”(hŒRevalidate ATA device”h]”hŒRevalidate ATA device”…”�”}”(hjOÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MµhjLÂh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâÀh²hh³jûÀh´Mµubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jgÂj1jgÂj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX¡**Parameters** ``struct ata_device *dev`` device to revalidate ``unsigned int new_class`` new class code ``unsigned int readid_flags`` read ID flags **Description** Re-read IDENTIFY page, make sure **dev** is still attached to the port and reconfigure it according to the new IDENTIFY page. LOCKING: Kernel thread context (may sleep) **Return** 0 on success, negative errno otherwise”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjqÂh]”hŒ Parameters”…”�”}”(hjsÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¹hjkÂubjœ)�”}”(hhh]”(j¡)�”}”(hŒ0``struct ata_device *dev`` device to revalidate ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj�Âh]”hŒstruct ata_device *dev”…”�”}”(hj’Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŽÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¶hjŠÂubj·)�”}”(hhh]”hì)�”}”(hŒdevice to revalidate”h]”hŒdevice to revalidate”…”�”}”(hj©Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥Âh´M¶hj¦Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjŠÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¥Âh´M¶hj‡Âubj¡)�”}”(hŒ*``unsigned int new_class`` new class code ”h]”(j§)�”}”(hŒ``unsigned int new_class``”h]”j\)�”}”(hjÉÂh]”hŒunsigned int new_class”…”�”}”(hjËÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÇÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M·hjÃÂubj·)�”}”(hhh]”hì)�”}”(hŒnew class code”h]”hŒnew class code”…”�”}”(hjâÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞÂh´M·hjßÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÃÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÞÂh´M·hj‡Âubj¡)�”}”(hŒ,``unsigned int readid_flags`` read ID flags ”h]”(j§)�”}”(hŒ``unsigned int readid_flags``”h]”j\)�”}”(hjÃh]”hŒunsigned int readid_flags”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¸hjüÂubj·)�”}”(hhh]”hì)�”}”(hŒ read ID flags”h]”hŒ read ID flags”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃh´M¸hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjüÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÃh´M¸hj‡Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjkÂubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj=Ãh]”hŒ Description”…”�”}”(hj?Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MºhjkÂubj)�”}”(hŒªRe-read IDENTIFY page, make sure **dev** is still attached to the port and reconfigure it according to the new IDENTIFY page. LOCKING: Kernel thread context (may sleep) ”h]”(hì)�”}”(hŒ}Re-read IDENTIFY page, make sure **dev** is still attached to the port and reconfigure it according to the new IDENTIFY page.”h]”(hŒ!Re-read IDENTIFY page, make sure ”…”�”}”(hjWÃh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj_Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWÃubhŒU is still attached to the port and reconfigure it according to the new IDENTIFY page.”…”�”}”(hjWÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¹hjSÃubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hjxÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¼hjSÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jwÃh´M¹hjkÂubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj�Ãh]”hŒReturn”…”�”}”(hj‘Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M¿hjkÂubhì)�”}”(hŒ&0 on success, negative errno otherwise”h]”hŒ&0 on success, negative errno otherwise”…”�”}”(hj¥Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÀhjkÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_is_40wire (C function)”Œc.ata_is_40wire”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_is_40wire (struct ata_device *dev)”h]”j")�”}”(hŒ)int ata_is_40wire(struct ata_device *dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔÃh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÐÃh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÐÃh²hh³jâÃh´Mñubj�)�”}”(hŒ ata_is_40wire”h]”j[)�”}”(hŒ ata_is_40wire”h]”hŒ ata_is_40wire”…”�”}”(hjõÃh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjñÃubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÐÃh²hh³jâÃh´Mñubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Äubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Äubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj/Äh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj,Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j1ÄŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj÷ÃsbŒc.ata_is_40wire”†”asbuh1hhj Äubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÄh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Äubj)�”}”(hjS h]”hŒ*”…”�”}”(hj]Äh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj Äubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjjÄh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj Äubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÐÃh²hh³jâÃh´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÌÃh²hh³jâÃh´Mñubah}”(h]”jÇÃah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jâÃh´MñhjÉÃh²hubj)�”}”(hhh]”hì)�”}”(hŒcheck drive side detection”h]”hŒcheck drive side detection”…”�”}”(hj”Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mñhj‘Äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉÃh²hh³jâÃh´Mñubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¬Äj1j¬Äj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ¶**Parameters** ``struct ata_device *dev`` device **Description** Perform drive side detection decoding, allowing for device vendors who can't follow the documentation.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¶Äh]”hŒ Parameters”…”�”}”(hj¸Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mõhj°Äubjœ)�”}”(hhh]”j¡)�”}”(hŒ"``struct ata_device *dev`` device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÕÄh]”hŒstruct ata_device *dev”…”�”}”(hj×Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÓÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MòhjÏÄubj·)�”}”(hhh]”hì)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjîÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jêÄh´MòhjëÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÏÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jêÄh´MòhjÌÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj°Äubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÅh]”hŒ Description”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Môhj°Äubj)�”}”(hŒfPerform drive side detection decoding, allowing for device vendors who can't follow the documentation.”h]”hì)�”}”(hŒfPerform drive side detection decoding, allowing for device vendors who can't follow the documentation.”h]”hŒhPerform drive side detection decoding, allowing for device vendors who can’t follow the documentation.”…”�”}”(hj*Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Móhj&Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8Åh´Móhj°Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒcable_is_40wire (C function)”Œc.cable_is_40wire”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)int cable_is_40wire (struct ata_port *ap)”h]”j")�”}”(hŒ(int cable_is_40wire(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj_Åh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj[Åh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnÅh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[Åh²hh³jmÅh´Mubj�)�”}”(hŒcable_is_40wire”h]”j[)�”}”(hŒcable_is_40wire”h]”hŒcable_is_40wire”…”�”}”(hj€Åh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj|Åubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj[Åh²hh³jmÅh´Mubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjœÅh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj˜Åubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Åh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜Åubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjºÅh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj·Åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¼ÅŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj‚ÅsbŒc.cable_is_40wire”†”asbuh1hhj˜Åubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚÅh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜Åubj)�”}”(hjS h]”hŒ*”…”�”}”(hjèÅh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj˜Åubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjõÅh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj˜Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj”Åubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj[Åh²hh³jmÅh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjWÅh²hh³jmÅh´Mubah}”(h]”jRÅah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jmÅh´MhjTÅh²hubj)�”}”(hhh]”hì)�”}”(hŒ40/80/SATA decider”h]”hŒ40/80/SATA decider”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjTÅh²hh³jmÅh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j7Æj1j7Æj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXœ**Parameters** ``struct ata_port *ap`` port to consider **Description** This function encapsulates the policy for speed management in one place. At the moment we don't cache the result but there is a good case for setting ap->cbl to the result when we are called with unknown cables (and figuring out if it impacts hotplug at all). Return 1 if the cable appears to be 40 wire.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjAÆh]”hŒ Parameters”…”�”}”(hjCÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhj;Æubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_port *ap`` port to consider ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj`Æh]”hŒstruct ata_port *ap”…”�”}”(hjbÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj^Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjZÆubj·)�”}”(hhh]”hì)�”}”(hŒport to consider”h]”hŒport to consider”…”�”}”(hjyÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³juÆh´MhjvÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjZÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³juÆh´MhjWÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj;Æubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj›Æh]”hŒ Description”…”�”}”(hj�Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhj;Æubj)�”}”(hX1This function encapsulates the policy for speed management in one place. At the moment we don't cache the result but there is a good case for setting ap->cbl to the result when we are called with unknown cables (and figuring out if it impacts hotplug at all). Return 1 if the cable appears to be 40 wire.”h]”(hì)�”}”(hXThis function encapsulates the policy for speed management in one place. At the moment we don't cache the result but there is a good case for setting ap->cbl to the result when we are called with unknown cables (and figuring out if it impacts hotplug at all).”h]”hXThis function encapsulates the policy for speed management in one place. At the moment we don’t cache the result but there is a good case for setting ap->cbl to the result when we are called with unknown cables (and figuring out if it impacts hotplug at all).”…”�”}”(hjµÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhj±Æubhì)�”}”(hŒ,Return 1 if the cable appears to be 40 wire.”h]”hŒ,Return 1 if the cable appears to be 40 wire.”…”�”}”(hjÄÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mhj±Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃÆh´Mhj;Æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_xfermask (C function)”Œc.ata_dev_xfermask”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.void ata_dev_xfermask (struct ata_device *dev)”h]”j")�”}”(hŒ-void ata_dev_xfermask(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùÆh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjõÆh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M3ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõÆh²hh³jÇh´M3ubj�)�”}”(hŒata_dev_xfermask”h]”j[)�”}”(hŒata_dev_xfermask”h]”hŒata_dev_xfermask”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÇubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjõÆh²hh³jÇh´M3ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj6Çh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj2Çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2Çubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjTÇh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQÇubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jVÇŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÇsbŒc.ata_dev_xfermask”†”asbuh1hhj2Çubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtÇh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2Çubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‚Çh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj2Çubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�Çh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj2Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj.Çubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjõÆh²hh³jÇh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjñÆh²hh³jÇh´M3ubah}”(h]”jìÆah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÇh´M3hjîÆh²hubj)�”}”(hhh]”hì)�”}”(hŒ.Compute supported xfermask of the given device”h]”hŒ.Compute supported xfermask of the given device”…”�”}”(hj¹Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M3hj¶Çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîÆh²hh³jÇh´M3ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÑÇj1jÑÇj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX=**Parameters** ``struct ata_device *dev`` Device to compute xfermask for **Description** Compute supported xfermask of **dev** and store it in dev->*_mask. This function is responsible for applying all known limits including host controller limits, device quirks, etc... LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÛÇh]”hŒ Parameters”…”�”}”(hjÝÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M7hjÕÇubjœ)�”}”(hhh]”j¡)�”}”(hŒ:``struct ata_device *dev`` Device to compute xfermask for ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjúÇh]”hŒstruct ata_device *dev”…”�”}”(hjüÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjøÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M4hjôÇubj·)�”}”(hhh]”hì)�”}”(hŒDevice to compute xfermask for”h]”hŒDevice to compute xfermask for”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈh´M4hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjôÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÈh´M4hjñÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÕÇubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj5Èh]”hŒ Description”…”�”}”(hj7Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3Èubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M6hjÕÇubj)�”}”(hŒÆCompute supported xfermask of **dev** and store it in dev->*_mask. This function is responsible for applying all known limits including host controller limits, device quirks, etc... LOCKING: None.”h]”(hì)�”}”(hŒ¶Compute supported xfermask of **dev** and store it in dev->*_mask. This function is responsible for applying all known limits including host controller limits, device quirks, etc...”h]”(hŒCompute supported xfermask of ”…”�”}”(hjOÈh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjWÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjOÈubhŒ‘ and store it in dev->*_mask. This function is responsible for applying all known limits including host controller limits, device quirks, etc...”…”�”}”(hjOÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M5hjKÈubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjpÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M9hjKÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³joÈh´M5hjÕÇubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ata_dev_set_xfermode (C function)”Œc.ata_dev_set_xfermode”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:unsigned int ata_dev_set_xfermode (struct ata_device *dev)”h]”j")�”}”(hŒ9unsigned int ata_dev_set_xfermode(struct ata_device *dev)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¥Èh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¡Èh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Èh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡Èh²hh³j³Èh´M€ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂÈh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¡Èh²hh³j³Èh´M€ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐÈh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡Èh²hh³j³Èh´M€ubj�)�”}”(hŒata_dev_set_xfermode”h]”j[)�”}”(hŒata_dev_set_xfermode”h]”hŒata_dev_set_xfermode”…”�”}”(hjâÈh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÞÈubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¡Èh²hh³j³Èh´M€ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjþÈh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjúÈubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúÈubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÉŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjäÈsbŒc.ata_dev_set_xfermode”†”asbuh1hhjúÈubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<Éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúÈubj)�”}”(hjS h]”hŒ*”…”�”}”(hjJÉh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjúÈubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjWÉh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjúÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjöÈubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¡Èh²hh³j³Èh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj�Èh²hh³j³Èh´M€ubah}”(h]”j˜Èah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j³Èh´M€hjšÈh²hubj)�”}”(hhh]”hì)�”}”(hŒ&Issue SET FEATURES - XFER MODE command”h]”hŒ&Issue SET FEATURES - XFER MODE command”…”�”}”(hj�Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M€hj~Éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšÈh²hh³j³Èh´M€ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j™Éj1j™Éj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_device *dev`` Device to which command will be sent **Description** Issue SET FEATURES - XFER MODE command to device **dev** on port **ap**. LOCKING: PCI/etc. bus probe sem. **Return** 0 on success, AC_ERR_* mask otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj£Éh]”hŒ Parameters”…”�”}”(hj¥Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡Éubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M„hj�Éubjœ)�”}”(hhh]”j¡)�”}”(hŒ@``struct ata_device *dev`` Device to which command will be sent ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÂÉh]”hŒstruct ata_device *dev”…”�”}”(hjÄÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÀÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M�hj¼Éubj·)�”}”(hhh]”hì)�”}”(hŒ$Device to which command will be sent”h]”hŒ$Device to which command will be sent”…”�”}”(hjÛÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j×Éh´M�hjØÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¼Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j×Éh´M�hj¹Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�Éubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjýÉh]”hŒ Description”…”�”}”(hjÿÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjûÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mƒhj�Éubj)�”}”(hŒkIssue SET FEATURES - XFER MODE command to device **dev** on port **ap**. LOCKING: PCI/etc. bus probe sem. ”h]”(hì)�”}”(hŒHIssue SET FEATURES - XFER MODE command to device **dev** on port **ap**.”h]”(hŒ1Issue SET FEATURES - XFER MODE command to device ”…”�”}”(hjÊh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊubhŒ on port ”…”�”}”(hjÊh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj1Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊubhŒ.”…”�”}”(hjÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M‚hjÊubhì)�”}”(hŒ LOCKING: PCI/etc. bus probe sem.”h]”hŒ LOCKING: PCI/etc. bus probe sem.”…”�”}”(hjJÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M…hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jIÊh´M‚hj�Éubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjaÊh]”hŒReturn”…”�”}”(hjcÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_Êubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mˆhj�Éubhì)�”}”(hŒ&0 on success, AC_ERR_* mask otherwise.”h]”hŒ&0 on success, AC_ERR_* mask otherwise.”…”�”}”(hjwÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M‰hj�Éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_dev_init_params (C function)”Œc.ata_dev_init_params”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒQunsigned int ata_dev_init_params (struct ata_device *dev, u16 heads, u16 sectors)”h]”j")�”}”(hŒPunsigned int ata_dev_init_params(struct ata_device *dev, u16 heads, u16 sectors)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦Êh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¢Êh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÊh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢Êh²hh³j´Êh´MÒubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÃÊh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¢Êh²hh³j´Êh´MÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÊh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢Êh²hh³j´Êh´MÒubj�)�”}”(hŒata_dev_init_params”h]”j[)�”}”(hŒata_dev_init_params”h]”hŒata_dev_init_params”…”�”}”(hjãÊh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjßÊubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¢Êh²hh³j´Êh´MÒubjª)�”}”(hŒ0(struct ata_device *dev, u16 heads, u16 sectors)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿÊh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjûÊubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûÊubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jËŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjåÊsbŒc.ata_dev_init_params”†”asbuh1hhjûÊubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjûÊubj)�”}”(hjS h]”hŒ*”…”�”}”(hjKËh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjûÊubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjXËh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjûÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷Êubj°)�”}”(hŒ u16 heads”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjtËh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjqËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jvËŒmodname”NŒ classname”Njwjz)�”}”j}]”j9ËŒc.ata_dev_init_params”†”asbuh1hhjmËubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjmËubj[)�”}”(hŒheads”h]”hŒheads”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjmËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷Êubj°)�”}”(hŒ u16 sectors”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¼Ëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¹Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¾ËŒmodname”NŒ classname”Njwjz)�”}”j}]”j9ËŒc.ata_dev_init_params”†”asbuh1hhjµËubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚËh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµËubj[)�”}”(hŒsectors”h]”hŒsectors”…”�”}”(hjèËh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷Êubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¢Êh²hh³j´Êh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjžÊh²hh³j´Êh´MÒubah}”(h]”j™Êah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j´Êh´MÒhj›Êh²hubj)�”}”(hhh]”hì)�”}”(hŒIssue INIT DEV PARAMS command”h]”hŒIssue INIT DEV PARAMS command”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÒhjÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj›Êh²hh³j´Êh´MÒubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j*Ìj1j*Ìj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX<**Parameters** ``struct ata_device *dev`` Device to which command will be sent ``u16 heads`` Number of heads (taskfile parameter) ``u16 sectors`` Number of sectors (taskfile parameter) **Description** LOCKING: Kernel thread context (may sleep) **Return** 0 on success, AC_ERR_* mask otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj4Ìh]”hŒ Parameters”…”�”}”(hj6Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÖhj.Ìubjœ)�”}”(hhh]”(j¡)�”}”(hŒ@``struct ata_device *dev`` Device to which command will be sent ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjSÌh]”hŒstruct ata_device *dev”…”�”}”(hjUÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÓhjMÌubj·)�”}”(hhh]”hì)�”}”(hŒ$Device to which command will be sent”h]”hŒ$Device to which command will be sent”…”�”}”(hjlÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jhÌh´MÓhjiÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjMÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jhÌh´MÓhjJÌubj¡)�”}”(hŒ3``u16 heads`` Number of heads (taskfile parameter) ”h]”(j§)�”}”(hŒ ``u16 heads``”h]”j\)�”}”(hjŒÌh]”hŒ u16 heads”…”�”}”(hjŽÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŠÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÔhj†Ìubj·)�”}”(hhh]”hì)�”}”(hŒ$Number of heads (taskfile parameter)”h]”hŒ$Number of heads (taskfile parameter)”…”�”}”(hj¥Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡Ìh´MÔhj¢Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj†Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¡Ìh´MÔhjJÌubj¡)�”}”(hŒ7``u16 sectors`` Number of sectors (taskfile parameter) ”h]”(j§)�”}”(hŒ``u16 sectors``”h]”j\)�”}”(hjÅÌh]”hŒ u16 sectors”…”�”}”(hjÇÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÃÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÕhj¿Ìubj·)�”}”(hhh]”hì)�”}”(hŒ&Number of sectors (taskfile parameter)”h]”hŒ&Number of sectors (taskfile parameter)”…”�”}”(hjÞÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚÌh´MÕhjÛÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¿Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÚÌh´MÕhjJÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj.Ìubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÍh]”hŒ Description”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M×hj.Ìubj)�”}”(hŒ+LOCKING: Kernel thread context (may sleep) ”h]”hì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÖhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j(Íh´MÖhj.Ìubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj1Íh]”hŒReturn”…”�”}”(hj3Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÙhj.Ìubhì)�”}”(hŒ&0 on success, AC_ERR_* mask otherwise.”h]”hŒ&0 on success, AC_ERR_* mask otherwise.”…”�”}”(hjGÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÚhj.Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒatapi_check_dma (C function)”Œc.atapi_check_dma”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/int atapi_check_dma (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ.int atapi_check_dma(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjvÍh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjrÍh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Müubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjrÍh²hh³j„Íh´Müubj�)�”}”(hŒatapi_check_dma”h]”j[)�”}”(hŒatapi_check_dma”h]”hŒatapi_check_dma”…”�”}”(hj—Íh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj“Íubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjrÍh²hh³j„Íh´Müubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj³Íh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¯Íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯Íubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjÑÍh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÎÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÓÍŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj™ÍsbŒc.atapi_check_dma”†”asbuh1hhj¯Íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÍh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯Íubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÿÍh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¯Íubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¯Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj«Íubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjrÍh²hh³j„Íh´Müubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjnÍh²hh³j„Íh´Müubah}”(h]”jiÍah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j„Íh´MühjkÍh²hubj)�”}”(hhh]”hì)�”}”(hŒ(Check whether ATAPI DMA can be supported”h]”hŒ(Check whether ATAPI DMA can be supported”…”�”}”(hj6Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mühj3Îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkÍh²hh³j„Íh´Müubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jNÎj1jNÎj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX€**Parameters** ``struct ata_queued_cmd *qc`` Metadata associated with taskfile to check **Description** Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command. LOCKING: spin_lock_irqsave(host lock) **Return** 0 when ATAPI DMA can be used nonzero otherwise”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjXÎh]”hŒ Parameters”…”�”}”(hjZÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjRÎubjœ)�”}”(hhh]”j¡)�”}”(hŒI``struct ata_queued_cmd *qc`` Metadata associated with taskfile to check ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjwÎh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjyÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjuÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MýhjqÎubj·)�”}”(hhh]”hì)�”}”(hŒ*Metadata associated with taskfile to check”h]”hŒ*Metadata associated with taskfile to check”…”�”}”(hj�Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒÎh´Mýhj�Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjqÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jŒÎh´MýhjnÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjRÎubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj²Îh]”hŒ Description”…”�”}”(hj´Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°Îubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÿhjRÎubj)�”}”(hŒ¿Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ—Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command.”h]”hŒ—Allow low-level driver to filter ATA PACKET commands, returning a status indicating whether or not it is OK to use DMA for the supplied PACKET command.”…”�”}”(hjÌÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MþhjÈÎubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”•}”(hjÛÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjÈÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÚÎh´MþhjRÎubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjòÎh]”hŒReturn”…”�”}”(hjôÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjðÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjRÎubhì)�”}”(hŒ.0 when ATAPI DMA can be used nonzero otherwise”h]”hŒ.0 when ATAPI DMA can be used nonzero otherwise”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MhjRÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_sg_init (C function)”Œ c.ata_sg_init”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYvoid ata_sg_init (struct ata_queued_cmd *qc, struct scatterlist *sg, unsigned int n_elem)”h]”j")�”}”(hŒXvoid ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg, unsigned int n_elem)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj7Ïh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj3Ïh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj3Ïh²hh³jEÏh´M:ubj�)�”}”(hŒ ata_sg_init”h]”j[)�”}”(hŒ ata_sg_init”h]”hŒ ata_sg_init”…”�”}”(hjXÏh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjTÏubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj3Ïh²hh³jEÏh´M:ubjª)�”}”(hŒH(struct ata_queued_cmd *qc, struct scatterlist *sg, unsigned int n_elem)”h]”(j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjtÏh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjpÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjpÏubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj’Ïh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�Ïubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j”ÏŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjZÏsbŒ c.ata_sg_init”†”asbuh1hhjpÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Ïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjpÏubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÀÏh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjpÏubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÍÏh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjpÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjlÏubj°)�”}”(hŒstruct scatterlist *sg”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjæÏh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjâÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâÏubh)�”}”(hhh]”j[)�”}”(hŒ scatterlist”h]”hŒ scatterlist”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÐŒmodname”NŒ classname”Njwjz)�”}”j}]”j®ÏŒ c.ata_sg_init”†”asbuh1hhjâÏubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Ðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâÏubj)�”}”(hjS h]”hŒ*”…”�”}”(hj0Ðh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjâÏubj[)�”}”(hŒsg”h]”hŒsg”…”�”}”(hj=Ðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjâÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjlÏubj°)�”}”(hŒunsigned int n_elem”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjVÐh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjRÐubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÐh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRÐubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjrÐh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjRÐubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€Ðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRÐubj[)�”}”(hŒn_elem”h]”hŒn_elem”…”�”}”(hjŽÐh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjRÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjlÏubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj3Ïh²hh³jEÏh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj/Ïh²hh³jEÏh´M:ubah}”(h]”j*Ïah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jEÏh´M:hj,Ïh²hubj)�”}”(hhh]”hì)�”}”(hŒ,Associate command with scatter-gather table.”h]”hŒ,Associate command with scatter-gather table.”…”�”}”(hj¸Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M:hjµÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,Ïh²hh³jEÏh´M:ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÐÐj1jÐÐj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX�**Parameters** ``struct ata_queued_cmd *qc`` Command to be associated ``struct scatterlist *sg`` Scatter-gather table. ``unsigned int n_elem`` Number of elements in s/g table. **Description** Initialize the data-related elements of queued_cmd **qc** to point to a scatter-gather table **sg**, containing **n_elem** elements. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÚÐh]”hŒ Parameters”…”�”}”(hjÜÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M>hjÔÐubjœ)�”}”(hhh]”(j¡)�”}”(hŒ7``struct ata_queued_cmd *qc`` Command to be associated ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjùÐh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjûÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj÷Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M;hjóÐubj·)�”}”(hhh]”hì)�”}”(hŒCommand to be associated”h]”hŒCommand to be associated”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÑh´M;hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjóÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÑh´M;hjðÐubj¡)�”}”(hŒ1``struct scatterlist *sg`` Scatter-gather table. ”h]”(j§)�”}”(hŒ``struct scatterlist *sg``”h]”j\)�”}”(hj2Ñh]”hŒstruct scatterlist *sg”…”�”}”(hj4Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj0Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M<hj,Ñubj·)�”}”(hhh]”hì)�”}”(hŒScatter-gather table.”h]”hŒScatter-gather table.”…”�”}”(hjKÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jGÑh´M<hjHÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj,Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jGÑh´M<hjðÐubj¡)�”}”(hŒ9``unsigned int n_elem`` Number of elements in s/g table. ”h]”(j§)�”}”(hŒ``unsigned int n_elem``”h]”j\)�”}”(hjkÑh]”hŒunsigned int n_elem”…”�”}”(hjmÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjiÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M=hjeÑubj·)�”}”(hhh]”hì)�”}”(hŒ Number of elements in s/g table.”h]”hŒ Number of elements in s/g table.”…”�”}”(hj„Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€Ñh´M=hj�Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjeÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j€Ñh´M=hjðÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÔÐubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¦Ñh]”hŒ Description”…”�”}”(hj¨Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M?hjÔÐubj)�”}”(hŒ«Initialize the data-related elements of queued_cmd **qc** to point to a scatter-gather table **sg**, containing **n_elem** elements. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ„Initialize the data-related elements of queued_cmd **qc** to point to a scatter-gather table **sg**, containing **n_elem** elements.”h]”(hŒ3Initialize the data-related elements of queued_cmd ”…”�”}”(hjÀÑh²hh³Nh´Nubj )�”}”(hŒ**qc**”h]”hŒqc”…”�”}”(hjÈÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀÑubhŒ$ to point to a scatter-gather table ”…”�”}”(hjÀÑh²hh³Nh´Nubj )�”}”(hŒ**sg**”h]”hŒsg”…”�”}”(hjÚÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀÑubhŒ , containing ”…”�”}”(hjÀÑh²hh³Nh´Nubj )�”}”(hŒ **n_elem**”h]”hŒn_elem”…”�”}”(hjìÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀÑubhŒ elements.”…”�”}”(hjÀÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M>hj¼Ñubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MBhj¼Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÒh´M>hjÔÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_sg_clean (C function)”Œc.ata_sg_clean”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void ata_sg_clean (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ,void ata_sg_clean(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:Òh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj6Òh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6Òh²hh³jHÒh´MQubj�)�”}”(hŒ ata_sg_clean”h]”j[)�”}”(hŒ ata_sg_clean”h]”hŒ ata_sg_clean”…”�”}”(hj[Òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjWÒubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj6Òh²hh³jHÒh´MQubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjwÒh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjsÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjsÒubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj•Òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’Òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j—ÒŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj]ÒsbŒc.ata_sg_clean”†”asbuh1hhjsÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµÒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjsÒubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÃÒh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjsÒubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÐÒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjsÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjoÒubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj6Òh²hh³jHÒh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj2Òh²hh³jHÒh´MQubah}”(h]”j-Òah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jHÒh´MQhj/Òh²hubj)�”}”(hhh]”hì)�”}”(hŒ(Unmap DMA memory associated with command”h]”hŒ(Unmap DMA memory associated with command”…”�”}”(hjúÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MQhj÷Òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Òh²hh³jHÒh´MQubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÓj1jÓj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÞ**Parameters** ``struct ata_queued_cmd *qc`` Command containing DMA memory to be released **Description** Unmap all mapped DMA memory associated with this command. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÓh]”hŒ Parameters”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MUhjÓubjœ)�”}”(hhh]”j¡)�”}”(hŒK``struct ata_queued_cmd *qc`` Command containing DMA memory to be released ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj;Óh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj=Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj9Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MRhj5Óubj·)�”}”(hhh]”hì)�”}”(hŒ,Command containing DMA memory to be released”h]”hŒ,Command containing DMA memory to be released”…”�”}”(hjTÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jPÓh´MRhjQÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj5Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jPÓh´MRhj2Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÓubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjvÓh]”hŒ Description”…”�”}”(hjxÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjtÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MThjÓubj)�”}”(hŒ`Unmap all mapped DMA memory associated with this command. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ9Unmap all mapped DMA memory associated with this command.”h]”hŒ9Unmap all mapped DMA memory associated with this command.”…”�”}”(hj�Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MShjŒÓubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjŸÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MUhjŒÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jžÓh´MShjÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_sg_setup (C function)”Œc.ata_sg_setup”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,int ata_sg_setup (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ+int ata_sg_setup(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔÓh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÐÓh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Miubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãÓh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÐÓh²hh³jâÓh´Miubj�)�”}”(hŒ ata_sg_setup”h]”j[)�”}”(hŒ ata_sg_setup”h]”hŒ ata_sg_setup”…”�”}”(hjõÓh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjñÓubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÐÓh²hh³jâÓh´Miubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj Ôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Ôubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj/Ôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj,Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j1ÔŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj÷ÓsbŒc.ata_sg_setup”†”asbuh1hhj Ôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÔh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj Ôubj)�”}”(hjS h]”hŒ*”…”�”}”(hj]Ôh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj Ôubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjjÔh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj Ôubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÐÓh²hh³jâÓh´Miubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÌÓh²hh³jâÓh´Miubah}”(h]”jÇÓah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jâÓh´MihjÉÓh²hubj)�”}”(hhh]”hì)�”}”(hŒ;DMA-map the scatter-gather table associated with a command.”h]”hŒ;DMA-map the scatter-gather table associated with a command.”…”�”}”(hj”Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mihj‘Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉÓh²hh³jâÓh´Miubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¬Ôj1j¬Ôj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_queued_cmd *qc`` Command with scatter-gather table to be mapped. **Description** DMA-map the scatter-gather table associated with queued_cmd **qc**. LOCKING: spin_lock_irqsave(host lock) **Return** Zero on success, negative on error.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¶Ôh]”hŒ Parameters”…”�”}”(hj¸Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mmhj°Ôubjœ)�”}”(hhh]”j¡)�”}”(hŒN``struct ata_queued_cmd *qc`` Command with scatter-gather table to be mapped. ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjÕÔh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj×Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÓÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MjhjÏÔubj·)�”}”(hhh]”hì)�”}”(hŒ/Command with scatter-gather table to be mapped.”h]”hŒ/Command with scatter-gather table to be mapped.”…”�”}”(hjîÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jêÔh´MjhjëÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÏÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jêÔh´MjhjÌÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj°Ôubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÕh]”hŒ Description”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mlhj°Ôubj)�”}”(hŒkDMA-map the scatter-gather table associated with queued_cmd **qc**. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒCDMA-map the scatter-gather table associated with queued_cmd **qc**.”h]”(hŒáh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj:áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKáh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:áubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj\áh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjYáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j^áŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj$ásbŒc.ata_link_init”†”asbuh1hhj:áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|áh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:áubj)�”}”(hjS h]”hŒ*”…”�”}”(hjŠáh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj:áubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj—áh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj:áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj6áubj°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj°áh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¬áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½áh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬áubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjÎáh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjËáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÐáŒmodname”NŒ classname”Njwjz)�”}”j}]”jxáŒc.ata_link_init”†”asbuh1hhj¬áubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìáh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬áubj)�”}”(hjS h]”hŒ*”…”�”}”(hjúáh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¬áubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj6áubj°)�”}”(hŒint pmp”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjâubj[)�”}”(hŒpmp”h]”hŒpmp”…”�”}”(hj<âh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj6áubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjýàh²hh³jáh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjùàh²hh³jáh´M2ubah}”(h]”jôàah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jáh´M2hjöàh²hubj)�”}”(hhh]”hì)�”}”(hŒ Initialize an ata_link structure”h]”hŒ Initialize an ata_link structure”…”�”}”(hjfâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M2hjcâh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöàh²hh³jáh´M2ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j~âj1j~âj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX **Parameters** ``struct ata_port *ap`` ATA port link is attached to ``struct ata_link *link`` Link structure to initialize ``int pmp`` Port multiplier port number **Description** Initialize **link**. LOCKING: Kernel thread context (may sleep)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjˆâh]”hŒ Parameters”…”�”}”(hjŠâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†âubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M6hj‚âubjœ)�”}”(hhh]”(j¡)�”}”(hŒ5``struct ata_port *ap`` ATA port link is attached to ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj§âh]”hŒstruct ata_port *ap”…”�”}”(hj©âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¥âubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M3hj¡âubj·)�”}”(hhh]”hì)�”}”(hŒATA port link is attached to”h]”hŒATA port link is attached to”…”�”}”(hjÀâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼âh´M3hj½âubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¡âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¼âh´M3hjžâubj¡)�”}”(hŒ7``struct ata_link *link`` Link structure to initialize ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjàâh]”hŒstruct ata_link *link”…”�”}”(hjââh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÞâubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M4hjÚâubj·)�”}”(hhh]”hì)�”}”(hŒLink structure to initialize”h]”hŒLink structure to initialize”…”�”}”(hjùâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõâh´M4hjöâubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÚâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jõâh´M4hjžâubj¡)�”}”(hŒ(``int pmp`` Port multiplier port number ”h]”(j§)�”}”(hŒ ``int pmp``”h]”j\)�”}”(hjãh]”hŒint pmp”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M5hjãubj·)�”}”(hhh]”hì)�”}”(hŒPort multiplier port number”h]”hŒPort multiplier port number”…”�”}”(hj2ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.ãh´M5hj/ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j.ãh´M5hjžâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‚âubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjTãh]”hŒ Description”…”�”}”(hjVãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjRãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M7hj‚âubj)�”}”(hŒ@Initialize **link**. LOCKING: Kernel thread context (may sleep)”h]”(hì)�”}”(hŒInitialize **link**.”h]”(hŒ Initialize ”…”�”}”(hjnãh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hjvãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjnãubhŒ.”…”�”}”(hjnãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M6hjjãubhì)�”}”(hŒ*LOCKING: Kernel thread context (may sleep)”h]”hŒ*LOCKING: Kernel thread context (may sleep)”…”�”}”(hj�ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M8hjjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŽãh´M6hj‚âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsata_link_init_spd (C function)”Œc.sata_link_init_spd”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.int sata_link_init_spd (struct ata_link *link)”h]”j")�”}”(hŒ-int sata_link_init_spd(struct ata_link *link)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄãh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÀãh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MXubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀãh²hh³jÒãh´MXubj�)�”}”(hŒsata_link_init_spd”h]”j[)�”}”(hŒsata_link_init_spd”h]”hŒsata_link_init_spd”…”�”}”(hjåãh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjáãubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÀãh²hh³jÒãh´MXubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjýãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýãubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j!äŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjçãsbŒc.sata_link_init_spd”†”asbuh1hhjýãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjýãubj)�”}”(hjS h]”hŒ*”…”�”}”(hjMäh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjýãubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjZäh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjýãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjùãubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÀãh²hh³jÒãh´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¼ãh²hh³jÒãh´MXubah}”(h]”j·ãah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÒãh´MXhj¹ãh²hubj)�”}”(hhh]”hì)�”}”(hŒInitialize link->sata_spd_limit”•Lh]”hŒInitialize link->sata_spd_limit”…”�”}”(hj„äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MXhj�äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¹ãh²hh³jÒãh´MXubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jœäj1jœäj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_link *link`` Link to configure sata_spd_limit for **Description** Initialize ``link->[hw_]sata_spd_limit`` to the currently configured value. LOCKING: Kernel thread context (may sleep). **Return** 0 on success, -errno on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¦äh]”hŒ Parameters”…”�”}”(hj¨äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤äubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M\hj äubjœ)�”}”(hhh]”j¡)�”}”(hŒ?``struct ata_link *link`` Link to configure sata_spd_limit for ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjÅäh]”hŒstruct ata_link *link”…”�”}”(hjÇäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÃäubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MYhj¿äubj·)�”}”(hhh]”hì)�”}”(hŒ$Link to configure sata_spd_limit for”h]”hŒ$Link to configure sata_spd_limit for”…”�”}”(hjÞäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚäh´MYhjÛäubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¿äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÚäh´MYhj¼äubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj äubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjåh]”hŒ Description”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþäubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M[hj äubj)�”}”(hŒyInitialize ``link->[hw_]sata_spd_limit`` to the currently configured value. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒKInitialize ``link->[hw_]sata_spd_limit`` to the currently configured value.”h]”(hŒ Initialize ”…”�”}”(hjåh²hh³Nh´Nubj\)�”}”(hŒ``link->[hw_]sata_spd_limit``”h]”hŒlink->[hw_]sata_spd_limit”…”�”}”(hj"åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjåubhŒ# to the currently configured value.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MZhjåubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj;åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M]hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j:åh´MZhj äubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjRåh]”hŒReturn”…”�”}”(hjTåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPåubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M`hj äubhì)�”}”(hŒ 0 on success, -errno on failure.”h]”hŒ 0 on success, -errno on failure.”…”�”}”(hjhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mahj äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_finalize_port_ops (C function)”Œc.ata_finalize_port_ops”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒinherits is no longer necessary and cleared. Using ATA_OP_NULL, inheriting ops can force a method to NULL. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjyæh]”hŒ Parameters”…”�”}”(hj{æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwæubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Muhjsæubjœ)�”}”(hhh]”j¡)�”}”(hŒD``struct ata_port_operations *ops`` ata_port_operations to finalize ”h]”(j§)�”}”(hŒ#``struct ata_port_operations *ops``”h]”j\)�”}”(hj˜æh]”hŒstruct ata_port_operations *ops”…”�”}”(hjšæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj–æubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mrhj’æubj·)�”}”(hhh]”hì)�”}”(hŒata_port_operations to finalize”h]”hŒata_port_operations to finalize”…”�”}”(hj±æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­æh´Mrhj®æubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj’æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j­æh´Mrhj�æubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjsæubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÓæh]”hŒ Description”…”�”}”(hjÕæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑæubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mthjsæubj)�”}”(hX9An ata_port_operations can inherit from another ops and that ops can again inherit from another. This can go on as many times as necessary as long as there is no loop in the inheritance chain. Ops tables are finalized when the host is started. NULL or unspecified entries are inherited from the closet ancestor which has the method and the entry is populated with it. After finalization, the ops table directly points to all the methods and ->inherits is no longer necessary and cleared. Using ATA_OP_NULL, inheriting ops can force a method to NULL. LOCKING: None.”h]”(hì)�”}”(hŒÁAn ata_port_operations can inherit from another ops and that ops can again inherit from another. This can go on as many times as necessary as long as there is no loop in the inheritance chain.”h]”hŒÁAn ata_port_operations can inherit from another ops and that ops can again inherit from another. This can go on as many times as necessary as long as there is no loop in the inheritance chain.”…”�”}”(hjíæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mshjéæubhì)�”}”(hX'Ops tables are finalized when the host is started. NULL or unspecified entries are inherited from the closet ancestor which has the method and the entry is populated with it. After finalization, the ops table directly points to all the methods and ->inherits is no longer necessary and cleared.”h]”hX'Ops tables are finalized when the host is started. NULL or unspecified entries are inherited from the closet ancestor which has the method and the entry is populated with it. After finalization, the ops table directly points to all the methods and ->inherits is no longer necessary and cleared.”…”�”}”(hjüæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Mxhjéæubhì)�”}”(hŒ=Using ATA_OP_NULL, inheriting ops can force a method to NULL.”h]”hŒ=Using ATA_OP_NULL, inheriting ops can force a method to NULL.”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M~hjéæubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´M€hjéæubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jûæh´Mshjsæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ata_dev_free_resources (C function)”Œc.ata_dev_free_resources”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ4void ata_dev_free_resources (struct ata_device *dev)”h]”j")�”}”(hŒ3void ata_dev_free_resources(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjOçh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjKçh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjKçh²hh³j]çh´MÉubj�)�”}”(hŒata_dev_free_resources”h]”j[)�”}”(hŒata_dev_free_resources”h]”hŒata_dev_free_resources”…”�”}”(hjpçh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjlçubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjKçh²hh³j]çh´MÉubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŒçh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjˆçubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™çh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆçubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjªçh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj§çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¬çŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjrçsbŒc.ata_dev_free_resources”†”asbuh1hhjˆçubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊçh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjˆçubj)�”}”(hjS h]”hŒ*”…”�”}”(hjØçh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjˆçubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjåçh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjˆçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj„çubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjKçh²hh³j]çh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjGçh²hh³j]çh´MÉubah}”(h]”jBçah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j]çh´MÉhjDçh²hubj)�”}”(hhh]”hì)�”}”(hŒFree a device resources”h]”hŒFree a device resources”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÉhj èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjDçh²hh³j]çh´MÉubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j'èj1j'èj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÃ**Parameters** ``struct ata_device *dev`` Target ATA device **Description** Free resources allocated to support a device features. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj1èh]”hŒ Parameters”…”�”}”(hj3èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/èubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÍhj+èubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``struct ata_device *dev`` Target ATA device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjPèh]”hŒstruct ata_device *dev”…”�”}”(hjRèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjNèubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÊhjJèubj·)�”}”(hhh]”hì)�”}”(hŒTarget ATA device”h]”hŒTarget ATA device”…”�”}”(hjièh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jeèh´MÊhjfèubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjJèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jeèh´MÊhjGèubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj+èubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj‹èh]”hŒ Description”…”�”}”(hj�èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰èubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÌhj+èubj)�”}”(hŒcFree resources allocated to support a device features. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ6Free resources allocated to support a device features.”h]”hŒ6Free resources allocated to support a device features.”…”�”}”(hj¥èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MËhj¡èubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj´èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÍhj¡èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j³èh´MËhj+èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_detach (C function)”Œc.ata_port_detach”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*void ata_port_detach (struct ata_port *ap)”h]”j")�”}”(hŒ)void ata_port_detach(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéèh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjåèh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøèh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjåèh²hh³j÷èh´MÚubj�)�”}”(hŒata_port_detach”h]”j[)�”}”(hŒata_port_detach”h]”hŒata_port_detach”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjéubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjåèh²hh³j÷èh´MÚubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj&éh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj"éubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"éubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjDéh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjAéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jFéŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj ésbŒc.ata_port_detach”†”asbuh1hhj"éubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdéh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"éubj)�”}”(hjS h]”hŒ*”…”�”}”(hjréh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj"éubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjéubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjåèh²hh³j÷èh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjáèh²hh³j÷èh´MÚubah}”(h]”jÜèah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j÷èh´MÚhjÞèh²hubj)�”}”(hhh]”hì)�”}”(hŒ0Detach ATA port in preparation of device removal”h]”hŒ0Detach ATA port in preparation of device removal”…”�”}”(hj©éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÚhj¦éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÞèh²hh³j÷èh´MÚubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÁéj1jÁéj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXF**Parameters** ``struct ata_port *ap`` ATA port to be detached **Description** Detach all ATA devices and the associated SCSI devices of **ap**; then, remove the associated SCSI host. **ap** is guaranteed to be quiescent on return from this function. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjËéh]”hŒ Parameters”…”�”}”(hjÍéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉéubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÞhjÅéubjœ)�”}”(hhh]”j¡)�”}”(hŒ0``struct ata_port *ap`` ATA port to be detached ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjêéh]”hŒstruct ata_port *ap”…”�”}”(hjìéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjèéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÛhjäéubj·)�”}”(hhh]”hì)�”}”(hŒATA port to be detached”h]”hŒATA port to be detached”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿéh´MÛhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjäéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÿéh´MÛhjáéubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÅéubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj%êh]”hŒ Description”…”�”}”(hj'êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#êubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÝhjÅéubj)�”}”(hŒÙDetach all ATA devices and the associated SCSI devices of **ap**; then, remove the associated SCSI host. **ap** is guaranteed to be quiescent on return from this function. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ¬Detach all ATA devices and the associated SCSI devices of **ap**; then, remove the associated SCSI host. **ap** is guaranteed to be quiescent on return from this function.”h]”(hŒ:Detach all ATA devices and the associated SCSI devices of ”…”�”}”(hj?êh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjGêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?êubhŒ*; then, remove the associated SCSI host. ”…”�”}”(hj?êh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjYêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?êubhŒ< is guaranteed to be quiescent on return from this function.”…”�”}”(hj?êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´MÜhj;êubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjrêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:593: ./drivers/ata/libata-core.c”h´Màhj;êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jqêh´MÜhjÅéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ __ata_ehi_push_desc (C function)”Œc.__ata_ehi_push_desc”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒHvoid __ata_ehi_push_desc (struct ata_eh_info *ehi, const char *fmt, ...)”h]”j")�”}”(hŒGvoid __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§êh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj£êh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶êh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£êh²hh³jµêh´K¸ubj�)�”}”(hŒ__ata_ehi_push_desc”h]”j[)�”}”(hŒ__ata_ehi_push_desc”h]”hŒ__ata_ehi_push_desc”…”�”}”(hjÈêh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÄêubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj£êh²hh³jµêh´K¸ubjª)�”}”(hŒ/(struct ata_eh_info *ehi, const char *fmt, ...)”h]”(j°)�”}”(hŒstruct ata_eh_info *ehi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjäêh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjàêubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñêh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàêubh)�”}”(hhh]”j[)�”}”(hŒ ata_eh_info”h]”hŒ ata_eh_info”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÿêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jëŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÊêsbŒc.__ata_ehi_push_desc”†”asbuh1hhjàêubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"ëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàêubj)�”}”(hjS h]”hŒ*”…”�”}”(hj0ëh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjàêubj[)�”}”(hŒehi”h]”hŒehi”…”�”}”(hj=ëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjàêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÜêubj°)�”}”(hŒconst char *fmt”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjVëh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjRëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRëubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjqëh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjRëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRëubj)�”}”(hjS h]”hŒ*”…”�”}”(hj�ëh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjRëubj[)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hjšëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjRëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÜêubj°)�”}”(hŒ...”h]”j)�”}”(hŒ...”h]”hŒ...”…”�”}”(hj³ëh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¯ëubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÜêubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj£êh²hh³jµêh´K¸ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjŸêh²hh³jµêh´K¸ubah}”(h]”jšêah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jµêh´K¸hjœêh²hubj)�”}”(hhh]”hì)�”}”(hŒ/push error description without adding separator”h]”hŒ/push error description without adding separator”…”�”}”(hjÝëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K¸hjÚëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœêh²hh³jµêh´K¸ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jõëj1jõëj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX **Parameters** ``struct ata_eh_info *ehi`` target EHI ``const char *fmt`` printf format string ``...`` variable arguments **Description** Format string according to **fmt** and append it to **ehi->desc**. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÿëh]”hŒ Parameters”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjýëubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K¼hjùëubjœ)�”}”(hhh]”(j¡)�”}”(hŒ'``struct ata_eh_info *ehi`` target EHI ”h]”(j§)�”}”(hŒ``struct ata_eh_info *ehi``”h]”j\)�”}”(hjìh]”hŒstruct ata_eh_info *ehi”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K¹hjìubj·)�”}”(hhh]”hì)�”}”(hŒ target EHI”h]”hŒ target EHI”…”�”}”(hj7ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3ìh´K¹hj4ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j3ìh´K¹hjìubj¡)�”}”(hŒ)``const char *fmt`` printf format string ”h]”(j§)�”}”(hŒ``const char *fmt``”h]”j\)�”}”(hjWìh]”hŒconst char *fmt”…”�”}”(hjYìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjUìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KºhjQìubj·)�”}”(hhh]”hì)�”}”(hŒprintf format string”h]”hŒprintf format string”…”�”}”(hjpìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jlìh´Kºhjmìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjQìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jlìh´Kºhjìubj¡)�”}”(hŒ``...`` variable arguments ”h]”(j§)�”}”(hŒ``...``”h]”j\)�”}”(hj�ìh]”hŒ...”…”�”}”(hj’ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŽìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KhjŠìubj·)�”}”(hhh]”hì)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj©ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥ìh´Khj¦ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjŠìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¥ìh´Khjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjùëubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjËìh]”hŒ Description”…”�”}”(hjÍìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÉìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Khjùëubj)�”}”(hŒiFormat string according to **fmt** and append it to **ehi->desc**. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒBFormat string according to **fmt** and append it to **ehi->desc**.”h]”(hŒFormat string according to ”…”�”}”(hjåìh²hh³Nh´Nubj )�”}”(hŒ**fmt**”h]”hŒfmt”…”�”}”(hjíìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjåìubhŒ and append it to ”…”�”}”(hjåìh²hh³Nh´Nubj )�”}”(hŒ **ehi->desc**”h]”hŒ ehi->desc”…”�”}”(hjÿìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjåìubhŒ.”…”�”}”(hjåìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K»hjáìubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K½hjáìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jíh´K»hjùëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_ehi_push_desc (C function)”Œc.ata_ehi_push_desc”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFvoid ata_ehi_push_desc (struct ata_eh_info *ehi, const char *fmt, ...)”h]”j")�”}”(hŒEvoid ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMíh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjIíh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIíh²hh³j[íh´KÌubj�)�”}”(hŒata_ehi_push_desc”h]”j[)�”}”(hŒata_ehi_push_desc”h]”hŒata_ehi_push_desc”…”�”}”(hjníh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjjíubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjIíh²hh³j[íh´KÌubjª)�”}”(hŒ/(struct ata_eh_info *ehi, const char *fmt, ...)”h]”(j°)�”}”(hŒstruct ata_eh_info *ehi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŠíh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—íh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†íubh)�”}”(hhh]”j[)�”}”(hŒ ata_eh_info”h]”hŒ ata_eh_info”…”�”}”(hj¨íh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¥íubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jªíŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjpísbŒc.ata_ehi_push_desc”†”asbuh1hhj†íubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈíh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†íubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÖíh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj†íubj[)�”}”(hŒehi”h]”hŒehi”…”�”}”(hjãíh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj†íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‚íubj°)�”}”(hŒconst char *fmt”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjüíh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjøíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjøíubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjøíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%îh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjøíubj)�”}”(hjS h]”hŒ*”…”�”}”(hj3îh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjøíubj[)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj@îh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjøíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‚íubj°)�”}”(hŒ...”h]”j)�”}”(hjµëh]”hŒ...”…”�”}”(hjYîh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjUîubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‚íubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjIíh²hh³j[íh´KÌubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjEíh²hh³j[íh´KÌubah}”(h]”j@íah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j[íh´KÌhjBíh²hubj)�”}”(hhh]”hì)�”}”(hŒ%push error description with separator”h]”hŒ%push error description with separator”…”�”}”(hj‚îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÌhjîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBíh²hh³j[íh´KÌubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jšîj1jšîj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXK**Parameters** ``struct ata_eh_info *ehi`` target EHI ``const char *fmt`` printf format string ``...`` variable arguments **Description** Format string according to **fmt** and append it to **ehi->desc**. If **ehi->desc** is not empty, ", " is added in-between. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¤îh]”hŒ Parameters”…”�”}”(hj¦îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¢îubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÐhjžîubjœ)�”}”(hhh]”(j¡)�”}”(hŒ'``struct ata_eh_info *ehi`` target EHI ”h]”(j§)�”}”(hŒ``struct ata_eh_info *ehi``”h]”j\)�”}”(hjÃîh]”hŒstruct ata_eh_info *ehi”…”�”}”(hjÅîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÁîubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÍhj½îubj·)�”}”(hhh]”hì)�”}”(hŒ target EHI”h]”hŒ target EHI”…”�”}”(hjÜîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØîh´KÍhjÙîubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj½îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jØîh´KÍhjºîubj¡)�”}”(hŒ)``const char *fmt`` printf format string ”h]”(j§)�”}”(hŒ``const char *fmt``”h]”j\)�”}”(hjüîh]”hŒconst char *fmt”…”�”}”(hjþîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjúîubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÎhjöîubj·)�”}”(hhh]”hì)�”}”(hŒprintf format string”h]”hŒprintf format string”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jïh´KÎhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjöîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jïh´KÎhjºîubj¡)�”}”(hŒ``...`` variable arguments ”h]”(j§)�”}”(hŒ``...``”h]”j\)�”}”(hj5ïh]”hŒ...”…”�”}”(hj7ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj3ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Khj/ïubj·)�”}”(hhh]”hì)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hjNïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJïh´KhjKïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj/ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jJïh´Khjºîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjžîubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjpïh]”hŒ Description”…”�”}”(hjrïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjnïubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Khjžîubj)�”}”(hŒ¢Format string according to **fmt** and append it to **ehi->desc**. If **ehi->desc** is not empty, ", " is added in-between. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ{Format string according to **fmt** and append it to **ehi->desc**. If **ehi->desc** is not empty, ", " is added in-between.”h]”(hŒFormat string according to ”…”�”}”(hjŠïh²hh³Nh´Nubj )�”}”(hŒ**fmt**”h]”hŒfmt”…”�”}”(hj’ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠïubhŒ and append it to ”…”�”}”(hjŠïh²hh³Nh´Nubj )�”}”(hŒ **ehi->desc**”h]”hŒ ehi->desc”…”�”}”(hj¤ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠïubhŒ. If ”…”�”}”(hjŠïh²hh³Nh´Nubj )�”}”(hŒ **ehi->desc**”h]”hŒ ehi->desc”…”�”}”(hj¶ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠïubhŒ, is not empty, “, “ is added in-between.”…”�”}”(hjŠïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÏhj†ïubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjÏïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KÒhj†ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÎïh´KÏhjžîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_ehi_clear_desc (C function)”Œc.ata_ehi_clear_desc”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1void ata_ehi_clear_desc (struct ata_eh_info *ehi)”h]”j")�”}”(hŒ0void ata_ehi_clear_desc(struct ata_eh_info *ehi)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjðh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Käubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðh²hh³jðh´Käubj�)�”}”(hŒata_ehi_clear_desc”h]”j[)�”}”(hŒata_ehi_clear_desc”h]”hŒata_ehi_clear_desc”…”�”}”(hj%ðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj!ðubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjðh²hh³jðh´Käubjª)�”}”(hŒ(struct ata_eh_info *ehi)”h]”j°)�”}”(hŒstruct ata_eh_info *ehi”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjAðh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj=ðubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=ðubh)�”}”(hhh]”j[)�”}”(hŒ ata_eh_info”h]”hŒ ata_eh_info”…”�”}”(hj_ðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj\ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jaðŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj'ðsbŒc.ata_ehi_clear_desc”†”asbuh1hhj=ðubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=ðubj)�”}”(hjS h]”hŒ*”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj=ðubj[)�”}”(hŒehi”h]”hŒehi”…”�”}”(hjšðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj=ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj9ðubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjðh²hh³jðh´Käubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjüïh²hh³jðh´Käubah}”(h]”j÷ïah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jðh´Kähjùïh²hubj)�”}”(hhh]”hì)�”}”(hŒclean error description”h]”hŒclean error description”…”�”}”(hjÄðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KähjÁðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjùïh²hh³jðh´Käubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÜðj1jÜðj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ•**Parameters** ``struct ata_eh_info *ehi`` target EHI **Description** Clear **ehi->desc**. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjæðh]”hŒ Parameters”…”�”}”(hjèðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäðubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kèhjàðubjœ)�”}”(hhh]”j¡)�”}”(hŒ'``struct ata_eh_info *ehi`` target EHI ”h]”(j§)�”}”(hŒ``struct ata_eh_info *ehi``”h]”j\)�”}”(hjñh]”hŒstruct ata_eh_info *ehi”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kåhjÿðubj·)�”}”(hhh]”hì)�”}”(hŒ target EHI”h]”hŒ target EHI”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñh´Kåhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÿðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jñh´Kåhjüðubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjàðubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj@ñh]”hŒ Description”…”�”}”(hjBñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kçhjàðubj)�”}”(hŒ;Clear **ehi->desc**. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒClear **ehi->desc**.”h]”(hŒClear ”…”�”}”(hjZñh²hh³Nh´Nubj )�”}”(hŒ **ehi->desc**”h]”hŒ ehi->desc”…”�”}”(hjbñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZñubhŒ.”…”�”}”(hjZñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KæhjVñubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj{ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KèhjVñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jzñh´Kæhjàðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_desc (C function)”Œc.ata_port_desc”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>void ata_port_desc (struct ata_port *ap, const char *fmt, ...)”h]”j")�”}”(hŒ=void ata_port_desc(struct ata_port *ap, const char *fmt, ...)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°ñh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¬ñh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿ñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¬ñh²hh³j¾ñh´Kôubj�)�”}”(hŒ ata_port_desc”h]”j[)�”}”(hŒ ata_port_desc”h]”hŒ ata_port_desc”…”�”}”(hjÑñh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÍñubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¬ñh²hh³j¾ñh´Kôubjª)�”}”(hŒ+(struct ata_port *ap, const char *fmt, ...)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjíñh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjéñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjéñubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j òŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÓñsbŒc.ata_port_desc”†”asbuh1hhjéñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjéñubj)�”}”(hjS h]”hŒ*”…”�”}”(hj9òh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjéñubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjFòh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjéñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjåñubj°)�”}”(hŒconst char *fmt”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj_òh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj[òubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[òubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjzòh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj[òubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[òubj)�”}”(hjS h]”hŒ*”…”�”}”(hj–òh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj[òubj[)�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj£òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj[òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjåñubj°)�”}”(hŒ...”h]”j)�”}”(hjµëh]”hŒ...”…”�”}”(hj¼òh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¸òubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjåñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¬ñh²hh³j¾ñh´Kôubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¨ñh²hh³j¾ñh´Kôubah}”(h]”j£ñah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¾ñh´Kôhj¥ñh²hubj)�”}”(hhh]”hì)�”}”(hŒappend port description”h]”hŒappend port description”…”�”}”(hjåòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kôhjâòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥ñh²hh³j¾ñh´Kôubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jýòj1jýòj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX±**Parameters** ``struct ata_port *ap`` target ATA port ``const char *fmt`` printf format string ``...`` variable arguments **Description** Format string according to **fmt** and append it to port description. If port description is not empty, " " is added in-between. This function is to be used while initializing ata_host. The description is printed on host registration. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjóh]”hŒ Parameters”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Køhjóubjœ)�”}”(hhh]”(j¡)�”}”(hŒ(``struct ata_port *ap`` target ATA port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj&óh]”hŒstruct ata_port *ap”…”�”}”(hj(óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj$óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kõhj óubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATA port”h]”hŒtarget ATA port”…”�”}”(hj?óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j;óh´Kõhj<óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j;óh´Kõhjóubj¡)�”}”(hŒ)``const char *fmt`` printf format string ”h]”(j§)�”}”(hŒ``const char *fmt``”h]”j\)�”}”(hj_óh]”hŒconst char *fmt”…”�”}”(hjaóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj]óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´KöhjYóubj·)�”}”(hhh]”hì)�”}”(hŒprintf format string”h]”hŒprintf format string”…”�”}”(hjxóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jtóh´Köhjuóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjYóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jtóh´Köhjóubj¡)�”}”(hŒ``...`` variable arguments ”h]”(j§)�”}”(hŒ``...``”h]”j\)�”}”(hj˜óh]”hŒ...”…”�”}”(hjšóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj–óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Khj’óubj·)�”}”(hhh]”hì)�”}”(hŒvariable arguments”h]”hŒvariable arguments”…”�”}”(hj±óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­óh´Khj®óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj’óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j­óh´Khjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÓóh]”hŒ Description”…”�”}”(hjÕóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Khjóubj)�”}”(hŒýFormat string according to **fmt** and append it to port description. If port description is not empty, " " is added in-between. This function is to be used while initializing ata_host. The description is printed on host registration. LOCKING: None.”h]”(hì)�”}”(hŒíFormat string according to **fmt** and append it to port description. If port description is not empty, " " is added in-between. This function is to be used while initializing ata_host. The description is printed on host registration.”h]”(hŒFormat string according to ”…”�”}”(hjíóh²hh³Nh´Nubj )�”}”(hŒ**fmt**”h]”hŒfmt”…”�”}”(hjõóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíóubhŒÏ and append it to port description. If port description is not empty, “ “ is added in-between. This function is to be used while initializing ata_host. The description is printed on host registration.”…”�”}”(hjíóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´K÷hjéóubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Kühjéóubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j ôh´K÷hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_pbar_desc (C function)”Œc.ata_port_pbar_desc”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXvoid ata_port_pbar_desc (struct ata_port *ap, int bar, ssize_t offset, const char *name)”h]”j")�”}”(hŒWvoid ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset, const char *name)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjCôh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj?ôh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj?ôh²hh³jQôh´Mubj�)�”}”(hŒata_port_pbar_desc”h]”j[)�”}”(hŒata_port_pbar_desc”h]”hŒata_port_pbar_desc”…”�”}”(hjdôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj`ôubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj?ôh²hh³jQôh´Mubjª)�”}”(hŒ@(struct ata_port *ap, int bar, ssize_t offset, const char *name)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj|ôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj|ôubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjžôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj›ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j ôŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjfôsbŒc.ata_port_pbar_desc”†”asbuh1hhj|ôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj|ôubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÌôh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj|ôubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjÙôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj|ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjxôubj°)�”}”(hŒint bar”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjòôh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjîôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjîôubj[)�”}”(hŒbar”h]”hŒbar”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjîôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjxôubj°)�”}”(hŒssize_t offset”h]”(h)�”}”(hhh]”j[)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj*õh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj'õubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j,õŒmodname”NŒ classname”Njwjz)�”}”j}]”jºôŒc.ata_port_pbar_desc”†”asbuh1hhj#õubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHõh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#õubj[)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjVõh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj#õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjxôubj°)�”}”(hŒconst char *name”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjoõh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjkõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|õh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkõubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŠõh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjkõubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜õh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjkõubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¦õh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjkõubj[)�”}”(hŒname”h]”hŒname”…”�”}”(hj³õh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjkõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjxôubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj?ôh²hh³jQôh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj;ôh²hh³jQôh´Mubah}”(h]”j6ôah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jQôh´Mhj8ôh²hubj)�”}”(hhh]”hì)�”}”(hŒappend PCI BAR description”h]”hŒappend PCI BAR description”…”�”}”(hjÝõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjÚõh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ôh²hh³jQôh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jõõj1jõõj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXØ**Parameters** ``struct ata_port *ap`` target ATA port ``int bar`` target PCI BAR ``ssize_t offset`` offset into PCI BAR ``const char *name`` name of the area **Description** If **offset** is negative, this function formats a string which contains the name, address, size and type of the BAR and appends it to the port description. If **offset** is zero or positive, only name and offsetted address is appended. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÿõh]”hŒ Parameters”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjýõubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhjùõubjœ)�”}”(hhh]”(j¡)�”}”(hŒ(``struct ata_port *ap`` target ATA port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjöh]”hŒstruct ata_port *ap”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhjöubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATA port”h]”hŒtarget ATA port”…”�”}”(hj7öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3öh´Mhj4öubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j3öh´Mhjöubj¡)�”}”(hŒ``int bar`` target PCI BAR ”h]”(j§)�”}”(hŒ ``int bar``”h]”j\)�”}”(hjWöh]”hŒint bar”…”�”}”(hjYöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjUöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjQöubj·)�”}”(hhh]”hì)�”}”(hŒtarget PCI BAR”h]”hŒtarget PCI BAR”…”�”}”(hjpöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jlöh´Mhjmöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjQöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jlöh´Mhjöubj¡)�”}”(hŒ'``ssize_t offset`` offset into PCI BAR ”h]”(j§)�”}”(hŒ``ssize_t offset``”h]”j\)�”}”(hj�öh]”hŒssize_t offset”…”�”}”(hj’öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŽöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjŠöubj·)�”}”(hhh]”hì)�”}”(hŒoffset into PCI BAR”h]”hŒoffset into PCI BAR”…”�”}”(hj©öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥öh´Mhj¦öubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjŠöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¥öh´Mhjöubj¡)�”}”(hŒ&``const char *name`` name of the area ”h]”(j§)�”}”(hŒ``const char *name``”h]”j\)�”}”(hjÉöh]”hŒconst char *name”…”�”}”(hjËöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÇöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjÃöubj·)�”}”(hhh]”hì)�”}”(hŒname of the area”h]”hŒname of the area”…”�”}”(hjâöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞöh´Mhjßöubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÃöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÞöh´Mhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjùõubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj÷h]”hŒ Description”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhjùõubj)�”}”(hŒýIf **offset** is negative, this function formats a string which contains the name, address, size and type of the BAR and appends it to the port description. If **offset** is zero or positive, only name and offsetted address is appended. LOCKING: None.”h]”(hì)�”}”(hŒíIf **offset** is negative, this function formats a string which contains the name, address, size and type of the BAR and appends it to the port description. If **offset** is zero or positive, only name and offsetted address is appended.”h]”(hŒIf ”…”�”}”(hj÷h²hh³Nh´Nubj )�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hj&÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷ubhŒ” is negative, this function formats a string which contains the name, address, size and type of the BAR and appends it to the port description. If ”…”�”}”(hj÷h²hh³Nh´Nubj )�”}”(hŒ **offset**”h]”hŒoffset”…”�”}”(hj8÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷ubhŒB is zero or positive, only name and offsetted address is appended.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj÷ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjQ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jP÷h´Mhjùõubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ata_internal_cmd_timeout (C function)”Œc.ata_internal_cmd_timeout”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFunsigned int ata_internal_cmd_timeout (struct ata_device *dev, u8 cmd)”h]”j")�”}”(hŒEunsigned int ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj†÷h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj‚÷h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚÷h²hh³j”÷h´MGubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj£÷h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj‚÷h²hh³j”÷h´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚÷h²hh³j”÷h´MGubj�)�”}”(hŒata_internal_cmd_timeout”h]”j[)�”}”(hŒata_internal_cmd_timeout”h]”hŒata_internal_cmd_timeout”…”�”}”(hjÃ÷h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¿÷ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj‚÷h²hh³j”÷h´MGubjª)�”}”(hŒ (struct ata_device *dev, u8 cmd)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjß÷h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÛ÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛ÷ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjý÷h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjú÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÿ÷Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÅ÷sbŒc.ata_internal_cmd_timeout”†”asbuh1hhjÛ÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÛ÷ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj+øh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÛ÷ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj8øh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÛ÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj×÷ubj°)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjTøh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jVøŒmodname”NŒ classname”Njwjz)�”}”j}]”jøŒc.ata_internal_cmd_timeout”†”asbuh1hhjMøubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrøh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjMøubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj€øh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjMøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj×÷ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj‚÷h²hh³j”÷h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj~÷h²hh³j”÷h´MGubah}”(h]”jy÷ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j”÷h´MGhj{÷h²hubj)�”}”(hhh]”hì)�”}”(hŒ)determine timeout for an internal command”h]”hŒ)determine timeout for an internal command”…”�”}”(hjªøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MGhj§øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{÷h²hh³j”÷h´MGubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÂøj1jÂøj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒú**Parameters** ``struct ata_device *dev`` target device ``u8 cmd`` internal command to be issued **Description** Determine timeout for internal command **cmd** for **dev**. LOCKING: EH context. **Return** Determined timeout.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÌøh]”hŒ Parameters”…”�”}”(hjÎøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MKhjÆøubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjëøh]”hŒstruct ata_device *dev”…”�”}”(hjíøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjéøubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MHhjåøubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jùh´MHhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjåøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jùh´MHhjâøubj¡)�”}”(hŒ)``u8 cmd`` internal command to be issued ”h]”(j§)�”}”(hŒ ``u8 cmd``”h]”j\)�”}”(hj$ùh]”hŒu8 cmd”…”�”}”(hj&ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj"ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MIhjùubj·)�”}”(hhh]”hì)�”}”(hŒinternal command to be issued”h]”hŒinternal command to be issued”…”�”}”(hj=ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j9ùh´MIhj:ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j9ùh´MIhjâøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÆøubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj_ùh]”hŒ Description”…”�”}”(hjaùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MKhjÆøubj)�”}”(hŒRDetermine timeout for internal command **cmd** for **dev**. LOCKING: EH context. ”h]”(hì)�”}”(hŒ;Determine timeout for internal command **cmd** for **dev**.”h]”(hŒ'Determine timeout for internal command ”…”�”}”(hjyùh²hh³Nh´Nubj )�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hj�ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyùubhŒ for ”…”�”}”(hjyùh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj“ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyùubhŒ.”…”�”}”(hjyùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MJhjuùubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hj¬ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MLhjuùubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j«ùh´MJhjÆøubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÃùh]”hŒReturn”…”�”}”(hjÅùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁùubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MOhjÆøubhì)�”}”(hŒDetermined timeout.”h]”hŒDetermined timeout.”…”�”}”(hjÙùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”•h´MPhjÆøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'ata_internal_cmd_timed_out (C function)”Œc.ata_internal_cmd_timed_out”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ@void ata_internal_cmd_timed_out (struct ata_device *dev, u8 cmd)”h]”j")�”}”(hŒ?void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjúh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Maubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjúh²hh³júh´Maubj�)�”}”(hŒata_internal_cmd_timed_out”h]”j[)�”}”(hŒata_internal_cmd_timed_out”h]”hŒata_internal_cmd_timed_out”…”�”}”(hj)úh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj%úubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjúh²hh³júh´Maubjª)�”}”(hŒ (struct ata_device *dev, u8 cmd)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjEúh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjAúubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRúh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAúubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjcúh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj`úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jeúŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj+úsbŒc.ata_internal_cmd_timed_out”†”asbuh1hhjAúubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒúh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAúubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‘úh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjAúubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjžúh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjAúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj=úubj°)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjºúh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj·úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¼úŒmodname”NŒ classname”Njwjz)�”}”j}]”júŒc.ata_internal_cmd_timed_out”†”asbuh1hhj³úubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØúh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³úubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjæúh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj³úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj=úubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjúh²hh³júh´Maubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjúh²hh³júh´Maubah}”(h]”jûùah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³júh´Mahjýùh²hubj)�”}”(hhh]”hì)�”}”(hŒ)notification for internal command timeout”h]”hŒ)notification for internal command timeout”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mahj ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjýùh²hh³júh´Maubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j(ûj1j(ûj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX[**Parameters** ``struct ata_device *dev`` target device ``u8 cmd`` internal command which timed out **Description** Notify EH that internal command **cmd** for **dev** timed out. This function should be called only for commands whose timeouts are determined using ata_internal_cmd_timeout(). LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj2ûh]”hŒ Parameters”…”�”}”(hj4ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mehj,ûubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjQûh]”hŒstruct ata_device *dev”…”�”}”(hjSûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjOûubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MbhjKûubj·)�”}”(hhh]”hì)�”}”(hŒ target device”h]”hŒ target device”…”�”}”(hjjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfûh´Mbhjgûubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjKûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jfûh´MbhjHûubj¡)�”}”(hŒ,``u8 cmd`` internal command which timed out ”h]”(j§)�”}”(hŒ ``u8 cmd``”h]”j\)�”}”(hjŠûh]”hŒu8 cmd”…”�”}”(hjŒûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjˆûubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mchj„ûubj·)�”}”(hhh]”hì)�”}”(hŒ internal command which timed out”h]”hŒ internal command which timed out”…”�”}”(hj£ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸûh´Mchj ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj„ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jŸûh´MchjHûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj,ûubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÅûh]”hŒ Description”…”�”}”(hjÇûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃûubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mehj,ûubj)�”}”(hŒÆNotify EH that internal command **cmd** for **dev** timed out. This function should be called only for commands whose timeouts are determined using ata_internal_cmd_timeout(). LOCKING: EH context.”h]”(hì)�”}”(hŒ°Notify EH that internal command **cmd** for **dev** timed out. This function should be called only for commands whose timeouts are determined using ata_internal_cmd_timeout().”h]”(hŒ Notify EH that internal command ”…”�”}”(hjßûh²hh³Nh´Nubj )�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjçûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjßûubhŒ for ”…”�”}”(hjßûh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjùûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjßûubhŒ} timed out. This function should be called only for commands whose timeouts are determined using ata_internal_cmd_timeout().”…”�”}”(hjßûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MdhjÛûubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhhjÛûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jüh´Mdhj,ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_acquire (C function)”Œc.ata_eh_acquire”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void ata_eh_acquire (struct ata_port *ap)”h]”j")�”}”(hŒ(void ata_eh_acquire(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGüh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjCüh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÕubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCüh²hh³jUüh´MÕubj�)�”}”(hŒata_eh_acquire”h]”j[)�”}”(hŒata_eh_acquire”h]”hŒata_eh_acquire”…”�”}”(hjhüh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjdüubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjCüh²hh³jUüh´MÕubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj„üh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj€üubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘üh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€üubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj¢üh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŸüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¤üŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjjüsbŒc.ata_eh_acquire”†”asbuh1hhj€üubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€üubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÐüh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj€üubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjÝüh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj|üubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjCüh²hh³jUüh´MÕubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj?üh²hh³jUüh´MÕubah}”(h]”j:üah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jUüh´MÕhj<üh²hubj)�”}”(hhh]”hì)�”}”(hŒacquire EH ownership”h]”hŒacquire EH ownership”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÕhjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<üh²hh³jUüh´MÕubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jýj1jýj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX9**Parameters** ``struct ata_port *ap`` ATA port to acquire EH ownership for **Description** Acquire EH ownership for **ap**. This is the basic exclusion mechanism for ports sharing a host. Only one port hanging off the same host can claim the ownership of EH. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj)ýh]”hŒ Parameters”…”�”}”(hj+ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÙhj#ýubjœ)�”}”(hhh]”j¡)�”}”(hŒ=``struct ata_port *ap`` ATA port to acquire EH ownership for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjHýh]”hŒstruct ata_port *ap”…”�”}”(hjJýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjFýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÖhjBýubj·)�”}”(hhh]”hì)�”}”(hŒ$ATA port to acquire EH ownership for”h]”hŒ$ATA port to acquire EH ownership for”…”�”}”(hjaýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j]ýh´MÖhj^ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjBýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j]ýh´MÖhj?ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj#ýubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjƒýh]”hŒ Description”…”�”}”(hj…ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MØhj#ýubj)�”}”(hŒ¿Acquire EH ownership for **ap**. This is the basic exclusion mechanism for ports sharing a host. Only one port hanging off the same host can claim the ownership of EH. LOCKING: EH context.”h]”(hì)�”}”(hŒ©Acquire EH ownership for **ap**. This is the basic exclusion mechanism for ports sharing a host. Only one port hanging off the same host can claim the ownership of EH.”h]”(hŒAcquire EH ownership for ”…”�”}”(hj�ýh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj¥ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ýubhŒŠ. This is the basic exclusion mechanism for ports sharing a host. Only one port hanging off the same host can claim the ownership of EH.”…”�”}”(hj�ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M×hj™ýubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hj¾ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÛhj™ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½ýh´M×hj#ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_release (C function)”Œc.ata_eh_release”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void ata_eh_release (struct ata_port *ap)”h]”j")�”}”(hŒ(void ata_eh_release(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjóýh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjïýh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjïýh²hh³jþh´Mèubj�)�”}”(hŒata_eh_release”h]”j[)�”}”(hŒata_eh_release”h]”hŒata_eh_release”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjþubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjïýh²hh³jþh´Mèubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj0þh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj,þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=þh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,þubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjNþh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjKþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jPþŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjþsbŒc.ata_eh_release”†”asbuh1hhj,þubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,þubj)�”}”(hjS h]”hŒ*”…”�”}”(hj|þh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj,þubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj‰þh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj,þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj(þubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjïýh²hh³jþh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjëýh²hh³jþh´Mèubah}”(h]”jæýah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jþh´Mèhjèýh²hubj)�”}”(hhh]”hì)�”}”(hŒrelease EH ownership”h]”hŒrelease EH ownership”…”�”}”(hj³þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mèhj°þh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèýh²hh³jþh´Mèubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jËþj1jËþj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_port *ap`` ATA port to release EH ownership for **Description** Release EH ownership for **ap** if the caller. The caller must have acquired EH ownership using ata_eh_acquire() previously. LOCKING: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÕþh]”hŒ Parameters”…”�”}”(hj×þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓþubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MìhjÏþubjœ)�”}”(hhh]”j¡)�”}”(hŒ=``struct ata_port *ap`` ATA port to release EH ownership for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjôþh]”hŒstruct ata_port *ap”…”�”}”(hjöþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjòþubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Méhjîþubj·)�”}”(hhh]”hì)�”}”(hŒ$ATA port to release EH ownership for”h]”hŒ$ATA port to release EH ownership for”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ÿh´Méhj ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjîþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j ÿh´Méhjëþubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÏþubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj/ÿh]”hŒ Description”…”�”}”(hj1ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MëhjÏþubj)�”}”(hŒ“Release EH ownership for **ap** if the caller. The caller must have acquired EH ownership using ata_eh_acquire() previously. LOCKING: EH context.”h]”(hì)�”}”(hŒ}Release EH ownership for **ap** if the caller. The caller must have acquired EH ownership using ata_eh_acquire() previously.”h]”(hŒRelease EH ownership for ”…”�”}”(hjIÿh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjQÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIÿubhŒ^ if the caller. The caller must have acquired EH ownership using ata_eh_acquire() previously.”…”�”}”(hjIÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MêhjEÿubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MíhjEÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jiÿh´MêhjÏþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_error (C function)”Œc.ata_scsi_error”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void ata_scsi_error (struct Scsi_Host *host)”h]”j")�”}”(hŒ+void ata_scsi_error(struct Scsi_Host *host)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸÿh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj›ÿh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M.ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®ÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›ÿh²hh³j­ÿh´M.ubj�)�”}”(hŒata_scsi_error”h]”j[)�”}”(hŒata_scsi_error”h]”hŒata_scsi_error”…”�”}”(hjÀÿh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼ÿubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj›ÿh²hh³j­ÿh´M.ubjª)�”}”(hŒ(struct Scsi_Host *host)”h]”j°)�”}”(hŒstruct Scsi_Host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÜÿh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÿh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØÿubh)�”}”(hhh]”j[)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjúÿh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj÷ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jüÿŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÂÿsbŒc.ata_scsi_error”†”asbuh1hhjØÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØÿubj)�”}”(hjS h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjØÿubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjØÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÔÿubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj›ÿh²hh³j­ÿh´M.ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj—ÿh²hh³j­ÿh´M.ubah}”(h]”j’ÿah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j­ÿh´M.hj”ÿh²hubj)�”}”(hhh]”hì)�”}”(hŒ!SCSI layer error handler callback”h]”hŒ!SCSI layer error handler callback”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M.hj\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ÿh²hh³j­ÿh´M.ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jwj1jwj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒà**Parameters** ``struct Scsi_Host *host`` SCSI host on which error occurred **Description** Handles SCSI-layer-thrown error events. LOCKING: Inherited from SCSI layer (none, can sleep) **Return** Zero.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�h]”hŒ Parameters”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M2hj{ubjœ)�”}”(hhh]”j¡)�”}”(hŒ=``struct Scsi_Host *host`` SCSI host on which error occurred ”h]”(j§)�”}”(hŒ``struct Scsi_Host *host``”h]”j\)�”}”(hj h]”hŒstruct Scsi_Host *host”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M/hjšubj·)�”}”(hhh]”hì)�”}”(hŒ!SCSI host on which error occurred”h]”hŒ!SCSI host on which error occurred”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµh´M/hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jµh´M/hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj{ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÛh]”hŒ Description”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M1hj{ubj)�”}”(hŒ^Handles SCSI-layer-thrown error events. LOCKING: Inherited from SCSI layer (none, can sleep) ”h]”(hì)�”}”(hŒ'Handles SCSI-layer-thrown error events.”h]”hŒ'Handles SCSI-layer-thrown error events.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M0hjñubhì)�”}”(hŒ4LOCKING: Inherited from SCSI layer (none, can sleep)”h]”hŒ4LOCKING: Inherited from SCSI layer (none, can sleep)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M2hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´M0hj{ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M5hj{ubhì)�”}”(hŒZero.”h]”hŒZero.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M6hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'ata_scsi_cmd_error_handler (C function)”Œc.ata_scsi_cmd_error_handler”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒiint ata_scsi_cmd_error_handler (struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_work_q)”h]”j")�”}”(hŒhint ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_work_q)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj\h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MUubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\h²hh³jnh´MUubj�)�”}”(hŒata_scsi_cmd_error_handler”h]”j[)�”}”(hŒata_scsi_cmd_error_handler”h]”hŒata_scsi_cmd_error_handler”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj}ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj\h²hh³jnh´MUubjª)�”}”(hŒJ(struct Scsi_Host *host, struct ata_port *ap, struct list_head *eh_work_q)”h]”(j°)�”}”(hŒstruct Scsi_Host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubh)�”}”(hhh]”j[)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j½Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjƒsbŒc.ata_scsi_cmd_error_handler”†”asbuh1hhj™ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj™ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj™ubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubj°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j/Œmodname”NŒ classname”Njwjz)�”}”j}]”j׌c.ata_scsi_cmd_error_handler”†”asbuh1hhj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubj°)�”}”(hŒstruct list_head *eh_work_q”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{ubh)�”}”(hhh]”j[)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŸŒmodname”NŒ classname”Njwjz)�”}”j}]”j׌c.ata_scsi_cmd_error_handler”†”asbuh1hhj{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj{ubj[)�”}”(hŒ eh_work_q”h]”hŒ eh_work_q”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj\h²hh³jnh´MUubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjXh²hh³jnh´MUubah}”(h]”jSah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jnh´MUhjUh²hubj)�”}”(hhh]”hì)�”}”(hŒ%error callback for a list of commands”h]”hŒ%error callback for a list of commands”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MUhjýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUh²hh³jnh´MUubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jj1jj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX¿**Parameters** ``struct Scsi_Host *host`` scsi host containing the port ``struct ata_port *ap`` ATA port within the host ``struct list_head *eh_work_q`` list of commands to process **Description** process the given list of commands and return those finished to the ap->eh_done_q. This function is the first part of the libata error handler which processes a given list of failed commands. Return the number of commands that timed out.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj"h]”hŒ Parameters”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MYhjubjœ)�”}”(hhh]”(j¡)�”}”(hŒ9``struct Scsi_Host *host`` scsi host containing the port ”h]”(j§)�”}”(hŒ``struct Scsi_Host *host``”h]”j\)�”}”(hjAh]”hŒstruct Scsi_Host *host”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MVhj;ubj·)�”}”(hhh]”hì)�”}”(hŒscsi host containing the port”h]”hŒscsi host containing the port”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jVh´MVhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jVh´MVhj8ubj¡)�”}”(hŒ1``struct ata_port *ap`` ATA port within the host ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjzh]”hŒstruct ata_port *ap”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MWhjtubj·)�”}”(hhh]”hì)�”}”(hŒATA port within the host”h]”hŒATA port within the host”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´MWhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�h´MWhj8ubj¡)�”}”(hŒ<``struct list_head *eh_work_q`` list of commands to process ”h]”(j§)�”}”(hŒ``struct list_head *eh_work_q``”h]”j\)�”}”(hj³h]”hŒstruct list_head *eh_work_q”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MXhj­ubj·)�”}”(hhh]”hì)�”}”(hŒlist of commands to process”h]”hŒlist of commands to process”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈh´MXhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÈh´MXhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjîh]”hŒ Description”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MZhjubhì)�”}”(hŒÀprocess the given list of commands and return those finished to the ap->eh_done_q. This function is the first part of the libata error handler which processes a given list of failed commands.”h]”hŒÀprocess the given list of commands and return those finished to the ap->eh_done_q. This function is the first part of the libata error handler which processes a given list of failed commands.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MYhjubhì)�”}”(hŒ-Return the number of commands that timed out.”h]”hŒ-Return the number of commands that timed out.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M]hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(ata_scsi_port_error_handler (C function)”Œc.ata_scsi_port_error_handler”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒNvoid ata_scsi_port_error_handler (struct Scsi_Host *host, struct ata_port *ap)”h]”j")�”}”(hŒMvoid ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÁubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>h²hh³jPh´MÁubj�)�”}”(hŒata_scsi_port_error_handler”h]”j[)�”}”(hŒata_scsi_port_error_handler”h]”hŒata_scsi_port_error_handler”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj_ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj>h²hh³jPh´MÁubjª)�”}”(hŒ-(struct Scsi_Host *host, struct ata_port *ap)”h]”(j°)�”}”(hŒstruct Scsi_Host *host”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{ubh)�”}”(hhh]”j[)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŸŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjesbŒc.ata_scsi_port_error_handler”†”asbuh1hhj{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj{ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj{ubj[)�”}”(hŒhost”h]”hŒhost”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjwubj°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”j¹Œc.ata_scsi_port_error_handler”†”asbuh1hhjíubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjíubj)�”}”(hjS h]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjíubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjwubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj>h²hh³jPh´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj:h²hh³jPh´MÁubah}”(h]”j5ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jPh´MÁhj7h²hubj)�”}”(hhh]”hì)�”}”(hŒ#recover the port after the commands”h]”hŒ#recover the port after the commands”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÁhjoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7h²hh³jPh´MÁubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jŠj1jŠj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ×**Parameters** ``struct Scsi_Host *host`` SCSI host containing the port ``struct ata_port *ap`` the ATA port **Description** Handle the recovery of the port **ap** after all the commands have been recovered.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj”h]”hŒ Parameters”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÅhjŽubjœ)�”}”(hhh]”(j¡)�”}”(hŒ9``struct Scsi_Host *host`` SCSI host containing the port ”h]”(j§)�”}”(hŒ``struct Scsi_Host *host``”h]”j\)�”}”(hj³h]”hŒstruct Scsi_Host *host”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÂhj­ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI host containing the port”h]”hŒSCSI host containing the port”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈh´MÂhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÈh´MÂhjªubj¡)�”}”(hŒ%``struct ata_port *ap`` the ATA port ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjìh]”hŒstruct ata_port *ap”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÃhjæubj·)�”}”(hhh]”hì)�”}”(hŒ the ATA port”h]”hŒ the ATA port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´MÃhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŽubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj'h]”hŒ Description”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÅhjŽubhì)�”}”(hŒRHandle the recovery of the port **ap** after all the commands have been recovered.”h]”(hŒ Handle the recovery of the port ”…”�”}”(hj=h²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=ubhŒ, after all the commands have been recovered.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÄhjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_wait_eh (C function)”Œc.ata_port_wait_eh”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void ata_port_wait_eh (struct ata_port *ap)”h]”j")�”}”(hŒ*void ata_port_wait_eh(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjzh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjzh²hh³jŒh´M?ubj�)�”}”(hŒata_port_wait_eh”h]”j[)�”}”(hŒata_port_wait_eh”h]”hŒata_port_wait_eh”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj›ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjzh²hh³jŒh´M?ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÛŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¡sbŒc.ata_port_wait_eh”†”asbuh1hhj·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj·ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj³ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjzh²hh³jŒh´M?ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjvh²hh³jŒh´M?ubah}”(h]”jqah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jŒh´M?hjsh²hubj)�”}”(hhh]”hì)�”}”(hŒ-Wait for the currently pending EH to complete”h]”hŒ-Wait for the currently pending EH to complete”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M?hj;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsh²hh³jŒh´M?ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jVj1jVj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ¼**Parameters** ``struct ata_port *ap`` Port to wait EH for **Description** Wait until the currently pending EH is complete. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj`h]”hŒ Parameters”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MChjZubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct ata_port *ap`` Port to wait EH for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjh]”hŒstruct ata_port *ap”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M@hjyubj·)�”}”(hhh]”hì)�”}”(hŒPort to wait EH for”h]”hŒPort to wait EH for”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”h´M@hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j”h´M@hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjZubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjºh]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MBhjZubj)�”}”(hŒ]Wait until the currently pending EH is complete. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ0Wait until the currently pending EH is complete.”h]”hŒ0Wait until the currently pending EH is complete.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MAhjÐubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MChjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâh´MAhjZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_set_pending (C function)”Œc.ata_eh_set_pending”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=void ata_eh_set_pending (struct ata_port *ap, bool fastdrain)”h]”j")�”}”(hŒlock, in the libsas case we need to hold a lock at the ha->level to coordinate these events. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjJh]”hŒ Parameters”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MóhjDubjœ)�”}”(hhh]”j¡)�”}”(hŒ/``struct ata_port *ap`` ATA port to end EH for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjih]”hŒstruct ata_port *ap”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mðhjcubj·)�”}”(hhh]”hì)�”}”(hŒATA port to end EH for”h]”hŒATA port to end EH for”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j~h´Mðhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j~h´Mðhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjDubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¤h]”hŒ Description”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MòhjDubhì)�”}”(hŒÙIn the libata object model there is a 1:1 mapping of ata_port to shost, so host fields can be directly manipulated under ap->lock, in the libsas case we need to hold a lock at the ha->level to coordinate these events.”h]”hŒÙIn the libata object model there is a 1:1 mapping of ata_port to shost, so host fields can be directly manipulated under ap->lock, in the libsas case we need to hold a lock at the ha->level to coordinate these events.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MñhjDubj)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MöhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÛh´MöhjDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ata_port_schedule_eh (C function)”Œc.ata_port_schedule_eh”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/void ata_port_schedule_eh (struct ata_port *ap)”h]”j")�”}”(hŒ.void ata_port_schedule_eh(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjþh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjþh²hh³jh´Mubj�)�”}”(hŒata_port_schedule_eh”h]”j[)�”}”(hŒata_port_schedule_eh”h]”hŒata_port_schedule_eh”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjþh²hh³jh´Mubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;ubh)�”}”(hhh]”j[)�”}”(hŒata_port”•h]”hŒata_port”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j_Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj%sbŒc.ata_port_schedule_eh”†”asbuh1hhj;ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj;ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj;ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj7ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjþh²hh³jh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjúh²hh³jh´Mubah}”(h]”jõah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jh´Mhj÷h²hubj)�”}”(hhh]”hì)�”}”(hŒ$schedule error handling without a qc”h]”hŒ$schedule error handling without a qc”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷h²hh³jh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÚj1jÚj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒì**Parameters** ``struct ata_port *ap`` ATA port to schedule EH for **Description** Schedule error handling for **ap**. EH will kick in as soon as all commands are drained. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjäh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjÞubjœ)�”}”(hhh]”j¡)�”}”(hŒ4``struct ata_port *ap`` ATA port to schedule EH for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjh]”hŒstruct ata_port *ap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhjýubj·)�”}”(hhh]”hì)�”}”(hŒATA port to schedule EH for”h]”hŒATA port to schedule EH for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´Mhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÞubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj>h]”hŒ Description”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjÞubj)�”}”(hŒ€Schedule error handling for **ap**. EH will kick in as soon as all commands are drained. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒYSchedule error handling for **ap**. EH will kick in as soon as all commands are drained.”h]”(hŒSchedule error handling for ”…”�”}”(hjXh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXubhŒ7. EH will kick in as soon as all commands are drained.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjTubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jxh´MhjÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_link_abort (C function)”Œc.ata_link_abort”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*int ata_link_abort (struct ata_link *link)”h]”j")�”}”(hŒ)int ata_link_abort(struct ata_link *link)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjªh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjªh²hh³j¼h´M,ubj�)�”}”(hŒata_link_abort”h]”j[)�”}”(hŒata_link_abort”h]”hŒata_link_abort”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjËubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjªh²hh³j¼h´M,ubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjçubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÑsbŒc.ata_link_abort”†”asbuh1hhjçubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjçubj)�”}”(hjS h]”hŒ*”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjçubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjãubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjªh²hh³j¼h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¦h²hh³j¼h´M,ubah}”(h]”j¡ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¼h´M,hj£h²hubj)�”}”(hhh]”hì)�”}”(hŒabort all qc's on the link”h]”hŒabort all qc’s on the link”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M,hjkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£h²hh³j¼h´M,ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j†j1j†j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒí**Parameters** ``struct ata_link *link`` ATA link to abort qc's for **Description** Abort all active qc's active on **link** and schedule EH. LOCKING: spin_lock_irqsave(host lock) **Return** Number of aborted qc's.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�h]”hŒ Parameters”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M0hjŠubjœ)�”}”(hhh]”j¡)�”}”(hŒ5``struct ata_link *link`` ATA link to abort qc's for ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj¯h]”hŒstruct ata_link *link”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M-hj©ubj·)�”}”(hhh]”hì)�”}”(hŒATA link to abort qc's for”h]”hŒATA link to abort qc’s for”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÄh´M-hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÄh´M-hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjêh]”hŒ Description”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M/hjŠubj)�”}”(hŒaAbort all active qc's active on **link** and schedule EH. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ9Abort all active qc's active on **link** and schedule EH.”h]”(hŒ"Abort all active qc’s active on ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubhŒ and schedule EH.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M.hjubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j$h´M.hjŠubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj<h]”hŒReturn”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M3hjŠubhì)�”}”(hŒNumber of aborted qc's.”h]”hŒNumber of aborted qc’s.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M4hjŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_abort (C function)”Œc.ata_port_abort”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(int ata_port_abort (struct ata_port *ap)”h]”j")�”}”(hŒ'int ata_port_abort(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj}h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj}h²hh³j�h´M>ubj�)�”}”(hŒata_port_abort”h]”j[)�”}”(hŒata_port_abort”h]”hŒata_port_abort”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjžubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj}h²hh³j�h´M>ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjºubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÞŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¤sbŒc.ata_port_abort”†”asbuh1hhjºubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºubj)�”}”(hjS h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjºubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¶ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj}h²hh³j�h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjyh²hh³j�h´M>ubah}”(h]”jtah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j�h´M>hjvh²hubj)�”}”(hhh]”hì)�”}”(hŒabort all qc's on the port”h]”hŒabort all qc’s on the port”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M>hj>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvh²hh³j�h´M>ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jYj1jYj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒæ**Parameters** ``struct ata_port *ap`` ATA port to abort qc's for **Description** Abort all active qc's of **ap** and schedule EH. LOCKING: spin_lock_irqsave(host_set lock) **Return** Number of aborted qc's.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjch]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MBhj]ubjœ)�”}”(hhh]”j¡)�”}”(hŒ3``struct ata_port *ap`` ATA port to abort qc's for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj‚h]”hŒstruct ata_port *ap”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M?hj|ubj·)�”}”(hhh]”hì)�”}”(hŒATA port to abort qc's for”h]”hŒATA port to abort qc’s for”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—h´M?hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—h´M?hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj]ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj½h]”hŒ Description”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MAhj]ubj)�”}”(hŒ\Abort all active qc's of **ap** and schedule EH. LOCKING: spin_lock_irqsave(host_set lock) ”h]”(hì)�”}”(hŒ0Abort all active qc's of **ap** and schedule EH.”h]”(hŒAbort all active qc’s of ”…”�”}”(hj×h²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×ubhŒ and schedule EH.”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M@hjÓubhì)�”}”(hŒ)LOCKING: spin_lock_irqsave(host_set lock)”h]”hŒ)LOCKING: spin_lock_irqsave(host_set lock)”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MBhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j÷h´M@hj]ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MEhj]ubhì)�”}”(hŒNumber of aborted qc's.”h]”hŒNumber of aborted qc’s.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MFhj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__ata_port_freeze (C function)”Œc.__ata_port_freeze”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void __ata_port_freeze (struct ata_port *ap)”h]”j")�”}”(hŒ+void __ata_port_freeze(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjPh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MPubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPh²hh³jbh´MPubj�)�”}”(hŒ__ata_port_freeze”h]”j[)�”}”(hŒ__ata_port_freeze”h]”hŒ__ata_port_freeze”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjqubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjPh²hh³jbh´MPubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j±Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjwsbŒc.__ata_port_freeze”†”asbuh1hhj�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj�ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjPh²hh³jbh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjLh²hh³jbh´MPubah}”(h]”jGah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jbh´MPhjIh²hubj)�”}”(hhh]”hì)�”}”(hŒ freeze port”h]”hŒ freeze port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MPhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIh²hh³jbh´MPubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j,j1j,j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX�**Parameters** ``struct ata_port *ap`` ATA port to freeze **Description** This function is called when HSM violation or some other condition disrupts normal operation of the port. Frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset. ap->ops->freeze() callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj6h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MThj0ubjœ)�”}”(hhh]”j¡)�”}”(hŒ+``struct ata_port *ap`` ATA port to freeze ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjUh]”hŒstruct ata_port *ap”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MQhjOubj·)�”}”(hhh]”hì)�”}”(hŒATA port to freeze”h]”hŒATA port to freeze”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jjh´MQhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jjh´MQhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj0ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj�h]”hŒ Description”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MShj0ubj)�”}”(hX This function is called when HSM violation or some other condition disrupts normal operation of the port. Frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset. ap->ops->freeze() callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒâThis function is called when HSM violation or some other condition disrupts normal operation of the port. Frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset.”h]”hŒâThis function is called when HSM violation or some other condition disrupts normal operation of the port. Frozen port is not allowed to perform any operation until the port is thawed, which usually follows a successful reset.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MRhj¦ubhì)�”}”(hŒþap->ops->freeze() callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen.”h]”hŒþap->ops->freeze() callback can be used for freezing the port hardware-wise (e.g. mask interrupt and stop DMA engine). If a port cannot be frozen hardware-wise, the interrupt handler must ack and clear interrupts unconditionally while the port is frozen.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MWhj¦ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M]hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¸h´MRhj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_port_freeze (C function)”Œc.ata_port_freeze”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)int ata_port_freeze (struct ata_port *ap)”h]”j")�”}”(hŒ(int ata_port_freeze(struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjùh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mlubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjùh²hh³j h´Mlubj�)�”}”(hŒata_port_freeze”h]”j[)�”}”(hŒata_port_freeze”h]”hŒata_port_freeze”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjùh²hh³j h´Mlubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jZŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj sbŒc.ata_port_freeze”†”asbuh1hhj6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj6ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj2ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjùh²hh³j h´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjõh²hh³j h´Mlubah}”(h]”jðah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j h´Mlhjòh²hubj)�”}”(hhh]”hì)�”}”(hŒabort & freeze port”h]”hŒabort & freeze port”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mlhjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjòh²hh³j h´Mlubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÕj1jÕj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX\**Parameters** ``struct ata_port *ap`` ATA port to freeze **Description** Abort and freeze **ap**. The freeze operation must be called first, because some hardware requires special operations before the taskfile registers are accessible. LOCKING: spin_lock_irqsave(host lock) **Return** Number of aborted commands.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjßh]”hŒ Parameters”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MphjÙubjœ)�”}”(hhh]”j¡)�”}”(hŒ+``struct ata_port *ap`` ATA port to freeze ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjþh]”hŒstruct ata_port *ap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mmhjøubj·)�”}”(hhh]”hì)�”}”(hŒATA port to freeze”h]”hŒATA port to freeze”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Mmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´Mmhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÙubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj9h]”hŒ Description”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MohjÙubj)�”}”(hŒÌAbort and freeze **ap**. The freeze operation must be called first, because some hardware requires special operations before the taskfile registers are accessible. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ¤Abort and freeze **ap**. The freeze operation must be called first, because some hardware requires special operations before the taskfile registers are accessible.”h]”(hŒAbort and freeze ”…”�”}”(hjSh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSubhŒ�. The freeze operation must be called first, because some hardware requires special operations before the taskfile registers are accessible.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MnhjOubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MrhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jsh´MnhjÙubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj‹h]”hŒReturn”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MuhjÙubhì)�”}”(hŒNumber of aborted commands.”h]”hŒNumber of aborted commands.”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MvhjÙubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_freeze_port (C function)”Œc.ata_eh_freeze_port”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void ata_eh_freeze_port (struct ata_port *ap)”h]”j")�”}”(hŒ,void ata_eh_freeze_port(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÌh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÌh²hh³jÞh´M‚ubj�)�”}”(hŒata_eh_freeze_port”h]”j[)�”}”(hŒata_eh_freeze_port”h]”hŒata_eh_freeze_port”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjíubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÌh²hh³jÞh´M‚ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j-Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjósbŒc.ata_eh_freeze_port”†”asbuh1hhj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÌh²hh³jÞh´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÈh²hh³jÞh´M‚ubah}”(h]”jÃah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÞh´M‚hjÅh²hubj)�”}”(hhh]”hì)�”}”(hŒEH helper to freeze port”h]”hŒEH helper to freeze port”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‚hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅh²hh³jÞh´M‚ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¨j1j¨j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ|**Parameters** ``struct ata_port *ap`` ATA port to freeze **Description** Freeze **ap**. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj²h]”hŒ Parameters”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M†hj¬ubjœ)�”}”(hhh]”j¡)�”}”(hŒ+``struct ata_port *ap`` ATA port to freeze ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjÑh]”hŒstruct ata_port *ap”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MƒhjËubj·)�”}”(hhh]”hì)�”}”(hŒATA port to freeze”h]”hŒATA port to freeze”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jæh´Mƒhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jæh´MƒhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¬ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M…hj¬ubj)�”}”(hŒFreeze **ap**. LOCKING: None.”h]”(hì)�”}”(hŒFreeze **ap**.”h]”(hŒFreeze ”…”�”}”(hj&h²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&ubhŒ.”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M„hj"ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M†hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jFh´M„hj¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_thaw_port (C function)”Œc.ata_eh_thaw_port”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ+void ata_eh_thaw_port (struct ata_port *ap)”h]”j")�”}”(hŒ*void ata_eh_thaw_port(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjxh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjxh²hh³jŠh´M•ubj�)�”}”(hŒata_eh_thaw_port”h]”j[)�”}”(hŒata_eh_thaw_port”h]”hŒata_eh_thaw_port”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj™ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjxh²hh³jŠh´M•ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÔubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÙŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjŸsbŒc.ata_eh_thaw_port”†”asbuh1hhjµubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµubj)�”}”(hjS h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjµubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj±ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjxh²hh³jŠh´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjth²hh³jŠh´M•ubah}”(h]”joah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jŠh´M•hjqh²hubj)�”}”(hhh]”hì)�”}”(hŒEH helper to thaw port”h]”hŒEH helper to thaw port”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M•hj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjqh²hh³jŠh´M•ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jTj1jTj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ„**Parameters** ``struct ata_port *ap`` ATA port to thaw **Description** Thaw frozen port **ap**. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M™hjXubjœ)�”}”(hhh]”j¡)�”}”(hŒ)``struct ata_port *ap`` ATA port to thaw ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj}h]”hŒstruct ata_port *ap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M–hjwubj·)�”}”(hhh]”hì)�”}”(hŒATA port to thaw”h]”hŒATA port to thaw”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j’h´M–hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j’h´M–hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjXubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¸h]”hŒ Description”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M˜hjXubj)�”}”(hŒ(Thaw frozen port **ap**. LOCKING: None.”h]”(hì)�”}”(hŒThaw frozen port **ap**.”h]”(hŒThaw frozen port ”…”�”}”(hjÒh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒubhŒ.”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M—hjÎubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M™hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jòh´M—hjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_qc_complete (C function)”Œc.ata_eh_qc_complete”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3void ata_eh_qc_complete (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ2void ata_eh_qc_complete(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj$h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj$h²hh³j6h´MÂubj�)�”}”(hŒata_eh_qc_complete”h]”j[)�”}”(hŒata_eh_qc_complete”h]”hŒata_eh_qc_complete”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjEubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj$h²hh³j6h´MÂubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j…Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjKsbŒc.ata_eh_qc_complete”†”asbuh1hhjaubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjaubj)�”}”(hjS h]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjaubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj]ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj$h²hh³j6h´MÂubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj h²hh³j6h´MÂubah}”(h]”jah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j6h´MÂhjh²hubj)�”}”(hhh]”hì)�”}”(hŒ&Complete an active ATA command from EH”h]”hŒ&Complete an active ATA command from EH”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÂhjåh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³j6h´MÂubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jj1jj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ¼**Parameters** ``struct ata_queued_cmd *qc`` Command to complete **Description** Indicate to the mid and upper layers that an ATA command has completed. To be used from EH.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÆhjubjœ)�”}”(hhh]”j¡)�”}”(hŒ2``struct ata_queued_cmd *qc`` Command to complete ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj)h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÃhj#ubj·)�”}”(hhh]”hì)�”}”(hŒCommand to complete”h]”hŒCommand to complete”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>h´MÃhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j>h´MÃhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjdh]”hŒ Description”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÅhjubj)�”}”(hŒ\Indicate to the mid and upper layers that an ATA command has completed. To be used from EH.”h]”hì)�”}”(hŒ\Indicate to the mid and upper layers that an ATA command has completed. To be used from EH.”h]”hŒ\Indicate to the mid and upper layers that an ATA command has completed. To be used from EH.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÄhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒh´MÄhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_qc_retry (C function)”Œc.ata_eh_qc_retry”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_eh_qc_retry (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ/void ata_eh_qc_retry(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¯h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÑubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¯h²hh³jÁh´MÑubj�)�”}”(hŒata_eh_qc_retry”h]”j[)�”}”(hŒata_eh_qc_retry”h]”hŒata_eh_qc_retry”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÐubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¯h²hh³jÁh´MÑubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjìubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÖsbŒc.ata_eh_qc_retry”†”asbuh1hhjìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjìubj)�”}”(hjS h]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjìubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjèubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¯h²hh³jÁh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj«h²hh³jÁh´MÑubah}”(h]”j¦ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÁh´MÑhj¨h²hubj)�”}”(hhh]”hì)�”}”(hŒ.Tell midlayer to retry an ATA command after EH”h]”hŒ.Tell midlayer to retry an ATA command after EH”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÑhjph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨h²hh³jÁh´MÑubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j‹j1j‹j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXx**Parameters** ``struct ata_queued_cmd *qc`` Command to retry **Description** Indicate to the mid and upper layers that an ATA command should be retried. To be used from EH. SCSI midlayer limits the number of retries to scmd->allowed. scmd->allowed is incremented for commands which get retried due to unrelated failures (qc->err_mask is zero).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj•h]”hŒ Parameters”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÕhj�ubjœ)�”}”(hhh]”j¡)�”}”(hŒ/``struct ata_queued_cmd *qc`` Command to retry ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj´h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÒhj®ubj·)�”}”(hhh]”hì)�”}”(hŒCommand to retry”h]”hŒCommand to retry”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉh´MÒhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÉh´MÒhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjïh]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÔhj�ubj)�”}”(hX Indicate to the mid and upper layers that an ATA command should be retried. To be used from EH. SCSI midlayer limits the number of retries to scmd->allowed. scmd->allowed is incremented for commands which get retried due to unrelated failures (qc->err_mask is zero).”h]”(hì)�”}”(hŒ`Indicate to the mid and upper layers that an ATA command should be retried. To be used from EH.”h]”hŒ`Indicate to the mid and upper layers that an ATA command should be retried. To be used from EH.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÓhjubhì)�”}”(hŒªSCSI midlayer limits the number of retries to scmd->allowed. scmd->allowed is incremented for commands which get retried due to unrelated failures (qc->err_mask is zero).”h]”hŒªSCSI midlayer limits the number of retries to scmd->allowed. scmd->allowed is incremented for commands which get retried due to unrelated failures (qc->err_mask is zero).”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÖhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´MÓhj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_dev_disable (C function)”Œc.ata_dev_disable”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-void ata_dev_disable (struct ata_device *dev)”h]”j")�”}”(hŒ,void ata_dev_disable(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjIh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Måubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIh²hh³j[h´Måubj�)�”}”(hŒata_dev_disable”h]”j[)�”}”(hŒata_dev_disable”h]”hŒata_dev_disable”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjjubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjIh²hh³j[h´Måubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jªŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjpsbŒc.ata_dev_disable”†”asbuh1hhj†ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj†ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‚ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjIh²hh³j[h´Måubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjEh²hh³j[h´Måubah}”(h]”j@ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j[h´MåhjBh²hubj)�”}”(hhh]”hì)�”}”(hŒdisable ATA device”h]”hŒdisable ATA device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Måhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjBh²hh³j[h´Måubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j%j1j%j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒŠ**Parameters** ``struct ata_device *dev`` ATA device to disable **Description** Disable **dev**. Locking: EH context.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj/h]”hŒ Parameters”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Méhj)ubjœ)�”}”(hhh]”j¡)�”}”(hŒ1``struct ata_device *dev`` ATA device to disable ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjNh]”hŒstruct ata_device *dev”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MæhjHubj·)�”}”(hhh]”hì)�”}”(hŒATA device to disable”h]”hŒATA device to disable”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jch´Mæhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jch´MæhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj)ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj‰h]”hŒ Description”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mèhj)ubj)�”}”(hŒ&Disable **dev**. Locking: EH context.”h]”(hì)�”}”(hŒDisable **dev**.”h]”(hŒDisable ”…”�”}”(hj£h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubhŒ.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MçhjŸubhì)�”}”(hŒLocking: EH context.”h]”hŒLocking: EH context.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MéhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃh´Mçhj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_detach_dev (C function)”Œc.ata_eh_detach_dev”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/void ata_eh_detach_dev (struct ata_device *dev)”h]”j")�”}”(hŒ.void ata_eh_detach_dev(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjõh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjõh²hh³j h´Mùubj�)�”}”(hŒata_eh_detach_dev”h]”j[)�”}”(hŒata_eh_detach_dev”h]”hŒata_eh_detach_dev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjõh²hh³j h´Mùubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj2 ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2 ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jV Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj sbŒc.ata_eh_detach_dev”†”asbuh1hhj2 ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj2 ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj2 ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj2 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj. ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjõh²hh³j h´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjñh²hh³j h´Mùubah}”(h]”jìah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j h´Mùhjîh²hubj)�”}”(hhh]”hì)�”}”(hŒdetach ATA device”h]”hŒdetach ATA device”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mùhj¶ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîh²hh³j h´Mùubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÑ j1jÑ j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ‚**Parameters** ``struct ata_device *dev`` ATA device to detach **Description** Detach **dev**. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÛ h]”hŒ Parameters”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MýhjÕ ubjœ)�”}”(hhh]”j¡)�”}”(hŒ0``struct ata_device *dev`` ATA device to detach ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjú h]”hŒstruct ata_device *dev”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Múhjô ubj·)�”}”(hhh]”hì)�”}”(hŒATA device to detach”h]”hŒATA device to detach”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!h´Múhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j!h´Múhjñ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÕ ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj5!h]”hŒ Description”…”�”}”(hj7!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj3!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MühjÕ ubj)�”}”(hŒDetach **dev**. LOCKING: None.”h]”(hì)�”}”(hŒDetach **dev**.”h]”(hŒDetach ”…”�”}”(hjO!h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjW!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO!ubhŒ.”…”�”}”(hjO!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MûhjK!ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjp!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MýhjK!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jo!h´MûhjÕ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_about_to_do (C function)”Œc.ata_eh_about_to_do”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\void ata_eh_about_to_do (struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”j")�”}”(hŒ[void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¡!h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¡!h²hh³j³!h´M$ubj�)�”}”(hŒata_eh_about_to_do”h]”j[)�”}”(hŒata_eh_about_to_do”h]”hŒata_eh_about_to_do”…”�”}”(hjÆ!h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÂ!ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¡!h²hh³j³!h´M$ubjª)�”}”(hŒD(struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâ!h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞ!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï!h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ!ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjý!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j"Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÈ!sbŒc.ata_eh_about_to_do”†”asbuh1hhjÞ!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞ!ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj."h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÞ!ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÞ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚ!ubj°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjT"h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjP"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjP"ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjr"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjo"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jt"Œmodname”NŒ classname”Njwjz)�”}”j}]”j"Œc.ata_eh_about_to_do”†”asbuh1hhjP"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjP"ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjž"h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjP"ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj«"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjP"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚ!ubj°)�”}”(hŒunsigned int action”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÄ"h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÀ"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀ"ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjà"h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÀ"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀ"ubj[)�”}”(hŒaction”h]”hŒaction”…”�”}”(hjü"h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÀ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚ!ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¡!h²hh³j³!h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj�!h²hh³j³!h´M$ubah}”(h]”j˜!ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j³!h´M$hjš!h²hubj)�”}”(hhh]”hì)�”}”(hŒabout to perform eh_action”h]”hŒabout to perform eh_action”…”�”}”(hj&#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M$hj##h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš!h²hh³j³!h´M$ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j>#j1j>#j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX…**Parameters** ``struct ata_link *link`` target ATA link ``struct ata_device *dev`` target ATA dev for per-dev action (can be NULL) ``unsigned int action`` action about to be performed **Description** Called just before performing EH actions to clear related bits in **link->eh_info** such that eh actions are not unnecessarily repeated. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjH#h]”hŒ Parameters”…”�”}”(hjJ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjF#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M(hjB#ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_link *link`` target ATA link ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjg#h]”hŒstruct ata_link *link”…”�”}”(hji#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hje#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M%hja#ubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATA link”h]”hŒtarget ATA link”…”�”}”(hj€#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|#h´M%hj}#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hja#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j|#h´M%hj^#ubj¡)�”}”(hŒK``struct ata_device *dev`` target ATA dev for per-dev action (can be NULL) ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj #h]”hŒstruct ata_device *dev”…”�”}”(hj¢#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjž#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M&hjš#ubj·)�”}”(hhh]”hì)�”}”(hŒ/target ATA dev for per-dev action (can be NULL)”h]”hŒ/target ATA dev for per-dev action (can be NULL)”…”�”}”(hj¹#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµ#h´M&hj¶#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjš#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jµ#h´M&hj^#ubj¡)�”}”(hŒ5``unsigned int action`` action about to be performed ”h]”(j§)�”}”(hŒ``unsigned int action``”h]”j\)�”}”(hjÙ#h]”hŒunsigned int action”…”�”}”(hjÛ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj×#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M'hjÓ#ubj·)�”}”(hhh]”hì)�”}”(hŒaction about to be performed”h]”hŒaction about to be performed”…”�”}”(hjò#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jî#h´M'hjï#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÓ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jî#h´M'hj^#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjB#ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj$h]”hŒ Description”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M)hjB#ubj)�”}”(hŒ˜Called just before performing EH actions to clear related bits in **link->eh_info** such that eh actions are not unnecessarily repeated. LOCKING: None.”h]”(hì)�”}”(hŒˆCalled just before performing EH actions to clear related bits in **link->eh_info** such that eh actions are not unnecessarily repeated.”h]”(hŒBCalled just before performing EH actions to clear related bits in ”…”�”}”(hj.$h²hh³Nh´Nubj )�”}”(hŒ**link->eh_info**”h]”hŒ link->eh_info”…”�”}”(hj6$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.$ubhŒ5 such that eh actions are not unnecessarily repeated.”…”�”}”(hj.$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M(hj*$ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjO$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M,hj*$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jN$h´M(hjB#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_done (C function)”Œ c.ata_eh_done”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒUvoid ata_eh_done (struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”j")�”}”(hŒTvoid ata_eh_done(struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj€$h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“$h²hh³Nh´Nubah}”(h• ]”h ]”jFah"]”h$]”h&]”uh1j9hj€$h²hh³j’$h´MHubj�)�”}”(hŒ ata_eh_done”h]”j[)�”}”(hŒ ata_eh_done”h]”hŒ ata_eh_done”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¡$ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj€$h²hh³j’$h´MHubjª)�”}”(hŒD(struct ata_link *link, struct ata_device *dev, unsigned int action)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÁ$h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj½$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½$ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjß$h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÜ$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”já$Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj§$sbŒ c.ata_eh_done”†”asbuh1hhj½$ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ$h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½$ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj½$ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj½$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¹$ubj°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj3%h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj/%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/%ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjQ%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjN%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jS%Œmodname”NŒ classname”Njwjz)�”}”j}]”jû$Œ c.ata_eh_done”†”asbuh1hhj/%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj/%ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj}%h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj/%ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjŠ%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj/%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¹$ubj°)�”}”(hŒunsigned int action”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj£%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŸ%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸ%ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿%h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŸ%ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ%h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŸ%ubj[)�”}”(hŒaction”h]”hŒaction”…”�”}”(hjÛ%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŸ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¹$ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj€$h²hh³j’$h´MHubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj|$h²hh³j’$h´MHubah}”(h]”jw$ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j’$h´MHhjy$h²hubj)�”}”(hhh]”hì)�”}”(hŒEH action complete”h]”hŒEH action complete”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MHhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy$h²hh³j’$h´MHubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j&j1j&j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXc**Parameters** ``struct ata_link *link`` ATA link for which EH actions are complete ``struct ata_device *dev`` target ATA dev for per-dev action (can be NULL) ``unsigned int action`` action just completed **Description** Called right after performing EH actions to clear related bits in **link->eh_context**. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj'&h]”hŒ Parameters”…”�”}”(hj)&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MLhj!&ubjœ)�”}”(hhh]”(j¡)�”}”(hŒE``struct ata_link *link`` ATA link for which EH actions are complete ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjF&h]”hŒstruct ata_link *link”…”�”}”(hjH&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjD&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MIhj@&ubj·)�”}”(hhh]”hì)�”}”(hŒ*ATA link for which EH actions are complete”h]”hŒ*ATA link for which EH actions are complete”…”�”}”(hj_&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[&h´MIhj\&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj@&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j[&h´MIhj=&ubj¡)�”}”(hŒK``struct ata_device *dev`` target ATA dev for per-dev action (can be NULL) ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj&h]”hŒstruct ata_device *dev”…”�”}”(hj�&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj}&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MJhjy&ubj·)�”}”(hhh]”hì)�”}”(hŒ/target ATA dev for per-dev action (can be NULL)”h]”hŒ/target ATA dev for per-dev action (can be NULL)”…”�”}”(hj˜&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”&h´MJhj•&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjy&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j”&h´MJhj=&ubj¡)�”}”(hŒ.``unsigned int action`` action just completed ”h]”(j§)�”}”(hŒ``unsigned int action``”h]”j\)�”}”(hj¸&h]”hŒunsigned int action”…”�”}”(hjº&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¶&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MKhj²&ubj·)�”}”(hhh]”hì)�”}”(hŒaction just completed”h]”hŒaction just completed”…”�”}”(hjÑ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÍ&h´MKhjÎ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj²&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÍ&h´MKhj=&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj!&ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjó&h]”hŒ Description”…”�”}”(hjõ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MMhj!&ubj)�”}”(hŒgCalled right after performing EH actions to clear related bits in **link->eh_context**. LOCKING: None.”h]”(hì)�”}”(hŒWCalled right after performing EH actions to clear related bits in **link->eh_context**.”h]”(hŒBCalled right after performing EH actions to clear related bits in ”…”�”}”(hj 'h²hh³Nh´Nubj )�”}”(hŒ**link->eh_context**”h]”hŒlink->eh_context”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj 'ubhŒ.”…”�”}”(hj 'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MLhj 'ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj.'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MOhj 'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j-'h´MLhj!&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_err_string (C function)”Œc.ata_err_string”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3const char * ata_err_string (unsigned int err_mask)”h]”j")�”}”(hŒ1const char *ata_err_string(unsigned int err_mask)”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjc'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj_'h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_'h²hh³jp'h´M^ubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj_'h²hh³jp'h´M^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj_'h²hh³jp'h´M^ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj›'h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj_'h²hh³jp'h´M^ubj�)�”}”(hŒata_err_string”h]”j[)�”}”(hŒata_err_string”h]”hŒata_err_string”…”�”}”(hj¬'h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¨'ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj_'h²hh³jp'h´M^ubjª)�”}”(hŒ(unsigned int err_mask)”h]”j°)�”}”(hŒunsigned int err_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÈ'h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÄ'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄ'ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjä'h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÄ'ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÄ'ubj[)�”}”(hŒerr_mask”h]”hŒerr_mask”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÄ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÀ'ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj_'h²hh³jp'h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj['h²hh³jp'h´M^ubah}”(h]”jV'ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jp'h´M^hjX'h²hubj)�”}”(hhh]”hì)�”}”(hŒ&convert err_mask to descriptive string”h]”hŒ&convert err_mask to descriptive string”…”�”}”(hj*(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M^hj'(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX'h²hh³jp'h´M^ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jB(j1jB(j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX=**Parameters** ``unsigned int err_mask`` error mask to convert to string **Description** Convert **err_mask** to descriptive string. Errors are prioritized according to severity and only the most severe error is reported. LOCKING: None. **Return** Descriptive string for **err_mask**”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjL(h]”hŒ Parameters”…”�”}”(hjN(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MbhjF(ubjœ)�”}”(hhh]”j¡)�”}”(hŒ:``unsigned int err_mask`` error mask to convert to string ”h]”(j§)�”}”(hŒ``unsigned int err_mask``”h]”j\)�”}”(hjk(h]”hŒunsigned int err_mask”…”�”}”(hjm(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hji(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M_hje(ubj·)�”}”(hhh]”hì)�”}”(hŒerror mask to convert to string”h]”hŒerror mask to convert to string”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€(h´M_hj�(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hje(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j€(h´M_hjb(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjF(ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¦(h]”hŒ Description”…”�”}”(hj¨(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MahjF(ubj)�”}”(hŒ–Convert **err_mask** to descriptive string. Errors are prioritized according to severity and only the most severe error is reported. LOCKING: None. ”h]”(hì)�”}”(hŒ…Convert **err_mask** to descriptive string. Errors are prioritized according to severity and only the most severe error is reported.”h]”(hŒConvert ”…”�”}”(hjÀ(h²hh³Nh´Nubj )�”}”(hŒ **err_mask**”h]”hŒerr_mask”…”�”}”(hjÈ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ(ubhŒq to descriptive string. Errors are prioritized according to severity and only the most severe error is reported.”…”�”}”(hjÀ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M`hj¼(ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjá(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mdhj¼(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jà(h´M`hjF(ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjø(h]”hŒReturn”…”�”}”(hjú(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MghjF(ubhì)�”}”(hŒ#Descriptive string for **err_mask**”h]”(hŒDescriptive string for ”…”�”}”(hj)h²hh³Nh´Nubj )�”}”(hŒ **err_mask**”h]”hŒerr_mask”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhhjF(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒatapi_eh_tur (C function)”Œc.atapi_eh_tur”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCunsigned int atapi_eh_tur (struct ata_device *dev, u8 *r_sense_key)”h]”j")�”}”(hŒBunsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjK)h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjG)h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjG)h²hh³jY)h´M…ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjh)h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjG)h²hh³jY)h´M…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjG)h²hh³jY)h´M…ubj�)�”}”(hŒ atapi_eh_tur”h]”j[)�”}”(hŒ atapi_eh_tur”h]”hŒ atapi_eh_tur”…”�”}”(hjˆ)h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj„)ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjG)h²hh³jY)h´M…ubjª)�”}”(hŒ)(struct ata_device *dev, u8 *r_sense_key)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¤)h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj )ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj )ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÂ)h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¿)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÄ)Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjŠ)sbŒc.atapi_eh_tur”†”asbuh1hhj )ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ)h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj )ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjð)h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj )ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjý)h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj )ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjœ)ubj°)�”}”(hŒu8 *r_sense_key”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j*Œmodname”NŒ classname”Njwjz)�”}”j}]”jÞ)Œc.atapi_eh_tur”†”asbuh1hhj*ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7*h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjE*h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj*ubj[)�”}”(hŒ r_sense_key”h]”hŒ r_sense_key”…”�”}”(hjR*h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjœ)ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjG)h²hh³jY)h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjC)h²hh³jY)h´M…ubah}”(h]”j>)ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jY)h´M…hj@)h²hubj)�”}”(hhh]”hì)�”}”(hŒperform ATAPI TEST_UNIT_READY”h]”hŒperform ATAPI TEST_UNIT_READY”…”�”}”(hj|*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M…hjy*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@)h²hh³jY)h´M…ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j”*j1j”*j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX **Parameters** ``struct ata_device *dev`` target ATAPI device ``u8 *r_sense_key`` out parameter for sense_key **Description** Perform ATAPI TEST_UNIT_READY. LOCKING: EH context (may sleep). **Return** 0 on success, AC_ERR_* mask on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjž*h]”hŒ Parameters”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‰hj˜*ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ/``struct ata_device *dev`` target ATAPI device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj½*h]”hŒstruct ata_device *dev”…”�”}”(hj¿*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj»*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M†hj·*ubj·)�”}”(hhh]”hì)�”}”(hŒtarget ATAPI device”h]”hŒtarget ATAPI device”…”�”}”(hjÖ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÒ*h´M†hjÓ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj·*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÒ*h´M†hj´*ubj¡)�”}”(hŒ0``u8 *r_sense_key`` out parameter for sense_key ”h]”(j§)�”}”(hŒ``u8 *r_sense_key``”h]”j\)�”}”(hjö*h]”hŒu8 *r_sense_key”…”�”}”(hjø*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjô*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‡hjð*ubj·)�”}”(hhh]”hì)�”}”(hŒout parameter for sense_key”h]”hŒout parameter for sense_key”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j +h´M‡hj +ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjð*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j +h´M‡hj´*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj˜*ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj1+h]”hŒ Description”…”�”}”(hj3+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‰hj˜*ubj)�”}”(hŒAPerform ATAPI TEST_UNIT_READY. LOCKING: EH context (may sleep). ”h]”(hì)�”}”(hŒPerform ATAPI TEST_UNIT_READY.”h]”hŒPerform ATAPI TEST_UNIT_READY.”…”�”}”(hjK+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MˆhjG+ubhì)�”}”(hŒ LOCKING: EH context (may sleep).”h]”hŒ LOCKING: EH context (may sleep).”…”�”}”(hjZ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MŠhjG+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jY+h´Mˆhj˜*ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjq+h]”hŒReturn”…”�”}”(hjs+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjo+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M�hj˜*ubhì)�”}”(hŒ'0 on success, AC_ERR_* mask on failure.”h]”hŒ'0 on success, AC_ERR_* mask on failure.”…”�”}”(hj‡+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MŽhj˜*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ata_eh_decide_disposition (C function)”Œc.ata_eh_decide_disposition”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒKenum scsi_disposition ata_eh_decide_disposition (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒJenum scsi_disposition ata_eh_decide_disposition(struct ata_queued_cmd *qc)”h]”(j()�”}”(hj—h]”hŒenum”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj²+h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²+h²hh³jÃ+h´M¤ubh)�”}”(hhh]”j[)�”}”(hŒscsi_disposition”h]”hŒscsi_disposition”…”�”}”(hjÕ+h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÒ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j×+Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_eh_decide_disposition”sbŒc.ata_eh_decide_disposition”†”asbuh1hhj²+h²hh³jÃ+h´M¤ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö+h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²+h²hh³jÃ+h´M¤ubj�)�”}”(hŒata_eh_decide_disposition”h]”j[)�”}”(hjó+h]”hŒata_eh_decide_disposition”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj,ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj²+h²hh³jÃ+h´M¤ubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj#,h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjA,h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj>,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jC,Œmodname”NŒ classname”Njwjz)�”}”j}]”jñ+Œc.ata_eh_decide_disposition”†”asbuh1hhj,ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_,h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj,ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjm,h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj,ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjz,h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj,ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj²+h²hh³jÃ+h´M¤ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj®+h²hh³jÃ+h´M¤ubah}”(h]”j©+ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÃ+h´M¤hj«+h²hubj)�”}”(hhh]”hì)�”}”(hŒ$Disposition a qc based on sense data”h]”hŒ$Disposition a qc based on sense data”…”�”}”(hj¤,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¤hj¡,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«+h²hh³jÃ+h´M¤ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¼,j1j¼,j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_queued_cmd *qc`` qc to examine **Description** For a regular SCSI command, the SCSI completion callback (scsi_done()) will call scsi_complete(), which will call scsi_decide_disposition(), which will call scsi_check_sense(). scsi_complete() finally calls scsi_finish_command(). This is fine for SCSI, since any eventual sense data is usually returned in the completion itself (without invoking SCSI EH). However, for a QC, we always need to fetch the sense data explicitly using SCSI EH. A command that is completed via SCSI EH will instead be completed using scsi_eh_flush_done_q(), which will call scsi_finish_command() directly (without ever calling scsi_check_sense()). For a command that went through SCSI EH, it is the responsibility of the SCSI EH strategy handler to call scsi_decide_disposition(), see e.g. how scsi_eh_get_sense() calls scsi_decide_disposition() for SCSI LLDDs that do not get the sense data as part of the completion. Thus, for QC commands that went via SCSI EH, we need to call scsi_check_sense() ourselves, similar to how scsi_eh_get_sense() calls scsi_decide_disposition(), which calls scsi_check_sense(), in order to set the correct SCSI ML byte (if any). LOCKING: EH context. **Return** SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÆ,h]”hŒ Parameters”…”�”}”(hjÈ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¨hjÀ,ubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct ata_queued_cmd *qc`` qc to examine ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjå,h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjç,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjã,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¥hjß,ubj·)�”}”(hhh]”hì)�”}”(hŒ qc to examine”h]”hŒ qc to examine”…”�”}”(hjþ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jú,h´M¥hjû,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjß,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jú,h´M¥hjÜ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÀ,ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj -h]”hŒ Description”…”�”}”(hj"-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M§hjÀ,ubj)�”}”(hXŒFor a regular SCSI command, the SCSI completion callback (scsi_done()) will call scsi_complete(), which will call scsi_decide_disposition(), which will call scsi_check_sense(). scsi_complete() finally calls scsi_finish_command(). This is fine for SCSI, since any eventual sense data is usually returned in the completion itself (without invoking SCSI EH). However, for a QC, we always need to fetch the sense data explicitly using SCSI EH. A command that is completed via SCSI EH will instead be completed using scsi_eh_flush_done_q(), which will call scsi_finish_command() directly (without ever calling scsi_check_sense()). For a command that went through SCSI EH, it is the responsibility of the SCSI EH strategy handler to call scsi_decide_disposition(), see e.g. how scsi_eh_get_sense() calls scsi_decide_disposition() for SCSI LLDDs that do not get the sense data as part of the completion. Thus, for QC commands that went via SCSI EH, we need to call scsi_check_sense() ourselves, similar to how scsi_eh_get_sense() calls scsi_decide_disposition(), which calls scsi_check_sense(), in order to set the correct SCSI ML byte (if any). LOCKING: EH context. ”h]”(hì)�”}”(hX·For a regular SCSI command, the SCSI completion callback (scsi_done()) will call scsi_complete(), which will call scsi_decide_disposition(), which will call scsi_check_sense(). scsi_complete() finally calls scsi_finish_command(). This is fine for SCSI, since any eventual sense data is usually returned in the completion itself (without invoking SCSI EH). However, for a QC, we always need to fetch the sense data explicitly using SCSI EH.”h]”hX·For a regular SCSI command, the SCSI completion callback (scsi_done()) will call scsi_complete(), which will call scsi_decide_disposition(), which will call scsi_check_sense(). scsi_complete() finally calls scsi_finish_command(). This is fine for SCSI, since any eventual sense data is usually returned in the completion itself (without invoking SCSI EH). However, for a QC, we always need to fetch the sense data explicitly using SCSI EH.”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¦hj6-ubhì)�”}”(hŒ¹A command that is completed via SCSI EH will instead be completed using scsi_eh_flush_done_q(), which will call scsi_finish_command() directly (without ever calling scsi_check_sense()).”h]”hŒ¹A command that is completed via SCSI EH will instead be completed using scsi_eh_flush_done_q(), which will call scsi_finish_command() directly (without ever calling scsi_check_sense()).”…”�”}”(hjI-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M®hj6-ubhì)�”}”(hXFor a command that went through SCSI EH, it is the responsibility of the SCSI EH strategy handler to call scsi_decide_disposition(), see e.g. how scsi_eh_get_sense() calls scsi_decide_disposition() for SCSI LLDDs that do not get the sense data as part of the completion.”h]”hXFor a command that went through SCSI EH, it is the responsibility of the SCSI EH strategy handler to call scsi_decide_disposition(), see e.g. how scsi_eh_get_sense() calls scsi_decide_disposition() for SCSI LLDDs that do not get the sense data as part of the completion.”…”�”}”(hjX-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M²hj6-ubhì)�”}”(hŒñThus, for QC commands that went via SCSI EH, we need to call scsi_check_sense() ourselves, similar to how scsi_eh_get_sense() calls scsi_decide_disposition(), which calls scsi_check_sense(), in order to set the correct SCSI ML byte (if any).”h]”hŒñThus, for QC commands that went via SCSI EH, we need to call scsi_check_sense() ourselves, similar to how scsi_eh_get_sense() calls scsi_decide_disposition(), which calls scsi_check_sense(), in order to set the correct SCSI ML byte (if any).”…”�”}”(hjg-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M·hj6-ubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjv-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¼hj6-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jH-h´M¦hjÀ,ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj�-h]”hŒReturn”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¿hjÀ,ubhì)�”}”(hŒ2SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE”h]”hŒ2SUCCESS or FAILED or NEEDS_RETRY or ADD_TO_MLQUEUE”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÀhjÀ,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ata_eh_request_sense (C function)”Œc.ata_eh_request_sense”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5bool ata_eh_request_sense (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ4bool ata_eh_request_sense(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hjÒ-h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÎ-h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÉubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà-h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÎ-h²hh³jß-h´MÉubj�)�”}”(hŒata_eh_request_sense”h]”j[)�”}”(hŒata_eh_request_sense”h]”hŒata_eh_request_sense”…”�”}”(hjò-h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjî-ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÎ-h²hh³jß-h´MÉubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj .ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj .ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj,.h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj).ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j..Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjô-sbŒc.ata_eh_request_sense”†”asbuh1hhj .ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL.h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj .ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjZ.h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj .ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj .ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj.ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÎ-h²hh³jß-h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÊ-h²hh³jß-h´MÉubah}”(h]”jÅ-ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jß-h´MÉhjÇ-h²hubj)�”}”(hhh]”hì)�”}”(hŒperform REQUEST_SENSE_DATA_EXT”h]”hŒperform REQUEST_SENSE_DATA_EXT”…”�”}”(hj‘.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÉhjŽ.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÇ-h²hh³jß-h´MÉubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j©.j1j©.j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXY**Parameters** ``struct ata_queued_cmd *qc`` qc to perform REQUEST_SENSE_SENSE_DATA_EXT to **Description** Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK SENSE. This function is an EH helper. LOCKING: Kernel thread context (may sleep). **Return** true if sense data could be fetched, false otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj³.h]”hŒ Parameters”…”�”}”(hjµ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj±.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÍhj­.ubjœ)�”}”(hhh]”j¡)�”}”(hŒL``struct ata_queued_cmd *qc`` qc to perform REQUEST_SENSE_SENSE_DATA_EXT to ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjÒ.h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjÔ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÐ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÊhjÌ.ubj·)�”}”(hhh]”hì)�”}”(hŒ-qc to perform REQUEST_SENSE_SENSE_DATA_EXT to”h]”hŒ-qc to perform REQUEST_SENSE_SENSE_DATA_EXT to”…”�”}”(hjë.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jç.h´MÊhjè.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÌ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jç.h´MÊhjÉ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj­.ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj /h]”hŒ Description”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj /ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÌhj­.ubj)�”}”(hŒ“Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK SENSE. This function is an EH helper. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒePerform REQUEST_SENSE_DATA_EXT after the device reported CHECK SENSE. This function is an EH helper.”h]”hŒePerform REQUEST_SENSE_DATA_EXT after the device reported CHECK SENSE. This function is an EH helper.”…”�”}”(hj'/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MËhj#/ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj6/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÎhj#/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5/h´MËhj­.ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjM/h]”hŒReturn”…”�”}”(hjO/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjK/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÑhj­.ubhì)�”}”(hŒ5true if sense data could be fetched, false otherwise.”h]”hŒ5true if sense data could be fetched, false otherwise.”…”�”}”(hjc/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÒhj­.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#atapi_eh_request_sense (C function)”Œc.atapi_eh_request_sense”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ]unsigned int atapi_eh_request_sense (struct ata_device *dev, u8 *sense_buf, u8 dfl_sense_key)”h]”j")�”}”(hŒ\unsigned int atapi_eh_request_sense(struct ata_device *dev, u8 *sense_buf, u8 dfl_sense_key)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj’/h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŽ/h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŽ/h²hh³j /h´Mubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¯/h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŽ/h²hh³j /h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŽ/h²hh³j /h´Mubj�)�”}”(hŒatapi_eh_request_sense”h]”j[)�”}”(hŒatapi_eh_request_sense”h]”hŒatapi_eh_request_sense”…”�”}”(hjÏ/h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjË/ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjŽ/h²hh³j /h´Mubjª)�”}”(hŒ9(struct ata_device *dev, u8 *sense_buf, u8 dfl_sense_key)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjë/h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjç/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø/h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjç/ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j 0Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÑ/sbŒc.atapi_eh_request_sense”†”asbuh1hhjç/ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjç/ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj70h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjç/ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjD0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjç/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjã/ubj°)�”}”(hŒ u8 *sense_buf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj`0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj]0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jb0Œmodname”NŒ classname”Njwjz)�”}”j}]”j%0Œc.atapi_eh_request_sense”†”asbuh1hhjY0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjY0ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjŒ0h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjY0ubj[)�”}”(hŒ sense_buf”h]”hŒ sense_buf”…”�”}”(hj™0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjY0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjã/ubj°)�”}”(hŒu8 dfl_sense_key”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjµ0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj²0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j·0Œmodname”NŒ classname”Njwjz)�”}”j}]”j%0Œc.atapi_eh_request_sense”†”asbuh1hhj®0ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ0h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj®0ubj[)�”}”(hŒ dfl_sense_key”h]”hŒ dfl_sense_key”…”�”}”(hjá0h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj®0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjã/ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjŽ/h²hh³j /h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjŠ/h²hh³j /h´Mubah}”(h]”j…/ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j /h´Mhj‡/h²hubj)�”}”(hhh]”hì)�”}”(hŒperform ATAPI REQUEST_SENSE”h]”hŒperform ATAPI REQUEST_SENSE”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡/h²hh³j /h´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j#1j1j#1j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX¸**Parameters** ``struct ata_device *dev`` device to perform REQUEST_SENSE to ``u8 *sense_buf`` result sense data buffer (SCSI_SENSE_BUFFERSIZE bytes long) ``u8 dfl_sense_key`` default sense key to use **Description** Perform ATAPI REQUEST_SENSE after the device reported CHECK SENSE. This function is EH helper. LOCKING: Kernel thread context (may sleep). **Return** 0 on success, AC_ERR_* mask on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj-1h]”hŒ Parameters”…”�”}”(hj/1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj'1ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_device *dev`` device to perform REQUEST_SENSE to ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjL1h]”hŒstruct ata_device *dev”…”�”}”(hjN1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjJ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjF1ubj·)�”}”(hhh]”hì)�”}”(hŒ"device to perform REQUEST_SENSE to”h]”hŒ"device to perform REQUEST_SENSE to”…”�”}”(hje1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ja1h´Mhjb1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjF1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³ja1h´MhjC1ubj¡)�”}”(hŒN``u8 *sense_buf`` result sense data buffer (SCSI_SENSE_BUFFERSIZE bytes long) ”h]”(j§)�”}”(hŒ``u8 *sense_buf``”h]”j\)�”}”(hj…1h]”hŒ u8 *sense_buf”…”�”}”(hj‡1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjƒ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj1ubj·)�”}”(hhh]”hì)�”}”(hŒ;result sense data buffer (SCSI_SENSE_BUFFERSIZE bytes long)”h]”hŒ;result sense data buffer (SCSI_SENSE_BUFFERSIZE bytes long)”…”�”}”(hjž1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jš1h´Mhj›1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jš1h´MhjC1ubj¡)�”}”(hŒ.``u8 dfl_sense_key`` default sense key to use ”h]”(j§)�”}”(hŒ``u8 dfl_sense_key``”h]”j\)�”}”(hj¾1h]”hŒu8 dfl_sense_key”…”�”}”(hjÀ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¼1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj¸1ubj·)�”}”(hhh]”hì)�”}”(hŒdefault sense key to use”h]”hŒdefault sense key to use”…”�”}”(hj×1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÓ1h´MhjÔ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¸1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÓ1h´MhjC1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj'1ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjù1h]”hŒ Description”…”�”}”(hjû1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj'1ubj)�”}”(hŒ�Perform ATAPI REQUEST_SENSE after the device reported CHECK SENSE. This function is EH helper. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒ_Perform ATAPI REQUEST_SENSE after the device reported CHECK SENSE. This function is EH helper.”h]”hŒ_Perform ATAPI REQUEST_SENSE after the device reported CHECK SENSE. This function is EH helper.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj2ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj"2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j!2h´Mhj'1ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj92h]”hŒReturn”…”�”}”(hj;2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj72ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hj'1ubhì)�”}”(hŒ&0 on success, AC_ERR_* mask on failure”h]”hŒ&0 on success, AC_ERR_* mask on failure”…”�”}”(hjO2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hj'1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_eh_analyze_serror (C function)”Œc.ata_eh_analyze_serror”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void ata_eh_analyze_serror (struct ata_link *link)”h]”j")�”}”(hŒ1void ata_eh_analyze_serror(struct ata_link *link)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~2h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjz2h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjz2h²hh³jŒ2h´M:ubj�)�”}”(hŒata_eh_analyze_serror”h]”j[)�”}”(hŒata_eh_analyze_serror”h]”hŒata_eh_analyze_serror”…”�”}”(hjŸ2h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj›2ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjz2h²hh³jŒ2h´M:ubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj»2h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj·2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·2ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjÙ2h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÖ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÛ2Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¡2sbŒc.ata_eh_analyze_serror”†”asbuh1hhj·2ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·2ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj·2ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj·2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj³2ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjz2h²hh³jŒ2h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjv2h²hh³jŒ2h´M:ubah}”(h]”jq2ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jŒ2h´M:hjs2h²hubj)�”}”(hhh]”hì)�”}”(hŒ analyze SError for a failed port”h]”hŒ analyze SError for a failed port”…”�”}”(hj>3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M:hj;3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjs2h²hh³jŒ2h´M:ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jV3j1jV3j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÄ**Parameters** ``struct ata_link *link`` ATA link to analyze SError for **Description** Analyze SError if available and further determine cause of failure. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj`3h]”hŒ Parameters”…”�”}”(hjb3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M>hjZ3ubjœ)�”}”(hhh]”j¡)�”}”(hŒ9``struct ata_link *link`` ATA link to analyze SError for ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj3h]”hŒstruct ata_link *link”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj}3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M;hjy3ubj·)�”}”(hhh]”hì)�”}”(hŒATA link to analyze SError for”h]”hŒATA link to analyze SError for”…”�”}”(hj˜3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”3h´M;hj•3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjy3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j”3h´M;hjv3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjZ3ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjº3h]”hŒ Description”…”�”}”(hj¼3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M=hjZ3ubj)�”}”(hŒSAnalyze SError if available and further determine cause of failure. LOCKING: None.”h]”(hì)�”}”(hŒCAnalyze SError if available and further determine cause of failure.”h]”hŒCAnalyze SError if available and further determine cause of failure.”…”�”}”(hjÔ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M<hjÐ3ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjã3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M?hjÐ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâ3h´M<hjZ3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_analyze_tf (C function)”Œc.ata_eh_analyze_tf”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:unsigned int ata_eh_analyze_tf (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ9unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj4h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mkubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4h²hh³j&4h´Mkubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj54h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj4h²hh³j&4h´Mkubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4h²hh³j&4h´Mkubj�)�”}”(hŒata_eh_analyze_tf”h]”j[)�”}”(hŒata_eh_analyze_tf”h]”hŒata_eh_analyze_tf”…”�”}”(hjU4h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQ4ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj4h²hh³j&4h´Mkubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjq4h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjm4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm4ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŒ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‘4Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjW4sbŒc.ata_eh_analyze_tf”†”asbuh1hhjm4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm4ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj½4h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjm4ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÊ4h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjm4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji4ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj4h²hh³j&4h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj4h²hh³j&4h´Mkubah}”(h]”j 4ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j&4h´Mkhj 4h²hubj)�”}”(hhh]”hì)�”}”(hŒanalyze taskfile of a failed qc”h]”hŒanalyze taskfile of a failed qc”…”�”}”(hjô4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mkhjñ4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj 4h²hh³j&4h´Mkubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j 5j1j 5j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX<**Parameters** ``struct ata_queued_cmd *qc`` qc to analyze **Description** Analyze taskfile of **qc** and further determine cause of failure. This function also requests ATAPI sense data if available. LOCKING: Kernel thread context (may sleep). **Return** Determined recovery action”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj5h]”hŒ Parameters”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mohj5ubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``struct ata_queued_cmd *qc`` qc to analyze ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj55h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj75h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj35ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mlhj/5ubj·)�”}”(hhh]”hì)�”}”(hŒ qc to analyze”h]”hŒ qc to analyze”…”�”}”(hjN5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJ5h´MlhjK5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj/5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jJ5h´Mlhj,5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj5ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjp5h]”hŒ Description”…”�”}”(hjr5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjn5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mnhj5ubj)�”}”(hŒ¬Analyze taskfile of **qc** and further determine cause of failure. This function also requests ATAPI sense data if available. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒ~Analyze taskfile of **qc** and further determine cause of failure. This function also requests ATAPI sense data if available.”h]”(hŒAnalyze taskfile of ”…”�”}”(hjŠ5h²hh³Nh´Nubj )�”}”(hŒ**qc**”h]”hŒqc”…”�”}”(hj’5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠ5ubhŒd and further determine cause of failure. This function also requests ATAPI sense data if available.”…”�”}”(hjŠ5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mmhj†5ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hj«5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mqhj†5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jª5h´Mmhj5ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÂ5h]”hŒReturn”…”�”}”(hjÄ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mthj5ubhì)�”}”(hŒDetermined recovery action”h]”hŒDetermined recovery action”…”�”}”(hjØ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Muhj5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ata_eh_speed_down_verdict (C function)”Œc.ata_eh_speed_down_verdict”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ?unsigned int ata_eh_speed_down_verdict (struct ata_device *dev)”h]”j")�”}”(hŒ>unsigned int ata_eh_speed_down_verdict(struct ata_device *dev)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj6h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6h²hh³j6h´Mûubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj$6h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj6h²hh³j6h´Mûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj26h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj6h²hh³j6h´Mûubj�)�”}”(hŒata_eh_speed_down_verdict”h]”j[)�”}”(hŒata_eh_speed_down_verdict”h]”hŒata_eh_speed_down_verdict”…”�”}”(hjD6h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj@6ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj6h²hh³j6h´Mûubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj`6h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj\6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\6ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj~6h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j€6Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjF6sbŒc.ata_eh_speed_down_verdict”†”asbuh1hhj\6ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž6h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj\6ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¬6h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj\6ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¹6h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj\6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjX6ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj6h²hh³j6h´Mûubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÿ5h²hh³j6h´Mûubah}”(h]”jú5ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j6h´Mûhjü5h²hubj)�”}”(hhh]”hì)�”}”(hŒDetermine speed down verdict”h]”hŒDetermine speed down verdict”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mûhjà6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjü5h²hh³j6h´Mûubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jû6j1jû6j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXK**Parameters** ``struct ata_device *dev`` Device of interest **Description** This function examines error ring of **dev** and determines whether NCQ needs to be turned off, transfer speed should be stepped down, or falling back to PIO is necessary. ECAT_ATA_BUS : ATA_BUS error for any command ECAT_TOUT_HSM : TIMEOUT for any command or HSM violation for IO commands ECAT_UNK_DEV : Unknown DEV error for IO commands ECAT_DUBIOUS_* : Identical to above three but occurred while data transfer hasn't been verified. Verdicts are NCQ_OFF : Turn off NCQ. SPEED_DOWN : Speed down transfer speed but don't fall back to PIO. FALLBACK_TO_PIO : Fall back to PIO. Even if multiple verdicts are returned, only one action is taken per error. An action triggered by non-DUBIOUS errors clears ering, while one triggered by DUBIOUS_* errors doesn't. This is to expedite speed down decisions right after device is initially configured. The following are speed down rules. #1 and #2 deal with DUBIOUS errors. 1. If more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO. 2. If more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors occurred during last 5 mins, NCQ_OFF. 3. If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors occurred during last 5 mins, FALLBACK_TO_PIO 4. If more than 3 TOUT_HSM or UNK_DEV errors occurred during last 10 mins, NCQ_OFF. 5. If more than 3 ATA_BUS or TOUT_HSM errors, or more than 6 UNK_DEV errors occurred during last 10 mins, SPEED_DOWN. LOCKING: Inherited from caller. **Return** OR of ATA_EH_SPDN_* flags.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj7h]”hŒ Parameters”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mÿhjÿ6ubjœ)�”}”(hhh]”j¡)�”}”(hŒ.``struct ata_device *dev`` Device of interest ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj$7h]”hŒstruct ata_device *dev”…”�”}”(hj&7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj"7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mühj7ubj·)�”}”(hhh]”hì)�”}”(hŒDevice of interest”h]”hŒDevice of interest”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j97h´Mühj:7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j97h´Mühj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÿ6ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj_7h]”hŒ Description”…”�”}”(hja7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mþhjÿ6ubj)�”}”(hX-This function examines error ring of **dev** and determines whether NCQ needs to be turned off, transfer speed should be stepped down, or falling back to PIO is necessary. ECAT_ATA_BUS : ATA_BUS error for any command ECAT_TOUT_HSM : TIMEOUT for any command or HSM violation for IO commands ECAT_UNK_DEV : Unknown DEV error for IO commands ECAT_DUBIOUS_* : Identical to above three but occurred while data transfer hasn't been verified. Verdicts are NCQ_OFF : Turn off NCQ. SPEED_DOWN : Speed down transfer speed but don't fall back to PIO. FALLBACK_TO_PIO : Fall back to PIO. Even if multiple verdicts are returned, only one action is taken per error. An action triggered by non-DUBIOUS errors clears ering, while one triggered by DUBIOUS_* errors doesn't. This is to expedite speed down decisions right after device is initially configured. The following are speed down rules. #1 and #2 deal with DUBIOUS errors. 1. If more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO. 2. If more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors occurred during last 5 mins, NCQ_OFF. 3. If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors occurred during last 5 mins, FALLBACK_TO_PIO 4. If more than 3 TOUT_HSM or UNK_DEV errors occurred during last 10 mins, NCQ_OFF. 5. If more than 3 ATA_BUS or TOUT_HSM errors, or more than 6 UNK_DEV errors occurred during last 10 mins, SPEED_DOWN. LOCKING: Inherited from caller. ”h]”(hì)�”}”(hŒ«This function examines error ring of **dev** and determines whether NCQ needs to be turned off, transfer speed should be stepped down, or falling back to PIO is necessary.”h]”(hŒ%This function examines error ring of ”…”�”}”(hjy7h²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjy7ubhŒ and determines whether NCQ needs to be turned off, transfer speed should be stepped down, or falling back to PIO is necessary.”…”�”}”(hjy7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mýhju7ubhì)�”}”(hŒ/ECAT_ATA_BUS : ATA_BUS error for any command”•h]”hŒ/ECAT_ATA_BUS : ATA_BUS error for any command”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhju7ubjœ)�”}”(hhh]”j¡)�”}”(hŒKECAT_TOUT_HSM : TIMEOUT for any command or HSM violation for IO commands ”h]”(j§)�”}”(hŒ ECAT_TOUT_HSM”h]”hŒ ECAT_TOUT_HSM”…”�”}”(hj°7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhj¬7ubhŒ classifier”“”)�”}”(hŒ,TIMEOUT for any command or HSM violation for”h]”hŒ,TIMEOUT for any command or HSM violation for”…”�”}”(hjÁ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿7hj¬7h³j¾7ubj·)�”}”(hhh]”hì)�”}”(hŒ IO commands”h]”hŒ IO commands”…”�”}”(hjÒ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾7h´MhjÏ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¬7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¾7h´Mhj©7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hju7ubhì)�”}”(hŒ3ECAT_UNK_DEV : Unknown DEV error for IO commands”h]”hŒ3ECAT_UNK_DEV : Unknown DEV error for IO commands”…”�”}”(hjò7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhju7ubjœ)�”}”(hhh]”j¡)�”}”(hŒbECAT_DUBIOUS_* : Identical to above three but occurred while data transfer hasn't been verified. ”h]”(j§)�”}”(hŒECAT_DUBIOUS_*”h]”hŒECAT_DUBIOUS_*”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hj8ubjÀ7)�”}”(hŒ+Identical to above three but occurred while”h]”hŒ+Identical to above three but occurred while”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿7hj8h³j8ubj·)�”}”(hhh]”hì)�”}”(hŒ#data transfer hasn't been verified.”h]”hŒ%data transfer hasn’t been verified.”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j8h´M hj%8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j8h´M hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hju7ubhì)�”}”(hŒ Verdicts are”h]”hŒ Verdicts are”…”�”}”(hjH8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hju7ubhì)�”}”(hŒNCQ_OFF : Turn off NCQ.”h]”hŒNCQ_OFF : Turn off NCQ.”…”�”}”(hjW8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hju7ubjœ)�”}”(hhh]”j¡)�”}”(hŒHSPEED_DOWN : Speed down transfer speed but don't fall back to PIO. ”h]”(j§)�”}”(hŒ SPEED_DOWN”h]”hŒ SPEED_DOWN”…”�”}”(hjm8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhji8ubjÀ7)�”}”(hŒ-Speed down transfer speed but don't fall back”h]”hŒ/Speed down transfer speed but don’t fall back”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¿7hji8h³j{8ubj·)�”}”(hhh]”hì)�”}”(hŒto PIO.”h]”hŒto PIO.”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j{8h´MhjŠ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hji8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j{8h´Mhjf8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hju7ubhì)�”}”(hŒ#FALLBACK_TO_PIO : Fall back to PIO.”h]”hŒ#FALLBACK_TO_PIO : Fall back to PIO.”…”�”}”(hj­8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhju7ubhì)�”}”(hX Even if multiple verdicts are returned, only one action is taken per error. An action triggered by non-DUBIOUS errors clears ering, while one triggered by DUBIOUS_* errors doesn't. This is to expedite speed down decisions right after device is initially configured.”h]”hX Even if multiple verdicts are returned, only one action is taken per error. An action triggered by non-DUBIOUS errors clears ering, while one triggered by DUBIOUS_* errors doesn’t. This is to expedite speed down decisions right after device is initially configured.”…”�”}”(hj¼8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhju7ubhì)�”}”(hŒHThe following are speed down rules. #1 and #2 deal with DUBIOUS errors.”h]”hŒHThe following are speed down rules. #1 and #2 deal with DUBIOUS errors.”…”�”}”(hjË8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhju7ubj)�”}”(hhh]”(j )�”}”(hŒyIf more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO. ”h]”hì)�”}”(hŒxIf more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO.”h]”hŒxIf more than one DUBIOUS_ATA_BUS or DUBIOUS_TOUT_HSM errors occurred during last 5 mins, SPEED_DOWN and FALLBACK_TO_PIO.”…”�”}”(hjá8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MhjÝ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ8ubj )�”}”(hŒbIf more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors occurred during last 5 mins, NCQ_OFF. ”h]”hì)�”}”(hŒaIf more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors occurred during last 5 mins, NCQ_OFF.”h]”hŒaIf more than one DUBIOUS_TOUT_HSM or DUBIOUS_UNK_DEV errors occurred during last 5 mins, NCQ_OFF.”…”�”}”(hjú8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hjö8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ8ubj )�”}”(hŒ`If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors occurred during last 5 mins, FALLBACK_TO_PIO ”h]”hì)�”}”(hŒ_If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors occurred during last 5 mins, FALLBACK_TO_PIO”h]”hŒ_If more than 8 ATA_BUS, TOUT_HSM or UNK_DEV errors occurred during last 5 mins, FALLBACK_TO_PIO”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M#hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ8ubj )�”}”(hŒQIf more than 3 TOUT_HSM or UNK_DEV errors occurred during last 10 mins, NCQ_OFF. ”h]”hì)�”}”(hŒPIf more than 3 TOUT_HSM or UNK_DEV errors occurred during last 10 mins, NCQ_OFF.”h]”hŒPIf more than 3 TOUT_HSM or UNK_DEV errors occurred during last 10 mins, NCQ_OFF.”…”�”}”(hj,9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M&hj(9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ8ubj )�”}”(hŒsIf more than 3 ATA_BUS or TOUT_HSM errors, or more than 6 UNK_DEV errors occurred during last 10 mins, SPEED_DOWN. ”h]”hì)�”}”(hŒrIf more than 3 ATA_BUS or TOUT_HSM errors, or more than 6 UNK_DEV errors occurred during last 10 mins, SPEED_DOWN.”h]”hŒrIf more than 3 ATA_BUS or TOUT_HSM errors, or more than 6 UNK_DEV errors occurred during last 10 mins, SPEED_DOWN.”…”�”}”(hjE9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M)hjA9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”jÂjÃjÄhjÅjÆuh1jhju7ubhì)�”}”(hŒLOCKING: Inherited from caller.”h]”hŒLOCKING: Inherited from caller.”…”�”}”(hj`9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M,hju7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j™7h´Mýhjÿ6ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjw9h]”hŒReturn”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hju9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M/hjÿ6ubhì)�”}”(hŒOR of ATA_EH_SPDN_* flags.”h]”hŒOR of ATA_EH_SPDN_* flags.”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M0hjÿ6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_speed_down (C function)”Œc.ata_eh_speed_down”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒcunsigned int ata_eh_speed_down (struct ata_device *dev, unsigned int eflags, unsigned int err_mask)”h]”j")�”}”(hŒbunsigned int ata_eh_speed_down(struct ata_device *dev, unsigned int eflags, unsigned int err_mask)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼9h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¸9h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¸9h²hh³jÊ9h´M_ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÙ9h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¸9h²hh³jÊ9h´M_ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¸9h²hh³jÊ9h´M_ubj�)�”}”(hŒata_eh_speed_down”h]”j[)�”}”(hŒata_eh_speed_down”h]”hŒata_eh_speed_down”…”�”}”(hjù9h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjõ9ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¸9h²hh³jÊ9h´M_ubjª)�”}”(hŒD(struct ata_device *dev, unsigned int eflags, unsigned int err_mask)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj":h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj3:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj0:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j5:Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjû9sbŒc.ata_eh_speed_down”†”asbuh1hhj:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj:ubj)�”}”(hjS h]”hŒ*”…”�”}”(hja:h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj:ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjn:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj :ubj°)�”}”(hŒunsigned int eflags”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‡:h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjƒ:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒ:ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj£:h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjƒ:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒ:ubj[)�”}”(hŒeflags”h]”hŒeflags”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjƒ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj :ubj°)�”}”(hŒunsigned int err_mask”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjØ:h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÔ:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ:h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔ:ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjô:h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÔ:ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔ:ubj[)�”}”(hŒerr_mask”h]”hŒerr_mask”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÔ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj :ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¸9h²hh³jÊ9h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj´9h²hh³jÊ9h´M_ubah}”(h]”j¯9ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÊ9h´M_hj±9h²hubj)�”}”(hhh]”hì)�”}”(hŒ(record error and speed down if necessary”h]”hŒ(record error and speed down if necessary”…”�”}”(hj:;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M_hj7;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±9h²hh³jÊ9h´M_ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jR;j1jR;j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXà**Parameters** ``struct ata_device *dev`` Failed device ``unsigned int eflags`` mask of ATA_EFLAG_* flags ``unsigned int err_mask`` err_mask of the error **Description** Record error and examine error history to determine whether adjusting transmission speed is necessary. It also sets transmission limits appropriately if such adjustment is necessary. LOCKING: Kernel thread context (may sleep). **Return** Determined recovery action.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj\;h]”hŒ Parameters”…”�”}”(hj^;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MchjV;ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_device *dev`` Failed device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj{;h]”hŒstruct ata_device *dev”…”�”}”(hj};h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjy;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M`hju;ubj·)�”}”(hhh]”hì)�”}”(hŒ Failed device”h]”hŒ Failed device”…”�”}”(hj”;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�;h´M`hj‘;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hju;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�;h´M`hjr;ubj¡)�”}”(hŒ2``unsigned int eflags`` mask of ATA_EFLAG_* flags ”h]”(j§)�”}”(hŒ``unsigned int eflags``”h]”j\)�”}”(hj´;h]”hŒunsigned int eflags”…”�”}”(hj¶;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj²;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mahj®;ubj·)�”}”(hhh]”hì)�”}”(hŒmask of ATA_EFLAG_* flags”h]”hŒmask of ATA_EFLAG_* flags”…”�”}”(hjÍ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉ;h´MahjÊ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj®;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÉ;h´Mahjr;ubj¡)�”}”(hŒ0``unsigned int err_mask`` err_mask of the error ”h]”(j§)�”}”(hŒ``unsigned int err_mask``”h]”j\)�”}”(hjí;h]”hŒunsigned int err_mask”…”�”}”(hjï;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjë;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mbhjç;ubj·)�”}”(hhh]”hì)�”}”(hŒerr_mask of the error”h]”hŒerr_mask of the error”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<h´Mbhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjç;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j<h´Mbhjr;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjV;ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj(<h]”hŒ Description”…”�”}”(hj*<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj&<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MdhjV;ubj)�”}”(hŒåRecord error and examine error history to determine whether adjusting transmission speed is necessary. It also sets transmission limits appropriately if such adjustment is necessary. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hŒ·Record error and examine error history to determine whether adjusting transmission speed is necessary. It also sets transmission limits appropriately if such adjustment is necessary.”h]”hŒ·Record error and examine error history to determine whether adjusting transmission speed is necessary. It also sets transmission limits appropriately if such adjustment is necessary.”…”�”}”(hjB<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mchj><ubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjQ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mhhj><ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jP<h´MchjV;ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjh<h]”hŒReturn”…”�”}”(hjj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjf<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MkhjV;ubhì)�”}”(hŒDetermined recovery action.”h]”hŒDetermined recovery action.”…”�”}”(hj~<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MlhjV;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_worth_retry (C function)”Œc.ata_eh_worth_retry”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2int ata_eh_worth_retry (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ1int ata_eh_worth_retry(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj­<h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj©<h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mºubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj©<h²hh³j»<h´Mºubj�)�”}”(hŒata_eh_worth_retry”h]”j[)�”}”(hŒata_eh_worth_retry”h]”hŒata_eh_worth_retry”…”�”}”(hjÎ<h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÊ<ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj©<h²hh³j»<h´Mºubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjê<h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjæ<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷<h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæ<ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j =Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÐ<sbŒc.ata_eh_worth_retry”†”asbuh1hhjæ<ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(=h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæ<ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj6=h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjæ<ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjC=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjæ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjâ<ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj©<h²hh³j»<h´Mºubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¥<h²hh³j»<h´Mºubah}”(h]”j <ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j»<h´Mºhj¢<h²hubj)�”}”(hhh]”hì)�”}”(hŒ)analyze error and decide whether to retry”h]”hŒ)analyze error and decide whether to retry”…”�”}”(hjm=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mºhjj=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢<h²hh³j»<h´Mºubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j…=j1j…=j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX[**Parameters** ``struct ata_queued_cmd *qc`` qc to possibly retry **Description** Look at the cause of the error and decide if a retry might be useful or not. We don't want to retry media errors because the drive itself has probably already taken 10-30 seconds doing its own internal retries before reporting the failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�=h]”hŒ Parameters”…”�”}”(hj‘=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¾hj‰=ubjœ)�”}”(hhh]”j¡)�”}”(hŒ3``struct ata_queued_cmd *qc`` qc to possibly retry ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj®=h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¬=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M»hj¨=ubj·)�”}”(hhh]”hì)�”}”(hŒqc to possibly retry”h]”hŒqc to possibly retry”…”�”}”(hjÇ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃ=h´M»hjÄ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¨=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÃ=h´M»hj¥=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‰=ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjé=h]”hŒ Description”…”�”}”(hjë=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjç=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M½hj‰=ubj)�”}”(hŒðLook at the cause of the error and decide if a retry might be useful or not. We don't want to retry media errors because the drive itself has probably already taken 10-30 seconds doing its own internal retries before reporting the failure.”h]”hì)�”}”(hŒðLook at the cause of the error and decide if a retry might be useful or not. We don't want to retry media errors because the drive itself has probably already taken 10-30 seconds doing its own internal retries before reporting the failure.”h]”hŒòLook at the cause of the error and decide if a retry might be useful or not. We don’t want to retry media errors because the drive itself has probably already taken 10-30 seconds doing its own internal retries before reporting the failure.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¼hjÿ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j>h´M¼hj‰=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_quiet (C function)”Œc.ata_eh_quiet”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ-bool ata_eh_quiet (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ,bool ata_eh_quiet(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj8>h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj4>h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÎubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4>h²hh³jE>h´MÎubj�)�”}”(hŒ ata_eh_quiet”h]”j[)�”}”(hŒ ata_eh_quiet”h]”hŒ ata_eh_quiet”…”�”}”(hjX>h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjT>ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj4>h²hh³jE>h´MÎubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjt>h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjp>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp>ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj’>h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j”>Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjZ>sbŒc.ata_eh_quiet”†”asbuh1hhjp>ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²>h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjp>ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÀ>h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjp>ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjp>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjl>ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj4>h²hh³jE>h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj0>h²hh³jE>h´MÎubah}”(h]”j+>ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jE>h´MÎhj->h²hubj)�”}”(hhh]”hì)�”}”(hŒ2check if we need to be quiet about a command error”h]”hŒ2check if we need to be quiet about a command error”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÎhjô>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj->h²hh³jE>h´MÎubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j?j1j?j2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÏ**Parameters** ``struct ata_queued_cmd *qc`` qc to check **Description** Look at the qc flags anbd its scsi command request flags to determine if we need to be quiet about the command failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj?h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÒhj?ubjœ)�”}”(hhh]”j¡)�”}”(hŒ*``struct ata_queued_cmd *qc`` qc to check ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj8?h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj:?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj6?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÏhj2?ubj·)�”}”(hhh]”hì)�”}”(hŒ qc to check”h]”hŒ qc to check”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jM?h´MÏhjN?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj2?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jM?h´MÏhj/?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj?ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjs?h]”hŒ Description”…”�”}”(hju?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÑhj?ubj)�”}”(hŒwLook at the qc flags anbd its scsi command request flags to determine if we need to be quiet about the command failure.”h]”hì)�”}”(hŒwLook at the qc flags anbd its scsi command request flags to determine if we need to be quiet about the command failure.”h]”hŒwLook at the qc flags anbd its scsi command request flags to determine if we need to be quiet about the command failure.”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÐhj‰?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j›?h´MÐhj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_eh_link_set_lpm (C function)”Œc.ata_eh_link_set_lpm”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒmint ata_eh_link_set_lpm (struct ata_link *link, enum ata_lpm_policy policy, struct ata_device **r_failed_dev)”h]”j")�”}”(hŒlint ata_eh_link_set_lpm(struct ata_link *link, enum ata_lpm_policy policy, struct ata_device **r_failed_dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂ?h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¾?h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MXubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ?h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾?h²hh³jÐ?h´MXubj�)�”}”(hŒata_eh_link_set_lpm”h]”j[)�”}”(hŒata_eh_link_set_lpm”h]”hŒata_eh_link_set_lpm”…”�”}”(hjã?h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjß?ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¾?h²hh³jÐ?h´MXubjª)�”}”(hŒU(struct ata_link *link, enum ata_lpm_policy policy, struct ata_device **r_failed_dev)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÿ?h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjû?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû?ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j@Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjå?sbŒc.ata_eh_link_set_lpm”†”asbuh1hhjû?ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjû?ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjK@h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjû?ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjX@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjû?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷?ubj°)�”}”(hŒenum ata_lpm_policy policy”h]”(j()�”}”(hj—h]”hŒenum”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjm@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm@ubh)�”}”(hhh]”j[)�”}”(hŒata_lpm_policy”h]”hŒata_lpm_policy”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŒ@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‘@Œmodname”NŒ classname”Njwjz)�”}”j}]”j9@Œc.ata_eh_link_set_lpm”†”asbuh1hhjm@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm@ubj[)�”}”(hŒpolicy”h]”hŒpolicy”…”�”}”(hj»@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjm@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷?ubj°)�”}”(hŒ struct ata_device **r_failed_dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÔ@h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÐ@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá@h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÐ@ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjò@h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjï@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jô@Œmodname”NŒ classname”Njwjz)�”}”j}]”j9@Œc.ata_eh_link_set_lpm”†”asbuh1hhjÐ@ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÐ@ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÐ@ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj+Ah²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÐ@ubj[)�”}”(hŒ r_failed_dev”h]”hŒ r_failed_dev”…”�”}”(hj8Ah²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÐ@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj÷?ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¾?h²hh³jÐ?h´MXubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjº?h²hh³jÐ?h´MXubah}”(h]”jµ?ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÐ?h´MXhj·?h²hubj)�”}”(hhh]”hì)�”}”(hŒ)configure SATA interface power management”h]”hŒ)configure SATA interface power management”…”�”}”(hjbAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MXhj_Ah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·?h²hh³jÐ?h´MXubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jzAj1jzAj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX(**Parameters** ``struct ata_link *link`` link to configure ``enum ata_lpm_policy policy`` the link power management policy ``struct ata_device **r_failed_dev`` out parameter for failed device **Description** Enable SATA Interface power management. This will enable Device Interface Power Management (DIPM) for min_power and medium_power_with_dipm policies, and then call driver specific callbacks for enabling Host Initiated Power management. LOCKING: EH context. **Return** 0 on success, -errno on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj„Ah]”hŒ Parameters”…”�”}”(hj†Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M\hj~Aubjœ)�”}”(hhh]”(j¡)�”}”(hŒ,``struct ata_link *link`` link to configure ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hj£Ah]”hŒstruct ata_link *link”…”�”}”(hj¥Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¡Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MYhj�Aubj·)�”}”(hhh]”hì)�”}”(hŒlink to configure”h]”hŒlink to configure”…”�”}”(hj¼Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¸Ah´MYhj¹Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¸Ah´MYhjšAubj¡)�”}”(hŒ@``enum ata_lpm_policy policy`` the link power management policy ”h]”(j§)�”}”(hŒ``enum ata_lpm_policy policy``”h]”j\)�”}”(hjÜAh]”hŒenum ata_lpm_policy policy”…”�”}”(hjÞAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÚAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MZhjÖAubj·)�”}”(hhh]”hì)�”}”(hŒ the link power management policy”h]”hŒ the link power management policy”…”�”}”(hjõAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñAh´MZhjòAubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÖAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jñAh´MZhjšAubj¡)�”}”(hŒE``struct ata_device **r_failed_dev`` out parameter for failed device ”h]”(j§)�”}”(hŒ$``struct ata_device **r_failed_dev``”h]”j\)�”}”(hjBh]”hŒ struct ata_device **r_failed_dev”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M[hjBubj·)�”}”(hhh]”hì)�”}”(hŒout parameter for failed device”h]”hŒout parameter for failed device”…”�”}”(hj.Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*Bh´M[hj+Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j*Bh´M[hjšAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj~Aubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjPBh]”hŒ Description”…”�”}”(hjRBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNBubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M]hj~Aubj)�”}”(hXEnable SATA Interface power management. This will enable Device Interface Power Management (DIPM) for min_power and medium_power_with_dipm policies, and then call driver specific callbacks for enabling Host Initiated Power management. LOCKING: EH context. ”h]”(hì)�”}”(hŒëEnable SATA Interface power management. This will enable Device Interface Power Management (DIPM) for min_power and medium_power_with_dipm policies, and then call driver specific callbacks for enabling Host Initiated Power management.”h]”hŒëEnable SATA Interface power management. This will enable Device Interface Power Management (DIPM) for min_power and medium_power_with_dipm policies, and then call driver specific callbacks for enabling Host Initiated Power management.”…”�”}”(hjjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M\hjfBubhì)�”}”(hŒLOCKING: EH context.”h]”hŒLOCKING: EH context.”…”�”}”(hjyBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MahjfBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jxBh´M\hj~Aubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj�Bh]”hŒReturn”…”�”}”(hj’Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽBubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mdhj~Aubhì)�”}”(hŒ 0 on success, -errno on failure.”h]”hŒ 0 on success, -errno on failure.”…”�”}”(hj¦Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mehj~Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_eh_link_autopsy (C function)”Œc.ata_eh_link_autopsy”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_eh_link_autopsy (struct ata_link *link)”h]”j")�”}”(hŒ/void ata_eh_link_autopsy(struct ata_link *link)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÕBh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÑBh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mîubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäBh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÑBh²hh³jãBh´Mîubj�)�”}”(hŒata_eh_link_autopsy”h]”j[)�”}”(hŒata_eh_link_autopsy”h]”hŒata_eh_link_autopsy”…”�”}”(hjöBh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjòBubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÑBh²hh³jãBh´Mîubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj0Ch²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj-Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j2CŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjøBsbŒc.ata_eh_link_autopsy”†”asbuh1hhjCubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCubj)�”}”(hjS h]”hŒ*”…”�”}”(hj^Ch²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjCubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjkCh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj Cubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÑBh²hh³jãBh´Mîubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÍBh²hh³jãBh´Mîubah}”(h]”jÈBah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jãBh´MîhjÊBh²hubj)�”}”(hhh]”hì)�”}”(hŒ+analyze error and determine recovery action”h]”hŒ+analyze error and determine recovery action”…”�”}”(hj•Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mîhj’Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊBh²hh³jãBh´Mîubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j­Cj1j­Cj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXS**Parameters** ``struct ata_link *link`` host link to perform autopsy on **Description** Analyze why **link** failed and determine which recovery actions are needed. This function also sets more detailed AC_ERR_* values and fills sense data for ATAPI CHECK SENSE. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj·Ch]”hŒ Parameters”…”�”}”(hj¹Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµCubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mòhj±Cubjœ)�”}”(hhh]”j¡)�”}”(hŒ:``struct ata_link *link`` host link to perform autopsy on ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjÖCh]”hŒstruct ata_link *link”…”�”}”(hjØCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÔCubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MïhjÐCubj·)�”}”(hhh]”hì)�”}”(hŒhost link to perform autopsy on”h]”hŒhost link to perform autopsy on”…”�”}”(hjïCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jëCh´MïhjìCubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÐCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jëCh´MïhjÍCubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj±Cubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjDh]”hŒ Description”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mñhj±Cubj)�”}”(hŒÜAnalyze why **link** failed and determine which recovery actions are needed. This function also sets more detailed AC_ERR_* values and fills sense data for ATAPI CHECK SENSE. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ¯Analyze why **link** failed and determine which recovery actions are needed. This function also sets more detailed AC_ERR_* values and fills sense data for ATAPI CHECK SENSE.”h]”(hŒ Analyze why ”…”�”}”(hj+Dh²hh³Nh´Nubj )�”}”(hŒ**link**”h]”hŒlink”…”�”}”(hj3Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+DubhŒ› failed and determine which recovery actions are needed. This function also sets more detailed AC_ERR_* values and fills sense data for ATAPI CHECK SENSE.”…”�”}”(hj+Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mðhj'Dubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjLDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Môhj'Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jKDh´Mðhj±Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_autopsy (C function)”Œc.ata_eh_autopsy”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ)void ata_eh_autopsy (struct ata_port *ap)”h]”j")�”}”(hŒ(void ata_eh_autopsy(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj}Dh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mz ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Dh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj}Dh²hh³j�Dh´Mz ubj�)�”}”(hŒata_eh_autopsy”h]”j[)�”}”(hŒata_eh_autopsy”h]”hŒata_eh_autopsy”…”�”}”(hj¢Dh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjžDubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj}Dh²hh³j�Dh´Mz ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¾Dh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjºDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºDubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjÜDh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÙDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÞDŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¤DsbŒc.ata_eh_autopsy”†”asbuh1hhjºDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüDh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjºDubj)�”}”(hjS h]”hŒ*”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjºDubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjºDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¶Dubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj}Dh²hh³j�Dh´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjyDh²hh³j�Dh´Mz ubah}”(h]”jtDah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j�Dh´Mz hjvDh²hubj)�”}”(hhh]”hì)�”}”(hŒ+analyze error and determine recovery action”h]”hŒ+analyze error and determine recovery action”…”�”}”(hjAEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mz hj>Eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvDh²hh³j�Dh´Mz ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jYEj1jYEj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒý**Parameters** ``struct ata_port *ap`` host port to perform autopsy on **Description** Analyze all links of **ap** and determine why they failed and which recovery actions are needed. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjcEh]”hŒ Parameters”…”�”}”(hjeEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjaEubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M~ hj]Eubjœ)�”}”(hhh]”j¡)�”}”(hŒ8``struct ata_port *ap`` host port to perform autopsy on ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj‚Eh]”hŒstruct ata_port *ap”…”�”}”(hj„Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M{ hj|Eubj·)�”}”(hhh]”hì)�”}”(hŒhost port to perform autopsy on”h]”hŒhost port to perform autopsy on”…”�”}”(hj›Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—Eh´M{ hj˜Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—Eh´M{ hjyEubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj]Eubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj½Eh]”hŒ Description”…”�”}”(hj¿Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M} hj]Eubj)�”}”(hŒ�Analyze all links of **ap** and determine why they failed and which recovery actions are needed. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ`Analyze all links of **ap** and determine why they failed and which recovery actions are needed.”h]”(hŒAnalyze all links of ”…”�”}”(hj×Eh²hh³Nh´Nubj )�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hjßEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×EubhŒE and determine why they failed and which recovery actions are needed.”…”�”}”(hj×Eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M| hjÓEubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjøEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hjÓEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j÷Eh´M| hj]Eubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_get_cmd_name (C function)”Œc.ata_get_cmd_name”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ*const char * ata_get_cmd_name (u8 command)”h]”j")�”}”(hŒ(const char *ata_get_cmd_name(u8 command)”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj-Fh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj)Fh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¨ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Fh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)Fh²hh³j:Fh´M¨ ubj²)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj)Fh²hh³j:Fh´M¨ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)Fh²hh³j:Fh´M¨ ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjeFh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj)Fh²hh³j:Fh´M¨ ubj�)�”}”(hŒata_get_cmd_name”h]”j[)�”}”(hŒata_get_cmd_name”h]”hŒata_get_cmd_name”…”�”}”(hjvFh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjrFubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj)Fh²hh³j:Fh´M¨ ubjª)�”}”(hŒ (u8 command)”h]”j°)�”}”(hŒ u8 command”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj•Fh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’Fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j—FŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjxFsbŒc.ata_get_cmd_name”†”asbuh1hhjŽFubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµFh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŽFubj[)�”}”(hŒcommand”h]”hŒcommand”…”�”}”(hjÃFh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŽFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjŠFubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj)Fh²hh³j:Fh´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj%Fh²hh³j:Fh´M¨ ubah}”(h]”j Fah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j:Fh´M¨ hj"Fh²hubj)�”}”(hhh]”hì)�”}”(hŒget name for ATA command”h]”hŒget name for ATA command”…”�”}”(hjíFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¨ hjêFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"Fh²hh³j:Fh´M¨ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jGj1jGj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ©**Parameters** ``u8 command`` ATA command code to get name for **Description** Return a textual name of the given command or "unknown" LOCKING: None”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjGh]”hŒ Parameters”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¬ hj Gubjœ)�”}”(hhh]”j¡)�”}”(hŒ0``u8 command`` ATA command code to get name for ”h]”(j§)�”}”(hŒ``u8 command``”h]”j\)�”}”(hj.Gh]”hŒ u8 command”…”�”}”(hj0Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj,Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M© hj(Gubj·)�”}”(hhh]”hì)�”}”(hŒ ATA command code to get name for”h]”hŒ ATA command code to get name for”…”�”}”(hjGGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCGh´M© hjDGubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj(Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jCGh´M© hj%Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj Gubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjiGh]”hŒ Description”…”�”}”(hjkGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgGubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M« hj Gubj)�”}”(hŒFReturn a textual name of the given command or "unknown" LOCKING: None”h]”(hì)�”}”(hŒ7Return a textual name of the given command or "unknown"”h]”hŒ;Return a textual name of the given command or “unknownâ€�”…”�”}”(hjƒGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mª hjGubhì)�”}”(hŒ LOCKING: None”h]”hŒ LOCKING: None”…”�”}”(hj’Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¬ hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‘Gh´Mª hj Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_link_report (C function)”Œc.ata_eh_link_report”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ/void ata_eh_link_report (struct ata_link *link)”h]”j")�”}”(hŒ.void ata_eh_link_report(struct ata_link *link)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÇGh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÃGh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M" ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖGh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÃGh²hh³jÕGh´M" ubj�)�”}”(hŒata_eh_link_report”h]”j[)�”}”(hŒata_eh_link_report”h]”hŒata_eh_link_report”…”�”}”(hjèGh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjäGubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÃGh²hh³jÕGh´M" ubjª)�”}”(hŒ(struct ata_link *link)”h]”j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjHubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj"Hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j$HŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjêGsbŒc.ata_eh_link_report”†”asbuh1hhjHubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBHh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjHubj)�”}”(hjS h]”hŒ*”…”�”}”(hjPHh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjHubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj]Hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjüGubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÃGh²hh³jÕGh´M" ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¿Gh²hh³jÕGh´M" ubah}”(h]”jºGah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÕGh´M" hj¼Gh²hubj)�”}”(hhh]”hì)�”}”(hŒreport error handling to user”h]”hŒreport error handling to user”…”�”}”(hj‡Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M" hj„Hh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼Gh²hh³jÕGh´M" ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jŸHj1jŸHj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ‡**Parameters** ``struct ata_link *link`` ATA link EH is going on **Description** Report EH to user. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj©Hh]”hŒ Parameters”…”�”}”(hj«Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj§Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M& hj£Hubjœ)�”}”(hhh]”j¡)�”}”(hŒ2``struct ata_link *link`` ATA link EH is going on ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjÈHh]”hŒstruct ata_link *link”…”�”}”(hjÊHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÆHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M# hjÂHubj·)�”}”(hhh]”hì)�”}”(hŒATA link EH is going on”h]”hŒATA link EH is going on”…”�”}”(hjáHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÝHh´M# hjÞHubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÂHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÝHh´M# hj¿Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj£Hubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M% hj£Hubj)�”}”(hŒ"Report EH to user. LOCKING: None.”h]”(hì)�”}”(hŒReport EH to user.”h]”hŒReport EH to user.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M$ hjIubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj,Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M& hjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j+Ih´M$ hj£Hubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_report (C function)”Œc.ata_eh_report”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(void ata_eh_report (struct ata_port *ap)”h]”j")�”}”(hŒ'void ata_eh_report(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjaIh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj]Ih²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Må ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj]Ih²hh³joIh´Må ubj�)�”}”(hŒ ata_eh_report”h]”j[)�”}”(hŒ ata_eh_report”h]”hŒ ata_eh_report”…”�”}”(hj‚Ih²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj~Iubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj]Ih²hh³joIh´Må ubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjžIh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjšIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ih²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšIubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj¼Ih²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¹Iubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¾IŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj„IsbŒc.ata_eh_report”†”asbuh1hhjšIubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜIh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjšIubj)�”}”(hjS h]”hŒ*”…”�”}”(hjêIh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjšIubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj÷Ih²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjšIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj–Iubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj]Ih²hh³joIh´Må ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjYIh²hh³joIh´Må ubah}”(h]”jTIah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³joIh´Må hjVIh²hubj)�”}”(hhh]”hì)�”}”(hŒreport error handling to user”h]”hŒreport error handling to user”…”�”}”(hj!Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Må hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVIh²hh³joIh´Må ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j9Jj1j9Jj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ‰**Parameters** ``struct ata_port *ap`` ATA port to report EH about **Description** Report EH to user. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjCJh]”hŒ Parameters”…”�”}”(hjEJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAJubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mé hj=Jubjœ)�”}”(hhh]”j¡)�”}”(hŒ4``struct ata_port *ap`` ATA port to report EH about ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjbJh]”hŒstruct ata_port *ap”…”�”}”(hjdJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj`Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mæ hj\Jubj·)�”}”(hhh]”hì)�”}”(hŒATA port to report EH about”h]”hŒATA port to report EH about”…”�”}”(hj{Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jwJh´Mæ hjxJubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj\Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jwJh´Mæ hjYJubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj=Jubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj�Jh]”hŒ Description”…”�”}”(hjŸJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mè hj=Jubj)�”}”(hŒ"Report EH to user. LOCKING: None.”h]”(hì)�”}”(hŒReport EH to user.”h]”hŒReport EH to user.”…”�”}”(hj·Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mç hj³Jubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjÆJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mé hj³Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅJh´Mç hj=Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_set_mode (C function)”Œc.ata_eh_set_mode”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒMint ata_eh_set_mode (struct ata_link *link, struct ata_device **r_failed_dev)”h]”j")�”}”(hŒLint ata_eh_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjûJh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj÷Jh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mx ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj÷Jh²hh³j Kh´Mx ubj�)�”}”(hŒata_eh_set_mode”h]”j[)�”}”(hŒata_eh_set_mode”h]”hŒata_eh_set_mode”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjKubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj÷Jh²hh³j Kh´Mx ubjª)�”}”(hŒ9(struct ata_link *link, struct ata_device **r_failed_dev)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj8Kh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj4Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4Kubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjVKh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjSKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jXKŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjKsbŒc.ata_eh_set_mode”†”asbuh1hhj4Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4Kubj)�”}”(hjS h]”hŒ*”…”�”}”(hj„Kh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj4Kubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hj‘Kh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj4Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj0Kubj°)�”}”(hŒ struct ata_device **r_failed_dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjªKh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¦Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Kh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦Kubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÈKh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÅKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÊKŒmodname”NŒ classname”Njwjz)�”}”j}]”jrKŒc.ata_eh_set_mode”†”asbuh1hhj¦Kubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæKh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¦Kubj)�”}”(hjS h]”hŒ*”…”�”}”(hjôKh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¦Kubj)�”}”(hjS h]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¦Kubj[)�”}”(hŒ r_failed_dev”h]”hŒ r_failed_dev”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¦Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj0Kubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj÷Jh²hh³j Kh´Mx ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjóJh²hh³j Kh´Mx ubah}”(h]”jîJah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j Kh´Mx hjðJh²hubj)�”}”(hhh]”hì)�”}”(hŒ-Program timings and issue SET FEATURES - XFER”h]”hŒ-Program timings and issue SET FEATURES - XFER”…”�”}”(hj8Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mx hj5Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðJ•h²hh³j Kh´Mx ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jPLj1jPLj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hX°**Parameters** ``struct ata_link *link`` link on which timings will be programmed ``struct ata_device **r_failed_dev`` out parameter for failed device **Description** Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If ata_eh_set_mode() fails, pointer to the failing device is returned in **r_failed_dev**. LOCKING: PCI/etc. bus probe sem. **Return** 0 on success, negative errno otherwise”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjZLh]”hŒ Parameters”…”�”}”(hj\Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M| hjTLubjœ)�”}”(hhh]”(j¡)�”}”(hŒC``struct ata_link *link`` link on which timings will be programmed ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjyLh]”hŒstruct ata_link *link”…”�”}”(hj{Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjwLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´My hjsLubj·)�”}”(hhh]”hì)�”}”(hŒ(link on which timings will be programmed”h]”hŒ(link on which timings will be programmed”…”�”}”(hj’Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŽLh´My hj�Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjsLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jŽLh´My hjpLubj¡)�”}”(hŒE``struct ata_device **r_failed_dev`` out parameter for failed device ”h]”(j§)�”}”(hŒ$``struct ata_device **r_failed_dev``”h]”j\)�”}”(hj²Lh]”hŒ struct ata_device **r_failed_dev”…”�”}”(hj´Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj°Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mz hj¬Lubj·)�”}”(hhh]”hì)�”}”(hŒout parameter for failed device”h]”hŒout parameter for failed device”…”�”}”(hjËLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÇLh´Mz hjÈLubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¬Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÇLh´Mz hjpLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjTLubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjíLh]”hŒ Description”…”�”}”(hjïLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjëLubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M| hjTLubj)�”}”(hŒµSet ATA device disk transfer mode (PIO3, UDMA6, etc.). If ata_eh_set_mode() fails, pointer to the failing device is returned in **r_failed_dev**. LOCKING: PCI/etc. bus probe sem. ”h]”(hì)�”}”(hŒ’Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If ata_eh_set_mode() fails, pointer to the failing device is returned in **r_failed_dev**.”h]”(hŒ�Set ATA device disk transfer mode (PIO3, UDMA6, etc.). If ata_eh_set_mode() fails, pointer to the failing device is returned in ”…”�”}”(hjMh²hh³Nh´Nubj )�”}”(hŒ**r_failed_dev**”h]”hŒ r_failed_dev”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjMubhŒ.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M{ hjMubhì)�”}”(hŒ LOCKING: PCI/etc. bus probe sem.”h]”hŒ LOCKING: PCI/etc. bus probe sem.”…”�”}”(hj(Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'Mh´M{ hjTLubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj?Mh]”hŒReturn”…”�”}”(hjAMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M‚ hjTLubhì)�”}”(hŒ&0 on success, negative errno otherwise”h]”hŒ&0 on success, negative errno otherwise”…”�”}”(hjUMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mƒ hjTLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒatapi_eh_clear_ua (C function)”Œc.atapi_eh_clear_ua”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ.int atapi_eh_clear_ua (struct ata_device *dev)”h]”j")�”}”(hŒ-int atapi_eh_clear_ua(struct ata_device *dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj„Mh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj€Mh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M­ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Mh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj€Mh²hh³j’Mh´M­ ubj�)�”}”(hŒatapi_eh_clear_ua”h]”j[)�”}”(hŒatapi_eh_clear_ua”h]”hŒatapi_eh_clear_ua”…”�”}”(hj¥Mh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¡Mubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj€Mh²hh³j’Mh´M­ ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÁMh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj½Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½Mubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjßMh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÜMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jáMŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj§MsbŒc.atapi_eh_clear_ua”†”asbuh1hhj½Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿMh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½Mubj)�”}”(hjS h]”hŒ*”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj½Mubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj½Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¹Mubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj€Mh²hh³j’Mh´M­ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj|Mh²hh³j’Mh´M­ ubah}”(h]”jwMah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j’Mh´M­ hjyMh²hubj)�”}”(hhh]”hì)�”}”(hŒ&Clear ATAPI UNIT ATTENTION after reset”h]”hŒ&Clear ATAPI UNIT ATTENTION after reset”…”�”}”(hjDNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M­ hjANh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyMh²hh³j’Mh´M­ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j\Nj1j\Nj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXQ**Parameters** ``struct ata_device *dev`` ATAPI device to clear UA for **Description** Resets and other operations can make an ATAPI device raise UNIT ATTENTION which causes the next operation to fail. This function clears UA. LOCKING: EH context (may sleep). **Return** 0 on success, -errno on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjfNh]”hŒ Parameters”…”�”}”(hjhNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjdNubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M± hj`Nubjœ)�”}”(hhh]”j¡)�”}”(hŒ8``struct ata_device *dev`` ATAPI device to clear UA for ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj…Nh]”hŒstruct ata_device *dev”…”�”}”(hj‡Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjƒNubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M® hjNubj·)�”}”(hhh]”hì)�”}”(hŒATAPI device to clear UA for”h]”hŒATAPI device to clear UA for”…”�”}”(hjžNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jšNh´M® hj›Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jšNh´M® hj|Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj`Nubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÀNh]”hŒ Description”…”�”}”(hjÂNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M° hj`Nubj)�”}”(hŒ¯Resets and other operations can make an ATAPI device raise UNIT ATTENTION which causes the next operation to fail. This function clears UA. LOCKING: EH context (may sleep). ”h]”(hì)�”}”(hŒŒResets and other operations can make an ATAPI device raise UNIT ATTENTION which causes the next operation to fail. This function clears UA.”h]”hŒŒResets and other operations can make an ATAPI device raise UNIT ATTENTION which causes the next operation to fail. This function clears UA.”…”�”}”(hjÚNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¯ hjÖNubhì)�”}”(hŒ LOCKING: EH context (may sleep).”h]”hŒ LOCKING: EH context (may sleep).”…”�”}”(hjéNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M³ hjÖNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jèNh´M¯ hj`Nubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjOh]”hŒReturn”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþNubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M¶ hj`Nubhì)�”}”(hŒ 0 on success, -errno on failure.”h]”hŒ 0 on success, -errno on failure.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M· hj`Nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ata_eh_maybe_retry_flush (C function)”Œc.ata_eh_maybe_retry_flush”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int ata_eh_maybe_retry_flush (struct ata_device *dev)”h]”j")�”}”(hŒ4int ata_eh_maybe_retry_flush(struct ata_device *dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjEOh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjAOh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÝ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAOh²hh³jSOh´MÝ ubj�)�”}”(hŒata_eh_maybe_retry_flush”h]”j[)�”}”(hŒata_eh_maybe_retry_flush”h]”hŒata_eh_maybe_retry_flush”…”�”}”(hjfOh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjbOubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjAOh²hh³jSOh´MÝ ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‚Oh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj~Oubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~Oubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¢OŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjhOsbŒc.ata_eh_maybe_retry_flush”†”asbuh1hhj~Oubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀOh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~Oubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÎOh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj~Oubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÛOh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj~Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjzOubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjAOh²hh³jSOh´MÝ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj=Oh²hh³jSOh´MÝ ubah}”(h]”j8Oah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jSOh´MÝ hj:Oh²hubj)�”}”(hhh]”hì)�”}”(hŒRetry FLUSH if necessary”h]”hŒRetry FLUSH if necessary”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÝ hjPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:Oh²hh³jSOh´MÝ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jPj1jPj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXr**Parameters** ``struct ata_device *dev`` ATA device which may need FLUSH retry **Description** If **dev** failed FLUSH, it needs to be reported upper layer immediately as it means that **dev** failed to remap and already lost at least a sector and further FLUSH retrials won't make any difference to the lost sector. However, if FLUSH failed for other reasons, for example transmission error, FLUSH needs to be retried. This function determines whether FLUSH failure retry is necessary and performs it if so. **Return** 0 if EH can continue, -errno if EH needs to be repeated.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj'Ph]”hŒ Parameters”…”�”}”(hj)Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Má hj!Pubjœ)�”}”(hhh]”j¡)�”}”(hŒA``struct ata_device *dev`` ATA device which may need FLUSH retry ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjFPh]”hŒstruct ata_device *dev”…”�”}”(hjHPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjDPubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÞ hj@Pubj·)�”}”(hhh]”hì)�”}”(hŒ%ATA device which may need FLUSH retry”h]”hŒ%ATA device which may need FLUSH retry”…”�”}”(hj_Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[Ph´MÞ hj\Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj@Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j[Ph´MÞ hj=Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj!Pubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj�Ph]”hŒ Description”…”�”}”(hjƒPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mà hj!Pubj)�”}”(hX If **dev** failed FLUSH, it needs to be reported upper layer immediately as it means that **dev** failed to remap and already lost at least a sector and further FLUSH retrials won't make any difference to the lost sector. However, if FLUSH failed for other reasons, for example transmission error, FLUSH needs to be retried. This function determines whether FLUSH failure retry is necessary and performs it if so. ”h]”(hì)�”}”(hXEIf **dev** failed FLUSH, it needs to be reported upper layer immediately as it means that **dev** failed to remap and already lost at least a sector and further FLUSH retrials won't make any difference to the lost sector. However, if FLUSH failed for other reasons, for example transmission error, FLUSH needs to be retried.”h]”(hŒIf ”…”�”}”(hj›Ph²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj£Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›PubhŒP failed FLUSH, it needs to be reported upper layer immediately as it means that ”…”�”}”(hj›Ph²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjµPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›PubhŒæ failed to remap and already lost at least a sector and further FLUSH retrials won’t make any difference to the lost sector. However, if FLUSH failed for other reasons, for example transmission error, FLUSH needs to be retried.”…”�”}”(hj›Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mß hj—Pubhì)�”}”(hŒXThis function determines whether FLUSH failure retry is necessary and performs it if so.”h]”hŒXThis function determines whether FLUSH failure retry is necessary and performs it if so.”…”�”}”(hjÎPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mæ hj—Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÍPh´Mß hj!Pubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjåPh]”hŒReturn”…”�”}”(hjçPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjãPubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mé hj!Pubhì)�”}”(hŒ80 if EH can continue, -errno if EH needs to be repeated.”h]”hŒ80 if EH can continue, -errno if EH needs to be repeated.”…”�”}”(hjûPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mê hj!Pubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_recover (C function)”Œc.ata_eh_recover”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒqint ata_eh_recover (struct ata_port *ap, struct ata_reset_operations *reset_ops, struct ata_link **r_failed_link)”h]”j")�”}”(hŒpint ata_eh_recover(struct ata_port *ap, struct ata_reset_operations *reset_ops, struct ata_link **r_failed_link)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj*Qh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj&Qh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj&Qh²hh³j8Qh´MÒubj�)�”}”(hŒata_eh_recover”h]”j[)�”}”(hŒata_eh_recover”h]”hŒata_eh_recover”…”�”}”(hjKQh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjGQubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj&Qh²hh³j8Qh´MÒubjª)�”}”(hŒ^(struct ata_port *ap, struct ata_reset_operations *reset_ops, struct ata_link **r_failed_link)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjgQh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjcQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjcQubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj…Qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‚Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‡QŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjMQsbŒc.ata_eh_recover”†”asbuh1hhjcQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Qh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjcQubj)�”}”(hjS h]”hŒ*”…”�”}”(hj³Qh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjcQubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjÀQh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjcQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj_Qubj°)�”}”(hŒ&struct ata_reset_operations *reset_ops”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÙQh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÕQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæQh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕQubh)�”}”(hhh]”j[)�”}”(hŒata_reset_operations”h]”hŒata_reset_operations”…”�”}”(hj÷Qh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjôQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jùQŒmodname”NŒ classname”Njwjz)�”}”j}]”j¡QŒc.ata_eh_recover”†”asbuh1hhjÕQubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÕQubj)�”}”(hjS h]”hŒ*”…”�”}”(hj#Rh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÕQubj[)�”}”(hŒ reset_ops”h]”hŒ reset_ops”…”�”}”(hj0Rh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÕQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj_Qubj°)�”}”(hŒstruct ata_link **r_failed_link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjIRh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjERubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVRh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjERubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hjgRh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjdRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jiRŒmodname”NŒ classname”Njwjz)�”}”j}]”j¡QŒc.ata_eh_recover”†”asbuh1hhjERubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Rh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjERubj)�”}”(hjS h]”hŒ*”…”�”}”(hj“Rh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjERubj)�”}”(hjS h]”hŒ*”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjERubj[)�”}”(hŒ r_failed_link”h]”hŒ r_failed_link”…”�”}”(hj­Rh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjERubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj_Qubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj&Qh²hh³j8Qh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj"Qh²hh³j8Qh´MÒubah}”(h]”jQah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j8Qh´MÒhjQh²hubj)�”}”(hhh]”hì)�”}”(hŒrecover host port after error”h]”hŒrecover host port after error”…”�”}”(hj×Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÒhjÔRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQh²hh³j8Qh´MÒubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jïRj1jïRj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hXÁ**Parameters** ``struct ata_port *ap`` host port to recover ``struct ata_reset_operations *reset_ops`` The set of reset operations to use ``struct ata_link **r_failed_link`` out parameter for failed link **Description** This is the alpha and omega, eum and yang, heart and soul of libata exception handling. On entry, actions required to recover each link and hotplug requests are recorded in the link's eh_context. This function executes all the operations with appropriate retrials and fallbacks to resurrect failed devices, detach goners and greet newcomers. LOCKING: Kernel thread context (may sleep). **Return** 0 on success, -errno on failure.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjùRh]”hŒ Parameters”…”�”}”(hjûRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÖhjóRubjœ)�”}”(hhh]”(j¡)�”}”(hŒ-``struct ata_port *ap`` host port to recover ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjSh]”hŒstruct ata_port *ap”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÓhjSubj·)�”}”(hhh]”hì)�”}”(hŒhost port to recover”h]”hŒhost port to recover”…”�”}”(hj1Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-Sh´MÓhj.Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j-Sh´MÓhjSubj¡)�”}”(hŒN``struct ata_reset_operations *reset_ops`` The set of reset operations to use ”h]”(j§)�”}”(hŒ*``struct ata_reset_operations *reset_ops``”h]”j\)�”}”(hjQSh]”hŒ&struct ata_reset_operations *reset_ops”…”�”}”(hjSSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjOSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÔhjKSubj·)�”}”(hhh]”hì)�”}”(hŒ"The set of reset operations to use”h]”hŒ"The set of reset operations to use”…”�”}”(hjjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfSh´MÔhjgSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjKSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jfSh´MÔhjSubj¡)�”}”(hŒB``struct ata_link **r_failed_link`` out parameter for failed link ”h]”(j§)�”}”(hŒ#``struct ata_link **r_failed_link``”h]”j\)�”}”(hjŠSh]”hŒstruct ata_link **r_failed_link”…”�”}”(hjŒSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjˆSubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÕhj„Subj·)�”}”(hhh]”hì)�”}”(hŒout parameter for failed link”h]”hŒout parameter for failed link”…”�”}”(hj£Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸSh´MÕhj Subah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj„Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jŸSh´MÕhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóRubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÅSh]”hŒ Description”…”�”}”(hjÇSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃSubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M×hjóRubj)�”}”(hX…This is the alpha and omega, eum and yang, heart and soul of libata exception handling. On entry, actions required to recover each link and hotplug requests are recorded in the link's eh_context. This function executes all the operations with appropriate retrials and fallbacks to resurrect failed devices, detach goners and greet newcomers. LOCKING: Kernel thread context (may sleep). ”h]”(hì)�”}”(hXWThis is the alpha and omega, eum and yang, heart and soul of libata exception handling. On entry, actions required to recover each link and hotplug requests are recorded in the link's eh_context. This function executes all the operations with appropriate retrials and fallbacks to resurrect failed devices, detach goners and greet newcomers.”h]”hXYThis is the alpha and omega, eum and yang, heart and soul of libata exception handling. On entry, actions required to recover each link and hotplug requests are recorded in the link’s eh_context. This function executes all the operations with appropriate retrials and fallbacks to resurrect failed devices, detach goners and greet newcomers.”…”�”}”(hjßSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÖhjÛSubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjîSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÝhjÛSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jíSh´MÖhjóRubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjTh]”hŒReturn”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MàhjóRubhì)�”}”(hŒ 0 on success, -errno on failure.”h]”hŒ 0 on success, -errno on failure.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MáhjóRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_eh_finish (C function)”Œc.ata_eh_finish”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ(void ata_eh_finish (struct ata_port *ap)”h]”j")�”}”(hŒ'void ata_eh_finish(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJTh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjFTh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjFTh²hh³jXTh´MÌubj�)�”}”(hŒ ata_eh_finish”h]”j[)�”}”(hŒ ata_eh_finish”h]”hŒ ata_eh_finish”…”�”}”(hjkTh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjgTubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjFTh²hh³jXTh´MÌubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‡Th²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjƒTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Th²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒTubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj¥Th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¢Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j§TŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjmTsbŒc.ata_eh_finish”†”asbuh1hhjƒTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅTh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒTubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÓTh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjƒTubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjàTh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjƒTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjTubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjFTh²hh³jXTh´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjBTh²hh³jXTh´MÌubah}”(h]”j=Tah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jXTh´MÌhj?Th²hubj)�”}”(hhh]”hì)�”}”(hŒ finish up EH”h]”hŒ finish up EH”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÌhjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?Th²hh³jXTh´MÌubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j"Uj1j"Uj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒÄ**Parameters** ``struct ata_port *ap`` host port to finish EH for **Description** Recovery is complete. Clean up EH states and retry or finish failed qcs. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj,Uh]”hŒ Parameters”…”�”}”(hj.Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÐhj&Uubjœ)�”}”(hhh]”j¡)�”}”(hŒ3``struct ata_port *ap`` host port to finish EH for ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjKUh]”hŒstruct ata_port *ap”…”�”}”(hjMUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjIUubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÍhjEUubj·)�”}”(hhh]”hì)�”}”(hŒhost port to finish EH for”h]”hŒhost port to finish EH for”…”�”}”(hjdUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`Uh´MÍhjaUubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjEUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j`Uh´MÍhjBUubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj&Uubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj†Uh]”hŒ Description”…”�”}”(hjˆUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj„Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÏhj&Uubj)�”}”(hŒYRecovery is complete. Clean up EH states and retry or finish failed qcs. LOCKING: None.”h]”(hì)�”}”(hŒIRecovery is complete. Clean up EH states and retry or finish failed qcs.”h]”hŒIRecovery is complete. Clean up EH states and retry or finish failed qcs.”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÎhjœUubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj¯Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´MÑhjœUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j®Uh´MÎhj&Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj }h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_std_error_handler (C function)”Œc.ata_std_error_handler”hNt”auh1jhj }h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_std_error_handler (struct ata_port *ap)”h]”j")�”}”(hŒ/void ata_std_error_handler(struct ata_port *ap)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäUh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjàUh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóUh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàUh²hh³jòUh´Mubj�)�”}”(hŒata_std_error_handler”h]”j[)�”}”(hŒata_std_error_handler”h]”hŒata_std_error_handler”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjVubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjàUh²hh³jòUh´Mubjª)�”}”(hŒ(struct ata_port *ap)”h]”j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj!Vh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjVubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj?Vh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M-hj;Xh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsWh²hh³jŒWh´M-ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jVXj1jVXj2‰j3‰j4‰uh1jh²hhj }h³Nh´Nubj6)�”}”(hŒ—**Parameters** ``struct ata_port *ap`` port to suspend **Description** Suspend **ap**. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj`Xh]”hŒ Parameters”…”�”}”(hjbXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M1hjZXubjœ)�”}”(hhh]”j¡)�”}”(hŒ(``struct ata_port *ap`` port to suspend ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjXh]”hŒstruct ata_port *ap”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj}Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M.hjyXubj·)�”}”(hhh]”hì)�”}”(hŒport to suspend”h]”hŒport to suspend”…”�”}”(hj˜Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”Xh´M.hj•Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjyXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j”Xh´M.hjvXubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjZXubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjºXh]”hŒ Description”…”�”}”(hj¼Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/libata:596: ./drivers/ata/libata-eh.c”h´M0hjZXubj)�”}”(hŒvoid ata_scsi_unlock_native_capacity(struct scsi_device *sdev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjr^h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjn^h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjn^h²hh³j€^h´M‚ubj�)�”}”(hŒata_scsi_unlock_native_capacity”h]”j[)�”}”(hŒata_scsi_unlock_native_capacity”h]”hŒata_scsi_unlock_native_capacity”…”�”}”(hj“^h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�^ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjn^h²hh³j€^h´M‚ubjª)�”}”(hŒ(struct scsi_device *sdev)”h]”j°)�”}”(hŒstruct scsi_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¯^h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj«^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj«^ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjÍ^h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÊ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÏ^Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj•^sbŒ!c.ata_scsi_unlock_native_capacity”†”asbuh1hhj«^ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí^h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj«^ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjû^h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj«^ubj[)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj«^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj§^ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjn^h²hh³j€^h´M‚ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjj^h²hh³j€^h´M‚ubah}”(h]”je^ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j€^h´M‚hjg^h²hubj)�”}”(hhh]”hì)�”}”(hŒunlock native capacity”h]”hŒunlock native capacity”…”�”}”(hj2_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M‚hj/_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg^h²hh³j€^h´M‚ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jJ_j1jJ_j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX)**Parameters** ``struct scsi_device *sdev`` SCSI device to adjust device capacity for **Description** This function is called if a partition on **sdev** extends beyond the end of the device. It requests EH to unlock HPA. LOCKING: Defined by the SCSI layer. Might sleep.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjT_h]”hŒ Parameters”…”�”}”(hjV_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M†hjN_ubjœ)�”}”(hhh]”j¡)�”}”(hŒG``struct scsi_device *sdev`` SCSI device to adjust device capacity for ”h]”(j§)�”}”(hŒ``struct scsi_device *sdev``”h]”j\)�”}”(hjs_h]”hŒstruct scsi_device *sdev”…”�”}”(hju_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjq_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mƒhjm_ubj·)�”}”(hhh]”hì)�”}”(hŒ)SCSI device to adjust device capacity for”h]”hŒ)SCSI device to adjust device capacity for”…”�”}”(hjŒ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆ_h´Mƒhj‰_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjm_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jˆ_h´Mƒhjj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjN_ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj®_h]”hŒ Description”…”�”}”(hj°_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¬_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M…hjN_ubj)�”}”(hŒªThis function is called if a partition on **sdev** extends beyond the end of the device. It requests EH to unlock HPA. LOCKING: Defined by the SCSI layer. Might sleep.”h]”(hì)�”}”(hŒwThis function is called if a partition on **sdev** extends beyond the end of the device. It requests EH to unlock HPA.”h]”(hŒ*This function is called if a partition on ”…”�”}”(hjÈ_h²hh³Nh´Nubj )�”}”(hŒ**sdev**”h]”hŒsdev”…”�”}”(hjÐ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈ_ubhŒE extends beyond the end of the device. It requests EH to unlock HPA.”…”�”}”(hjÈ_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M„hjÄ_ubhì)�”}”(hŒ1LOCKING: Defined by the SCSI layer. Might sleep.”h]”hŒ1LOCKING: Defined by the SCSI layer. Might sleep.”…”�”}”(hjé_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M‡hjÄ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jè_h´M„hjN_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ata_scsi_dma_need_drain (C function)”Œc.ata_scsi_dma_need_drain”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1bool ata_scsi_dma_need_drain (struct request *rq)”h]”j")�”}”(hŒ0bool ata_scsi_dma_need_drain(struct request *rq)”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj`h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj`h²hh³j+`h´Mubj�)�”}”(hŒata_scsi_dma_need_drain”h]”j[)�”}”(hŒata_scsi_dma_need_drain”h]”hŒata_scsi_dma_need_drain”…”�”}”(hj>`h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj:`ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj`h²hh³j+`h´Mubjª)�”}”(hŒ(struct request *rq)”h]”j°)�”}”(hŒstruct request *rq”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjZ`h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjV`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV`ubh)�”}”(hhh]”j[)�”}”(hŒrequest”h]”hŒrequest”…”�”}”(hjx`h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhju`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jz`Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj@`sbŒc.ata_scsi_dma_need_drain”†”asbuh1hhjV`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜`h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV`ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¦`h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjV`ubj[)�”}”(hŒrq”h]”hŒrq”…”�”}”(hj³`h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjV`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjR`ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj`h²hh³j+`h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj`h²hh³j+`h´Mubah}”(•Lh]”j`ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j+`h´Mhj`h²hubj)�”}”(hhh]”hì)�”}”(hŒ(Check whether data transfer may overflow”h]”hŒ(Check whether data transfer may overflow”…”�”}”(hjÝ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MhjÚ`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`h²hh³j+`h´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jõ`j1jõ`j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXj**Parameters** ``struct request *rq`` request to be checked **Description** ATAPI commands which transfer variable length data to host might overflow due to application error or hardware bug. This function checks whether overflow should be drained and ignored for **request**. LOCKING: None. **Return** 1 if ; otherwise, 0.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÿ`h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mhjù`ubjœ)�”}”(hhh]”j¡)�”}”(hŒ-``struct request *rq`` request to be checked ”h]”(j§)�”}”(hŒ``struct request *rq``”h]”j\)�”}”(hjah]”hŒstruct request *rq”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mhjaubj·)�”}”(hhh]”hì)�”}”(hŒrequest to be checked”h]”hŒrequest to be checked”…”�”}”(hj7ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3ah´Mhj4aubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j3ah´Mhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjù`ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjYah]”hŒ Description”…”�”}”(hj[ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mhjù`ubj)�”}”(hŒÚATAPI commands which transfer variable length data to host might overflow due to application error or hardware bug. This function checks whether overflow should be drained and ignored for **request**. LOCKING: None. ”h]”(hì)�”}”(hŒÉATAPI commands which transfer variable length data to host might overflow due to application error or hardware bug. This function checks whether overflow should be drained and ignored for **request**.”h]”(hŒ½ATAPI commands which transfer variable length data to host might overflow due to application error or hardware bug. This function checks whether overflow should be drained and ignored for ”…”�”}”(hjsah²hh³Nh´Nubj )�”}”(hŒ **request**”h]”hŒrequest”…”�”}”(hj{ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjsaubhŒ.”…”�”}”(hjsah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mhjoaubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj”ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mhjoaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j“ah´Mhjù`ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj«ah]”hŒReturn”…”�”}”(hj­ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©aubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M hjù`ubhì)�”}”(hŒ1 if ; otherwise, 0.”h]”hŒ1 if ; otherwise, 0.”…”�”}”(hjÁah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M!hjù`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_sdev_init (C function)”Œc.ata_scsi_sdev_init”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1int ata_scsi_sdev_init (struct scsi_device *sdev)”h]”j")�”}”(hŒ0int ata_scsi_sdev_init(struct scsi_device *sdev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjðah²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjìah²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿah²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjìah²hh³jþah´Mwubj�)�”}”(hŒata_scsi_sdev_init”h]”j[)�”}”(hŒata_scsi_sdev_init”h]”hŒata_scsi_sdev_init”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj bubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjìah²hh³jþah´Mwubjª)�”}”(hŒ(struct scsi_device *sdev)”h]”j°)�”}”(hŒstruct scsi_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj-bh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj)bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:bh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)bubh)�”}”(hhh]”j[)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjKbh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjHbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jMbŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjbsbŒc.ata_scsi_sdev_init”†”asbuh1hhj)bubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkbh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj)bubj)�”}”(hjS h]”hŒ*”…”�”}”(hjybh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj)bubj[)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj†bh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj)bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj%bubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjìah²hh³jþah´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjèah²hh³jþah´Mwubah}”(h]”jãaah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jþah´Mwhjåah²hubj)�”}”(hhh]”hì)�”}”(hŒEarly setup of SCSI device”h]”hŒEarly setup of SCSI device”…”�”}”(hj°bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mwhj­bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåah²hh³jþah´Mwubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÈbj1jÈbj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX**Parameters** ``struct scsi_device *sdev`` SCSI device to examine **Description** This is called from scsi_alloc_sdev() when the scsi device associated with an ATA device is scanned on a port. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÒbh]”hŒ Parameters”…”�”}”(hjÔbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÐbubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M{hjÌbubjœ)�”}”(hhh]”j¡)�”}”(hŒ4``struct scsi_device *sdev`` SCSI device to examine ”h]”(j§)�”}”(hŒ``struct scsi_device *sdev``”h]”j\)�”}”(hjñbh]”hŒstruct scsi_device *sdev”…”�”}”(hjóbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjïbubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mxhjëbubj·)�”}”(hhh]”hì)�”}”(hŒSCSI device to examine”h]”hŒSCSI device to examine”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jch´Mxhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjëbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jch´Mxhjèbubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÌbubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj,ch]”hŒ Description”…”�”}”(hj.ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*cubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MzhjÌbubj)�”}”(hŒ¦This is called from scsi_alloc_sdev() when the scsi device associated with an ATA device is scanned on a port. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hŒnThis is called from scsi_alloc_sdev() when the scsi device associated with an ATA device is scanned on a port.”h]”hŒnThis is called from scsi_alloc_sdev() when the scsi device associated with an ATA device is scanned on a port.”…”�”}”(hjFch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MyhjBcubhì)�”}”(hŒ6LOCKING: Defined by SCSI layer. We don't really care.”h]”hŒ8LOCKING: Defined by SCSI layer. We don’t really care.”…”�”}”(hjUch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M|hjBcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jTch´MyhjÌbubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$ata_scsi_sdev_configure (C function)”Œc.ata_scsi_sdev_configure”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒPint ata_scsi_sdev_configure (struct scsi_device *sdev, struct queue_limits *lim)”h]”j")�”}”(hŒOint ata_scsi_sdev_configure(struct scsi_device *sdev, struct queue_limits *lim)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjŠch²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj†ch²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M›ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™ch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj†ch²hh³j˜ch´M›ubj�)�”}”(hŒata_scsi_sdev_configure”h]”j[)�”}”(hŒata_scsi_sdev_configure”h]”hŒata_scsi_sdev_configure”…”�”}”(hj«ch²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj§cubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj†ch²hh³j˜ch´M›ubjª)�”}”(hŒ4(struct scsi_device *sdev, struct queue_limits *lim)”h]”(j°)�”}”(hŒstruct scsi_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÇch²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÃcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÃcubh)�”}”(hhh]”j[)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hjåch²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjâcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jçcŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj­csbŒc.ata_scsi_sdev_configure”†”asbuh1hhjÃcubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÃcubj)�”}”(hjS h]”hŒ*”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÃcubj[)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÃcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¿cubj°)�”}”(hŒstruct queue_limits *lim”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj9dh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj5dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFdh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5dubh)�”}”(hhh]”j[)�”}”(hŒ queue_limits”h]”hŒ queue_limits”…”�”}”(hjWdh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjTdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jYdŒmodname”NŒ classname”Njwjz)�”}”j}]”jdŒc.ata_scsi_sdev_configure”†”asbuh1hhj5dubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjudh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5dubj)�”}”(hjS h]”hŒ*”…”�”}”(hjƒdh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj5dubj[)�”}”(hŒlim”h]”hŒlim”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj5dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¿cubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj†ch²hh³j˜ch´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj‚ch²hh³j˜ch´M›ubah}”(h]”j}cah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j˜ch´M›hjch²hubj)�”}”(hhh]”hì)�”}”(hŒSet SCSI device attributes”h]”hŒSet SCSI device attributes”…”�”}”(hjºdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M›hj·dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjch²hh³j˜ch´M›ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÒdj1jÒdj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXO**Parameters** ``struct scsi_device *sdev`` SCSI device to examine ``struct queue_limits *lim`` queue limits **Description** This is called before we actually start reading and writing to the device, to configure certain SCSI mid-layer behaviors. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÜdh]”hŒ Parameters”…”�”}”(hjÞdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÚdubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MŸhjÖdubjœ)�”}”(hhh]”(j¡)�”}”(hŒ4``struct scsi_device *sdev`` SCSI device to examine ”h]”(j§)�”}”(hŒ``struct scsi_device *sdev``”h]”j\)�”}”(hjûdh]”hŒstruct scsi_device *sdev”…”�”}”(hjýdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjùdubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mœhjõdubj·)�”}”(hhh]”hì)�”}”(hŒSCSI device to examine”h]”hŒSCSI device to examine”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jeh´Mœhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjõdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jeh´Mœhjòdubj¡)�”}”(hŒ*``struct queue_limits *lim`` queue limits ”h]”(j§)�”}”(hŒ``struct queue_limits *lim``”h]”j\)�”}”(hj4eh]”hŒstruct queue_limits *lim”…”�”}”(hj6eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj2eubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M�hj.eubj·)�”}”(hhh]”hì)�”}”(hŒ queue limits”h]”hŒ queue limits”…”�”}”(hjMeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jIeh´M�hjJeubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj.eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jIeh´M�hjòdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÖdubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjoeh]”hŒ Description”…”�”}”(hjqeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmeubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MŸhjÖdubj)�”}”(hŒ±This is called before we actually start reading and writing to the device, to configure certain SCSI mid-layer behaviors. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hŒyThis is called before we actually start reading and writing to the device, to configure certain SCSI mid-layer behaviors.”h]”hŒyThis is called before we actually start reading and writing to the device, to configure certain SCSI mid-layer behaviors.”…”�”}”(hj‰eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´Mžhj…eubhì)�”}”(hŒ6LOCKING: Defined by SCSI layer. We don't really care.”h]”hŒ8LOCKING: Defined by SCSI layer. We don’t really care.”…”�”}”(hj˜eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M¢hj…eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j—eh´MžhjÖdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_scsi_sdev_destroy (C function)”Œc.ata_scsi_sdev_destroy”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5void ata_scsi_sdev_destroy (struct scsi_device *sdev)”h]”j")�”}”(hŒ4void ata_scsi_sdev_destroy(struct scsi_device *sdev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍeh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÉeh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M´ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÉeh²hh³jÛeh´M´ubj�)�”}”(hŒata_scsi_sdev_destroy”h]”j[)�”}”(hŒata_scsi_sdev_destroy”h]”hŒata_scsi_sdev_destroy”…”�”}”(hjîeh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjêeubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÉeh²hh³jÛeh´M´ubjª)�”}”(hŒ(struct scsi_device *sdev)”h]”j°)�”}”(hŒstruct scsi_device *sdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjfubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjfubh)�”}”(hhh]”j[)�”}”(hŒ scsi_device”h]”hŒ scsi_device”…”�”}”(hj(fh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj%fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j*fŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjðesbŒc.ata_scsi_sdev_destroy”†”asbuh1hhjfubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHfh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjfubj)�”}”(hjS h]”hŒ*”…”�”}”(hjVfh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjfubj[)�”}”(hŒsdev”h]”hŒsdev”…”�”}”(hjcfh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjfubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÉeh²hh³jÛeh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÅeh²hh³jÛeh´M´ubah}”(h]”jÀeah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÛeh´M´hjÂeh²hubj)�”}”(hhh]”hì)�”}”(hŒ$SCSI device is about to be destroyed”h]”hŒ$SCSI device is about to be destroyed”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M´hjŠfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂeh²hh³jÛeh´M´ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¥fj1j¥fj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXí**Parameters** ``struct scsi_device *sdev`` SCSI device to be destroyed **Description** **sdev** is about to be destroyed for hot/warm unplugging. If this unplugging was initiated by libata as indicated by NULL dev->sdev, this function doesn't have to do anything. Otherwise, SCSI layer initiated warm-unplug is in progress. Clear dev->sdev, schedule the device for ATA detach and invoke EH. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¯fh]”hŒ Parameters”…”�”}”(hj±fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­fubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M¸hj©fubjœ)�”}”(hhh]”j¡)�”}”(hŒ9``struct scsi_device *sdev`` SCSI device to be destroyed ”h]”(j§)�”}”(hŒ``struct scsi_device *sdev``”h]”j\)�”}”(hjÎfh]”hŒstruct scsi_device *sdev”…”�”}”(hjÐfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÌfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MµhjÈfubj·)�”}”(hhh]”hì)�”}”(hŒSCSI device to be destroyed”h]”hŒSCSI device to be destroyed”…”�”}”(hjçfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jãfh´Mµhjäfubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÈfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jãfh´MµhjÅfubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj©fubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj gh]”hŒ Description”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M·hj©fubj)�”}”(hXh**sdev** is about to be destroyed for hot/warm unplugging. If this unplugging was initiated by libata as indicated by NULL dev->sdev, this function doesn't have to do anything. Otherwise, SCSI layer initiated warm-unplug is in progress. Clear dev->sdev, schedule the device for ATA detach and invoke EH. LOCKING: Defined by SCSI layer. We don't really care.”h]”(hì)�”}”(hX0**sdev** is about to be destroyed for hot/warm unplugging. If this unplugging was initiated by libata as indicated by NULL dev->sdev, this function doesn't have to do anything. Otherwise, SCSI layer initiated warm-unplug is in progress. Clear dev->sdev, schedule the device for ATA detach and invoke EH.”h]”(j )�”}”(hŒ**sdev**”h]”hŒsdev”…”�”}”(hj'gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#gubhX* is about to be destroyed for hot/warm unplugging. If this unplugging was initiated by libata as indicated by NULL dev->sdev, this function doesn’t have to do anything. Otherwise, SCSI layer initiated warm-unplug is in progress. Clear dev->sdev, schedule the device for ATA detach and invoke EH.”…”�”}”(hj#gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M¶hjgubhì)�”}”(hŒ6LOCKING: Defined by SCSI layer. We don't really care.”h]”hŒ8LOCKING: Defined by SCSI layer. We don’t really care.”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M½hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j?gh´M¶hj©fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_queuecmd (C function)”Œc.ata_scsi_queuecmd”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒVenum scsi_qc_status ata_scsi_queuecmd (struct Scsi_Host *shost, struct scsi_cmnd *cmd)”h]”j")�”}”(hŒUenum scsi_qc_status ata_scsi_queuecmd(struct Scsi_Host *shost, struct scsi_cmnd *cmd)”h]”(j()�”}”(hj—h]”hŒenum”…”�”}”(hjugh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjqgh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqgh²hh³j‚gh´M5ubh)�”}”(hhh]”j[)�”}”(hŒscsi_qc_status”h]”hŒscsi_qc_status”…”�”}”(hj”gh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‘gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j–gŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_scsi_queuecmd”sbŒc.ata_scsi_queuecmd”†”asbuh1hhjqgh²hh³j‚gh´M5ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjqgh²hh³j‚gh´M5ubj�)�”}”(hŒata_scsi_queuecmd”h]”j[)�”}”(hj²gh]”hŒata_scsi_queuecmd”…”�”}”(hjÇgh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÃgubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjqgh²hh³j‚gh´M5ubjª)�”}”(hŒ0(struct Scsi_Host *shost, struct scsi_cmnd *cmd)”h]”(j°)�”}”(hŒstruct Scsi_Host *shost”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjâgh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÞgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞgubh)�”}”(hhh]”j[)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjýgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jhŒmodname”NŒ classname”Njwjz)�”}”j}]”j°gŒc.ata_scsi_queuecmd”†”asbuh1hhjÞgubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÞgubj)�”}”(hjS h]”hŒ*”…”�”}”(hj,hh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÞgubj[)�”}”(hŒshost”h]”hŒshost”…”�”}”(hj9hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÞgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚgubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjRhh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjNhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_hh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNhubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjphh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjmhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jrhŒmodname”NŒ classname”Njwjz)�”}”j}]”j°gŒc.ata_scsi_queuecmd”†”asbuh1hhjNhubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNhubj)�”}”(hjS h]”hŒ*”…”�”}”(hjœhh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjNhubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj©hh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjNhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚgubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjqgh²hh³j‚gh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjmgh²hh³j‚gh´M5ubah}”(h]”jhgah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j‚gh´M5hjjgh²hubj)�”}”(hhh]”hì)�”}”(hŒ'Issue SCSI cdb to libata-managed device”h]”hŒ'Issue SCSI cdb to libata-managed device”…”�”}”(hjÓhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M5hjÐhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjgh²hh³j‚gh´M5ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jëhj1jëhj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXn**Parameters** ``struct Scsi_Host *shost`` SCSI host of command to be sent ``struct scsi_cmnd *cmd`` SCSI command to be sent **Description** In some cases, this function translates SCSI commands into ATA taskfiles, and queues the taskfiles to be sent to hardware. In other cases, this function simulates a SCSI device by evaluating and responding to certain SCSI commands. This creates the overall effect of ATA and ATAPI devices appearing as SCSI devices. LOCKING: ATA host lock **Return** Return value from __ata_scsi_queuecmd() if **cmd** can be queued, 0 otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjõhh]”hŒ Parameters”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjóhubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M9hjïhubjœ)�”}”(hhh]”(j¡)�”}”(hŒ<``struct Scsi_Host *shost`` SCSI host of command to be sent ”h]”(j§)�”}”(hŒ``struct Scsi_Host *shost``”h]”j\)�”}”(hjih]”hŒstruct Scsi_Host *shost”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M6hjiubj·)�”}”(hhh]”hì)�”}”(hŒSCSI host of command to be sent”h]”hŒSCSI host of command to be sent”…”�”}”(hj-ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j)ih´M6hj*iubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j)ih´M6hj iubj¡)�”}”(hŒ2``struct scsi_cmnd *cmd`` SCSI command to be sent ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjMih]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjOih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjKiubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M7hjGiubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to be sent”h]”hŒSCSI command to be sent”…”�”}”(hjfih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jbih´M7hjciubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjGiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jbih´M7hj iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjïhubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjˆih]”hŒ Description”…”�”}”(hjŠih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†iubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M9hjïhubj)�”}”(hXVIn some cases, this function translates SCSI commands into ATA taskfiles, and queues the taskfiles to be sent to hardware. In other cases, this function simulates a SCSI device by evaluating and responding to certain SCSI commands. This creates the overall effect of ATA and ATAPI devices appearing as SCSI devices. LOCKING: ATA host lock ”h]”(hì)�”}”(hX=In some cases, this function translates SCSI commands into ATA taskfiles, and queues the taskfiles to be sent to hardware. In other cases, this function simulates a SCSI device by evaluating and responding to certain SCSI commands. This creates the overall effect of ATA and ATAPI devices appearing as SCSI devices.”h]”hX=In some cases, this function translates SCSI commands into ATA taskfiles, and queues the taskfiles to be sent to hardware. In other cases, this function simulates a SCSI device by evaluating and responding to certain SCSI commands. This creates the overall effect of ATA and ATAPI devices appearing as SCSI devices.”…”�”}”(hj¢ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M8hjžiubhì)�”}”(hŒLOCKING: ATA host lock”h]”hŒLOCKING: ATA host lock”…”�”}”(hj±ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´M?hjžiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j°ih´M8hjïhubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÈih]”hŒReturn”…”�”}”(hjÊih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÆiubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MBhjïhubhì)�”}”(hŒNReturn value from __ata_scsi_queuecmd() if **cmd** can be queued, 0 otherwise.”h]”(hŒ+Return value from __ata_scsi_queuecmd() if ”…”�”}”(hjÞih²hh³Nh´Nubj )�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjæih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞiubhŒ can be queued, 0 otherwise.”…”�”}”(hjÞih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:601: ./drivers/ata/libata-scsi.c”h´MChjïhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ/ata_scsi_set_passthru_sense_fields (C function)”Œ$c.ata_scsi_set_passthru_sense_fields”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCvoid ata_scsi_set_passthru_sense_fields (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒBvoid ata_scsi_set_passthru_sense_fields(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Kìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.jh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjjh²hh³j-jh´Kìubj�)�”}”(hŒ"ata_scsi_set_passthru_sense_fields”h]”j[)�”}”(hŒ"ata_scsi_set_passthru_sense_fields”h]”hŒ"ata_scsi_set_passthru_sense_fields”…”�”}”(hj@jh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjsh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj;subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j@sŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_scsi_qc_new”sbŒc.ata_scsi_qc_new”†”asbuh1hhjsh²hh³j,sh´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjsh²hh³j,sh´MØubj)�”}”(hjS h]”hŒ*”…”�”}”(hjmsh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjsh²hh³j,sh´MØubj�)�”}”(hŒata_scsi_qc_new”h]”j[)�”}”(hj\sh]”hŒata_scsi_qc_new”…”�”}”(hj~sh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjzsubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjsh²hh³j,sh´MØubjª)�”}”(hŒ/(struct ata_device *dev, struct scsi_cmnd *cmd)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj™sh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj•subj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦sh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj•subh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj·sh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj´subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¹sŒmodname”NŒ classname”Njwjz)�”}”j}]”jZsŒc.ata_scsi_qc_new”†”asbuh1hhj•subj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕsh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj•subj)�”}”(hjS h]”hŒ*”…”�”}”(hjãsh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj•subj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjðsh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj•subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‘subj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj'th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj$tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j)tŒmodname”NŒ classname”Njwjz)�”}”j}]”jZsŒc.ata_scsi_qc_new”†”asbuh1hhjtubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEth²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjtubj)�”}”(hjS h]”hŒ*”…”�”}”(hjSth²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjtubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj`th²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‘subeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjsh²hh³j,sh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjsh²hh³j,sh´MØubah}”(h]”jsah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j,sh´MØhjsh²hubj)�”}”(hhh]”hì)�”}”(hŒ$acquire new ata_queued_cmd reference”h]”hŒ$acquire new ata_queued_cmd reference”…”�”}”(hjŠth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MØhj‡th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsh²hh³j,sh´MØubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¢tj1j¢tj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXW**Parameters** ``struct ata_device *dev`` ATA device to which the new command is attached ``struct scsi_cmnd *cmd`` SCSI command that originated this ATA command **Description** Obtain a reference to an unused ata_queued_cmd structure, which is the basic libata structure representing a single ATA command sent to the hardware. If a command was available, fill in the SCSI-specific portions of the structure with information on the current command. LOCKING: spin_lock_irqsave(host lock) **Return** Command allocated, or ``NULL`` if none available.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¬th]”hŒ Parameters”…”�”}”(hj®th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjªtubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÜhj¦tubjœ)�”}”(hhh]”(j¡)�”}”(hŒK``struct ata_device *dev`` ATA device to which the new command is attached ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjËth]”hŒstruct ata_device *dev”…”�”}”(hjÍth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÉtubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÙhjÅtubj·)�”}”(hhh]”hì)�”}”(hŒ/ATA device to which the new command is attached”h]”hŒ/ATA device to which the new command is attached”…”�”}”(hjäth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jàth´MÙhjátubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÅtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jàth´MÙhjÂtubj¡)�”}”(hŒH``struct scsi_cmnd *cmd`` SCSI command that originated this ATA command ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjuh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÚhjþtubj·)�”}”(hhh]”hì)�”}”(hŒ-SCSI command that originated this ATA command”h]”hŒ-SCSI command that originated this ATA command”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³juh´MÚhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjþtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³juh´MÚhjÂtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¦tubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj?uh]”hŒ Description”…”�”}”(hjAuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÜhj¦tubj)�”}”(hX7Obtain a reference to an unused ata_queued_cmd structure, which is the basic libata structure representing a single ATA command sent to the hardware. If a command was available, fill in the SCSI-specific portions of the structure with information on the current command. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ•Obtain a reference to an unused ata_queued_cmd structure, which is the basic libata structure representing a single ATA command sent to the hardware.”h]”hŒ•Obtain a reference to an unused ata_queued_cmd structure, which is the basic libata structure representing a single ATA command sent to the hardware.”…”�”}”(hjYuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”•h´MÛhjUuubhì)�”}”(hŒxIf a command was available, fill in the SCSI-specific portions of the structure with information on the current command.”h]”hŒxIf a command was available, fill in the SCSI-specific portions of the structure with information on the current command.”…”�”}”(hjhuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MßhjUuubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjwuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MãhjUuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jguh´MÛhj¦tubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjŽuh]”hŒReturn”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒuubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mæhj¦tubhì)�”}”(hŒ1Command allocated, or ``NULL`` if none available.”h]”(hŒCommand allocated, or ”…”�”}”(hj¤uh²hh³Nh´Nubj\)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¬uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¤uubhŒ if none available.”…”�”}”(hj¤uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mçhj¦tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_to_sense_error (C function)”Œc.ata_to_sense_error”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒLvoid ata_to_sense_error (u8 drv_stat, u8 drv_err, u8 *sk, u8 *asc, u8 *ascq)”h]”j")�”}”(hŒKvoid ata_to_sense_error(u8 drv_stat, u8 drv_err, u8 *sk, u8 *asc, u8 *ascq)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåuh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjáuh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M"ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôuh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjáuh²hh³jóuh´M"ubj�)�”}”(hŒata_to_sense_error”h]”j[)�”}”(hŒata_to_sense_error”h]”hŒata_to_sense_error”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjvubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjáuh²hh³jóuh´M"ubjª)�”}”(hŒ4(u8 drv_stat, u8 drv_err, u8 *sk, u8 *asc, u8 *ascq)”h]”(j°)�”}”(hŒ u8 drv_stat”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj%vh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j'vŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjvsbŒc.ata_to_sense_error”†”asbuh1hhjvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjvubj[)�”}”(hŒdrv_stat”h]”hŒdrv_stat”…”�”}”(hjSvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjvubj°)�”}”(hŒ u8 drv_err”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjovh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjlvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jqvŒmodname”NŒ classname”Njwjz)�”}”j}]”jAvŒc.ata_to_sense_error”†”asbuh1hhjhvubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhvubj[)�”}”(hŒdrv_err”h]”hŒdrv_err”…”�”}”(hj›vh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjhvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjvubj°)�”}”(hŒu8 *sk”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj·vh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj´vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¹vŒmodname”NŒ classname”Njwjz)�”}”j}]”jAvŒc.ata_to_sense_error”†”asbuh1hhj°vubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕvh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°vubj)�”}”(hjS h]”hŒ*”…”�”}”(hjãvh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj°vubj[)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjðvh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj°vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjvubj°)�”}”(hŒu8 *asc”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jwŒmodname”NŒ classname”Njwjz)�”}”j}]”jAvŒc.ata_to_sense_error”†”asbuh1hhjwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*wh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjwubj)�”}”(hjS h]”hŒ*”…”�”}”(hj8wh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjwubj[)�”}”(hŒasc”h]”hŒasc”…”�”}”(hjEwh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjvubj°)�”}”(hŒu8 *ascq”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjawh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj^wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jcwŒmodname”NŒ classname”Njwjz)�”}”j}]”jAvŒc.ata_to_sense_error”†”asbuh1hhjZwubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZwubj)�”}”(hjS h]”hŒ*”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjZwubj[)�”}”(hŒascq”h]”hŒascq”…”�”}”(hjšwh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjZwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjvubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjáuh²hh³jóuh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÝuh²hh³jóuh´M"ubah}”(h]”jØuah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jóuh´M"hjÚuh²hubj)�”}”(hhh]”hì)�”}”(hŒconvert ATA error to SCSI error”h]”hŒconvert ATA error to SCSI error”…”�”}”(hjÄwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M"hjÁwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚuh²hh³jóuh´M"ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÜwj1jÜwj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX **Parameters** ``u8 drv_stat`` value contained in ATA status register ``u8 drv_err`` value contained in ATA error register ``u8 *sk`` the sense key we'll fill out ``u8 *asc`` the additional sense code we'll fill out ``u8 *ascq`` the additional sense code qualifier we'll fill out **Description** Converts an ATA error into a SCSI error. Fill out pointers to SK, ASC, and ASCQ bytes for later use in fixed or descriptor format sense blocks. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjæwh]”hŒ Parameters”…”�”}”(hjèwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäwubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M&hjàwubjœ)�”}”(hhh]”(j¡)�”}”(hŒ7``u8 drv_stat`` value contained in ATA status register ”h]”(j§)�”}”(hŒ``u8 drv_stat``”h]”j\)�”}”(hjxh]”hŒ u8 drv_stat”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M#hjÿwubj·)�”}”(hhh]”hì)�”}”(hŒ&value contained in ATA status register”h]”hŒ&value contained in ATA status register”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxh´M#hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÿwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jxh´M#hjüwubj¡)�”}”(hŒ5``u8 drv_err`` value contained in ATA error register ”h]”(j§)�”}”(hŒ``u8 drv_err``”h]”j\)�”}”(hj>xh]”hŒ u8 drv_err”…”�”}”(hj@xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M(hj:yubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjMyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M,hj:yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jLyh´M(hjàwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_gen_ata_sense (C function)”Œc.ata_gen_ata_sense”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2void ata_gen_ata_sense (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ1void ata_gen_ata_sense(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‚yh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj~yh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÑubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘yh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~yh²hh³j�yh´MÑubj�)�”}”(hŒata_gen_ata_sense”h]”j[)�”}”(hŒata_gen_ata_sense”h]”hŒata_gen_ata_sense”…”�”}”(hj£yh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŸyubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj~yh²hh³j�yh´MÑubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¿yh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj»yubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»yubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjÝyh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jßyŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¥ysbŒc.ata_gen_ata_sense”†”asbuh1hhj»yubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»yubj)�”}”(hjS h]”hŒ*”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj»yubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj»yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj·yubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj~yh²hh³j�yh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjzyh²hh³j�yh´MÑubah}”(h]”juyah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j�yh´MÑhjwyh²hubj)�”}”(hhh]”hì)�”}”(hŒ!generate a SCSI fixed sense block”h]”hŒ!generate a SCSI fixed sense block”…”�”}”(hjBzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÑhj?zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwyh²hh³j�yh´MÑubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jZzj1jZzj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒ·**Parameters** ``struct ata_queued_cmd *qc`` Command that we are erroring out **Description** Generate sense block for a failed ATA command **qc**. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjdzh]”hŒ Parameters”…”�”}”(hjfzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjbzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÕhj^zubjœ)�”}”(hhh]”j¡)�”}”(hŒ?``struct ata_queued_cmd *qc`` Command that we are erroring out ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjƒzh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj�zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÒhj}zubj·)�”}”(hhh]”hì)�”}”(hŒ Command that we are erroring out”h]”hŒ Command that we are erroring out”…”�”}”(hjœzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j˜zh´MÒhj™zubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj}zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j˜zh´MÒhjzzubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj^zubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¾zh]”hŒ Description”…”�”}”(hjÀzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¼zubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÔhj^zubj)�”}”(hŒEGenerate sense block for a failed ATA command **qc**. LOCKING: None.”h]”(hì)�”}”(hŒ5Generate sense block for a failed ATA command **qc**.”h]”(hŒ.Generate sense block for a failed ATA command ”…”�”}”(hjØzh²hh³Nh´Nubj )�”}”(hŒ**qc**”h]”hŒqc”…”�”}”(hjàzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØzubhŒ.”…”�”}”(hjØzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÓhjÔzubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjùzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÕhjÔzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jøzh´MÓhj^zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%ata_scsi_start_stop_xlat (C function)”Œc.ata_scsi_start_stop_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒAunsigned int ata_scsi_start_stop_xlat (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ@unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj.{h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj*{h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj={h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*{h²hh³j<{h´MØubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjK{h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj*{h²hh³j<{h´MØubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY{h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj*{h²hh³j<{h´MØubj�)�”}”(hŒata_scsi_start_stop_xlat”h]”j[)�”}”(hŒata_scsi_start_stop_xlat”h]”hŒata_scsi_start_stop_xlat”…”�”}”(hjk{h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjg{ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj*{h²hh³j<{h´MØubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‡{h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjƒ{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”{h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒ{ubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj¥{h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¢{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j§{Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjm{sbŒc.ata_scsi_start_stop_xlat”†”asbuh1hhjƒ{ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ{h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjƒ{ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÓ{h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjƒ{ubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjà{h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjƒ{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj{ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj*{h²hh³j<{h´MØubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj&{h²hh³j<{h´MØubah}”(h]”j!{ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j<{h´MØhj#{h²hubj)�”}”(hhh]”hì)�”}”(hŒ&Translate SCSI START STOP UNIT command”h]”hŒ&Translate SCSI START STOP UNIT command”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MØhj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#{h²hh³j<{h´MØubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j"|j1j"|j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX¼**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile **Description** Sets up an ATA taskfile to issue STANDBY (to stop) or READ VERIFY (to start). Perhaps these commands should be preceded by CHECK POWER MODE to see what power mode the device is already in. [See SAT revision 5 at www.t10.org] LOCKING: spin_lock_irqsave(host lock) **Return** Zero on success, non-zero on error.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj,|h]”hŒ Parameters”…”�”}”(hj.|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÜhj&|ubjœ)�”}”(hhh]”j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjK|h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjM|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjI|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÙhjE|ubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hjd|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`|h´MÙhja|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjE|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j`|h´MÙhjB|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj&|ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj†|h]”hŒ Description”…”�”}”(hjˆ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj„|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÛhj&|ubj)�”}”(hXSets up an ATA taskfile to issue STANDBY (to stop) or READ VERIFY (to start). Perhaps these commands should be preceded by CHECK POWER MODE to see what power mode the device is already in. [See SAT revision 5 at www.t10.org] LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒàSets up an ATA taskfile to issue STANDBY (to stop) or READ VERIFY (to start). Perhaps these commands should be preceded by CHECK POWER MODE to see what power mode the device is already in. [See SAT revision 5 at www.t10.org]”h]”hŒàSets up an ATA taskfile to issue STANDBY (to stop) or READ VERIFY (to start). Perhaps these commands should be preceded by CHECK POWER MODE to see what power mode the device is already in. [See SAT revision 5 at www.t10.org]”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÚhjœ|ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj¯|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mßhjœ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j®|h´MÚhj&|ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjÆ|h]”hŒReturn”…”�”}”(hjÈ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mâhj&|ubhì)�”}”(hŒ#Zero on success, non-zero on error.”h]”hŒ#Zero on success, non-zero on error.”…”�”}”(hjÜ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mãhj&|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_scsi_flush_xlat (C function)”Œc.ata_scsi_flush_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj"~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j=~h´Mhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj~ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjc~h]”hŒ Description”…”�”}”(hje~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj~ubj)�”}”(hŒhSets up an ATA taskfile to issue FLUSH CACHE or FLUSH CACHE EXT. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ@Sets up an ATA taskfile to issue FLUSH CACHE or FLUSH CACHE EXT.”h]”hŒ@Sets up an ATA taskfile to issue FLUSH CACHE or FLUSH CACHE EXT.”…”�”}”(hj}~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhjy~ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjŒ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhjy~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‹~h´Mhj~ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj£~h]”hŒReturn”…”�”}”(hj¥~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj~ubhì)�”}”(hŒ#Zero on success, non-zero on error.”h]”hŒ#Zero on success, non-zero on error.”…”�”}”(hj¹~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒscsi_6_lba_len (C function)”Œc.scsi_6_lba_len”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9void scsi_6_lba_len (const u8 *cdb, u64 *plba, u32 *plen)”h]”j")�”}”(hŒ8void scsi_6_lba_len(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjè~h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjä~h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M4ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷~h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjä~h²hh³jö~h´M4ubj�)�”}”(hŒscsi_6_lba_len”h]”j[)�”}”(hŒscsi_6_lba_len”h]”hŒscsi_6_lba_len”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjä~h²hh³jö~h´M4ubjª)�”}”(hŒ%(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j°)�”}”(hŒ const u8 *cdb”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jEŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj sbŒc.scsi_6_lba_len”†”asbuh1hhj!ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj!ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj!ubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubj°)�”}”(hŒ u64 *plba”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jœŒmodname”NŒ classname”Njwjz)�”}”j}]”j_Œc.scsi_6_lba_len”†”asbuh1hhj“ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj“ubj[)�”}”(hŒplba”h]”hŒplba”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubj°)�”}”(hŒ u32 *plen”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jñŒmodname”NŒ classname”Njwjz)�”}”j}]”j_Œc.scsi_6_lba_len”†”asbuh1hhjèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjèubj)�”}”(hjS h]”hŒ*”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjèubj[)�”}”(hŒplen”h]”hŒplen”…”�”}”(hj(€h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjä~h²hh³jö~h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjà~h²hh³jö~h´M4ubah}”(h]”jÛ~ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jö~h´M4hjÝ~h²hubj)�”}”(hhh]”hì)�”}”(hŒGet LBA and transfer length”h]”hŒGet LBA and transfer length”…”�”}”(hjR€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M4hjO€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ~h²hh³jö~h´M4ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jj€j1jj€j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒÉ**Parameters** ``const u8 *cdb`` SCSI command to translate ``u64 *plba`` the LBA ``u32 *plen`` the transfer length **Description** Calculate LBA and transfer length for 6-byte commands.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjt€h]”hŒ Parameters”…”�”}”(hjv€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjr€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M8hjn€ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ,``const u8 *cdb`` SCSI command to translate ”h]”(j§)�”}”(hŒ``const u8 *cdb``”h]”j\)�”}”(hj“€h]”hŒ const u8 *cdb”…”�”}”(hj•€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‘€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M5hj�€ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to translate”h]”hŒSCSI command to translate”…”�”}”(hj¬€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¨€h´M5hj©€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj�€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¨€h´M5hjŠ€ubj¡)�”}”(hŒ``u64 *plba`` the LBA ”h]”(j§)�”}”(hŒ ``u64 *plba``”h]”j\)�”}”(hjÌ€h]”hŒ u64 *plba”…”�”}”(hj΀h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÊ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M:hjÆ€ubj·)�”}”(hhh]”hì)�”}”(hŒthe LBA”h]”hŒthe LBA”…”�”}”(hjå€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³já€h´M:hjâ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÆ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³já€h´M:hjŠ€ubj¡)�”}”(hŒ"``u32 *plen`` the transfer length ”h]”(j§)�”}”(hŒ ``u32 *plen``”h]”j\)�”}”(hj�h]”hŒ u32 *plen”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M;hjÿ€ubj·)�”}”(hhh]”hì)�”}”(hŒthe transfer length”h]”hŒthe transfer length”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´M;hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÿ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�h´M;hjŠ€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjn€ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj@�h]”hŒ Description”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M=hjn€ubj)�”}”(hŒ6Calculate LBA and transfer length for 6-byte commands.”h]”hì)�”}”(hjX�h]”hŒ6Calculate LBA and transfer length for 6-byte commands.”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M6hjV�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jg�h´M6hjn€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒscsi_10_lba_len (C function)”Œc.scsi_10_lba_len”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:void scsi_10_lba_len (const u8 *cdb, u64 *plba, u32 *plen)”h]”j")�”}”(hŒ9void scsi_10_lba_len(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjŠ�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŠ�h²hh³jœ�h´MDubj�)�”}”(hŒscsi_10_lba_len”h]”j[)�”}”(hŒscsi_10_lba_len”h]”hŒscsi_10_lba_len”…”�”}”(hj¯�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj«�ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjŠ�h²hh³jœ�h´MDubjª)�”}”(hŒ%(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j°)�”}”(hŒ const u8 *cdb”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjË�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÇ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇ�ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjæ�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jë�Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj±�sbŒc.scsi_10_lba_len”†”asbuh1hhjÇ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÇ�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÇ�ubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hj$‚h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÇ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÃ�ubj°)�”}”(hŒ u64 *plba”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj@‚h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj=‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jB‚Œmodname”NŒ classname”Njwjz)�”}”j}]”j‚Œc.scsi_10_lba_len”†”asbuh1hhj9‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj9‚ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjl‚h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj9‚ubj[)�”}”(hŒplba”h]”hŒplba”…”�”}”(hjy‚h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj9‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÃ�ubj°)�”}”(hŒ u32 *plen”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj•‚h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j—‚Œmodname”NŒ classname”Njwjz)�”}”j}]”j‚Œc.scsi_10_lba_len”†”asbuh1hhjŽ‚ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³‚h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjŽ‚ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÁ‚h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjŽ‚ubj[)�”}”(hŒplen”h]”hŒplen”…”�”}”(hj΂h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŽ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÃ�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjŠ�h²hh³jœ�h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj†�h²hh³jœ�h´MDubah}”(h]”j��ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jœ�h´MDhjƒ�h²hubj)�”}”(hhh]”hì)�”}”(hŒGet LBA and transfer length”h]”hŒGet LBA and transfer length”…”�”}”(hjø‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MDhjõ‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ�h²hh³jœ�h´MDubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jƒj1jƒj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒÊ**Parameters** ``const u8 *cdb`` SCSI command to translate ``u64 *plba`` the LBA ``u32 *plen`` the transfer length **Description** Calculate LBA and transfer length for 10-byte commands.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjƒh]”hŒ Parameters”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MHhjƒubjœ)�”}”(hhh]”(j¡)�”}”(hŒ,``const u8 *cdb`` SCSI command to translate ”h]”(j§)�”}”(hŒ``const u8 *cdb``”h]”j\)�”}”(hj9ƒh]”hŒ const u8 *cdb”…”�”}”(hj;ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj7ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MEhj3ƒubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to translate”h]”hŒSCSI command to translate”…”�”}”(hjRƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jNƒh´MEhjOƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj3ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jNƒh´MEhj0ƒubj¡)�”}”(hŒ``u64 *plba`` the LBA ”h]”(j§)�”}”(hŒ ``u64 *plba``”h]”j\)�”}”(hjrƒh]”hŒ u64 *plba”…”�”}”(hjtƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjpƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MJhjlƒubj·)�”}”(hhh]”hì)�”}”(hŒthe LBA”h]”hŒthe LBA”…”�”}”(hj‹ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡ƒh´MJhjˆƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjlƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‡ƒh´MJhj0ƒubj¡)�”}”(hŒ"``u32 *plen`` the transfer length ”h]”(j§)�”}”(hŒ ``u32 *plen``”h]”j\)�”}”(hj«ƒh]”hŒ u32 *plen”…”�”}”(hj­ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj©ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MKhj¥ƒubj·)�”}”(hhh]”hì)�”}”(hŒthe transfer length”h]”hŒthe transfer length”…”�”}”(hjăh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÀƒh´MKhjÁƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¥ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÀƒh´MKhj0ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjƒubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjæƒh]”hŒ Description”…”�”}”(hjèƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjäƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MMhjƒubj)�”}”(hŒ7Calculate LBA and transfer length for 10-byte commands.”h]”hì)�”}”(hjþƒh]”hŒ7Calculate LBA and transfer length for 10-byte commands.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MFhjüƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j „h´MFhjƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒscsi_16_lba_len (C function)”Œc.scsi_16_lba_len”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:void scsi_16_lba_len (const u8 *cdb, u64 *plba, u32 *plen)”h]”j")�”}”(hŒ9void scsi_16_lba_len(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4„h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj0„h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MTubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj0„h²hh³jB„h´MTubj�)�”}”(hŒscsi_16_lba_len”h]”j[)�”}”(hŒscsi_16_lba_len”h]”hŒscsi_16_lba_len”…”�”}”(hjU„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjQ„ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj0„h²hh³jB„h´MTubjª)�”}”(hŒ%(const u8 *cdb, u64 *plba, u32 *plen)”h]”(j°)�”}”(hŒ const u8 *cdb”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjq„h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjm„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm„ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŒ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‘„Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjW„sbŒc.scsi_16_lba_len”†”asbuh1hhjm„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯„h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjm„ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj½„h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjm„ubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hjÊ„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjm„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji„ubj°)�”}”(hŒ u64 *plba”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjæ„h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjã„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j脌modname”NŒ classname”Njwjz)�”}”j}]”j«„Œc.scsi_16_lba_len”†”asbuh1hhjß„ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjß„ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjß„ubj[)�”}”(hŒplba”h]”hŒplba”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjß„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji„ubj°)�”}”(hŒ u32 *plen”h]”(h)�”}”(hhh]”j[)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj;…h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj8…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j=…Œmodname”NŒ classname”Njwjz)�”}”j}]”j«„Œc.scsi_16_lba_len”†”asbuh1hhj4…ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY…h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj4…ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjg…h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj4…ubj[)�”}”(hŒplen”h]”hŒplen”…”�”}”(hjt…h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj4…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hji„ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj0„h²hh³jB„h´MTubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj,„h²hh³jB„h´MTubah}”(h]”j'„ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jB„h´MThj)„h²hubj)�”}”(hhh]”hì)�”}”(hŒGet LBA and transfer length”h]”hŒGet LBA and transfer length”…”�”}”(hjž…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MThj›…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)„h²hh³jB„h´MTubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¶…j1j¶…j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒÊ**Parameters** ``const u8 *cdb`` SCSI command to translate ``u64 *plba`` the LBA ``u32 *plen`` the transfer length **Description** Calculate LBA and transfer length for 16-byte commands.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÀ…h]”hŒ Parameters”…”�”}”(hjÂ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MXhjº…ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ,``const u8 *cdb`` SCSI command to translate ”h]”(j§)�”}”(hŒ``const u8 *cdb``”h]”j\)�”}”(hjß…h]”hŒ const u8 *cdb”…”�”}”(hjá…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÝ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MUhjÙ…ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to translate”h]”hŒSCSI command to translate”…”�”}”(hjø…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jô…h´MUhjõ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÙ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jô…h´MUhjÖ…ubj¡)�”}”(hŒ``u64 *plba`` the LBA ”h]”(j§)�”}”(hŒ ``u64 *plba``”h]”j\)�”}”(hj†h]”hŒ u64 *plba”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MZhj†ubj·)�”}”(hhh]”hì)�”}”(hŒthe LBA”h]”hŒthe LBA”…”�”}”(hj1†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-†h´MZhj.†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j-†h´MZhjÖ…ubj¡)�”}”(hŒ"``u32 *plen`` the transfer length ”h]”(j§)�”}”(hŒ ``u32 *plen``”h]”j\)�”}”(hjQ†h]”hŒ u32 *plen”…”�”}”(hjS†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjO†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M[hjK†ubj·)�”}”(hhh]”hì)�”}”(hŒthe transfer length”h]”hŒthe transfer length”…”�”}”(hjj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jf†h´M[hjg†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjK†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jf†h´M[hjÖ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjº…ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjŒ†h]”hŒ Description”…”�”}”(hjކh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjІubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M]hjº…ubj)�”}”(hŒ7Calculate LBA and transfer length for 16-byte commands.”h]”hì)�”}”(hj¤†h]”hŒ7Calculate LBA and transfer length for 16-byte commands.”…”�”}”(hj¦†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MVhj¢†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j³†h´MVhjº…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒscsi_dld (C function)”Œ c.scsi_dld”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒint scsi_dld (const u8 *cdb)”h]”j")�”}”(hŒint scsi_dld(const u8 *cdb)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ†h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÖ†h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé†h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖ†h²hh³jè†h´Mdubj�)�”}”(hŒscsi_dld”h]”j[)�”}”(hŒscsi_dld”h]”hŒscsi_dld”…”�”}”(hjû†h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj÷†ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÖ†h²hh³jè†h´Mdubjª)�”}”(hŒ(const u8 *cdb)”h]”j°)�”}”(hŒ const u8 *cdb”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj5‡h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj2‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j7‡Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjý†sbŒ c.scsi_dld”†”asbuh1hhj‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU‡h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjc‡h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj‡ubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hjp‡h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‡ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÖ†h²hh³jè†h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÒ†h²hh³jè†h´Mdubah}”(h]”j͆ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jè†h´Mdhjφh²hubj)�”}”(hhh]”hì)�”}”(hŒ#Get duration limit descriptor index”h]”hŒ#Get duration limit descriptor index”…”�”}”(hjš‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdhj—‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjφh²hh³jè†h´Mdubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j²‡j1j²‡j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒ«**Parameters** ``const u8 *cdb`` SCSI command to translate **Description** Returns the dld bits indicating the index of a command duration limit descriptor.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¼‡h]”hŒ Parameters”…”�”}”(hj¾‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjº‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhhj¶‡ubjœ)�”}”(hhh]”j¡)�”}”(hŒ,``const u8 *cdb`` SCSI command to translate ”h]”(j§)�”}”(hŒ``const u8 *cdb``”h]”j\)�”}”(hjÛ‡h]”hŒ const u8 *cdb”…”�”}”(hj݇h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÙ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MehjÕ‡ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to translate”h]”hŒSCSI command to translate”…”�”}”(hjô‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jð‡h´Mehjñ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÕ‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jð‡h´MehjÒ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¶‡ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjˆh]”hŒ Description”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mghj¶‡ubj)�”}”(hŒQReturns the dld bits indicating the index of a command duration limit descriptor.”h]”hì)�”}”(hŒQReturns the dld bits indicating the index of a command duration limit descriptor.”h]”hŒQReturns the dld bits indicating the index of a command duration limit descriptor.”…”�”}”(hj0ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mfhj,ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j>ˆh´Mfhj¶‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ata_scsi_verify_xlat (C function)”Œc.ata_scsi_verify_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ=unsigned int ata_scsi_verify_xlat (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZˆh²hh³jsˆh´Mpubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jY‰j1jY‰j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile **Description** Converts SCSI VERIFY command to an ATA READ VERIFY command. LOCKING: spin_lock_irqsave(host lock) **Return** Zero on success, non-zero on error.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjc‰h]”hŒ Parameters”…”�”}”(hje‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hja‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mthj]‰ubjœ)�”}”(hhh]”j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj‚‰h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj„‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj€‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mqhj|‰ubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hj›‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—‰h´Mqhj˜‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj|‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j—‰h´Mqhjy‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj]‰ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj½‰h]”hŒ Description”…”�”}”(hj¿‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj»‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mshj]‰ubj)�”}”(hŒcConverts SCSI VERIFY command to an ATA READ VERIFY command. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ;Converts SCSI VERIFY command to an ATA READ VERIFY command.”h]”hŒ;Converts SCSI VERIFY command to an ATA READ VERIFY command.”…”�”}”(hj׉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MrhjÓ‰ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjæ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MthjÓ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jå‰h´Mrhj]‰ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjý‰h]”hŒReturn”…”�”}”(hjÿ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjû‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mwhj]‰ubhì)�”}”(hŒ#Zero on success, non-zero on error.”h]”hŒ#Zero on success, non-zero on error.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mxhj]‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_rw_xlat (C function)”Œc.ata_scsi_rw_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ9unsigned int ata_scsi_rw_xlat (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒ8unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjBŠh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>Šh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>Šh²hh³jPŠh´Mÿubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj_Šh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj>Šh²hh³jPŠh´Mÿubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj>Šh²hh³jPŠh´Mÿubj�)�”}”(hŒata_scsi_rw_xlat”h]”j[)�”}”(hŒata_scsi_rw_xlat”h]”hŒata_scsi_rw_xlat”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{Šubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj>Šh²hh³jPŠh´Mÿubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj›Šh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj—Šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Šh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—Šubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj¹Šh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¶Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j»ŠŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj�ŠsbŒc.ata_scsi_rw_xlat”†”asbuh1hhj—Šubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙŠh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—Šubj)�”}”(hjS h]”hŒ*”…”�”}”(hjçŠh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj—Šubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjôŠh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj—Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj“Šubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj>Šh²hh³jPŠh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj:Šh²hh³jPŠh´Mÿubah}”(h]”j5Šah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jPŠh´Mÿhj7Šh²hubj)�”}”(hhh]”hì)�”}”(hŒ*Translate SCSI r/w command into an ATA one”h]”hŒ*Translate SCSI r/w command into an ATA one”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mÿhj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7Šh²hh³jPŠh´Mÿubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j6‹j1j6‹j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile **Description** Converts any of six SCSI read/write commands into the ATA counterpart, including starting sector (LBA), sector count, and taking into account the device's LBA48 support. Commands ``READ_6``, ``READ_10``, ``READ_16``, ``WRITE_6``, ``WRITE_10``, and ``WRITE_16`` are currently supported. LOCKING: spin_lock_irqsave(host lock) **Return** Zero on success, non-zero on error.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj@‹h]”hŒ Parameters”…”�”}”(hjB‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj>‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj:‹ubjœ)�”}”(hhh]”j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj_‹h]”hŒstruct ata_queued_cmd *qc”…”�”}”(hja‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj]‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MhjY‹ubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hjx‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jt‹h´Mhju‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjY‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jt‹h´MhjV‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj:‹ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjš‹h]”hŒ Description”…”�”}”(hjœ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mh•j:‹ubj)�”}”(hXFConverts any of six SCSI read/write commands into the ATA counterpart, including starting sector (LBA), sector count, and taking into account the device's LBA48 support. Commands ``READ_6``, ``READ_10``, ``READ_16``, ``WRITE_6``, ``WRITE_10``, and ``WRITE_16`` are currently supported. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ©Converts any of six SCSI read/write commands into the ATA counterpart, including starting sector (LBA), sector count, and taking into account the device's LBA48 support.”h]”hŒ«Converts any of six SCSI read/write commands into the ATA counterpart, including starting sector (LBA), sector count, and taking into account the device’s LBA48 support.”…”�”}”(hj´‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj°‹ubhì)�”}”(hŒsCommands ``READ_6``, ``READ_10``, ``READ_16``, ``WRITE_6``, ``WRITE_10``, and ``WRITE_16`` are currently supported.”h]”(hŒ Commands ”…”�”}”(hjËh²hh³Nh´Nubj\)�”}”(hŒ ``READ_6``”h]”hŒREAD_6”…”�”}”(hjË‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ, ”…”�”}”(hjËh²hh³Nh´Nubj\)�”}”(hŒ ``READ_10``”h]”hŒREAD_10”…”�”}”(hjÝ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ, ”…”�”}”hjËsbj\)�”}”(hŒ ``READ_16``”h]”hŒREAD_16”…”�”}”(hjï‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ, ”…”�”}”hjËsbj\)�”}”(hŒ ``WRITE_6``”h]”hŒWRITE_6”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ, ”…”�”}”hjËsbj\)�”}”(hŒ ``WRITE_10``”h]”hŒWRITE_10”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ, and ”…”�”}”(hjËh²hh³Nh´Nubj\)�”}”(hŒ ``WRITE_16``”h]”hŒWRITE_16”…”�”}”(hj%Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjËubhŒ are currently supported.”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj°‹ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj>Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj°‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‹h´Mhj:‹ubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjUŒh]”hŒReturn”…”�”}”(hjWŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj:‹ubhì)�”}”(hŒ#Zero on success, non-zero on error.”h]”hŒ#Zero on success, non-zero on error.”…”�”}”(hjkŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj:‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_translate (C function)”Œc.ata_scsi_translate”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒvint ata_scsi_translate (struct ata_device *dev, struct scsi_cmnd *cmd, ata_xlat_func_t xlat_func, struct ata_port *ap)”h]”j")�”}”(hŒuint ata_scsi_translate(struct ata_device *dev, struct scsi_cmnd *cmd, ata_xlat_func_t xlat_func, struct ata_port *ap)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjšŒh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj–Œh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‡ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Œh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj–Œh²hh³j¨Œh´M‡ubj�)�”}”(hŒata_scsi_translate”h]”j[)�”}”(hŒata_scsi_translate”h]”hŒata_scsi_translate”…”�”}”(hj»Œh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj·Œubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj–Œh²hh³j¨Œh´M‡ubjª)�”}”(hŒ_(struct ata_device *dev, struct scsi_cmnd *cmd, ata_xlat_func_t xlat_func, struct ata_port *ap)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj׌h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÓŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäŒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÓŒubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjõŒh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjòŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j÷ŒŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj½ŒsbŒc.ata_scsi_translate”†”asbuh1hhjÓŒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÓŒubj)�”}”(hjS h]”hŒ*”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÓŒubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÓŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÏŒubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjE�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjE�ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjg�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjd�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”ji�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.ata_scsi_translate”†”asbuh1hhjE�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjE�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjE�ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjE�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÏŒubj°)�”}”(hŒata_xlat_func_t xlat_func”h]”(h)�”}”(hhh]”j[)�”}”(hŒata_xlat_func_t”h]”hŒata_xlat_func_t”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¹�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¾�Œmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.ata_scsi_translate”†”asbuh1hhjµ�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjµ�ubj[)�”}”(hŒ xlat_func”h]”hŒ xlat_func”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjµ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÏŒubj°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjý�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjý�ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j!ŽŒmodname”NŒ classname”Njwjz)�”}”j}]”j�Œc.ata_scsi_translate”†”asbuh1hhjý�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Žh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjý�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjKŽh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjý�ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjXŽh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjý�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÏŒubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj–Œh²hh³j¨Œh´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj’Œh²hh³j¨Œh´M‡ubah}”(h]”j�Œah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¨Œh´M‡hj�Œh²hubj)�”}”(hhh]”hì)�”}”(hŒ/Translate then issue SCSI command to ATA device”h]”hŒ/Translate then issue SCSI command to ATA device”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‡hjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Œh²hh³j¨Œh´M‡ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jšŽj1jšŽj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_device *dev`` ATA device to which the command is addressed ``struct scsi_cmnd *cmd`` SCSI command to execute ``ata_xlat_func_t xlat_func`` Actor which translates **cmd** to an ATA taskfile ``struct ata_port *ap`` ATA port of interest **Description** Our ->queuecommand() function has decided that the SCSI command issued can be directly translated into an ATA command, rather than handled internally. This function sets up an ata_queued_cmd structure for the SCSI command, and sends that ata_queued_cmd to the hardware. The xlat_func argument (actor) returns 0 if ready to execute ATA command, else 1 to finish translation. If 1 is returned then cmd->result (and possibly cmd->sense_buffer) are assumed to be set reflecting an error condition or clean (early) termination. LOCKING: spin_lock_irqsave(host lock) **Return** 0 on success, SCSI_ML_QUEUE_DEVICE_BUSY or SCSI_MLQUEUE_HOST_BUSY if the command needs to be deferred.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¤Žh]”hŒ Parameters”…”�”}”(hj¦Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¢Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‹hjžŽubjœ)�”}”(hhh]”(j¡)�”}”(hŒH``struct ata_device *dev`` ATA device to which the command is addressed ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÃŽh]”hŒstruct ata_device *dev”…”�”}”(hjÅŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÁŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mˆhj½Žubj·)�”}”(hhh]”hì)�”}”(hŒ,ATA device to which the command is addressed”h]”hŒ,ATA device to which the command is addressed”…”�”}”(hjÜŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØŽh´MˆhjÙŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj½Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jØŽh´MˆhjºŽubj¡)�”}”(hŒ2``struct scsi_cmnd *cmd`` SCSI command to execute ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjüŽh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjþŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjúŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‰hjöŽubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command to execute”h]”hŒSCSI command to execute”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´M‰hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjöŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�h´M‰hjºŽubj¡)�”}”(hŒP``ata_xlat_func_t xlat_func`` Actor which translates **cmd** to an ATA taskfile ”h]”(j§)�”}”(hŒ``ata_xlat_func_t xlat_func``”h]”j\)�”}”(hj5�h]”hŒata_xlat_func_t xlat_func”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj3�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MŠhj/�ubj·)�”}”(hhh]”hì)�”}”(hŒ1Actor which translates **cmd** to an ATA taskfile”h]”(hŒActor which translates ”…”�”}”(hjN�h²hh³Nh´Nubj )�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjN�ubhŒ to an ATA taskfile”…”�”}”(hjN�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJ�h´MŠhjK�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj/�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jJ�h´MŠhjºŽubj¡)�”}”(hŒ-``struct ata_port *ap`` ATA port of interest ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj€�h]”hŒstruct ata_port *ap”…”�”}”(hj‚�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj~�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‹hjz�ubj·)�”}”(hhh]”hì)�”}”(hŒATA port of interest”h]”hŒATA port of interest”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•�h´M‹hj–�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjz�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j•�h´M‹hjºŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjžŽubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj»�h]”hŒ Description”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¹�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M�hjžŽubj)�”}”(hX4Our ->queuecommand() function has decided that the SCSI command issued can be directly translated into an ATA command, rather than handled internally. This function sets up an ata_queued_cmd structure for the SCSI command, and sends that ata_queued_cmd to the hardware. The xlat_func argument (actor) returns 0 if ready to execute ATA command, else 1 to finish translation. If 1 is returned then cmd->result (and possibly cmd->sense_buffer) are assumed to be set reflecting an error condition or clean (early) termination. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒ–Our ->queuecommand() function has decided that the SCSI command issued can be directly translated into an ATA command, rather than handled internally.”h]”hŒ–Our ->queuecommand() function has decided that the SCSI command issued can be directly translated into an ATA command, rather than handled internally.”…”�”}”(hjÕ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MŒhjÑ�ubhì)�”}”(hŒvThis function sets up an ata_queued_cmd structure for the SCSI command, and sends that ata_queued_cmd to the hardware.”h]”hŒvThis function sets up an ata_queued_cmd structure for the SCSI command, and sends that ata_queued_cmd to the hardware.”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M�hjÑ�ubhì)�”}”(hŒüThe xlat_func argument (actor) returns 0 if ready to execute ATA command, else 1 to finish translation. If 1 is returned then cmd->result (and possibly cmd->sense_buffer) are assumed to be set reflecting an error condition or clean (early) termination.”h]”hŒüThe xlat_func argument (actor) returns 0 if ready to execute ATA command, else 1 to finish translation. If 1 is returned then cmd->result (and possibly cmd->sense_buffer) are assumed to be set reflecting an error condition or clean (early) termination.”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M“hjÑ�ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M™hjÑ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jã�h´MŒhjžŽubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj�h]”hŒReturn”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MœhjžŽubhì)�”}”(hŒf0 on success, SCSI_ML_QUEUE_DEVICE_BUSY or SCSI_MLQUEUE_HOST_BUSY if the command needs to be deferred.”h]”hŒf0 on success, SCSI_ML_QUEUE_DEVICE_BUSY or SCSI_MLQUEUE_HOST_BUSY if the command needs to be deferred.”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M�hjžŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_rbuf_fill (C function)”Œc.ata_scsi_rbuf_fill”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ—void ata_scsi_rbuf_fill (struct ata_device *dev, struct scsi_cmnd *cmd, unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf))”h]”j")�”}”(hŒ–void ata_scsi_rbuf_fill(struct ata_device *dev, struct scsi_cmnd *cmd, unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf))”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjZ�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÌubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZ�h²hh³jl�h´MÌubj�)�”}”(hŒata_scsi_rbuf_fill”h]”j[)�”}”(hŒata_scsi_rbuf_fill”h]”hŒata_scsi_rbuf_fill”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj{�ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjZ�h²hh³jl�h´MÌubjª)�”}”(hŒ(struct ata_device *dev, struct scsi_cmnd *cmd, unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf))”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj—�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—�ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¶�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j»�Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj��sbŒc.ata_scsi_rbuf_fill”†”asbuh1hhj—�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ�h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—�ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj—�ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj—�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj“�ubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj ‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ‘ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj+‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj(‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j-‘Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ�Œc.ata_scsi_rbuf_fill”†”asbuh1hhj ‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjW‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj ‘ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjd‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj“�ubj°)�”}”(hŒNunsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj™‘h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§‘h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj)�”}”(hj8Gh]”hŒ(”…”�”}”(hjµ‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj[)�”}”(hŒactor”h]”hŒactor”…”�”}”(hjÏ‘h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjy‘ubj)�”}”(hjaGh]”hŒ)”…”�”}”(hjÝ‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj)�”}”(hj8Gh]”hŒ(”…”�”}”(hjê‘h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hj÷‘h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j’Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ�Œc.ata_scsi_rbuf_fill”†”asbuh1hhjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjA’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjN’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjy‘ubj)�”}”(hŒ,”h]”hŒ,”…”�”}”(hj\’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjx’h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj–’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj“’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j˜’Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ�Œc.ata_scsi_rbuf_fill”†”asbuh1hhjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÂ’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÏ’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjy‘ubj)�”}”(hj^’h]”hŒ,”…”�”}”(hjÝ’h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjû’h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjø’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jý’Œmodname”NŒ classname”Njwjz)�”}”j}]”jÕ�Œc.ata_scsi_rbuf_fill”†”asbuh1hhjy‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjy‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj'“h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubj[)�”}”(hŒrbuf”h]”hŒrbuf”…”�”}”(hj4“h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjy‘ubj)�”}”(hjaGh]”hŒ)”…”�”}”(hjB“h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjy‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj“�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjZ�h²hh³jl�h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjV�h²hh³jl�h´MÌubah}”(h]”jQ�ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jl�h´MÌhjS�h²hubj)�”}”(hhh]”hì)�”}”(hŒ#wrapper for SCSI command simulators”h]”hŒ#wrapper for SCSI command simulators”…”�”}”(hjk“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÌhjh“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjS�h²hh³jl�h´MÌubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jƒ“j1jƒ“j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX±**Parameters** ``struct ata_device *dev`` Target device. ``struct scsi_cmnd *cmd`` SCSI command of interest. ``unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)`` Callback hook for desired SCSI command simulator **Description** Takes care of the hard work of simulating a SCSI command... Mapping the response buffer, calling the command's handler, and handling the handler's return value. This return value indicates whether the handler wishes the SCSI command to be completed successfully (0), or not (in which case cmd->result and sense buffer are assumed to be set). LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�“h]”hŒ Parameters”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÐhj‡“ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj¬“h]”hŒstruct ata_device *dev”…”�”}”(hj®“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjª“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÍhj¦“ubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hjÅ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÁ“h´MÍhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¦“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÁ“h´MÍhj£“ubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjå“h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjç“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjã“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÎhjß“ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hjþ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jú“h´MÎhjû“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjß“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jú“h´MÎhj£“ubj¡)�”}”(hŒ„``unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)`` Callback hook for desired SCSI command simulator ”h]”(j§)�”}”(hŒR``unsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)``”h]”j\)�”}”(hj”h]”hŒNunsigned int (*actor)(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÏhj”ubj·)�”}”(hhh]”hì)�”}”(hŒ0Callback hook for desired SCSI command simulator”h]”hŒ0Callback hook for desired SCSI command simulator”…”�”}”(hj7”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j3”h´MÏhj4”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j3”h´MÏhj£“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‡“ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjY”h]”hŒ Description”…”�”}”(hj[”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÑhj‡“ubj)�”}”(hX}Takes care of the hard work of simulating a SCSI command... Mapping the response buffer, calling the command's handler, and handling the handler's return value. This return value indicates whether the handler wishes the SCSI command to be completed successfully (0), or not (in which case cmd->result and sense buffer are assumed to be set). LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hXVTakes care of the hard work of simulating a SCSI command... Mapping the response buffer, calling the command's handler, and handling the handler's return value. This return value indicates whether the handler wishes the SCSI command to be completed successfully (0), or not (in which case cmd->result and sense buffer are assumed to be set).”h]”hXZTakes care of the hard work of simulating a SCSI command... Mapping the response buffer, calling the command’s handler, and handling the handler’s return value. This return value indicates whether the handler wishes the SCSI command to be completed successfully (0), or not (in which case cmd->result and sense buffer are assumed to be set).”…”�”}”(hjs”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÐhjo”ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj‚”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M×hjo”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�”h´MÐhj‡“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsiop_inq_std (C function)”Œc.ata_scsiop_inq_std”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒYunsigned int ata_scsiop_inq_std (struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”j")�”}”(hŒXunsigned int ata_scsiop_inq_std(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj·”h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj³”h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³”h²hh³jÅ”h´M÷ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÔ”h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj³”h²hh³jÅ”h´M÷ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ”h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj³”h²hh³jÅ”h´M÷ubj�)�”}”(hŒata_scsiop_inq_std”h]”j[)�”}”(hŒata_scsiop_inq_std”h]”hŒata_scsiop_inq_std”…”�”}”(hjô”h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjð”ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj³”h²hh³jÅ”h´M÷ubjª)�”}”(hŒ9(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj •ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj •ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj.•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj+•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j0•Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjö”sbŒc.ata_scsiop_inq_std”†”asbuh1hhj •ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj •ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj\•h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj •ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hji•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj •ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‚•h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj~•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~•ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¢•Œmodname”NŒ classname”Njwjz)�”}”j}]”jJ•Œc.ata_scsiop_inq_std”†”asbuh1hhj~•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾•h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj~•ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÌ•h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj~•ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÙ•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj~•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubj°)�”}”(hŒu8 *rbuf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjõ•h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjò•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j÷•Œmodname”NŒ classname”Njwjz)�”}”j}]”jJ•Œc.ata_scsiop_inq_std”†”asbuh1hhjî•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjî•ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj!–h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjî•ubj[)�”}”(hŒrbuf”h]”hŒrbuf”…”�”}”(hj.–h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjî•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj•ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj³”h²hh³jÅ”h´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¯”h²hh³jÅ”h´M÷ubah}”(h]”jª”ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÅ”h´M÷hj¬”h²hubj)�”}”(hhh]”hì)�”}”(hŒ!Simulate standard INQUIRY command”h]”hŒ!Simulate standard INQUIRY command”…”�”}”(hjX–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M÷hjU–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬”h²hh³jÅ”h´M÷ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jp–j1jp–j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXh**Parameters** ``struct ata_device *dev`` Target device. ``struct scsi_cmnd *cmd`` SCSI command of interest. ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. **Description** Returns standard device identification data associated with non-VPD INQUIRY command output. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjz–h]”hŒ Parameters”…”�”}”(hj|–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mûhjt–ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj™–h]”hŒstruct ata_device *dev”…”�”}”(hj›–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj—–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Møhj“–ubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hj²–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j®–h´Møhj¯–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj“–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j®–h´Møhj�–ubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjÒ–h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjÔ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjЖubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MùhjÌ–ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hjë–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jç–h´Mùhjè–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÌ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jç–h´Mùhj�–ubj¡)�”}”(hŒJ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. ”h]”(j§)�”}”(hŒ ``u8 *rbuf``”h]”j\)�”}”(hj —h]”hŒu8 *rbuf”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj —ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Múhj—ubj·)�”}”(hhh]”hì)�”}”(hŒªubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjcªh]”hŒstruct ata_device *dev”…”�”}”(hjeªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjaªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´ML hj]ªubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hj|ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jxªh´ML hjyªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj]ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jxªh´ML hjZªubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjœªh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjžªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjšªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MM hj–ªubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hjµªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j±ªh´MM hj²ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj–ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j±ªh´MM hjZªubj¡)�”}”(hŒJ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. ”h]”(j§)�”}”(hŒ ``u8 *rbuf``”h]”j\)�”}”(hjÕªh]”hŒu8 *rbuf”…”�”}”(hjתh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÓªubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MN hjϪubj·)�”}”(hhh]”hì)�”}”(hŒªubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj«h]”hŒ Description”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MP hj>ªubj)�”}”(hŒgReturn data for the VPD page B1h (Block Device Characteristics). LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ@Return data for the VPD page B1h (Block Device Characteristics).”h]”hŒ@Return data for the VPD page B1h (Block Device Characteristics).”…”�”}”(hj*«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MO hj&«ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj9«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MQ hj&«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8«h´MO hj>ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsiop_inq_b2 (C function)”Œc.ata_scsiop_inq_b2”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXunsigned int ata_scsiop_inq_b2 (struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”j")�”}”(hŒWunsigned int ata_scsiop_inq_b2(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjn«h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjj«h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mh ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjj«h²hh³j|«h´Mh ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹«h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjj«h²hh³j|«h´Mh ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjj«h²hh³j|«h´Mh ubj�)�”}”(hŒata_scsiop_inq_b2”h]”j[)�”}”(hŒata_scsiop_inq_b2”h]”hŒata_scsiop_inq_b2”…”�”}”(hj««h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj§«ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjj«h²hh³j|«h´Mh ubjª)�”}”(hŒ9(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÇ«h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ«h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjëubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjå«h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjâ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j竌modname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj­«sbŒc.ata_scsiop_inq_b2”†”asbuh1hhjëubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjëubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjëubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¿«ubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj9¬h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj5¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5¬ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjW¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjT¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jY¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬Œc.ata_scsiop_inq_b2”†”asbuh1hhj5¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju¬h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj5¬ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjƒ¬h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj5¬ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj�¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj5¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¿«ubj°)�”}”(hŒu8 *rbuf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¬¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj©¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j®¬Œmodname”NŒ classname”Njwjz)�”}”j}]”j¬Œc.ata_scsiop_inq_b2”†”asbuh1hhj¥¬ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʬh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥¬ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjجh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¥¬ubj[)�”}”(hŒrbuf”h]”hŒrbuf”…”�”}”(hjå¬h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¥¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¿«ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjj«h²hh³j|«h´Mh ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjf«h²hh³j|«h´Mh ubah}”(h]”ja«ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j|«h´Mh hjc«h²hubj)�”}”(hhh]”hì)�”}”(hŒ8Simulate INQUIRY VPD page B2, Logical Block Provisioning”h]”hŒ8Simulate INQUIRY VPD page B2, Logical Block Provisioning”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mh hj ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjc«h²hh³j|«h´Mh ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j'­j1j'­j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXF**Parameters** ``struct ata_device *dev`` Target device. ``struct scsi_cmnd *cmd`` SCSI command of interest. ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. **Description** Return data for the VPD page B2h (Logical Block Provisioning). LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj1­h]”hŒ Parameters”…”�”}”(hj3­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Ml hj+­ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjP­h]”hŒstruct ata_device *dev”…”�”}”(hjR­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjN­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mj hjJ­ubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hji­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³je­h´Mj hjf­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjJ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³je­h´Mj hjG­ubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hj‰­h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hj‹­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‡­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mk hjƒ­ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hj¢­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jž­h´Mk hjŸ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjƒ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jž­h´Mk hjG­ubj¡)�”}”(hŒJ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. ”h]”(j§)�”}”(hŒ ``u8 *rbuf``”h]”j\)�”}”(hj­h]”hŒu8 *rbuf”…”�”}”(hjÄ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÀ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Ml hj¼­ubj·)�”}”(hhh]”hì)�”}”(hŒReturn data for the VPD page B2h (Logical Block Provisioning).”h]”hŒ>Return data for the VPD page B2h (Logical Block Provisioning).”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mm hj®ubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj&®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mo hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%®h´Mm hj+­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsiop_inq_b6 (C function)”Œc.ata_scsiop_inq_b6”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒXunsigned int ata_scsiop_inq_b6 (struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”j")�”}”(hŒWunsigned int ata_scsiop_inq_b6(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj[®h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjW®h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW®h²hh³ji®h´M ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjx®h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjW®h²hh³ji®h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjW®h²hh³ji®h´M ubj�)�”}”(hŒata_scsiop_inq_b6”h]”j[)�”}”(hŒata_scsiop_inq_b6”h]”hŒata_scsiop_inq_b6”…”�”}”(hj˜®h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj”®ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjW®h²hh³ji®h´M ubjª)�”}”(hŒ9(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj´®h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj°®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°®ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÒ®h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÏ®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÔ®Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjš®sbŒc.ata_scsiop_inq_b6”†”asbuh1hhj°®ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò®h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj°®ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj°®ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj°®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¬®ubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj&¯h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj"¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"¯ubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjD¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjA¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jF¯Œmodname”NŒ classname”Njwjz)�”}”j}]”jc.ata_scsiop_inq_b6”†”asbuh1hhj"¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"¯ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjp¯h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj"¯ubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj}¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¬®ubj°)�”}”(hŒu8 *rbuf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj™¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj–¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j›¯Œmodname”NŒ classname”Njwjz)�”}”j}]”jc.ata_scsiop_inq_b6”†”asbuh1hhj’¯ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·¯h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj’¯ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjůh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj’¯ubj[)�”}”(hŒrbuf”h]”hŒrbuf”…”�”}”(hjÒ¯h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj’¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¬®ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjW®h²hh³ji®h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjS®h²hh³ji®h´M ubah}”(h]”jN®ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³ji®h´M hjP®h²hubj)�”}”(hhh]”hì)�”}”(hŒ@Simulate INQUIRY VPD page B6, Zoned Block Device Characteristics”h]”hŒ@Simulate INQUIRY VPD page B6, Zoned Block Device Characteristics”…”�”}”(hjü¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjù¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP®h²hh³ji®h´M ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j°j1j°j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXN**Parameters** ``struct ata_device *dev`` Target device. ``struct scsi_cmnd *cmd`` SCSI command of interest. ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. **Description** Return data for the VPD page B2h (Zoned Block Device Characteristics). LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj°h]”hŒ Parameters”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mƒ hj°ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj=°h]”hŒstruct ata_device *dev”…”�”}”(hj?°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj;°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M� hj7°ubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hjV°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jR°h´M� hjS°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj7°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jR°h´M� hj4°ubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjv°h]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjx°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjt°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M‚ hjp°ubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹°h´M‚ hjŒ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjp°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‹°h´M‚ hj4°ubj¡)�”}”(hŒJ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. ”h]”(j§)�”}”(hŒ ``u8 *rbuf``”h]”j\)�”}”(hj¯°h]”hŒu8 *rbuf”…”�”}”(hj±°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj­°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mƒ hj©°ubj·)�”}”(hhh]”hì)�”}”(hŒvoid modecpy (u8 *dest, const u8 *src, int n, bool changeable)”h]”j")�”}”(hŒ=void modecpy(u8 *dest, const u8 *src, int n, bool changeable)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"·h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj·h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mþ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj·h²hh³j0·h´Mþ ubj�)�”}”(hŒmodecpy”h]”j[)�”}”(hŒmodecpy”h]”hŒmodecpy”…”�”}”(hjC·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj?·ubah}”(h]”h ]”(j¤•j¥eh"]”h$]”h&]”jjuh1jŽhj·h²hh³j0·h´Mþ ubjª)�”}”(hŒ1(u8 *dest, const u8 *src, int n, bool changeable)”h]”(j°)�”}”(hŒu8 *dest”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjb·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj_·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jd·Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjE·sbŒ c.modecpy”†”asbuh1hhj[·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj[·ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj[·ubj[)�”}”(hŒdest”h]”hŒdest”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj[·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjW·ubj°)�”}”(hŒ const u8 *src”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj¶·h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj²·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²·ubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÔ·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÑ·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÖ·Œmodname”NŒ classname”Njwjz)�”}”j}]”j~·Œ c.modecpy”†”asbuh1hhj²·ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò·h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj²·ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj²·ubj[)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj²·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjW·ubj°)�”}”(hŒint n”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj&¸h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj"¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj"¸ubj[)�”}”(hjgh]”hŒn”…”�”}”(hjB¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjW·ubj°)�”}”(hŒbool changeable”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hjZ¸h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjV¸ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¸h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjV¸ubj[)�”}”(hŒ changeable”h]”hŒ changeable”…”�”}”(hju¸h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjV¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjW·ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj·h²hh³j0·h´Mþ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj·h²hh³j0·h´Mþ ubah}”(h]”j·ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j0·h´Mþ hj·h²hubj)�”}”(hhh]”hì)�”}”(hŒPrepare response for MODE SENSE”h]”hŒPrepare response for MODE SENSE”…”�”}”(hjŸ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mþ hjœ¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·h²hh³j0·h´Mþ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j·¸j1j·¸j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX=**Parameters** ``u8 *dest`` output buffer ``const u8 *src`` data being copied ``int n`` length of mode page ``bool changeable`` whether changeable parameters are requested **Description** Generate a generic MODE SENSE page for either current or changeable parameters. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÁ¸h]”hŒ Parameters”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¿¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj»¸ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ``u8 *dest`` output buffer ”h]”(j§)�”}”(hŒ ``u8 *dest``”h]”j\)�”}”(hjà¸h]”hŒu8 *dest”…”�”}”(hjâ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÞ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mÿ hjÚ¸ubj·)�”}”(hhh]”hì)�”}”(hŒ output buffer”h]”hŒ output buffer”…”�”}”(hjù¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõ¸h´Mÿ hjö¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÚ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jõ¸h´Mÿ hj׸ubj¡)�”}”(hŒ$``const u8 *src`` data being copied ”h]”(j§)�”}”(hŒ``const u8 *src``”h]”j\)�”}”(hj¹h]”hŒ const u8 *src”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj¹ubj·)�”}”(hhh]”hì)�”}”(hŒdata being copied”h]”hŒdata being copied”…”�”}”(hj2¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.¹h´M hj/¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j.¹h´M hj׸ubj¡)�”}”(hŒ``int n`` length of mode page ”h]”(j§)�”}”(hŒ ``int n``”h]”j\)�”}”(hjR¹h]”hŒint n”…”�”}”(hjT¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjP¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjL¹ubj·)�”}”(hhh]”hì)�”}”(hŒlength of mode page”h]”hŒlength of mode page”…”�”}”(hjk¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jg¹h´M hjh¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjL¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jg¹h´M hj׸ubj¡)�”}”(hŒ@``bool changeable`` whether changeable parameters are requested ”h]”(j§)�”}”(hŒ``bool changeable``”h]”j\)�”}”(hj‹¹h]”hŒbool changeable”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj‰¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj…¹ubj·)�”}”(hhh]”hì)�”}”(hŒ+whether changeable parameters are requested”h]”hŒ+whether changeable parameters are requested”…”�”}”(hj¤¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j ¹h´M hj¡¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj…¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j ¹h´M hj׸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj»¸ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjƹh]”hŒ Description”…”�”}”(hjȹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjĹubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj»¸ubj)�”}”(hŒ_Generate a generic MODE SENSE page for either current or changeable parameters. LOCKING: None.”h]”(hì)�”}”(hŒOGenerate a generic MODE SENSE page for either current or changeable parameters.”h]”hŒOGenerate a generic MODE SENSE page for either current or changeable parameters.”…”�”}”(hjà¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjܹubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjï¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjܹubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jî¹h´M hj»¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_msense_caching (C function)”Œc.ata_msense_caching”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCunsigned int ata_msense_caching (u16 *id, u8 *buf, bool changeable)”h]”j")�”}”(hŒBunsigned int ata_msense_caching(u16 *id, u8 *buf, bool changeable)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj$ºh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj ºh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3ºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ºh²hh³j2ºh´M ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjAºh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj ºh²hh³j2ºh´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ºh²hh³j2ºh´M ubj�)�”}”(hŒata_msense_caching”h]”j[)�”}”(hŒata_msense_caching”h]”hŒata_msense_caching”…”�”}”(hjaºh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj]ºubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj ºh²hh³j2ºh´M ubjª)�”}”(hŒ#(u16 *id, u8 *buf, bool changeable)”h]”(j°)�”}”(hŒu16 *id”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj€ºh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj}ºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j‚ºŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjcºsbŒc.ata_msense_caching”†”asbuh1hhjyºubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjyºubj)�”}”(hjS h]”hŒ*”…”�”}”(hj®ºh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjyºubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hj»ºh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjyºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjuºubj°)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj׺h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÔºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÙºŒmodname”NŒ classname”Njwjz)�”}”j}]”jœºŒc.ata_msense_caching”†”asbuh1hhjкubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõºh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjкubj)�”}”(hjS h]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjкubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjкubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjuºubj°)�”}”(hŒbool changeable”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj)»h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj%»ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj%»ubj[)�”}”(hŒ changeable”h]”hŒ changeable”…”�”}”(hjD»h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj%»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjuºubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj ºh²hh³j2ºh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjºh²hh³j2ºh´M ubah}”(h]”jºah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j2ºh´M hjºh²hubj)�”}”(hhh]”hì)�”}”(hŒ%Simulate MODE SENSE caching info page”h]”hŒ%Simulate MODE SENSE caching info page”…”�”}”(hjn»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjk»h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºh²hh³j2ºh´M ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j†»j1j†»j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXL**Parameters** ``u16 *id`` device IDENTIFY data ``u8 *buf`` output buffer ``bool changeable`` whether changeable parameters are requested **Description** Generate a caching info page, which conditionally indicates write caching to the SCSI layer, depending on device capabilities. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�»h]”hŒ Parameters”…”�”}”(hj’»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjŠ»ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ!``u16 *id`` device IDENTIFY data ”h]”(j§)�”}”(hŒ ``u16 *id``”h]”j\)�”}”(hj¯»h]”hŒu16 *id”…”�”}”(hj±»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj­»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj©»ubj·)�”}”(hhh]”hì)�”}”(hŒdevice IDENTIFY data”h]”hŒdevice IDENTIFY data”…”�”}”(hjÈ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÄ»h´M hjÅ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj©»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÄ»h´M hj¦»ubj¡)�”}”(hŒ``u8 *buf`` output buffer ”h]”(j§)�”}”(hŒ ``u8 *buf``”h]”j\)�”}”(hjè»h]”hŒu8 *buf”…”�”}”(hjê»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjæ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjâ»ubj·)�”}”(hhh]”hì)�”}”(hŒ output buffer”h]”hŒ output buffer”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jý»h´M hjþ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjâ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jý»h´M hj¦»ubj¡)�”}”(hŒ@``bool changeable`` whether changeable parameters are requested ”h]”(j§)�”}”(hŒ``bool changeable``”h]”j\)�”}”(hj!¼h]”hŒbool changeable”…”�”}”(hj#¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hj¼ubj·)�”}”(hhh]”hì)�”}”(hŒ+whether changeable parameters are requested”h]”hŒ+whether changeable parameters are requested”…”�”}”(hj:¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j6¼h´M hj7¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j6¼h´M hj¦»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjŠ»ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj\¼h]”hŒ Description”…”�”}”(hj^¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjŠ»ubj)�”}”(hŒŽGenerate a caching info page, which conditionally indicates write caching to the SCSI layer, depending on device capabilities. LOCKING: None.”h]”(hì)�”}”(hŒ~Generate a caching info page, which conditionally indicates write caching to the SCSI layer, depending on device capabilities.”h]”hŒ~Generate a caching info page, which conditionally indicates write caching to the SCSI layer, depending on device capabilities.”…”�”}”(hjv¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjr¼ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj…¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M hjr¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„¼h´M hjŠ»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_msense_control (C function)”Œc.ata_msense_control”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒZunsigned int ata_msense_control (struct ata_device *dev, u8 *buf, u8 spg, bool changeable)”h]”j")�”}”(hŒYunsigned int ata_msense_control(struct ata_device *dev, u8 *buf, u8 spg, bool changeable)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjº¼h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¶¼h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M£ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɼh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶¼h²hh³jȼh´M£ ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj×¼h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¶¼h²hh³jȼh´M£ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå¼h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¶¼h²hh³jȼh´M£ ubj�)�”}”(hŒata_msense_control”h]”j[)�”}”(hŒata_msense_control”h]”hŒata_msense_control”…”�”}”(hj÷¼h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjó¼ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¶¼h²hh³jȼh´M£ ubjª)�”}”(hŒ:(struct ata_device *dev, u8 *buf, u8 spg, bool changeable)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj1½h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj.½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j3½Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjù¼sbŒc.ata_msense_control”†”asbuh1hhj½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj½ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj_½h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj½ubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjl½h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ½ubj°)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjˆ½h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj…½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jнŒmodname”NŒ classname”Njwjz)�”}”j}]”jM½Œc.ata_msense_control”†”asbuh1hhj�½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�½ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj´½h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj�½ubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÁ½h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ½ubj°)�”}”(hŒu8 spg”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjݽh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚ½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jß½Œmodname”NŒ classname”Njwjz)�”}”j}]”jM½Œc.ata_msense_control”†”asbuh1hhjÖ½ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû½h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÖ½ubj[)�”}”(hŒspg”h]”hŒspg”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÖ½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ½ubj°)�”}”(hŒbool changeable”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj"¾h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¾ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/¾h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¾ubj[)�”}”(hŒ changeable”h]”hŒ changeable”…”�”}”(hj=¾h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ½ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¶¼h²hh³jȼh´M£ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj²¼h²hh³jȼh´M£ ubah}”(h]”j­¼ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jȼh´M£ hj¯¼h²hubj)�”}”(hhh]”hì)�”}”(hŒ%Simulate MODE SENSE control mode page”h]”hŒ%Simulate MODE SENSE control mode page”…”�”}”(hjg¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M£ hjd¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯¼h²hh³jȼh´M£ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¾j1j¾j2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX!**Parameters** ``struct ata_device *dev`` ATA device of interest ``u8 *buf`` output buffer ``u8 spg`` sub-page code ``bool changeable`` whether changeable parameters are requested **Description** Generate a generic MODE SENSE control mode page. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj‰¾h]”hŒ Parameters”…”�”}”(hj‹¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M§ hjƒ¾ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ2``struct ata_device *dev`` ATA device of interest ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj¨¾h]”hŒstruct ata_device *dev”…”�”}”(hjª¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¦¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¤ hj¢¾ubj·)�”}”(hhh]”hì)�”}”(hŒATA device of interest”h]”hŒATA device of interest”…”�”}”(hjÁ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½¾h´M¤ hj¾¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¢¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j½¾h´M¤ hjŸ¾ubj¡)�”}”(hŒ``u8 *buf`` output buffer ”h]”(j§)�”}”(hŒ ``u8 *buf``”h]”j\)�”}”(hjá¾h]”hŒu8 *buf”…”�”}”(hjã¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjß¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¥ hjÛ¾ubj·)�”}”(hhh]”hì)�”}”(hŒ output buffer”h]”hŒ output buffer”…”�”}”(hjú¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jö¾h´M¥ hj÷¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÛ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jö¾h´M¥ hjŸ¾ubj¡)�”}”(hŒ``u8 spg`` sub-page code ”h]”(j§)�”}”(hŒ ``u8 spg``”h]”j\)�”}”(hj¿h]”hŒu8 spg”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¦ hj¿ubj·)�”}”(hhh]”hì)�”}”(hŒ sub-page code”h]”hŒ sub-page code”…”�”}”(hj3¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/¿h´M¦ hj0¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j/¿h´M¦ hjŸ¾ubj¡)�”}”(hŒ@``bool changeable`` whether changeable parameters are requested ”h]”(j§)�”}”(hŒ``bool changeable``”h]”j\)�”}”(hjS¿h]”hŒbool changeable”…”�”}”(hjU¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjQ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M§ hjM¿ubj·)�”}”(hhh]”hì)�”}”(hŒ+whether changeable parameters are requested”h]”hŒ+whether changeable parameters are requested”…”�”}”(hjl¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh¿h´M§ hji¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjM¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh¿h´M§ hjŸ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjƒ¾ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjŽ¿h]”hŒ Description”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M© hjƒ¾ubj)�”}”(hŒ@Generate a generic MODE SENSE control mode page. LOCKING: None.”h]”(hì)�”}”(hŒ0Generate a generic MODE SENSE control mode page.”h]”hŒ0Generate a generic MODE SENSE control mode page.”…”�”}”(hj¨¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¨ hj¤¿ubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj·¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mª hj¤¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¶¿h´M¨ hjƒ¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#ata_msense_rw_recovery (C function)”Œc.ata_msense_rw_recovery”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ>unsigned int ata_msense_rw_recovery (u8 *buf, bool changeable)”h]”j")�”}”(hŒ=unsigned int ata_msense_rw_recovery(u8 *buf, bool changeable)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjì¿h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjè¿h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÇ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¿h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjè¿h²hh³jú¿h´MÇ ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjè¿h²hh³jú¿h´MÇ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjè¿h²hh³jú¿h´MÇ ubj�)�”}”(hŒata_msense_rw_recovery”h]”j[)�”}”(hŒata_msense_rw_recovery”h]”hŒata_msense_rw_recovery”…”�”}”(hj)Àh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj%Àubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjè¿h²hh³jú¿h´MÇ ubjª)�”}”(hŒ(u8 *buf, bool changeable)”h]”(j°)�”}”(hŒu8 *buf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjHÀh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjEÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jJÀŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj+ÀsbŒc.ata_msense_rw_recovery”†”asbuh1hhjAÀubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhÀh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjAÀubj)�”}”(hjS h]”hŒ*”…”�”}”(hjvÀh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjAÀubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjƒÀh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjAÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj=Àubj°)�”}”(hŒbool changeable”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hjœÀh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj˜Àubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©Àh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj˜Àubj[)�”}”(hŒ changeable”h]”hŒ changeable”…”�”}”(hj·Àh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj˜Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj=Àubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjè¿h²hh³jú¿h´MÇ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjä¿h²hh³jú¿h´MÇ ubah}”(h]”jß¿ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jú¿h´MÇ hjá¿h²hubj)�”}”(hhh]”hì)�”}”(hŒ+Simulate MODE SENSE r/w error recovery page”h]”hŒ+Simulate MODE SENSE r/w error recovery page”…”�”}”(hjáÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÇ hjÞÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá¿h²hh³jú¿h´MÇ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jùÀj1jùÀj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒÖ**Parameters** ``u8 *buf`` output buffer ``bool changeable`` whether changeable parameters are requested **Description** Generate a generic MODE SENSE r/w error recovery page. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÁh]”hŒ Parameters”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MË hjýÀubjœ)�”}”(hhh]”(j¡)�”}”(hŒ``u8 *buf`` output buffer ”h]”(j§)�”}”(hŒ ``u8 *buf``”h]”j\)�”}”(hj"Áh]”hŒu8 *buf”…”�”}”(hj$Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÈ hjÁubj·)�”}”(hhh]”hì)�”}”(hŒ output buffer”h]”hŒ output buffer”…”�”}”(hj;Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7Áh´MÈ hj8Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j7Áh´MÈ hjÁubj¡)�”}”(hŒ@``bool changeable`` whether changeable parameters are requested ”h]”(j§)�”}”(hŒ``bool changeable``”h]”j\)�”}”(hj[Áh]”hŒbool changeable”…”�”}”(hj]Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjYÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÉ hjUÁubj·)�”}”(hhh]”hì)�”}”(hŒ+whether changeable parameters are requested”h]”hŒ+whether changeable parameters are requested”…”�”}”(hjtÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jpÁh´MÉ hjqÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjUÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jpÁh´MÉ hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjýÀubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj–Áh]”hŒ Description”…”�”}”(hj˜Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”Áubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MË hjýÀubj)�”}”(hŒFGenerate a generic MODE SENSE r/w error recovery page. LOCKING: None.”h]”(hì)�”}”(hŒ6Generate a generic MODE SENSE r/w error recovery page.”h]”hŒ6Generate a generic MODE SENSE r/w error recovery page.”…”�”}”(hj°Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÊ hj¬Áubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj¿Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÌ hj¬Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¾Áh´MÊ hjýÀubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"ata_scsiop_mode_sense (C function)”Œc.ata_scsiop_mode_sense”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\unsigned int ata_scsiop_mode_sense (struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”j")�”}”(hŒ[unsigned int ata_scsiop_mode_sense(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjôÁh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjðÁh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MØ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðÁh²hh³jÂh´MØ ubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjðÁh²hh³jÂh´MØ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjðÁh²hh³jÂh´MØ ubj�)�”}”(hŒata_scsiop_mode_sense”h]”j[)�”}”(hŒata_scsiop_mode_sense”h]”hŒata_scsiop_mode_sense”…”�”}”(hj1Âh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj-Âubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjðÁh²hh³jÂh´MØ ubjª)�”}”(hŒ9(struct ata_device *dev, struct scsi_cmnd *cmd, u8 *rbuf)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjMÂh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjIÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIÂubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjkÂh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjhÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jmÂŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj3ÂsbŒc.ata_scsiop_mode_sense”†”asbuh1hhjIÂubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹Âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjIÂubj)�”}”(hjS h]”hŒ*”…”�”}”(hj™Âh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjIÂubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¦Âh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjIÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjEÂubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¿Âh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj»Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»Âubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hjÝÂh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jßÂŒmodname”NŒ classname”Njwjz)�”}”j}]”j‡ÂŒc.ata_scsiop_mode_sense”†”asbuh1hhj»Âubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûÂh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj»Âubj)�”}”(hjS h]”hŒ*”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj»Âubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj»Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjEÂubj°)�”}”(hŒu8 *rbuf”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj2Ãh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj/Ãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j4ÃŒmodname”NŒ classname”Njwjz)�”}”j}]”j‡ÂŒc.ata_scsiop_mode_sense”†”asbuh1hhj+Ãubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPÃh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj+Ãubj)�”}”(hjS h]”hŒ*”…”�”}”(hj^Ãh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj+Ãubj[)�”}”(hŒrbuf”h]”hŒrbuf”…”�”}”(hjkÃh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj+Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjEÂubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjðÁh²hh³jÂh´MØ ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjìÁh²hh³jÂh´MØ ubah}”(h]”jçÁah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jÂh´MØ hjéÁh²hubj)�”}”(hhh]”hì)�”}”(hŒ"Simulate MODE SENSE 6, 10 commands”h]”hŒ"Simulate MODE SENSE 6, 10 commands”…”�”}”(hj•Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MØ hj’Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéÁh²hh³jÂh´MØ ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j­Ãj1j­Ãj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX¯**Parameters** ``struct ata_device *dev`` Target device. ``struct scsi_cmnd *cmd`` SCSI command of interest. ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. **Description** Simulate MODE SENSE commands. Assume this is invoked for direct access devices (e.g. disks) only. There should be no block descriptor for other device types. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj·Ãh]”hŒ Parameters”…”�”}”(hj¹Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÜ hj±Ãubjœ)�”}”(hhh]”(j¡)�”}”(hŒ*``struct ata_device *dev`` Target device. ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÖÃh]”hŒstruct ata_device *dev”…”�”}”(hjØÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÔÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÙ hjÐÃubj·)�”}”(hhh]”hì)�”}”(hŒTarget device.”h]”hŒTarget device.”…”�”}”(hjïÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jëÃh´MÙ hjìÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÐÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jëÃh´MÙ hjÍÃubj¡)�”}”(hŒ4``struct scsi_cmnd *cmd`` SCSI command of interest. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjÄh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÚ hj Äubj·)�”}”(hhh]”hì)�”}”(hŒSCSI command of interest.”h]”hŒSCSI command of interest.”…”�”}”(hj(Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$Äh´MÚ hj%Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j$Äh´MÚ hjÍÃubj¡)�”}”(hŒJ``u8 *rbuf`` Response buffer, to which simulated SCSI cmd output is sent. ”h]”(j§)�”}”(hŒ ``u8 *rbuf``”h]”j\)�”}”(hjHÄh]”hŒu8 *rbuf”…”�”}”(hjJÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjFÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÛ hjBÄubj·)�”}”(hhh]”hì)�”}”(hŒvoid ata_scsi_report_zones_complete(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjáÙh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÝÙh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Máubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðÙh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÝÙh²hh³jïÙh´Máubj�)�”}”(hŒata_scsi_report_zones_complete”h]”j[)�”}”(hŒata_scsi_report_zones_complete”h]”hŒata_scsi_report_zones_complete”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjþÙubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÝÙh²hh³jïÙh´Máubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Úh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj<Úh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj9Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j>ÚŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÚsbŒ c.ata_scsi_report_zones_complete”†”asbuh1hhjÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Úh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚubj)�”}”(hjS h]”hŒ*”…”�”}”(hjjÚh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÚubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjwÚh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÚubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÝÙh²hh³jïÙh´Máubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÙÙh²hh³jïÙh´Máubah}”(h]”jÔÙah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jïÙh´MáhjÖÙh²hubj)�”}”(hhh]”hì)�”}”(hŒconvert ATA output”h]”hŒconvert ATA output”…”�”}”(hj¡Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MáhjžÚh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖÙh²hh³jïÙh´Máubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j¹Új1j¹Új2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒÝ**Parameters** ``struct ata_queued_cmd *qc`` command structure returning the data **Description** Convert T-13 little-endian field representation into T-10 big-endian field representation. What a mess.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÃÚh]”hŒ Parameters”…”�”}”(hjÅÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Måhj½Úubjœ)�”}”(hhh]”j¡)�”}”(hŒC``struct ata_queued_cmd *qc`` command structure returning the data ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjâÚh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjäÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjàÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MâhjÜÚubj·)�”}”(hhh]”hì)�”}”(hŒ$command structure returning the data”h]”hŒ$command structure returning the data”…”�”}”(hjûÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷Úh´MâhjøÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÜÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j÷Úh´MâhjÙÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj½Úubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÛh]”hŒ Description”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mähj½Úubj)�”}”(hŒgConvert T-13 little-endian field representation into T-10 big-endian field representation. What a mess.”h]”hì)�”}”(hŒgConvert T-13 little-endian field representation into T-10 big-endian field representation. What a mess.”h]”hŒgConvert T-13 little-endian field representation into T-10 big-endian field representation. What a mess.”…”�”}”(hj7Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mãhj3Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jEÛh´Mãhj½Úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_mselect_caching (C function)”Œc.ata_mselect_caching”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒTint ata_mselect_caching (struct ata_queued_cmd *qc, const u8 *buf, int len, u16 *fp)”h]”j")�”}”(hŒSint ata_mselect_caching(struct ata_queued_cmd *qc, const u8 *buf, int len, u16 *fp)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjlÛh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjhÛh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÈubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Ûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjhÛh²hh³jzÛh´MÈubj�)�”}”(hŒata_mselect_caching”h]”j[)�”}”(hŒata_mselect_caching”h]”hŒata_mselect_caching”…”�”}”(hj�Ûh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‰Ûubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjhÛh²hh³jzÛh´MÈubjª)�”}”(hŒ<(struct ata_queued_cmd *qc, const u8 *buf, int len, u16 *fp)”h]”(j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj©Ûh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¥Ûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Ûh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥Ûubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjÇÛh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÄÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÉÛŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj�ÛsbŒc.ata_mselect_caching”†”asbuh1hhj¥Ûubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçÛh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¥Ûubj)�”}”(hjS h]”hŒ*”…”�”}”(hjõÛh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¥Ûubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¥Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¡Ûubj°)�”}”(hŒ const u8 *buf”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÜubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj9Üh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj6Üubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j;ÜŒmodname”NŒ classname”Njwjz)�”}”j}]”jãÛŒc.ata_mselect_caching”†”asbuh1hhjÜubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÜh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÜubj)�”}”(hjS h]”hŒ*”…”�”}”(hjeÜh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÜubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjrÜh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¡Ûubj°)�”}”(hŒint len”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹Üh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj‡Üubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Üh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‡Üubj[)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj§Üh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‡Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¡Ûubj°)�”}”(hŒu16 *fp”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÃÜh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÀÜubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÅÜŒmodname”NŒ classname”Njwjz)�”}”j}]”jãÛŒc.ata_mselect_caching”†”asbuh1hhj¼Üubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáÜh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¼Üubj)�”}”(hjS h]”hŒ*”…”�”}”(hjïÜh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¼Üubj[)�”}”(hŒfp”h]”hŒfp”…”�”}”(hjüÜh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¡Ûubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjhÛh²hh³jzÛh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjdÛh²hh³jzÛh´MÈubah}”(h]”j_Ûah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jzÛh´MÈhjaÛh²hubj)�”}”(hhh]”hì)�”}”(hŒ*Simulate MODE SELECT for caching info page”h]”hŒ*Simulate MODE SELECT for caching info page”…”�”}”(hj&Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÈhj#Ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaÛh²hh³jzÛh´MÈubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j>Ýj1j>Ýj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX[**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ``const u8 *buf`` input buffer ``int len`` number of valid bytes in the input buffer ``u16 *fp`` out parameter for the failed field on error **Description** Prepare a taskfile to modify caching information for the device. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjHÝh]”hŒ Parameters”…”�”}”(hjJÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjFÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÌhjBÝubjœ)�”}”(hhh]”(j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjgÝh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjiÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjeÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÉhjaÝubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hj€Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j|Ýh´MÉhj}Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjaÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j|Ýh´MÉhj^Ýubj¡)�”}”(hŒ``const u8 *buf`` input buffer ”h]”(j§)�”}”(hŒ``const u8 *buf``”h]”j\)�”}”(hj Ýh]”hŒ const u8 *buf”…”�”}”(hj¢Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjžÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÊhjšÝubj·)�”}”(hhh]”hì)�”}”(hŒ input buffer”h]”hŒ input buffer”…”�”}”(hj¹Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµÝh´MÊhj¶Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjšÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jµÝh´MÊhj^Ýubj¡)�”}”(hŒ6``int len`` number of valid bytes in the input buffer ”h]”(j§)�”}”(hŒ ``int len``”h]”j\)�”}”(hjÙÝh]”hŒint len”…”�”}”(hjÛÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj×Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MËhjÓÝubj·)�”}”(hhh]”hì)�”}”(hŒ)number of valid bytes in the input buffer”h]”hŒ)number of valid bytes in the input buffer”…”�”}”(hjòÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jîÝh´MËhjïÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÓÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jîÝh´MËhj^Ýubj¡)�”}”(hŒ8``u16 *fp`` out parameter for the failed field on error ”h]”(j§)�”}”(hŒ ``u16 *fp``”h]”j\)�”}”(hjÞh]”hŒu16 *fp”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÌhj Þubj·)�”}”(hhh]”hì)�”}”(hŒ+out parameter for the failed field on error”h]”hŒ+out parameter for the failed field on error”…”�”}”(hj+Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'Þh´MÌhj(Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j'Þh´MÌhj^Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjBÝubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjMÞh]”hŒ Description”…”�”}”(hjOÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjKÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÎhjBÝubj)�”}”(hŒPPrepare a taskfile to modify caching information for the device. LOCKING: None.”h]”(hì)�”}”(hŒ@Prepare a taskfile to modify caching information for the device.”h]”hŒ@Prepare a taskfile to modify caching information for the device.”…”�”}”(hjgÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÍhjcÞubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hjvÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÏhjcÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³juÞh´MÍhjBÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_mselect_control (C function)”Œc.ata_mselect_control”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ\int ata_mselect_control (struct ata_queued_cmd *qc, u8 spg, const u8 *buf, int len, u16 *fp)”h]”j")�”}”(hŒ[int ata_mselect_control(struct ata_queued_cmd *qc, u8 spg, const u8 *buf, int len, u16 *fp)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj«Þh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj§Þh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÞh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj§Þh²hh³j¹Þh´M`ubj�)�”}”(hŒata_mselect_control”h]”j[)�”}”(hŒata_mselect_control”h]”hŒata_mselect_control”…”�”}”(hjÌÞh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÈÞubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj§Þh²hh³j¹Þh´M`ubjª)�”}”(hŒD(struct ata_queued_cmd *qc, u8 spg, const u8 *buf, int len, u16 *fp)”h]”(j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjèÞh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjäÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÞh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäÞubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jߌmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÎÞsbŒc.ata_mselect_control”†”asbuh1hhjäÞubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäÞubj)�”}”(hjS h]”hŒ*”…”�”}”(hj4ßh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjäÞubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjAßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjäÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjàÞubj°)�”}”(hŒu8 spg”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj]ßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjZßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j_ߌmodname”NŒ classname”Njwjz)�”}”j}]”j"ߌc.ata_mselect_control”†”asbuh1hhjVßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjVßubj[)�”}”(hŒspg”h]”hŒspg”…”�”}”(hj‰ßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjVßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjàÞubj°)�”}”(hŒ const u8 *buf”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj¢ßh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjžßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯ßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjžßubh)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÀßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj½ßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÂߌmodname”NŒ classname”Njwjz)�”}”j}]”j"ߌc.ata_mselect_control”†”asbuh1hhjžßubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞßh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjžßubj)�”}”(hjS h]”hŒ*”…”�”}”(hjìßh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjžßubj[)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjùßh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjžßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjàÞubj°)�”}”(hŒint len”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàubj[)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj.àh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjàÞubj°)�”}”(hŒu16 *fp”h]”(h)�”}”(hhh]”j[)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjJàh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjGàubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jLàŒmodname”NŒ classname”Njwjz)�”}”j}]”j"ߌc.ata_mselect_control”†”asbuh1hhjCàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhàh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjCàubj)�”}”(hjS h]”hŒ*”…”�”}”(hjvàh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjCàubj[)�”}”(hŒfp”h]”hŒfp”…”�”}”(hjƒàh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjCàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjàÞubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj§Þh²hh³j¹Þh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj£Þh²hh³j¹Þh´M`ubah}”(h]”jžÞah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¹Þh´M`hj Þh²hubj)�”}”(hhh]”hì)�”}”(hŒ%Simulate MODE SELECT for control page”h]”hŒ%Simulate MODE SELECT for control page”…”�”}”(hj­àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`hjªàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Þh²hh³j¹Þh´M`ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jÅàj1jÅàj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX�**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ``u8 spg`` target sub-page of the control page ``const u8 *buf`` input buffer ``int len`` number of valid bytes in the input buffer ``u16 *fp`` out parameter for the failed field on error **Description** Prepare a taskfile to modify caching information for the device. LOCKING: None.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÏàh]”hŒ Parameters”…”�”}”(hjÑàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍàubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MdhjÉàubjœ)�”}”(hhh]”(j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjîàh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjðàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjìàubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mahjèàubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jáh´Mahjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjèàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jáh´Mahjåàubj¡)�”}”(hŒ/``u8 spg`` target sub-page of the control page ”h]”(j§)�”}”(hŒ ``u8 spg``”h]”j\)�”}”(hj'áh]”hŒu8 spg”…”�”}”(hj)áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj%áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mbhj!áubj·)�”}”(hhh]”hì)�”}”(hŒ#target sub-page of the control page”h]”hŒ#target sub-page of the control page”…”�”}”(hj@áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<áh´Mbhj=áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj!áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j<áh´Mbhjåàubj¡)�”}”(hŒ``const u8 *buf`` input buffer ”h]”(j§)�”}”(hŒ``const u8 *buf``”h]”j\)�”}”(hj`áh]”hŒ const u8 *buf”…”�”}”(hjbáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj^áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MchjZáubj·)�”}”(hhh]”hì)�”}”(hŒ input buffer”h]”hŒ input buffer”…”�”}”(hjyáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³juáh´Mchjváubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjZáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³juáh´Mchjåàubj¡)�”}”(hŒ6``int len`` number of valid bytes in the input buffer ”h]”(j§)�”}”(hŒ ``int len``”h]”j\)�”}”(hj™áh]”hŒint len”…”�”}”(hj›áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj—áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdhj“áubj·)�”}”(hhh]”hì)�”}”(hŒ)number of valid bytes in the input buffer”h]”hŒ)number of valid bytes in the input buffer”…”�”}”(hj²áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j®áh´Mdhj¯áubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj“áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j®áh´Mdhjåàubj¡)�”}”(hŒ8``u16 *fp`` out parameter for the failed field on error ”h]”(j§)�”}”(hŒ ``u16 *fp``”h]”j\)�”}”(hjÒáh]”hŒu16 *fp”…”�”}”(hjÔáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÐáubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MehjÌáubj·)�”}”(hhh]”hì)�”}”(hŒ+out parameter for the failed field on error”h]”hŒ+out parameter for the failed field on error”…”�”}”(hjëáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jçáh´Mehjèáubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÌáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jçáh´Mehjåàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÉàubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj âh]”hŒ Description”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj âubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MghjÉàubj)�”}”(hŒPPrepare a taskfile to modify caching information for the device. LOCKING: None.”h]”(hì)�”}”(hŒ@Prepare a taskfile to modify caching information for the device.”h]”hŒ@Prepare a taskfile to modify caching information for the device.”…”�”}”(hj'âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mfhj#âubhì)�”}”(hŒLOCKING: None.”h]”hŒLOCKING: None.”…”�”}”(hj6âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhhj#âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5âh´MfhjÉàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ata_scsi_mode_select_xlat (C function)”Œc.ata_scsi_mode_select_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBunsigned int ata_scsi_mode_select_xlat (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒAunsigned int ata_scsi_mode_select_xlat(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjkâh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjgâh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mzubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjgâh²hh³jyâh´Mzubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjˆâh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjgâh²hh³jyâh´Mzubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–âh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjgâh²hh³jyâh´Mzubj�)�”}”(hŒata_scsi_mode_select_xlat”h]”j[)�”}”(hŒata_scsi_mode_select_xlat”h]”hŒata_scsi_mode_select_xlat”…”�”}”(hj¨âh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¤âubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjgâh²hh³jyâh´Mzubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÄâh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÀâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑâh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀâubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hjââh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjßâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jäâŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjªâsbŒc.ata_scsi_mode_select_xlat”†”asbuh1hhjÀâubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÀâubj)�”}”(hjS h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÀâubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÀâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj¼âubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjgâh²hh³jyâh´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjcâh²hh³jyâh´Mzubah}”(h]”j^âah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jyâh´Mzhj`âh²hubj)�”}”(hhh]”hì)�”}”(hŒ#Simulate MODE SELECT 6, 10 commands”h]”hŒ#Simulate MODE SELECT 6, 10 commands”…”�”}”(hjGãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MzhjDãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`âh²hh³jyâh´Mzubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j_ãj1j_ãj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXe**Parameters** ``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile **Description** Converts a MODE SELECT command to an ATA SET FEATURES taskfile. Assume this is invoked for direct access devices (e.g. disks) only. There should be no block descriptor for other device types. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjiãh]”hŒ Parameters”…”�”}”(hjkãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M~hjcãubjœ)�”}”(hhh]”j¡)�”}”(hŒB``struct ata_queued_cmd *qc`` Storage for translated ATA taskfile ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hjˆãh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hjŠãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj†ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M{hj‚ãubj·)�”}”(hhh]”hì)�”}”(hŒ#Storage for translated ATA taskfile”h]”hŒ#Storage for translated ATA taskfile”…”�”}”(hj¡ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�ãh´M{hjžãubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‚ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j�ãh´M{hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjcãubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÃãh]”hŒ Description”…”�”}”(hjÅãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁãubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M}hjcãubj)�”}”(hŒæConverts a MODE SELECT command to an ATA SET FEATURES taskfile. Assume this is invoked for direct access devices (e.g. disks) only. There should be no block descriptor for other device types. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ¿Converts a MODE SELECT command to an ATA SET FEATURES taskfile. Assume this is invoked for direct access devices (e.g. disks) only. There should be no block descriptor for other device types.”•h]”hŒ¿Converts a MODE SELECT command to an ATA SET FEATURES taskfile. Assume this is invoked for direct access devices (e.g. disks) only. There should be no block descriptor for other device types.”…”�”}”(hjÝãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M|hjÙãubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjìãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M€hjÙãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jëãh´M|hjcãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&ata_scsi_var_len_cdb_xlat (C function)”Œc.ata_scsi_var_len_cdb_xlat”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒBunsigned int ata_scsi_var_len_cdb_xlat (struct ata_queued_cmd *qc)”h]”j")�”}”(hŒAunsigned int ata_scsi_var_len_cdb_xlat(struct ata_queued_cmd *qc)”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj!äh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjäh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäh²hh³j/äh´MDubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hj>äh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjäh²hh³j/äh´MDubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLäh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjäh²hh³j/äh´MDubj�)�”}”(hŒata_scsi_var_len_cdb_xlat”h]”j[)�”}”(hŒata_scsi_var_len_cdb_xlat”h]”hŒata_scsi_var_len_cdb_xlat”…”�”}”(hj^äh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjZäubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjäh²hh³j/äh´MDubjª)�”}”(hŒ(struct ata_queued_cmd *qc)”h]”j°)�”}”(hŒstruct ata_queued_cmd *qc”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjzäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjväubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjväubh)�”}”(hhh]”j[)�”}”(hŒata_queued_cmd”h]”hŒata_queued_cmd”…”�”}”(hj˜äh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj•äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jšäŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj`äsbŒc.ata_scsi_var_len_cdb_xlat”†”asbuh1hhjväubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸äh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjväubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÆäh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjväubj[)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjÓäh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjväubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjräubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjäh²hh³j/äh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjäh²hh³j/äh´MDubah}”(h]”jäah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j/äh´MDhjäh²hubj)�”}”(hhh]”hì)�”}”(hŒ#SATL variable length CDB to Handler”h]”hŒ#SATL variable length CDB to Handler”…”�”}”(hjýäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MDhjúäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäh²hh³j/äh´MDubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jåj1jåj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_queued_cmd *qc`` Command to be translated **Description** Translate a SCSI variable length CDB to specified commands. It checks a service action value in CDB to call corresponding handler. **Return** Zero on success, non-zero on failure”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjåh]”hŒ Parameters”…”�”}”(hj!åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MHhjåubjœ)�”}”(hhh]”j¡)�”}”(hŒ7``struct ata_queued_cmd *qc`` Command to be translated ”h]”(j§)�”}”(hŒ``struct ata_queued_cmd *qc``”h]”j\)�”}”(hj>åh]”hŒstruct ata_queued_cmd *qc”…”�”}”(hj@åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj<åubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MEhj8åubj·)�”}”(hhh]”hì)�”}”(hŒCommand to be translated”h]”hŒCommand to be translated”…”�”}”(hjWåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jSåh´MEhjTåubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj8åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jSåh´MEhj5åubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjåubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjyåh]”hŒ Description”…”�”}”(hj{åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwåubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MGhjåubj)�”}”(hŒƒTranslate a SCSI variable length CDB to specified commands. It checks a service action value in CDB to call corresponding handler. ”h]”hì)�”}”(hŒ‚Translate a SCSI variable length CDB to specified commands. It checks a service action value in CDB to call corresponding handler.”h]”hŒ‚Translate a SCSI variable length CDB to specified commands. It checks a service action value in CDB to call corresponding handler.”…”�”}”(hj“åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MFhj�åubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¡åh´MFhjåubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjªåh]”hŒReturn”…”�”}”(hj¬åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨åubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MIhjåubhì)�”}”(hŒ$Zero on success, non-zero on failure”h]”hŒ$Zero on success, non-zero on failure”…”�”}”(hjÀåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MJhjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_get_xlat_func (C function)”Œc.ata_get_xlat_func”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCata_xlat_func_t ata_get_xlat_func (struct ata_device *dev, u8 *cdb)”h]”j")�”}”(hŒBata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 *cdb)”h]”(h)�”}”(hhh]”j[)�”}”(hŒata_xlat_func_t”h]”hŒata_xlat_func_t”…”�”}”(hjòåh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjïåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jôåŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsŒata_get_xlat_func”sbŒc.ata_get_xlat_func”†”asbuh1hhjëåh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjëåh²hh³jæh´M`ubj�)�”}”(hŒata_get_xlat_func”h]”j[)�”}”(hjæh]”hŒata_get_xlat_func”…”�”}”(hj&æh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"æubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjëåh²hh³jæh´M`ubjª)�”}”(hŒ!(struct ata_device *dev, u8 *cdb)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjAæh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj=æubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNæh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=æubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj_æh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj\æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jaæŒmodname”NŒ classname”Njwjz)�”}”j}]”jæŒc.ata_get_xlat_func”†”asbuh1hhj=æubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}æh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj=æubj)�”}”(hjS h]”hŒ*”…”�”}”(hj‹æh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj=æubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj˜æh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj=æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj9æubj°)�”}”(hŒu8 *cdb”h]”(h)�”}”(hhh]”j[)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj´æh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj±æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¶æŒmodname”NŒ classname”Njwjz)�”}”j}]”jæŒc.ata_get_xlat_func”†”asbuh1hhj­æubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒæh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj­æubj)�”}”(hjS h]”hŒ*”…”�”}”(hjàæh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj­æubj[)�”}”(hŒcdb”h]”hŒcdb”…”�”}”(hjíæh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj­æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj9æubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjëåh²hh³jæh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjçåh²hh³jæh´M`ubah}”(h]”jâåah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jæh´M`hjäåh²hubj)�”}”(hhh]”hì)�”}”(hŒ,check if SCSI to ATA translation is possible”h]”hŒ,check if SCSI to ATA translation is possible”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`hjçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäåh²hh³jæh´M`ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j/çj1j/çj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX:**Parameters** ``struct ata_device *dev`` ATA device ``u8 *cdb`` CDB of the SCSI command to consider **Description** Look up the SCSI command given, and determine whether the SCSI command is to be translated or simulated. **Return** Pointer to translation function if possible, ``NULL`` if not.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj9çh]”hŒ Parameters”…”�”}”(hj;çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7çubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdhj3çubjœ)�”}”(hhh]”(j¡)�”}”(hŒ&``struct ata_device *dev`` ATA device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjXçh]”hŒstruct ata_device *dev”…”�”}”(hjZçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjVçubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MahjRçubj·)�”}”(hhh]”hì)�”}”(hŒ ATA device”h]”hŒ ATA device”…”�”}”(hjqçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jmçh´Mahjnçubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjRçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jmçh´MahjOçubj¡)�”}”(hŒ0``u8 *cdb`` CDB of the SCSI command to consider ”h]”(j§)�”}”(hŒ ``u8 *cdb``”h]”j\)�”}”(hj‘çh]”hŒu8 *cdb”…”�”}”(hj“çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj�çubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mbhj‹çubj·)�”}”(hhh]”hì)�”}”(hŒ#CDB of the SCSI command to consider”h]”hŒ#CDB of the SCSI command to consider”…”�”}”(hjªçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¦çh´Mbhj§çubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‹çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¦çh´MbhjOçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj3çubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÌçh]”hŒ Description”…”�”}”(hjÎçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊçubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdhj3çubj)�”}”(hŒiLook up the SCSI command given, and determine whether the SCSI command is to be translated or simulated. ”h]”hì)�”}”(hŒhLook up the SCSI command given, and determine whether the SCSI command is to be translated or simulated.”h]”hŒhLook up the SCSI command given, and determine whether the SCSI command is to be translated or simulated.”…”�”}”(hjæçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mchjâçubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jôçh´Mchj3çubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjýçh]”hŒReturn”…”�”}”(hjÿçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjûçubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mfhj3çubhì)�”}”(hŒ=Pointer to translation function if possible, ``NULL`` if not.”h]”(hŒ-Pointer to translation function if possible, ”…”�”}”(hjèh²hh³Nh´Nubj\)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjèubhŒ if not.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mghj3çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_simulate (C function)”Œc.ata_scsi_simulate”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFvoid ata_scsi_simulate (struct ata_device *dev, struct scsi_cmnd *cmd)”h]”j")�”}”(hŒEvoid ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjTèh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjPèh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M²ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcèh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjPèh²hh³jbèh´M²ubj�)�”}”(hŒata_scsi_simulate”h]”j[)�”}”(hŒata_scsi_simulate”h]”hŒata_scsi_simulate”…”�”}”(hjuèh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjqèubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjPèh²hh³jbèh´M²ubjª)�”}”(hŒ/(struct ata_device *dev, struct scsi_cmnd *cmd)”h]”(j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj‘èh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj�èubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžèh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�èubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj¯èh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¬èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j±èŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjwèsbŒc.ata_scsi_simulate”†”asbuh1hhj�èubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏèh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj�èubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÝèh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj�èubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjêèh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj�èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰èubj°)�”}”(hŒstruct scsi_cmnd *cmd”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÿèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿèubh)�”}”(hhh]”j[)�”}”(hŒ scsi_cmnd”h]”hŒ scsi_cmnd”…”�”}”(hj!éh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j#éŒmodname”NŒ classname”Njwjz)�”}”j}]”jËèŒc.ata_scsi_simulate”†”asbuh1hhjÿèubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?éh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÿèubj)�”}”(hjS h]”hŒ*”…”�”}”(hjMéh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÿèubj[)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjZéh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÿèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj‰èubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjPèh²hh³jbèh´M²ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjLèh²hh³jbèh´M²ubah}”(h]”jGèah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jbèh´M²hjIèh²hubj)�”}”(hhh]”hì)�”}”(hŒ#simulate SCSI command on ATA device”h]”hŒ#simulate SCSI command on ATA device”…”�”}”(hj„éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M²hj�éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIèh²hh³jbèh´M²ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jœéj1jœéj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX+**Parameters** ``struct ata_device *dev`` the target device ``struct scsi_cmnd *cmd`` SCSI command being sent to device. **Description** Interprets and directly executes a select list of SCSI commands that can be handled internally. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¦éh]”hŒ Parameters”…”�”}”(hj¨éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¤éubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¶hj éubjœ)�”}”(hhh]”(j¡)�”}”(hŒ-``struct ata_device *dev`` the target device ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjÅéh]”hŒstruct ata_device *dev”…”�”}”(hjÇéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÃéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M³hj¿éubj·)�”}”(hhh]”hì)�”}”(hŒthe target device”h]”hŒthe target device”…”�”}”(hjÞéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚéh´M³hjÛéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj¿éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÚéh´M³hj¼éubj¡)�”}”(hŒ=``struct scsi_cmnd *cmd`` SCSI command being sent to device. ”h]”(j§)�”}”(hŒ``struct scsi_cmnd *cmd``”h]”j\)�”}”(hjþéh]”hŒstruct scsi_cmnd *cmd”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjüéubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M´hjøéubj·)�”}”(hhh]”hì)�”}”(hŒ"SCSI command being sent to device.”h]”hŒ"SCSI command being sent to device.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jêh´M´hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjøéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jêh´M´hj¼éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj éubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj9êh]”hŒ Description”…”�”}”(hj;êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7êubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¶hj éubj)�”}”(hŒ†Interprets and directly executes a select list of SCSI commands that can be handled internally. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ_Interprets and directly executes a select list of SCSI commands that can be handled internally.”h]”hŒ_Interprets and directly executes a select list of SCSI commands that can be handled internally.”…”�”}”(hjSêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MµhjOêubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjbêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¸hjOêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jaêh´Mµhj éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!ata_scsi_offline_dev (C function)”Œc.ata_scsi_offline_dev”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ2bool ata_scsi_offline_dev (struct ata_device *dev)”h]”j")�”}”(hŒ1bool ata_scsi_offline_dev(struct ata_device *dev)”h]”(j²)�”}”(hj�Vh]”hŒbool”…”�”}”(hj—êh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj“êh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mùubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥êh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj“êh²hh³j¤êh´Mùubj�)�”}”(hŒata_scsi_offline_dev”h]”j[)�”}”(hŒata_scsi_offline_dev”h]”hŒata_scsi_offline_dev”…”�”}”(hj·êh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj³êubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj“êh²hh³j¤êh´Mùubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÓêh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÏêubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàêh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏêubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjñêh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjîêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jóêŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¹êsbŒc.ata_scsi_offline_dev”†”asbuh1hhjÏêubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÏêubj)�”}”(hjS h]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÏêubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj,ëh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÏêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjËêubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj“êh²hh³j¤êh´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj�êh²hh³j¤êh´Mùubah}”(h]”jŠêah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j¤êh´MùhjŒêh²hubj)�”}”(hhh]”hì)�”}”(hŒoffline attached SCSI device”h]”hŒoffline attached SCSI device”…”�”}”(hjVëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MùhjSëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŒêh²hh³j¤êh´Mùubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jnëj1jnëj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX¿**Parameters** ``struct ata_device *dev`` ATA device to offline attached SCSI device for **Description** This function is called from ata_eh_detach_dev() and is responsible for taking the SCSI device attached to **dev** offline. This function is called with host lock which protects dev->sdev against clearing. LOCKING: spin_lock_irqsave(host lock) **Return** true if attached SCSI device exists, false otherwise.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjxëh]”hŒ Parameters”…”�”}”(hjzëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjvëubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mýhjrëubjœ)�”}”(hhh]”j¡)�”}”(hŒJ``struct ata_device *dev`` ATA device to offline attached SCSI device for ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hj—ëh]”hŒstruct ata_device *dev”…”�”}”(hj™ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj•ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Múhj‘ëubj·)�”}”(hhh]”hì)�”}”(hŒ.ATA device to offline attached SCSI device for”h]”hŒ.ATA device to offline attached SCSI device for”…”�”}”(hj°ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¬ëh´Múhj­ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‘ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¬ëh´MúhjŽëubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjrëubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÒëh]”hŒ Description”…”�”}”(hjÔëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÐëubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mühjrëubj)�”}”(hŒöThis function is called from ata_eh_detach_dev() and is responsible for taking the SCSI device attached to **dev** offline. This function is called with host lock which protects dev->sdev against clearing. LOCKING: spin_lock_irqsave(host lock) ”h]”(hì)�”}”(hŒÎThis function is called from ata_eh_detach_dev() and is responsible for taking the SCSI device attached to **dev** offline. This function is called with host lock which protects dev->sdev against clearing.”h]”(hŒkThis function is called from ata_eh_detach_dev() and is responsible for taking the SCSI device attached to ”…”�”}”(hjìëh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjôëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjìëubhŒ\ offline. This function is called with host lock which protects dev->sdev against clearing.”…”�”}”(hjìëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mûhjèëubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mÿhjèëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j ìh´Mûhjrëubhì)�”}”(hŒ **Return**”h]”j )�”}”(hj$ìh]”hŒReturn”…”�”}”(hj&ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhjrëubhì)�”}”(hŒ5true if attached SCSI device exists, false otherwise.”h]”hŒ5true if attached SCSI device exists, false otherwise.”…”�”}”(hj:ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhjrëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_scsi_remove_dev (C function)”Œc.ata_scsi_remove_dev”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ1void ata_scsi_remove_dev (struct ata_device *dev)”h]”j")�”}”(hŒ0void ata_scsi_remove_dev(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiìh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjeìh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjeìh²hh³jwìh´Mubj�)�”}”(hŒata_scsi_remove_dev”h]”j[)�”}”(hŒata_scsi_remove_dev”h]”hŒata_scsi_remove_dev”…”�”}”(hjŠìh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj†ìubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjeìh²hh³jwìh´Mubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj¦ìh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj¢ìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢ìubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjÄìh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÁìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jÆìŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjŒìsbŒc.ata_scsi_remove_dev”†”asbuh1hhj¢ìubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäìh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¢ìubj)�”}”(hjS h]”hŒ*”…”�”}”(hjòìh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj¢ìubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÿìh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¢ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjžìubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjeìh²hh³jwìh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjaìh²hh³jwìh´Mubah}”(h]”j\ìah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jwìh´Mhj^ìh²hubj)�”}”(hhh]”hì)�”}”(hŒremove attached SCSI device”h]”hŒremove attached SCSI device”…”�”}”(hj)íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj&íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ìh²hh³jwìh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jAíj1jAíj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX"**Parameters** ``struct ata_device *dev`` ATA device to remove attached SCSI device for **Description** This function is called from ata_eh_scsi_hotplug() and responsible for removing the SCSI device attached to **dev**. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjKíh]”hŒ Parameters”…”�”}”(hjMíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIíubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MhjEíubjœ)�”}”(hhh]”j¡)�”}”(hŒI``struct ata_device *dev`` ATA device to remove attached SCSI device for ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjjíh]”hŒstruct ata_device *dev”…”�”}”(hjlíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjhíubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhjdíubj·)�”}”(hhh]”hì)�”}”(hŒ-ATA device to remove attached SCSI device for”h]”hŒ-ATA device to remove attached SCSI device for”…”�”}”(hjƒíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jíh´Mhj€íubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjdíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jíh´Mhjaíubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjEíubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj¥íh]”hŒ Description”…”�”}”(hj§íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£íubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MhjEíubj)�”}”(hŒ¡This function is called from ata_eh_scsi_hotplug() and responsible for removing the SCSI device attached to **dev**. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒtThis function is called from ata_eh_scsi_hotplug() and responsible for removing the SCSI device attached to **dev**.”h]”(hŒlThis function is called from ata_eh_scsi_hotplug() and responsible for removing the SCSI device attached to ”…”�”}”(hj¿íh²hh³Nh´Nubj )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjÇíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¿íubhŒ.”…”�”}”(hj¿íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj»íubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjàíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mhj»íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jßíh´MhjEíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)ata_scsi_media_change_notify (C function)”Œc.ata_scsi_media_change_notify”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ:void ata_scsi_media_change_notify (struct ata_device *dev)”h]”j")�”}”(hŒ9void ata_scsi_media_change_notify(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjîh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$îh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjîh²hh³j#îh´M`ubj�)�”}”(hŒata_scsi_media_change_notify”h]”j[)�”}”(hŒata_scsi_media_change_notify”h]”hŒata_scsi_media_change_notify”…”�”}”(hj6îh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj2îubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjîh²hh³j#îh´M`ubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjRîh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjNîubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_îh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNîubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjpîh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjmîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jrîŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj8îsbŒc.ata_scsi_media_change_notify”†”asbuh1hhjNîubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�îh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjNîubj)�”}”(hjS h]”hŒ*”…”�”}”(hjžîh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjNîubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj«îh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjNîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjJîubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjîh²hh³j#îh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj îh²hh³j#îh´M`ubah}”(h]”jîah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j#îh´M`hj îh²hubj)�”}”(hhh]”hì)�”}”(hŒsend media change event”h]”hŒsend media change event”…”�”}”(hjÕîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M`hjÒîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj îh²hh³j#îh´M`ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jíîj1jíîj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hŒì**Parameters** ``struct ata_device *dev`` Pointer to the disk device with media change event **Description** Tell the block layer to send a media change notification event. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj÷îh]”hŒ Parameters”…”�”}”(hjùîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõîubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mdhjñîubjœ)�”}”(hhh]”j¡)�”}”(hŒN``struct ata_device *dev`` Pointer to the disk device with media change event ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjïh]”hŒstruct ata_device *dev”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mahjïubj·)�”}”(hhh]”hì)�”}”(hŒ2Pointer to the disk device with media change event”h]”hŒ2Pointer to the disk device with media change event”…”�”}”(hj/ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j+ïh´Mahj,ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j+ïh´Mahj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjñîubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjQïh]”hŒ Description”…”�”}”(hjSïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjOïubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mchjñîubj)�”}”(hŒfTell the block layer to send a media change notification event. LOCKING: spin_lock_irqsave(host lock)”h]”(hì)�”}”(hŒ?Tell the block layer to send a media change notification event.”h]”hŒ?Tell the block layer to send a media change notification event.”…”�”}”(hjkïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mbhjgïubhì)�”}”(hŒ%LOCKING: spin_lock_irqsave(host lock)”h]”hŒ%LOCKING: spin_lock_irqsave(host lock)”…”�”}”(hjzïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mehjgïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jyïh´Mbhjñîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_hotplug (C function)”Œc.ata_scsi_hotplug”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ0void ata_scsi_hotplug (struct work_struct *work)”h]”j")�”}”(hŒ/void ata_scsi_hotplug(struct work_struct *work)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯ïh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj«ïh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mqubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj«ïh²hh³j½ïh´Mqubj�)�”}”(hŒata_scsi_hotplug”h]”j[)�”}”(hŒata_scsi_hotplug”h]”hŒata_scsi_hotplug”…”�”}”(hjÐïh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÌïubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj«ïh²hh³j½ïh´Mqubjª)�”}”(hŒ(struct work_struct *work)”h]”j°)�”}”(hŒstruct work_struct *work”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjìïh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjèïubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùïh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjèïubh)�”}”(hhh]”j[)�”}”(hŒ work_struct”h]”hŒ work_struct”…”�”}”(hj ðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j ðŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÒïsbŒc.ata_scsi_hotplug”†”asbuh1hhjèïubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*ðh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjèïubj)�”}”(hjS h]”hŒ*”…”�”}”(hj8ðh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjèïubj[)�”}”(hŒwork”h]”hŒwork”…”�”}”(hjEðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjèïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjäïubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj«ïh²hh³j½ïh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj§ïh²hh³j½ïh´Mqubah}”(h]”j¢ïah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j½ïh´Mqhj¤ïh²hubj)�”}”(hhh]”hì)�”}”(hŒSCSI part of hotplug”h]”hŒSCSI part of hotplug”…”�”}”(hjoðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mqhjlðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ïh²hh³j½ïh´Mqubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j‡ðj1j‡ðj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX™**Parameters** ``struct work_struct *work`` Pointer to ATA port to perform SCSI hotplug on **Description** Perform SCSI part of hotplug. It's executed from a separate workqueue after EH completes. This is necessary because SCSI hot plugging requires working EH and hot unplugging is synchronized with hot plugging with a mutex. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj‘ðh]”hŒ Parameters”…”�”}”(hj“ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Muhj‹ðubjœ)�”}”(hhh]”j¡)�”}”(hŒL``struct work_struct *work`` Pointer to ATA port to perform SCSI hotplug on ”h]”(j§)�”}”(hŒ``struct work_struct *work``”h]”j\)�”}”(hj°ðh]”hŒstruct work_struct *work”…”�”}”(hj²ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj®ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mrhjªðubj·)�”}”(hhh]”hì)�”}”(hŒ.Pointer to ATA port to perform SCSI hotplug on”h]”hŒ.Pointer to ATA port to perform SCSI hotplug on”…”�”}”(hjÉðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅðh´MrhjÆðubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjªðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÅðh´Mrhj§ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj‹ðubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjëðh]”hŒ Description”…”�”}”(hjíðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjéðubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mthj‹ðubj)�”}”(hX Perform SCSI part of hotplug. It's executed from a separate workqueue after EH completes. This is necessary because SCSI hot plugging requires working EH and hot unplugging is synchronized with hot plugging with a mutex. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒÞPerform SCSI part of hotplug. It's executed from a separate workqueue after EH completes. This is necessary because SCSI hot plugging requires working EH and hot unplugging is synchronized with hot plugging with a mutex.”h]”hŒàPerform SCSI part of hotplug. It’s executed from a separate workqueue after EH completes. This is necessary because SCSI hot plugging requires working EH and hot unplugging is synchronized with hot plugging with a mutex.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mshjñubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mxhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jñh´Mshj‹ðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒata_scsi_user_scan (C function)”Œc.ata_scsi_user_scan”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ`int ata_scsi_user_scan (struct Scsi_Host *shost, unsigned int channel, unsigned int id, u64 lun)”h]”j")�”}”(hŒ_int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel, unsigned int id, u64 lun)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjIñh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjEñh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M—ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEñh²hh³jWñh´M—ubj�)�”}”(hŒata_scsi_user_scan”h]”j[)�”}”(hŒata_scsi_user_scan”h]”hŒata_scsi_user_scan”…”�”}”(hjjñh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjfñubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjEñh²hh³jWñh´M—ubjª)�”}”(hŒI(struct Scsi_Host *shost, unsigned int channel, unsigned int id, u64 lun)”h]”(j°)�”}”(hŒstruct Scsi_Host *shost”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj†ñh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‚ñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚ñubh)�”}”(hhh]”j[)�”}”(hŒ Scsi_Host”h]”hŒ Scsi_Host”…”�”}”(hj¤ñh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¡ñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¦ñŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjlñsbŒc.ata_scsi_user_scan”†”asbuh1hhj‚ñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‚ñubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÒñh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj‚ñubj[)�”}”(hŒshost”h]”hŒshost”…”�”}”(hjßñh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‚ñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj~ñubj°)�”}”(hŒunsigned int channel”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjøñh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjôñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôñubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjôñubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjôñubj[)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hj0òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjôñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj~ñubj°)�”}”(hŒunsigned int id”h]”(j²)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjIòh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjEòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEòubj²)�”}”(hŒint”h]”hŒint”…”�”}”(hjeòh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjEòubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsòh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjEòubj[)�”}”(hŒid”h]”hŒid”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjEòubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj~ñubj°)�”}”(hŒu64 lun”h]”(h)�”}”(hhh]”j[)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjšòubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŸòŒmodname”NŒ classname”Njwjz)�”}”j}]”jÀñŒc.ata_scsi_user_scan”†”asbuh1hhj–òubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»òh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj–òubj[)�”}”(hŒlun”h]”hŒlun”…”�”}”(hjÉòh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj–òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj~ñubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjEñh²hh³jWñh´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjAñh²hh³jWñh´M—ubah}”(h]”j<ñah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jWñh´M—hj>ñh²hubj)�”}”(hhh]”hì)�”}”(hŒ&indication for user-initiated bus scan”h]”hŒ&indication for user-initiated bus scan”…”�”}”(hjóòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M—hjðòh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj>ñh²hh³jWñh´M—ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j ój1j ój2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hXm**Parameters** ``struct Scsi_Host *shost`` SCSI host to scan ``unsigned int channel`` Channel to scan ``unsigned int id`` ID to scan ``u64 lun`` LUN to scan **Description** This function is called when user explicitly requests bus scan. Set probe pending flag and invoke EH. LOCKING: SCSI layer (we don't care) **Return** Zero.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjóh]”hŒ Parameters”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M›hjóubjœ)�”}”(hhh]”(j¡)�”}”(hŒ.``struct Scsi_Host *shost`` SCSI host to scan ”h]”(j§)�”}”(hŒ``struct Scsi_Host *shost``”h]”j\)�”}”(hj4óh]”hŒstruct Scsi_Host *shost”…”�”}”(hj6óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj2óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M˜hj.óubj·)�”}”(hhh]”hì)�”}”(hŒSCSI host to scan”h]”hŒSCSI host to scan”…”�”}”(hjMóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jIóh´M˜hjJóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj.óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jIóh´M˜hj+óubj¡)�”}”(hŒ)``unsigned int channel`` Channel to scan ”h]”(j§)�”}”(hŒ``unsigned int channel``”h]”j\)�”}”(hjmóh]”hŒunsigned int channel”…”�”}”(hjoóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjkóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M™hjgóubj·)�”}”(hhh]”hì)�”}”(hŒChannel to scan”h]”hŒChannel to scan”…”�”}”(hj†óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚óh´M™hjƒóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjgóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j‚óh´M™hj+óubj¡)�”}”(hŒ``unsigned int id`` ID to scan ”h]”(j§)�”}”(hŒ``unsigned int id``”h]”j\)�”}”(hj¦óh]”hŒunsigned int id”…”�”}”(hj¨óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj¤óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mšhj óubj·)�”}”(hhh]”hì)�”}”(hŒ ID to scan”h]”hŒ ID to scan”…”�”}”(hj¿óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j»óh´Mšhj¼óubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j»óh´Mšhj+óubj¡)�”}”(hŒ``u64 lun`` LUN to scan ”h]”(j§)�”}”(hŒ ``u64 lun``”h]”j\)�”}”(hjßóh]”hŒu64 lun”…”�”}”(hjáóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÝóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M›hjÙóubj·)�”}”(hhh]”hì)�”}”(hŒ LUN to scan”h]”hŒ LUN to scan”…”�”}”(hjøóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jôóh´M›hjõóubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÙóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jôóh´M›hj+óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjôh]”hŒ Description”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M�hjóubj)�”}”(hŒŒThis function is called when user explicitly requests bus scan. Set probe pending flag and invoke EH. LOCKING: SCSI layer (we don't care) ”h]”(hì)�”}”(hŒfThis function is called when user explicitly requests bus scan. Set probe pending flag and invoke EH.”h]”hŒfThis function is called when user explicitly requests bus scan. Set probe pending flag and invoke EH.”…”�”}”(hj4ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mœhj0ôubhì)�”}”(hŒ#LOCKING: SCSI layer (we don't care)”h]”hŒ%LOCKING: SCSI layer (we don’t care)”…”�”}”(hjCôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MŸhj0ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jBôh´Mœhjóubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjZôh]”hŒReturn”…”�”}”(hj\ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXôubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M¢hjóubhì)�”}”(hŒZero.”h]”hŒZero.”…”�”}”(hjpôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´M£hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ ata_scsi_dev_rescan (C function)”Œc.ata_scsi_dev_rescan”hNt”auh1jhjÅZh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ3void ata_scsi_dev_rescan (struct work_struct *work)”h]”j")�”}”(hŒ2void ata_scsi_dev_rescan(struct work_struct *work)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸôh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj›ôh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÚubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®ôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj›ôh²hh³j­ôh´MÚubj�)�”}”(hŒata_scsi_dev_rescan”h]”j[)�”}”(hŒata_scsi_dev_rescan”h]”hŒata_scsi_dev_rescan”…”�”}”(hjÀôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¼ôubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj›ôh²hh³j­ôh´MÚubjª)�”}”(hŒ(struct work_struct *work)”h]”j°)�”}”(hŒstruct work_struct *work”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÜôh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjØôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéôh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØôubh)�”}”(hhh]”j[)�”}”(hŒ work_struct”h]”hŒ work_struct”…”�”}”(hjúôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj÷ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jüôŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÂôsbŒc.ata_scsi_dev_rescan”†”asbuh1hhjØôubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjØôubj)�”}”(hjS h]”hŒ*”…”�”}”(hj(õh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjØôubj[)�”}”(hŒwork”h]”hŒwork”…”�”}”(hj5õh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjØôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÔôubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj›ôh²hh³j­ôh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj—ôh²hh³j­ôh´MÚubah}”(h]”j’ôah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j­ôh´MÚhj”ôh²hubj)�”}”(hhh]”hì)�”}”(hŒinitiate scsi_rescan_device()”h]”hŒinitiate scsi_rescan_device()”…”�”}”(hj_õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÚhj\õh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ôh²hh³j­ôh´MÚubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jwõj1jwõj2‰j3‰j4‰uh1jh²hhjÅZh³Nh´Nubj6)�”}”(hX'**Parameters** ``struct work_struct *work`` Pointer to ATA port to perform scsi_rescan_device() **Description** After ATA pass thru (SAT) commands are executed successfully, libata need to propagate the changes to SCSI layer. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj�õh]”hŒ Parameters”…”�”}”(hjƒõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÞhj{õubjœ)�”}”(hhh]”j¡)�”}”(hŒQ``struct work_struct *work`` Pointer to ATA port to perform scsi_rescan_device() ”h]”(j§)�”}”(hŒ``struct work_struct *work``”h]”j\)�”}”(hj õh]”hŒstruct work_struct *work”…”�”}”(hj¢õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjžõubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÛhjšõubj·)�”}”(hhh]”hì)�”}”(hŒ3Pointer to ATA port to perform scsi_rescan_device()”h]”hŒ3Pointer to ATA port to perform scsi_rescan_device()”…”�”}”(hj¹õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jµõh´MÛhj¶õubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjšõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jµõh´MÛhj—õubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj{õubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÛõh]”hŒ Description”…”�”}”(hjÝõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙõubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÝhj{õubj)�”}”(hŒžAfter ATA pass thru (SAT) commands are executed successfully, libata need to propagate the changes to SCSI layer. LOCKING: Kernel thread context (may sleep).”h]”(hì)�”}”(hŒqAfter ATA pass thru (SAT) commands are executed successfully, libata need to propagate the changes to SCSI layer.”h]”hŒqAfter ATA pass thru (SAT) commands are executed successfully, libata need to propagate the changes to SCSI layer.”…”�”}”(hjõõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´MÜhjñõubhì)�”}”(hŒ+LOCKING: Kernel thread context (may sleep).”h]”hŒ+LOCKING: Kernel thread context (may sleep).”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/libata:604: ./drivers/ata/libata-scsi.c”h´Mßhjñõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jöh´MÜhj{õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÅZh²hh³Nh´Nubeh}”(h]”Œ!libata-scsi-translation-emulation”ah ]”h"]”Œ!libata scsi translation/emulation”ah$]”h&]”uh1hµhh·h²hh³hÊh´MWubh¶)�”}”(hhh]”(h»)�”}”(hŒATA errors and exceptions”h]”hŒATA errors and exceptions”…”�”}”(hj+öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj(öh²hh³hÊh´M`ubhì)�”}”(hŒ¡This chapter tries to identify what error/exception conditions exist for ATA/ATAPI devices and describe how they should be handled in implementation-neutral way.”h]”hŒ¡This chapter tries to identify what error/exception conditions exist for ATA/ATAPI devices and describe how they should be handled in implementation-neutral way.”…”�”}”(hj9öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mbhj(öh²hubhì)�”}”(hŒŒThe term 'error' is used to describe conditions where either an explicit error condition is reported from device or a command has timed out.”h]”hŒ�The term ‘error’ is used to describe conditions where either an explicit error condition is reported from device or a command has timed out.”…”�”}”(hjGöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mfhj(öh²hubhì)�”}”(hX)The term 'exception' is either used to describe exceptional conditions which are not errors (say, power or hotplug events), or to describe both errors and non-error exceptional conditions. Where explicit distinction between error and exception is necessary, the term 'non-error exception' is used.”h]”hX1The term ‘exception’ is either used to describe exceptional conditions which are not errors (say, power or hotplug events), or to describe both errors and non-error exceptional conditions. Where explicit distinction between error and exception is necessary, the term ‘non-error exception’ is used.”…”�”}”(hjUöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mihj(öh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒException categories”h]”hŒException categories”…”�”}”(hjföh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjcöh²hh³hÊh´Mpubhì)�”}”(hŒéExceptions are described primarily with respect to legacy taskfile + bus master IDE interface. If a controller provides other better mechanism for error reporting, mapping those into categories described below shouldn't be difficult.”h]”hŒëExceptions are described primarily with respect to legacy taskfile + bus master IDE interface. If a controller provides other better mechanism for error reporting, mapping those into categories described below shouldn’t be difficult.”…”�”}”(hjtöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mrhjcöh²hubhì)�”}”(hŒ¥In the following sections, two recovery actions - reset and reconfiguring transport - are mentioned. These are described further in `EH recovery actions <#exrec>`__.”h]”(hŒ„In the following sections, two recovery actions - reset and reconfiguring transport - are mentioned. These are described further in ”…”�”}”(hj‚öh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ `EH recovery actions <#exrec>`__”h]”hŒEH recovery actions”…”�”}”(hjŒöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒEH recovery actions”Œrefuri”Œ#exrec”uh1jŠöhj‚öubhŒ.”…”�”}”(hj‚öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mwhjcöh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ HSM violation”h]”hŒ HSM violation”…”�”}”(hj«öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¨öh²hh³hÊh´M|ubhì)�”}”(hŒzThis error is indicated when STATUS value doesn't match HSM requirement during issuing or execution any ATA/ATAPI command.”h]”hŒ|This error is indicated when STATUS value doesn’t match HSM requirement during issuing or execution any ATA/ATAPI command.”…”�”}”(hj¹öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M~hj¨öh²hubjþ )�”}”(hhh]”(j )�”}”(hŒQATA_STATUS doesn't contain !BSY && DRDY && !DRQ while trying to issue a command. ”h]”hì)�”}”(hŒPATA_STATUS doesn't contain !BSY && DRDY && !DRQ while trying to issue a command.”h]”hŒRATA_STATUS doesn’t contain !BSY && DRDY && !DRQ while trying to issue a command.”…”�”}”(hjÎöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hjÊöubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇöh²hh³hÊh´Nubj )�”}”(hŒ'!BSY && !DRQ during PIO data transfer. ”h]”hì)�”}”(hŒ&!BSY && !DRQ during PIO data transfer.”h]”hŒ&!BSY && !DRQ during PIO data transfer.”…”�”}”(hjæöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M„hjâöubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇöh²hh³hÊh´Nubj )�”}”(hŒDRQ on command completion. ”h]”hì)�”}”(hŒDRQ on command completion.”h]”hŒDRQ on command completion.”…”�”}”(hjþöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M†hjúöubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇöh²hh³hÊh´Nubj )�”}”(hX^!BSY && ERR after CDB transfer starts but before the last byte of CDB is transferred. ATA/ATAPI standard states that "The device shall not terminate the PACKET command with an error before the last byte of the command packet has been written" in the error outputs description of PACKET command and the state diagram doesn't include such transitions. ”h]”hì)�”}”(hX]!BSY && ERR after CDB transfer starts but before the last byte of CDB is transferred. ATA/ATAPI standard states that "The device shall not terminate the PACKET command with an error before the last byte of the command packet has been written" in the error outputs description of PACKET command and the state diagram doesn't include such transitions.”h]”hXc!BSY && ERR after CDB transfer starts but before the last byte of CDB is transferred. ATA/ATAPI standard states that “The device shall not terminate the PACKET command with an error before the last byte of the command packet has been writtenâ€� in the error outputs description of PACKET command and the state diagram doesn’t include such transitions.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mˆhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÇöh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jR jãuh1jý h³hÊh´M�hj¨öh²hubhì)�”}”(hŒÑIn these cases, HSM is violated and not much information regarding the error can be acquired from STATUS or ERROR register. IOW, this error can be anything - driver bug, faulty device, controller and/or cable.”h]”hŒÑIn these cases, HSM is violated and not much information regarding the error can be acquired from STATUS or ERROR register. IOW, this error can be anything - driver bug, faulty device, controller and/or cable.”…”�”}”(hj0÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj¨öh²hubhì)�”}”(hŒ·As HSM is violated, reset is necessary to restore known state. Reconfiguring transport for lower speed might be helpful too as transmission errors sometimes cause this kind of errors.”h]”hŒ·As HSM is violated, reset is necessary to restore known state. Reconfiguring transport for lower speed might be helpful too as transmission errors sometimes cause this kind of errors.”…”�”}”(hj>÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M“hj¨öh²hubeh}”(h]”Œ hsm-violation”ah ]”h"]”Œ hsm violation”ah$]”h&]”uh1hµhjcöh²hh³hÊh´M|ubh¶)�”}”(hhh]”(h»)�”}”(hŒ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”h]”hŒ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”…”�”}”(hjW÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjT÷h²hh³hÊh´M˜ubhì)�”}”(hXeThese are errors detected and reported by ATA/ATAPI devices indicating device problems. For this type of errors, STATUS and ERROR register values are valid and describe error condition. Note that some of ATA bus errors are detected by ATA/ATAPI devices and reported using the same mechanism as device errors. Those cases are described later in this section.”h]”hXeThese are errors detected and reported by ATA/ATAPI devices indicating device problems. For this type of errors, STATUS and ERROR register values are valid and describe error condition. Note that some of ATA bus errors are detected by ATA/ATAPI devices and reported using the same mechanism as device errors. Those cases are described later in this section.”…”�”•}”(hje÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MšhjT÷h²hubhì)�”}”(hŒnFor ATA commands, this type of errors are indicated by !BSY && ERR during command execution and on completion.”h]”hŒnFor ATA commands, this type of errors are indicated by !BSY && ERR during command execution and on completion.”…”�”}”(hjs÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¡hjT÷h²hubhì)�”}”(hŒFor ATAPI commands,”h]”hŒFor ATAPI commands,”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¤hjT÷h²hubjþ )�”}”(hhh]”(j )�”}”(hŒz!BSY && ERR && ABRT right after issuing PACKET indicates that PACKET command is not supported and falls in this category. ”h]”hì)�”}”(hŒy!BSY && ERR && ABRT right after issuing PACKET indicates that PACKET command is not supported and falls in this category.”h]”hŒy!BSY && ERR && ABRT right after issuing PACKET indicates that PACKET command is not supported and falls in this category.”…”�”}”(hj–÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¦hj’÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�÷h²hh³hÊh´Nubj )�”}”(hŒƒ!BSY && ERR(==CHK) && !ABRT after the last byte of CDB is transferred indicates CHECK CONDITION and doesn't fall in this category. ”h]”hì)�”}”(hŒ‚!BSY && ERR(==CHK) && !ABRT after the last byte of CDB is transferred indicates CHECK CONDITION and doesn't fall in this category.”h]”hŒ„!BSY && ERR(==CHK) && !ABRT after the last byte of CDB is transferred indicates CHECK CONDITION and doesn’t fall in this category.”…”�”}”(hj®÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M©hjª÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�÷h²hh³hÊh´Nubj )�”}”(hŒ�!BSY && ERR(==CHK) && ABRT after the last byte of CDB is transferred \*probably\* indicates CHECK CONDITION and doesn't fall in this category. ”h]”hì)�”}”(hŒŽ!BSY && ERR(==CHK) && ABRT after the last byte of CDB is transferred \*probably\* indicates CHECK CONDITION and doesn't fall in this category.”h]”hŒ�!BSY && ERR(==CHK) && ABRT after the last byte of CDB is transferred *probably* indicates CHECK CONDITION and doesn’t fall in this category.”…”�”}”(hjÆ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¬hjÂ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�÷h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jR jãuh1jý h³hÊh´M¦hjT÷h²hubhì)�”}”(hŒ¥Of errors detected as above, the following are not ATA/ATAPI device errors but ATA bus errors and should be handled according to `ATA bus error <#excatATAbusErr>`__.”h]”(hŒ�Of errors detected as above, the following are not ATA/ATAPI device errors but ATA bus errors and should be handled according to ”…”�”}”(hjà÷h²hh³Nh´Nubj‹ö)�”}”(hŒ#`ATA bus error <#excatATAbusErr>`__”h]”hŒ ATA bus error”…”�”}”(hjè÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ ATA bus error”jœöŒ#excatATAbusErr”uh1jŠöhjà÷ubhŒ.”…”�”}”(hjà÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M°hjT÷h²hubjœ)�”}”(hhh]”(j¡)�”}”(hXICRC error during data transfer This is indicated by ICRC bit in the ERROR register and means that corruption occurred during data transfer. Up to ATA/ATAPI-7, the standard specifies that this bit is only applicable to UDMA transfers but ATA/ATAPI-8 draft revision 1f says that the bit may be applicable to multiword DMA and PIO. ”h]”(j§)�”}”(hŒCRC error during data transfer”h]”hŒCRC error during data transfer”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´M¹hjøubj·)�”}”(hhh]”hì)�”}”(hX)This is indicated by ICRC bit in the ERROR register and means that corruption occurred during data transfer. Up to ATA/ATAPI-7, the standard specifies that this bit is only applicable to UDMA transfers but ATA/ATAPI-8 draft revision 1f says that the bit may be applicable to multiword DMA and PIO.”h]”hX)This is indicated by ICRC bit in the ERROR register and means that corruption occurred during data transfer. Up to ATA/ATAPI-7, the standard specifies that this bit is only applicable to UDMA transfers but ATA/ATAPI-8 draft revision 1f says that the bit may be applicable to multiword DMA and PIO.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mµhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´M¹hjøubj¡)�”}”(hXABRT error during data transfer or on completion Up to ATA/ATAPI-7, the standard specifies that ABRT could be set on ICRC errors and on cases where a device is not able to complete a command. Combined with the fact that MWDMA and PIO transfer errors aren't allowed to use ICRC bit up to ATA/ATAPI-7, it seems to imply that ABRT bit alone could indicate transfer errors. However, ATA/ATAPI-8 draft revision 1f removes the part that ICRC errors can turn on ABRT. So, this is kind of gray area. Some heuristics are needed here. ”h]”(j§)�”}”(hŒ0ABRT error during data transfer or on completion”h]”hŒ0ABRT error during data transfer or on completion”…”�”}”(hj9øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÄhj5øubj·)�”}”(hhh]”(hì)�”}”(hX@Up to ATA/ATAPI-7, the standard specifies that ABRT could be set on ICRC errors and on cases where a device is not able to complete a command. Combined with the fact that MWDMA and PIO transfer errors aren't allowed to use ICRC bit up to ATA/ATAPI-7, it seems to imply that ABRT bit alone could indicate transfer errors.”h]”hXBUp to ATA/ATAPI-7, the standard specifies that ABRT could be set on ICRC errors and on cases where a device is not able to complete a command. Combined with the fact that MWDMA and PIO transfer errors aren’t allowed to use ICRC bit up to ATA/ATAPI-7, it seems to imply that ABRT bit alone could indicate transfer errors.”…”�”}”(hjJøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¼hjGøubhì)�”}”(hŒšHowever, ATA/ATAPI-8 draft revision 1f removes the part that ICRC errors can turn on ABRT. So, this is kind of gray area. Some heuristics are needed here.”h]”hŒšHowever, ATA/ATAPI-8 draft revision 1f removes the part that ICRC errors can turn on ABRT. So, this is kind of gray area. Some heuristics are needed here.”…”�”}”(hjXøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÂhjGøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj5øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÄhjøh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjT÷h²hh³hÊh´Nubhì)�”}”(hŒ>ATA/ATAPI device errors can be further categorized as follows.”h]”hŒ>ATA/ATAPI device errors can be further categorized as follows.”…”�”}”(hjxøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÆhjT÷h²hubjœ)�”}”(hhh]”(j¡)�”}”(hX(Media errors This is indicated by UNC bit in the ERROR register. ATA devices reports UNC error only after certain number of retries cannot recover the data, so there's nothing much else to do other than notifying upper layer. READ and WRITE commands report CHS or LBA of the first failed sector but ATA/ATAPI standard specifies that the amount of transferred data on error completion is indeterminate, so we cannot assume that sectors preceding the failed sector have been transferred and thus cannot complete those sectors successfully as SCSI does. ”h]”(j§)�”}”(hŒ Media errors”h]”hŒ Media errors”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÒhj‰øubj·)�”}”(hhh]”(hì)�”}”(hŒÔThis is indicated by UNC bit in the ERROR register. ATA devices reports UNC error only after certain number of retries cannot recover the data, so there's nothing much else to do other than notifying upper layer.”h]”hŒÖThis is indicated by UNC bit in the ERROR register. ATA devices reports UNC error only after certain number of retries cannot recover the data, so there’s nothing much else to do other than notifying upper layer.”…”�”}”(hjžøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÉhj›øubhì)�”}”(hXDREAD and WRITE commands report CHS or LBA of the first failed sector but ATA/ATAPI standard specifies that the amount of transferred data on error completion is indeterminate, so we cannot assume that sectors preceding the failed sector have been transferred and thus cannot complete those sectors successfully as SCSI does.”h]”hXDREAD and WRITE commands report CHS or LBA of the first failed sector but ATA/ATAPI standard specifies that the amount of transferred data on error completion is indeterminate, so we cannot assume that sectors preceding the failed sector have been transferred and thus cannot complete those sectors successfully as SCSI does.”…”�”}”(hj¬øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÎhj›øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‰øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÒhj†øubj¡)�”}”(hŒAMedia changed / media change requested error <> ”h]”(j§)�”}”(hŒ,Media changed / media change requested error”h]”hŒ,Media changed / media change requested error”…”�”}”(hjÊøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÕhjÆøubj·)�”}”(hhh]”hì)�”}”(hŒ<>”h]”hŒ<>”…”�”}”(hjÛøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÕhjØøubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÆøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÕhj†øh²hubj¡)�”}”(hŒZAddress error This is indicated by IDNF bit in the ERROR register. Report to upper layer. ”h]”(j§)�”}”(hŒ Address error”h]”hŒ Address error”…”�”}”(hjùøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÙhjõøubj·)�”}”(hhh]”hì)�”}”(hŒKThis is indicated by IDNF bit in the ERROR register. Report to upper layer.”h]”hŒKThis is indicated by IDNF bit in the ERROR register. Report to upper layer.”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MØhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjõøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÙhj†øh²hubj¡)�”}”(hŒ×Other errors This can be invalid command or parameter indicated by ABRT ERROR bit or some other error condition. Note that ABRT bit can indicate a lot of things including ICRC and Address errors. Heuristics needed. ”h]”(j§)�”}”(hŒ Other errors”h]”hŒ Other errors”…”�”}”(hj(ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´MÞhj$ùubj·)�”}”(hhh]”hì)�”}”(hŒÉThis can be invalid command or parameter indicated by ABRT ERROR bit or some other error condition. Note that ABRT bit can indicate a lot of things including ICRC and Address errors. Heuristics needed.”h]”hŒÉThis can be invalid command or parameter indicated by ABRT ERROR bit or some other error condition. Note that ABRT bit can indicate a lot of things including ICRC and Address errors. Heuristics needed.”…”�”}”(hj9ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÜhj6ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj$ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´MÞhj†øh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjT÷h²hh³hÊh´Nubhì)�”}”(hXDepending on commands, not all STATUS/ERROR bits are applicable. These non-applicable bits are marked with "na" in the output descriptions but up to ATA/ATAPI-7 no definition of "na" can be found. However, ATA/ATAPI-8 draft revision 1f describes "N/A" as follows.”h]”hXDepending on commands, not all STATUS/ERROR bits are applicable. These non-applicable bits are marked with “naâ€� in the output descriptions but up to ATA/ATAPI-7 no definition of “naâ€� can be found. However, ATA/ATAPI-8 draft revision 1f describes “N/Aâ€� as follows.”…”�”}”(hjYùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MàhjT÷h²hubj)�”}”(hŒ¶3.2.3.3a N/A A keyword the indicates a field has no defined value in this standard and should not be checked by the host or device. N/A fields should be cleared to zero. ”h]”jœ)�”}”(hhh]”j¡)�”}”(hŒª3.2.3.3a N/A A keyword the indicates a field has no defined value in this standard and should not be checked by the host or device. N/A fields should be cleared to zero. ”h]”(j§)�”}”(hŒ 3.2.3.3a N/A”h]”hŒ 3.2.3.3a N/A”…”�”}”(hjrùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³hÊh´Mèhjnùubj·)�”}”(hhh]”hì)�”}”(hŒœA keyword the indicates a field has no defined value in this standard and should not be checked by the host or device. N/A fields should be cleared to zero.”h]”hŒœA keyword the indicates a field has no defined value in this standard and should not be checked by the host or device. N/A fields should be cleared to zero.”…”�”}”(hjƒùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mæhj€ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjnùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³hÊh´Mèhjkùubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjgùubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÊh´MåhjT÷h²hubhì)�”}”(hŒrSo, it seems reasonable to assume that "na" bits are cleared to zero by devices and thus need no explicit masking.”h]”hŒvSo, it seems reasonable to assume that “naâ€� bits are cleared to zero by devices and thus need no explicit masking.”…”�”}”(hj©ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MêhjT÷h²hubeh}”(h]”Œ2ata-atapi-device-error-non-ncq-non-check-condition”ah ]”h"]”Œ6ata/atapi device error (non-ncq / non-check condition)”ah$]”h&]”uh1hµhjcöh²hh³hÊh´M˜ubh¶)�”}”(hhh]”(h»)�”}”(hŒATAPI device CHECK CONDITION”h]”hŒATAPI device CHECK CONDITION”…”�”}”(hjÂùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¿ùh²hh³hÊh´Mîubhì)�”}”(hXEATAPI device CHECK CONDITION error is indicated by set CHK bit (ERR bit) in the STATUS register after the last byte of CDB is transferred for a PACKET command. For this kind of errors, sense data should be acquired to gather information regarding the errors. REQUEST SENSE packet command should be used to acquire sense data.”h]”hXEATAPI device CHECK CONDITION error is indicated by set CHK bit (ERR bit) in the STATUS register after the last byte of CDB is transferred for a PACKET command. For this kind of errors, sense data should be acquired to gather information regarding the errors. REQUEST SENSE packet command should be used to acquire sense data.”…”�”}”(hjÐùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mðhj¿ùh²hubhì)�”}”(hXZOnce sense data is acquired, this type of errors can be handled similarly to other SCSI errors. Note that sense data may indicate ATA bus error (e.g. Sense Key 04h HARDWARE ERROR && ASC/ASCQ 47h/00h SCSI PARITY ERROR). In such cases, the error should be considered as an ATA bus error and handled according to `ATA bus error <#excatATAbusErr>`__.”h]”(hX6Once sense data is acquired, this type of errors can be handled similarly to other SCSI errors. Note that sense data may indicate ATA bus error (e.g. Sense Key 04h HARDWARE ERROR && ASC/ASCQ 47h/00h SCSI PARITY ERROR). In such cases, the error should be considered as an ATA bus error and handled according to ”…”�”}”(hjÞùh²hh³Nh´Nubj‹ö)�”}”(hŒ#`ATA bus error <#excatATAbusErr>`__”h]”hŒ ATA bus error”…”�”}”(hjæùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ ATA bus error”jœöŒ#excatATAbusErr”uh1jŠöhjÞùubhŒ.”…”�”}”(hjÞùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Möhj¿ùh²hubeh}”(h]”Œatapi-device-check-condition”ah ]”h"]”Œatapi device check condition”ah$]”h&]”uh1hµhjcöh²hh³hÊh´Mîubh¶)�”}”(hhh]”(h»)�”}”(hŒATA device error (NCQ)”h]”hŒATA device error (NCQ)”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj úh²hh³hÊh´Mýubhì)�”}”(hXJNCQ command error is indicated by cleared BSY and set ERR bit during NCQ command phase (one or more NCQ commands outstanding). Although STATUS and ERROR registers will contain valid values describing the error, READ LOG EXT is required to clear the error condition, determine which command has failed and acquire more information.”h]”hXJNCQ command error is indicated by cleared BSY and set ERR bit during NCQ command phase (one or more NCQ commands outstanding). Although STATUS and ERROR registers will contain valid values describing the error, READ LOG EXT is required to clear the error condition, determine which command has failed and acquire more information.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mÿhj úh²hubhì)�”}”(hXÞREAD LOG EXT Log Page 10h reports which tag has failed and taskfile register values describing the error. With this information the failed command can be handled as a normal ATA command error as in `ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION) <#excatDevErr>`__ and all other in-flight commands must be retried. Note that this retry should not be counted - it's likely that commands retried this way would have completed normally if it were not for the failed command.”h]”(hŒÆREAD LOG EXT Log Page 10h reports which tag has failed and taskfile register values describing the error. With this information the failed command can be handled as a normal ATA command error as in ”…”�”}”(hj(úh²hh³Nh´Nubj‹ö)�”}”(hŒI`ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION) <#excatDevErr>`__”h]”hŒ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”…”�”}”(hj0úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”jœöŒ #excatDevErr”uh1jŠöhj(úubhŒÑ and all other in-flight commands must be retried. Note that this retry should not be counted - it’s likely that commands retried this way would have completed normally if it were not for the failed command.”…”�”}”(hj(úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj úh²hubhì)�”}”(hŒŽNote that ATA bus errors can be reported as ATA device NCQ errors. This should be handled as described in `ATA bus error <#excatATAbusErr>`__.”h]”(hŒjNote that ATA bus errors can be reported as ATA device NCQ errors. This should be handled as described in ”…”�”}”(hjKúh²hh³Nh´Nubj‹ö)�”}”(hŒ#`ATA bus error <#excatATAbusErr>`__”h]”hŒ ATA bus error”…”�”}”(hjSúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ ATA bus error”jœöŒ#excatATAbusErr”uh1jŠöhjKúubhŒ.”…”�”}”(hjKúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hj úh²hubhì)�”}”(hŒ¡If READ LOG EXT Log Page 10h fails or reports NQ, we're thoroughly screwed. This condition should be treated according to `HSM violation <#excatHSMviolation>`__.”h]”(hŒ|If READ LOG EXT Log Page 10h fails or reports NQ, we’re thoroughly screwed. This condition should be treated according to ”…”�”}”(hjnúh²hh³Nh´Nubj‹ö)�”}”(hŒ&`HSM violation <#excatHSMviolation>`__”h]”hŒ HSM violation”…”�”}”(hjvúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ HSM violation”jœöŒ#excatHSMviolation”uh1jŠöhjnúubhŒ.”…”�”}”(hjnúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj úh²hubeh}”(h]”Œata-device-error-ncq”ah ]”h"]”Œata device error (ncq)”ah$]”h&]”uh1hµhjcöh²hh³hÊh´Mýubh¶)�”}”(hhh]”(h»)�”}”(hŒ ATA bus error”h]”hŒ ATA bus error”…”�”}”(hjœúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj™úh²hh³hÊh´Mubhì)�”}”(hŒŠATA bus error means that data corruption occurred during transmission over ATA bus (SATA or PATA). This type of errors can be indicated by”h]”hŒŠATA bus error means that data corruption occurred during transmission over ATA bus (SATA or PATA). This type of errors can be indicated by”…”�”}”(hjªúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj™úh²hubjþ )�”}”(hhh]”(j )�”}”(hŒnICRC or ABRT error as described in `ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION) <#excatDevErr>`__. ”h]”hì)�”}”(hŒmICRC or ABRT error as described in `ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION) <#excatDevErr>`__.”h]”(hŒ#ICRC or ABRT error as described in ”…”�”}”(hj¿úh²hh³Nh´Nubj‹ö)�”}”(hŒI`ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION) <#excatDevErr>`__”h]”hŒ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”…”�”}”(hjÇúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ6ATA/ATAPI device error (non-NCQ / non-CHECK CONDITION)”jœöŒ #excatDevErr”uh1jŠöhj¿úubhŒ.”…”�”}”(hj¿úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj»úubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸úh²hh³hÊh´Nubj )�”}”(hŒ[Controller-specific error completion with error information indicating transmission error. ”h]”hì)�”}”(hŒZController-specific error completion with error information indicating transmission error.”h]”hŒZController-specific error completion with error information indicating transmission error.”…”�”}”(hjìúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjèúubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸úh²hh³hÊh´Nubj )�”}”(hŒ‰On some controllers, command timeout. In this case, there may be a mechanism to determine that the timeout is due to transmission error. ”h]”hì)�”}”(hŒˆOn some controllers, command timeout. In this case, there may be a mechanism to determine that the timeout is due to transmission error.”h]”hŒˆOn some controllers, command timeout. In this case, there may be a mechanism to determine that the timeout is due to transmission error.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸úh²hh³hÊh´Nubj )�”}”(hŒ=Unknown/random errors, timeouts and all sorts of weirdities. ”h]”hì)�”}”(hŒ`__ for more information.”h]”(hŒžOnce it’s determined that ATA bus errors have possibly occurred, lowering ATA bus transmission speed is one of actions which may alleviate the problem. See ”…”�”}”(hjDûh²hh³Nh´Nubj‹ö)�”}”(hŒ(`Reconfigure transport <#exrecReconf>`__”h]”hŒReconfigure transport”…”�”}”(hjLûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒReconfigure transport”jœöŒ #exrecReconf”uh1jŠöhjDûubhŒ for more information.”…”�”}”(hjDûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M-hj™úh²hubeh}”(h]”Œ ata-bus-error”ah ]”h"]”Œ ata bus error”ah$]”h&]”uh1hµhjcöh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ PCI bus error”h]”hŒ PCI bus error”…”�”}”(hjrûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjoûh²hh³hÊh´M3ubhì)�”}”(hX,Data corruption or other failures during transmission over PCI (or other system bus). For standard BMDMA, this is indicated by Error bit in the BMDMA Status register. This type of errors must be logged as it indicates something is very wrong with the system. Resetting host controller is recommended.”h]”hX,Data corruption or other failures during transmission over PCI (or other system bus). For standard BMDMA, this is indicated by Error bit in the BMDMA Status register. This type of errors must be logged as it indicates something is very wrong with the system. Resetting host controller is recommended.”…”�”}”(hj€ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M5hjoûh²hubeh}”(h]”Œ pci-bus-error”ah ]”h"]”Œ pci bus error”ah$]”h&]”uh1hµhjcöh²hh³hÊh´M3ubh¶)�”}”(hhh]”(h»)�”}”(hŒLate completion”h]”hŒLate completion”…”�”}”(hj™ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj–ûh²hh³hÊh´M<ubhì)�”}”(hŒÿThis occurs when timeout occurs and the timeout handler finds out that the timed out command has completed successfully or with error. This is usually caused by lost interrupts. This type of errors must be logged. Resetting host controller is recommended.”h]”hŒÿThis occurs when timeout occurs and the timeout handler finds out that the timed out command has completed successfully or with error. This is usually caused by lost interrupts. This type of errors must be logged. Resetting host controller is recommended.”…”�”}”(hj§ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M>hj–ûh²hubeh}”(h]”Œlate-completion”ah ]”h"]”Œlate completion”ah$]”h&]”uh1hµhjcöh²hh³hÊh´M<ubh¶)�”}”(hhh]”(h»)�”}”(hŒUnknown error (timeout)”h]”hŒUnknown error (timeout)”…”�”}”(hjÀûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj½ûh²hh³hÊh´MDubhì)�”}”(hX;This is when timeout occurs and the command is still processing or the host and device are in unknown state. When this occurs, HSM could be in any valid or invalid state. To bring the device to known state and make it forget about the timed out command, resetting is necessary. The timed out command may be retried.”h]”hX;This is when timeout occurs and the command is still processing or the host and device are in unknown state. When this occurs, HSM could be in any valid or invalid state. To bring the device to known state and make it forget about the timed out command, resetting is necessary. The timed out command may be retried.”…”�”}”(hjÎûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MFhj½ûh²hubhì)�”}”(hŒrTimeouts can also be caused by transmission errors. Refer to `ATA bus error <#excatATAbusErr>`__ for more details.”h]”(hŒ=Timeouts can also be caused by transmission errors. Refer to ”…”�”}”(hjÜûh²hh³Nh´Nubj‹ö)�”}”(hŒ#`ATA bus error <#excatATAbusErr>`__”h]”hŒ ATA bus error”…”�”}”(hjäûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ ATA bus error”jœöŒ#excatATAbusErr”uh1jŠöhjÜûubhŒ for more details.”…”�”}”(hjÜûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MLhj½ûh²hubeh}”(h]”Œunknown-error-timeout”ah ]”h"]”Œunknown error (timeout)”ah$]”h&]”uh1hµhjcöh²hh³hÊh´MDubh¶)�”}”(hhh]”(h»)�”}”(hŒ'Hotplug and power management exceptions”h]”hŒ'Hotplug and power management exceptions”…”�”}”(hj üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjüh²hh³hÊh´MPubhì)�”}”(hŒ<>”h]”hŒ<>”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MRhjüh²hubeh}”(h]”Œ'hotplug-and-power-management-exceptions”ah ]”h"]”Œ'hotplug and power management exceptions”ah$]”h&]”uh1hµhjcöh²hh³hÊh´MPubeh}”(h]”Œexception-categories”ah ]”h"]”Œexception categories”ah$]”h&]”uh1hµhj(öh²hh³hÊh´Mpubh¶)�”}”(hhh]”(h»)�”}”(hŒEH recovery actions”h]”hŒEH recovery actions”…”�”}”(hj9üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj6üh²hh³hÊh´MUubhì)�”}”(hŒ:This section discusses several important recovery actions.”h]”hŒ:This section discusses several important recovery actions.”…”�”}”(hjGüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MWhj6üh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒClearing error condition”h]”hŒClearing error condition”…”�”}”(hjXüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjUüh²hh³hÊh´MZubhì)�”}”(hŒƒMany controllers require its error registers to be cleared by error handler. Different controllers may have different requirements.”h]”hŒƒMany controllers require its error registers to be cleared by error handler. Different controllers may have different requirements.”…”�”}”(hjfüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M\hjUüh²hubhì)�”}”(hŒ\For SATA, it's strongly recommended to clear at least SError register during error handling.”h]”hŒ^For SATA, it’s strongly recommended to clear at least SError register during error handling.”…”�”}”(hjtüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M_hjUüh²hubeh}”(h]”Œclearing-error-condition”ah ]”h"]”Œclearing error condition”ah$]”h&]”uh1hµhj6üh²hh³hÊh´MZubh¶)�”}”(hhh]”(h»)�”}”(hŒReset”h]”hŒReset”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŠüh²hh³hÊh´Mcubhì)�”}”(hŒ9During EH, resetting is necessary in the following cases.”h]”hŒ9During EH, resetting is necessary in the following cases.”…”�”}”(hj›üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MehjŠüh²hubjþ )�”}”(hhh]”(j )�”}”(hŒ#HSM is in unknown or invalid state ”h]”hì)�”}”(hŒ"HSM is in unknown or invalid state”h]”hŒ"HSM is in unknown or invalid state”…”�”}”(hj°üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mghj¬üubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©üh²hh³hÊh´Nubj )�”}”(hŒ#HBA is in unknown or invalid state ”h]”hì)�”}”(hŒ"HBA is in unknown or invalid state”h]”hŒ"HBA is in unknown or invalid state”…”�”}”(hjÈüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MihjÄüubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©üh²hh³hÊh´Nubj )�”}”(hŒIf more than $N (3?) transmission errors happen in 15 minutes,”h]”hŒ>If more than $N (3?) transmission errors happen in 15 minutes,”…”�”}”(hjQÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÈhjMÿubjþ )�”}”(hhh]”(j )�”}”(hŒ@if SATA, decrease SATA PHY speed. if speed cannot be decreased, ”h]”hì)�”}”(hŒ?if SATA, decrease SATA PHY speed. if speed cannot be decreased,”h]”hŒ?if SATA, decrease SATA PHY speed. if speed cannot be decreased,”…”�”}”(hjfÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÊhjbÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_ÿubj )�”}”(hŒ7decrease UDMA xfer speed. if at UDMA0, switch to PIO4, ”h]”hì)�”}”(hŒ6decrease UDMA xfer speed. if at UDMA0, switch to PIO4,”h]”hŒ6decrease UDMA xfer speed. if at UDMA0, switch to PIO4,”…”�”}”(hj~ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÌhjzÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj_ÿubj )�”}”(hŒ``unsigned long deadline`` deadline jiffies for the operation ”h]”(j§)�”}”(hŒ``unsigned long deadline``”h]”j\)�”}”(hjh]”hŒunsigned long deadline”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÉhjubj·)�”}”(hhh]”hì)�”}”(hŒ"deadline jiffies for the operation”h]”hŒ"deadline jiffies for the operation”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2h´MÉhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j2h´MÉhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj¿ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjXh]”hŒ Description”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MËhj¿ubj)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hì)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hŒ&LOCKING: None (inherited from caller).”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÊhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€h´MÊhj¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒpiix_set_piomode (C function)”Œc.piix_set_piomode”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒDvoid piix_set_piomode (struct ata_port *ap, struct ata_device *adev)”h]”j")�”}”(hŒCvoid piix_set_piomode(struct ata_port *ap, struct ata_device *adev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj£h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M1ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj£h²hh³jµh´M1ubj�)�”}”(hŒpiix_set_piomode”h]”j[)�”}”(hŒpiix_set_piomode”h]”hŒpiix_set_piomode”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÄubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj£h²hh³jµh´M1ubjª)�”}”(hŒ.(struct ata_port *ap, struct ata_device *adev)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÊsbŒc.piix_set_piomode”†”asbuh1hhjàubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjàubj)�”}”(hjS h]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjàubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÜubj°)�”}”(hŒstruct ata_device *adev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jvŒmodname”NŒ classname”Njwjz)�”}”j}]”jŒc.piix_set_piomode”†”asbuh1hhjRubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjRubj)�”}”(hjS h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjRubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÜubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj£h²hh³jµh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjŸh²hh³jµh´M1ubah}”(h]”jšah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jµh´M1hjœh²hubj)�”}”(hhh]”hì)�”}”(hŒ+Initialize host controller PATA PIO timings”h]”hŒ+Initialize host controller PATA PIO timings”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M1hjÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœh²hh³jµh´M1ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jïj1jïj2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_port *ap`` Port whose timings we are configuring ``struct ata_device *adev`` Drive in question **Description** Set PIO mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjùh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M5hjóubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_port *ap`` Port whose timings we are configuring ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjh]”hŒstruct ata_port *ap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M2hjubj·)�”}”(hhh]”hì)�”}”(hŒ%Port whose timings we are configuring”h]”hŒ%Port whose timings we are configuring”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j-h´M2hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j-h´M2hjubj¡)�”}”(hŒ.``struct ata_device *adev`` Drive in question ”h]”(j§)�”}”(hŒ``struct ata_device *adev``”h]”j\)�”}”(hjQh]”hŒstruct ata_device *adev”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M3hjKubj·)�”}”(hhh]”hì)�”}”(hŒDrive in question”h]”hŒDrive in question”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfh´M3hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jfh´M3hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjŒh]”hŒ Description”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M5hjóubj)�”}”(hŒeSet PIO mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ=Set PIO mode for device, in host controller PCI config space.”h]”hŒ=Set PIO mode for device, in host controller PCI config space.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M4hj¢ubhì)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hŒ&LOCKING: None (inherited from caller).”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M6hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´h´M4hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ do_pata_set_dmamode (C function)”Œc.do_pata_set_dmamode”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒRvoid do_pata_set_dmamode (struct ata_port *ap, struct ata_device *adev, int isich)”h]”j")�”}”(hŒQvoid do_pata_set_dmamode(struct ata_port *ap, struct ata_device *adev, int isich)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjæh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MAubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjæh²hh³jøh´MAubj�)�”}”(hŒdo_pata_set_dmamode”h]”j[)�”}”(hŒdo_pata_set_dmamode”h]”hŒdo_pata_set_dmamode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjæh²hh³jøh´MAubjª)�”}”(hŒ9(struct ata_port *ap, struct ata_device *adev, int isich)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jGŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj sbŒc.do_pata_set_dmamode”†”asbuh1hhj#ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj#ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj#ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubj°)�”}”(hŒstruct ata_device *adev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³N•wÓh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj•ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j¹Œmodname”NŒ classname”Njwjz)�”}”j}]”jaŒc.do_pata_set_dmamode”†”asbuh1hhj•ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj•ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj•ubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubj°)�”}”(hŒ int isich”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj[)�”}”(hŒisich”h]”hŒisich”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjæh²hh³jøh´MAubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjâh²hh³jøh´MAubah}”(h]”jÝah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jøh´MAhjßh²hubj)�”}”(hhh]”hì)�”}”(hŒ+Initialize host controller PATA PIO timings”h]”hŒ+Initialize host controller PATA PIO timings”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MAhjLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßh²hh³jøh´MAubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jgj1jgj2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hX:**Parameters** ``struct ata_port *ap`` Port whose timings we are configuring ``struct ata_device *adev`` Drive in question ``int isich`` set if the chip is an ICH device **Description** Set UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjqh]”hŒ Parameters”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MEhjkubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_port *ap`` Port whose timings we are configuring ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj�h]”hŒstruct ata_port *ap”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MBhjŠubj·)�”}”(hhh]”hì)�”}”(hŒ%Port whose timings we are configuring”h]”hŒ%Port whose timings we are configuring”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥h´MBhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¥h´MBhj‡ubj¡)�”}”(hŒ.``struct ata_device *adev`` Drive in question ”h]”(j§)�”}”(hŒ``struct ata_device *adev``”h]”j\)�”}”(hjÉh]”hŒstruct ata_device *adev”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MChjÃubj·)�”}”(hhh]”hì)�”}”(hŒDrive in question”h]”hŒDrive in question”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞh´MChjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jÞh´MChj‡ubj¡)�”}”(hŒ/``int isich`` set if the chip is an ICH device ”h]”(j§)�”}”(hŒ ``int isich``”h]”j\)�”}”(hjh]”hŒ int isich”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MDhjüubj·)�”}”(hhh]”hì)�”}”(hŒ set if the chip is an ICH device”h]”hŒ set if the chip is an ICH device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MDhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jh´MDhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjkubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj=h]”hŒ Description”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MFhjkubj)�”}”(hŒfSet UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ>Set UDMA mode for device, in host controller PCI config space.”h]”hŒ>Set UDMA mode for device, in host controller PCI config space.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MEhjSubhì)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hŒ&LOCKING: None (inherited from caller).”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MGhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jeh´MEhjkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒpiix_set_dmamode (C function)”Œc.piix_set_dmamode”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒDvoid piix_set_dmamode (struct ata_port *ap, struct ata_device *adev)”h]”j")�”}”(hŒCvoid piix_set_dmamode(struct ata_port *ap, struct ata_device *adev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj—h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M�ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj—h²hh³j©h´M�ubj�)�”}”(hŒpiix_set_dmamode”h]”j[)�”}”(hŒpiix_set_dmamode”h]”hŒpiix_set_dmamode”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¸ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj—h²hh³j©h´M�ubjª)�”}”(hŒ.(struct ata_port *ap, struct ata_device *adev)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jøŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¾sbŒc.piix_set_dmamode”†”asbuh1hhjÔubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÔubj)�”}”(hjS h]”hŒ*”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÔubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÐubj°)�”}”(hŒstruct ata_device *adev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjF ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjF ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhje ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jj Œmodname”NŒ classname”Njwjz)�”}”j}]”j Œc.piix_set_dmamode”†”asbuh1hhjF ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjF ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjF ubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjF ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÐubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj—h²hh³j©h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj“h²hh³j©h´M�ubah}”(h]”jŽah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j©h´M�hj�h²hubj)�”}”(hhh]”hì)�”}”(hŒ+Initialize host controller PATA DMA timings”h]”hŒ+Initialize host controller PATA DMA timings”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M�hjÈ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�h²hh³j©h´M�ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jã j1jã j2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hŒü**Parameters** ``struct ata_port *ap`` Port whose timings we are configuring ``struct ata_device *adev`` um **Description** Set MW/UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjí h]”hŒ Parameters”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M”hjç ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_port *ap`` Port whose timings we are configuring ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hj h]”hŒstruct ata_port *ap”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M‘hj ubj·)�”}”(hhh]”hì)�”}”(hŒ%Port whose timings we are configuring”h]”hŒ%Port whose timings we are configuring”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j! h´M‘hj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j! h´M‘hj ubj¡)�”}”(hŒ``struct ata_device *adev`` um ”h]”(j§)�”}”(hŒ``struct ata_device *adev``”h]”j\)�”}”(hjE h]”hŒstruct ata_device *adev”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M’hj? ubj·)�”}”(hhh]”hì)�”}”(hŒum”h]”hŒum”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZ h´M’hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj? ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jZ h´M’hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjç ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj€ h]”hŒ Description”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M”hjç ubj)�”}”(hŒiSet MW/UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒASet MW/UDMA mode for device, in host controller PCI config space.”h]”hŒASet MW/UDMA mode for device, in host controller PCI config space.”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M“hj– ubhì)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hŒ&LOCKING: None (inherited from caller).”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M•hj– ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¨ h´M“hjç ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒich_set_dmamode (C function)”Œc.ich_set_dmamode”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒCvoid ich_set_dmamode (struct ata_port *ap, struct ata_device *adev)”h]”j")�”}”(hŒBvoid ich_set_dmamode(struct ata_port *ap, struct ata_device *adev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjÚ h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÚ h²hh³jì h´M ubj�)�”}”(hŒich_set_dmamode”h]”j[)�”}”(hŒich_set_dmamode”h]”hŒich_set_dmamode”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjû ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjÚ h²hh³jì h´M ubjª)�”}”(hŒ.(struct ata_port *ap, struct ata_device *adev)”h]”(j°)�”}”(hŒstruct ata_port *ap”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubh)�”}”(hhh]”j[)�”}”(hŒata_port”h]”hŒata_port”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj6 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j; Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj sbŒc.ich_set_dmamode”†”asbuh1hhj ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj ubj[)�”}”(hŒap”h]”hŒap”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ubj°)�”}”(hŒstruct ata_device *adev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‰ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰ ubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¨ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j­ Œmodname”NŒ classname”Njwjz)�”}”j}]”jU Œc.ich_set_dmamode”†”asbuh1hhj‰ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‰ ubj)�”}”(hjS h]”hŒ*”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj‰ ubj[)�”}”(hŒadev”h]”hŒadev”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‰ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjÚ h²hh³jì h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjÖ h²hh³jì h´M ubah}”(h]”jÑ ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jì h´M hjÓ h²hubj)�”}”(hhh]”hì)�”}”(hŒ+Initialize host controller PATA DMA timings”h]”hŒ+Initialize host controller PATA DMA timings”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓ h²hh³jì h´M ubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j& j1j& j2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hŒü**Parameters** ``struct ata_port *ap`` Port whose timings we are configuring ``struct ata_device *adev`` um **Description** Set MW/UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj0 h]”hŒ Parameters”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj. ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M¤hj* ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ>``struct ata_port *ap`` Port whose timings we are configuring ”h]”(j§)�”}”(hŒ``struct ata_port *ap``”h]”j\)�”}”(hjO h]”hŒstruct ata_port *ap”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M¡hjI ubj·)�”}”(hhh]”hì)�”}”(hŒ%Port whose timings we are configuring”h]”hŒ%Port whose timings we are configuring”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jd h´M¡hje ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjI ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jd h´M¡hjF ubj¡)�”}”(hŒ``struct ata_device *adev`` um ”h]”(j§)�”}”(hŒ``struct ata_device *adev``”h]”j\)�”}”(hjˆ h]”hŒstruct ata_device *adev”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M¢hj‚ ubj·)�”}”(hhh]”hì)�”}”(hŒum”h]”hŒum”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j� h´M¢hjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj‚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j� h´M¢hjF ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj* ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjà h]”hŒ Description”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÁ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M¤hj* ubj)�”}”(hŒiSet MW/UDMA mode for device, in host controller PCI config space. LOCKING: None (inherited from caller).”h]”(hì)�”}”(hŒASet MW/UDMA mode for device, in host controller PCI config space.”h]”hŒASet MW/UDMA mode for device, in host controller PCI config space.”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M£hjÙ ubhì)�”}”(hŒ&LOCKING: None (inherited from caller).”h]”hŒ&LOCKING: None (inherited from caller).”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´M¥hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jë h´M£hj* ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$piix_check_450nx_errata (C function)”Œc.piix_check_450nx_errata”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ5int piix_check_450nx_errata (struct pci_dev *ata_dev)”h]”j")�”}”(hŒ4int piix_check_450nx_errata(struct pci_dev *ata_dev)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÐubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj h²hh³j/ h´MÐubj�)�”}”(hŒpiix_check_450nx_errata”h]”j[)�”}”(hŒpiix_check_450nx_errata”h]”hŒpiix_check_450nx_errata”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj> ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj h²hh³j/ h´MÐubjª)�”}”(hŒ(struct pci_dev *ata_dev)”h]”j°)�”}”(hŒstruct pci_dev *ata_dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjZ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZ ubh)�”}”(hhh]”j[)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjy ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j~ Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjD sbŒc.piix_check_450nx_errata”†”asbuh1hhjZ ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjZ ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjZ ubj[)�”}”(hŒata_dev”h]”hŒata_dev”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjZ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjV ubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj h²hh³j/ h´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj h²hh³j/ h´MÐubah}”(h]”j ah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j/ h´MÐhj h²hubj)�”}”(hhh]”hì)�”}”(hŒCheck for problem 450NX setup”h]”hŒCheck for problem 450NX setup”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÐhjÞ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³j/ h´MÐubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jù j1jù j2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hŒÙ**Parameters** ``struct pci_dev *ata_dev`` the PCI device to check **Description** Check for the present of 450NX errata #19 and errata #25. If they are found return an error code so we can turn off DMA”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÔhjý ubjœ)�”}”(hhh]”j¡)�”}”(hŒ4``struct pci_dev *ata_dev`` the PCI device to check ”h]”(j§)�”}”(hŒ``struct pci_dev *ata_dev``”h]”j\)�”}”(hj"h]”hŒstruct pci_dev *ata_dev”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÑhjubj·)�”}”(hhh]”hì)�”}”(hŒthe PCI device to check”h]”hŒthe PCI device to check”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7h´MÑhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j7h´MÑhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjý ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hj]h]”hŒ Description”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÓhjý ubj)�”}”(hŒwCheck for the present of 450NX errata #19 and errata #25. If they are found return an error code so we can turn off DMA”h]”hì)�”}”(hŒwCheck for the present of 450NX errata #19 and errata #25. If they are found return an error code so we can turn off DMA”h]”hŒwCheck for the present of 450NX errata #19 and errata #25. If they are found return an error code so we can turn off DMA”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MÒhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³j…h´MÒhjý ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒpiix_init_one (C function)”Œc.piix_init_one”hNt”auh1jhjÎÿh²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒIint piix_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)”h]”j")�”}”(hŒHint piix_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj¨h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj¨h²hh³jºh´Mubj�)�”}”(hŒ piix_init_one”h]”j[)�”}”(hŒ piix_init_one”h]”hŒ piix_init_one”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÉubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj¨h²hh³jºh´Mubjª)�”}”(hŒ7(struct pci_dev *pdev, const struct pci_device_id *ent)”h]”(j°)�”}”(hŒstruct pci_dev *pdev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjåubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjåubh)�”}”(hhh]”j[)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j Œmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsjÏsbŒc.piix_init_one”†”asbuh1hhjåubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjåubj)�”}”(hjS h]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjåubj[)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjáubj°)�”}”(hŒconst struct pci_device_id *ent”h]”(j()�”}”(hj²(h]”hŒconst”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubj()�”}”(hj+h]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubh)�”}”(hhh]”j[)�”}”(hŒ pci_device_id”h]”hŒ pci_device_id”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j–Œmodname”NŒ classname”Njwjz)�”}”j}]”j#Œc.piix_init_one”†”asbuh1hhjWubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjWubj)�”}”(hjS h]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjWubj[)�”}”(hŒent”h]”hŒent”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjáubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj¨h²hh³jºh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj¤h²hh³jºh´Mubah}”(h]”jŸah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jºh´Mhj¡h²hubj)�”}”(hhh]”hì)�”}”(hŒ1Register PIIX ATA PCI device with kernel services”h]”hŒ1Register PIIX ATA PCI device with kernel services”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡h²hh³jºh´Mubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jj1jj2‰j3‰j4‰uh1jh²hhjÎÿh³Nh´Nubj6)�”}”(hX™**Parameters** ``struct pci_dev *pdev`` PCI device to register ``const struct pci_device_id *ent`` Entry in piix_pci_tbl matching with **pdev** **Description** Called from kernel PCI layer. We probe for combined mode (sigh), and then hand over control to libata, for it to do the rest. LOCKING: Inherited from PCI layer (may sleep). **Return** Zero on success, or -ERRNO value.”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjubjœ)�”}”(hhh]”(j¡)�”}”(hŒ0``struct pci_dev *pdev`` PCI device to register ”h]”(j§)�”}”(hŒ``struct pci_dev *pdev``”h]”j\)�”}”(hj8h]”hŒstruct pci_dev *pdev”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhj2ubj·)�”}”(hhh]”hì)�”}”(hŒPCI device to register”h]”hŒPCI device to register”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jMh´MhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jMh´Mhj/ubj¡)�”}”(hŒQ``const struct pci_device_id *ent`` Entry in piix_pci_tbl matching with **pdev** ”h]”(j§)�”}”(hŒ#``const struct pci_device_id *ent``”h]”j\)�”}”(hjqh]”hŒconst struct pci_device_id *ent”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjkubj·)�”}”(hhh]”hì)�”}”(hŒ,Entry in piix_pci_tbl matching with **pdev**”h]”(hŒ$Entry in piix_pci_tbl matching with ”…”�”}”(hjŠh²hh³Nh´Nubj )�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†h´Mhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j†h´Mhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hjubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjºh]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjubj)�”}”(hŒ¯Called from kernel PCI layer. We probe for combined mode (sigh), and then hand over control to libata, for it to do the rest. LOCKING: Inherited from PCI layer (may sleep). ”h]”(hì)�”}”(hŒ~Called from kernel PCI layer. We probe for combined mode (sigh), and then hand over control to libata, for it to do the rest.”h]”hŒ~Called from kernel PCI layer. We probe for combined mode (sigh), and then hand over control to libata, for it to do the rest.”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MhjÐubhì)�”}”(hŒ.LOCKING: Inherited from PCI layer (may sleep).”h]”hŒ.LOCKING: Inherited from PCI layer (may sleep).”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´MhjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâh´Mhjubhì)�”}”(hŒ **Return**”h]”j )�”}”(hjúh]”hŒReturn”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjubhì)�”}”(hŒ!Zero on success, or -ERRNO value.”h]”hŒ!Zero on success, or -ERRNO value.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:979: ./drivers/ata/ata_piix.c”h´Mhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hjÎÿh²hh³Nh´Nubeh}”(h]”Œata-piix-internals”ah ]”h"]”Œata_piix internals”ah$]”h&]”uh1hµhh·h²hh³hÊh´MÑubh¶)�”}”(hhh]”(h»)�”}”(hŒsata_sil Internals”h]”hŒsata_sil Internals”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj.h²hh³hÊh´M×ubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsil_set_mode (C function)”Œc.sil_set_mode”hNt”auh1jhj.h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒFint sil_set_mode (struct ata_link *link, struct ata_device **r_failed)”h]”j")�”}”(hŒEint sil_set_mode(struct ata_link *link, struct ata_device **r_failed)”h]”(j²)�”}”(hŒint”h]”hŒint”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hjTh²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MPubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjTh²hh³jfh´MPubj�)�”}”(hŒ sil_set_mode”h]”j[)�”}”(hŒ sil_set_mode”h]”hŒ sil_set_mode”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjuubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhjTh²hh³jfh´MPubjª)�”}”(hŒ5(struct ata_link *link, struct ata_device **r_failed)”h]”(j°)�”}”(hŒstruct ata_link *link”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubh)�”}”(hhh]”j[)�”}”(hŒata_link”h]”hŒata_link”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jµŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj{sbŒc.sil_set_mode”†”asbuh1hhj‘ubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj‘ubj)�”}”(hjS h]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hj‘ubj[)�”}”(hŒlink”h]”hŒlink”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj�ubj°)�”}”(hŒstruct ata_device **r_failed”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”j'Œmodname”NŒ classname”Njwjz)�”}”j}]”jÏŒc.sil_set_mode”†”asbuh1hhjubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjubj)�”}”(hjS h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjubj)�”}”(hjS h]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjubj[)�”}”(hŒr_failed”h]”hŒr_failed”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hjTh²hh³jfh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhjPh²hh³jfh´MPubah}”(h]”jKah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³jfh´MPhjMh²hubj)�”}”(hhh]”hì)�”}”(hŒwrap set_mode functions”h]”hŒwrap set_mode functions”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MPhj’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMh²hh³jfh´MPubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0j­j1j­j2‰j3‰j4‰uh1jh²hhj.h³Nh´Nubj6)�”}”(hX**Parameters** ``struct ata_link *link`` link to set up ``struct ata_device **r_failed`` returned device when we fail **Description** Wrap the libata method for device setup as after the setup we need to inspect the results and do some configuration work”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj·h]”hŒ Parameters”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MThj±ubjœ)�”}”(hhh]”(j¡)�”}”(hŒ)``struct ata_link *link`` link to set up ”h]”(j§)�”}”(hŒ``struct ata_link *link``”h]”j\)�”}”(hjÖh]”hŒstruct ata_link *link”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MQhjÐubj·)�”}”(hhh]”hì)�”}”(hŒlink to set up”h]”hŒlink to set up”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jëh´MQhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jëh´MQhjÍubj¡)�”}”(hŒ>``struct ata_device **r_failed`` returned device when we fail ”h]”(j§)�”}”(hŒ ``struct ata_device **r_failed``”h]”j\)�”}”(hjh]”hŒstruct ata_device **r_failed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MRhj ubj·)�”}”(hhh]”hì)�”}”(hŒreturned device when we fail”h]”hŒreturned device when we fail”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j$h´MRhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j$h´MRhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j›hj±ubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjJh]”hŒ Description”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MThj±ubj)�”}”(hŒxWrap the libata method for device setup as after the setup we need to inspect the results and do some configuration work”h]”hì)�”}”(hŒxWrap the libata method for device setup as after the setup we need to inspect the results and do some configuration work”h]”hŒxWrap the libata method for device setup as after the setup we need to inspect the results and do some configuration work”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MShj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³jrh´MShj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj.h²hh³Nh´Nubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒsil_dev_config (C function)”Œc.sil_dev_config”hNt”auh1jhj.h²hh³Nh´Nubj)�”}”(hhh]”(j)�”}”(hŒ,void sil_dev_config (struct ata_device *dev)”h]”j")�”}”(hŒ+void sil_dev_config(struct ata_device *dev)”h]”(j²)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j¾ah"]”h$]”h&]”uh1j±hj•h²hh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MGubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hj•h²hh³j§h´MGubj�)�”}”(hŒsil_dev_config”h]”j[)�”}”(hŒsil_dev_config”h]”hŒsil_dev_config”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhj¶ubah}”(h]”h ]”(j¤j¥eh"]”h$]”h&]”jjuh1jŽhj•h²hh³j§h´MGubjª)�”}”(hŒ(struct ata_device *dev)”h]”j°)�”}”(hŒstruct ata_device *dev”h]”(j()�”}”(hj+h]”hŒstruct”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j4ah"]”h$]”h&]”uh1j'hjÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒubh)�”}”(hhh]”j[)�”}”(hŒ ata_device”h]”hŒ ata_device”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjñubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jhŒreftype”jsŒ reftarget”jöŒmodname”NŒ classname”Njwjz)�”}”j}]”jj)�”}”jsj¼sbŒc.sil_dev_config”†”asbuh1hhjÒubj:)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jFah"]”h$]”h&]”uh1j9hjÒubj)�”}”(hjS h]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jŠah"]”h$]”h&]”uh1j~hjÒubj[)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jgah"]”h$]”h&]”uh1jZhjÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjjuh1j¯hjÎubah}”(h]”h ]”h"]”h$]”h&]”jjuh1j©hj•h²hh³j§h´MGubeh}”(h]”h ]”h"]”h$]”h&]”jjjˆuh1j!jjhj‘h²hh³j§h´MGubah}”(h]”jŒah ]”(j¢jeh"]”h$]”h&]”j ˆj )j huh1jh³j§h´MGhjŽh²hubj)�”}”(hhh]”hì)�”}”(hŒ(Apply device/host-specific errata fixups”h]”hŒ(Apply device/host-specific errata fixups”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MGhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽh²hh³j§h´MGubeh}”(h]”h ]”(jhŒfunction”eh"]”h$]”h&]”j/jhj0jqj1jqj2‰j3‰j4‰uh1jh²hhj.h³Nh´Nubj6)�”}”(hXt**Parameters** ``struct ata_device *dev`` Device to be examined **Description** After the IDENTIFY [PACKET] DEVICE step is complete, and a device is known to be present, this function is called. We apply two errata fixups which are specific to Silicon Image, a Seagate and a Maxtor fixup. For certain Seagate devices, we must limit the maximum sectors to under 8K. For certain Maxtor devices, we must not program the drive beyond udma5. Both fixups are unfairly pessimistic. As soon as I get more information on these errata, I will create a more exhaustive list, and apply the fixups to only the specific devices/hosts/firmwares that need it. 20040111 - Seagate drives affected by the Mod15Write bug are quirked The Maxtor quirk is in sil_quirks, but I'm keeping the original pessimistic fix for the following reasons... - There seems to be less info on it, only one device gleaned off the Windows driver, maybe only one is affected. More info would be greatly appreciated. - But then again UDMA5 is hardly anything to complain about”h]”(hì)�”}”(hŒ**Parameters**”h]”j )�”}”(hj{h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MKhjuubjœ)�”}”(hhh]”j¡)�”}”(hŒ1``struct ata_device *dev`` Device to be examined ”h]”(j§)�”}”(hŒ``struct ata_device *dev``”h]”j\)�”}”(hjšh]”hŒstruct ata_device *dev”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j[hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¦h³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MHhj”ubj·)�”}”(hhh]”hì)�”}”(hŒDevice to be examined”h]”hŒDevice to be examined”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯h´MHhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¶hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³j¯h´MHhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjuubhì)�”}”(hŒ**Description**”h]”j )�”}”(hjÕh]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MJhjuubj)�”}”(hXÀAfter the IDENTIFY [PACKET] DEVICE step is complete, and a device is known to be present, this function is called. We apply two errata fixups which are specific to Silicon Image, a Seagate and a Maxtor fixup. For certain Seagate devices, we must limit the maximum sectors to under 8K. For certain Maxtor devices, we must not program the drive beyond udma5. Both fixups are unfairly pessimistic. As soon as I get more information on these errata, I will create a more exhaustive list, and apply the fixups to only the specific devices/hosts/firmwares that need it. 20040111 - Seagate drives affected by the Mod15Write bug are quirked The Maxtor quirk is in sil_quirks, but I'm keeping the original pessimistic fix for the following reasons... - There seems to be less info on it, only one device gleaned off the Windows driver, maybe only one is affected. More info would be greatly appreciated. - But then again UDMA5 is hardly anything to complain about”h]”(hì)�”}”(hŒÐAfter the IDENTIFY [PACKET] DEVICE step is complete, and a device is known to be present, this function is called. We apply two errata fixups which are specific to Silicon Image, a Seagate and a Maxtor fixup.”h]”hŒÐAfter the IDENTIFY [PACKET] DEVICE step is complete, and a device is known to be present, this function is called. We apply two errata fixups which are specific to Silicon Image, a Seagate and a Maxtor fixup.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MIhjëubhì)�”}”(hŒKFor certain Seagate devices, we must limit the maximum sectors to under 8K.”h]”hŒKFor certain Seagate devices, we must limit the maximum sectors to under 8K.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MNhjëubhì)�”}”(hŒGFor certain Maxtor devices, we must not program the drive beyond udma5.”h]”hŒGFor certain Maxtor devices, we must not program the drive beyond udma5.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MQhjëubhì)�”}”(hŒÏBoth fixups are unfairly pessimistic. As soon as I get more information on these errata, I will create a more exhaustive list, and apply the fixups to only the specific devices/hosts/firmwares that need it.”h]”hŒÏBoth fixups are unfairly pessimistic. As soon as I get more information on these errata, I will create a more exhaustive list, and apply the fixups to only the specific devices/hosts/firmwares that need it.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MThjëubhì)�”}”(hX‡20040111 - Seagate drives affected by the Mod15Write bug are quirked The Maxtor quirk is in sil_quirks, but I'm keeping the original pessimistic fix for the following reasons... - There seems to be less info on it, only one device gleaned off the Windows driver, maybe only one is affected. More info would be greatly appreciated. - But then again UDMA5 is hardly anything to complain about”h]”hX‰20040111 - Seagate drives affected by the Mod15Write bug are quirked The Maxtor quirk is in sil_quirks, but I’m keeping the original pessimistic fix for the following reasons... - There seems to be less info on it, only one device gleaned off the Windows driver, maybe only one is affected. More info would be greatly appreciated. - But then again UDMA5 is hardly anything to complain about”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ŒY/var/lib/git/docbuild/linux/Documentation/driver-api/libata:985: ./drivers/ata/sata_sil.c”h´MYhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jýh´MIhjuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j5hj.h²hh³Nh´Nubeh}”(h]”Œsata-sil-internals”ah ]”h"]”Œsata_sil internals”ah$]”h&]”uh1hµhh·h²hh³hÊh´M×ubh¶)�”}”(hhh]”(h»)�”}”(hŒThanks”h]”hŒThanks”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjOh²hh³hÊh´MÝubhì)�”}”(hŒ¢The bulk of the ATA knowledge comes thanks to long conversations with Andre Hedrick (www.linux-ide.org), and long hours pondering the ATA and SCSI specifications.”h]”hŒ¢The bulk of the ATA knowledge comes thanks to long conversations with Andre Hedrick (www.linux-ide.org), and long hours pondering the ATA and SCSI specifications.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MßhjOh²hubhì)�”}”(hŒxThanks to Alan Cox for pointing out similarities between SATA and SCSI, and in general for motivation to hack on libata.”h]”hŒxThanks to Alan Cox for pointing out similarities between SATA and SCSI, and in general for motivation to hack on libata.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MãhjOh²hubhì)�”}”(hŒÀlibata's device detection method, ata_pio_devchk, and in general all the early probing was based on extensive study of Hale Landis's probe/reset code in his ATADRVR driver (www.ata-atapi.com).”h]”hŒÄlibata’s device detection method, ata_pio_devchk, and in general all the early probing was based on extensive study of Hale Landis’s probe/reset code in his ATADRVR driver (www.ata-atapi.com).”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MæhjOh²hubeh}”(h]”Œthanks”ah ]”h"]”Œthanks”ah$]”h&]”uh1hµhh·h²hh³hÊh´MÝubeh}”(h]”Œlibata-developer-s-guide”ah ]”h"]”Œlibata developer's guide”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j½Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j—j”j?j<jj jjj'j$jjj·j´j2j/jœj™jßjÜj7j4jljijÒjÏj:j7j¡jžjâ jß j˜ j• j£ j  jØ jÕ jjý jñjîj‡j„j?j<j9j6jjjjþjéjæj}j}jÂZj¿Zj%öj"öjËÿjÈÿj3üj0üjQ÷jN÷j¼ùj¹ùjújúj–új“újlûjiûj“ûj�ûjºûj·ûjüjüj+üj(üjÃÿjÀÿj‡üj„üjÿjÿj»ÿj¸ÿj+j(jLjIj�jŒuŒ nametypes”}”(j—‰j?‰j‰j‰j'‰j‰j·‰j2‰jœ‰j߉j7‰jl‰jÒ‰j:‰j¡‰jâ ‰j˜ ‰j£ ‰jØ ‰j‰jñ‰j‡‰j?‰j9‰j‰j‰jé‰j}‰jÂZ‰j%ö‰jËÿ‰j3ü‰jQ÷‰j¼ù‰jú‰j–ú‰jlû‰j“û‰jºû‰jü‰j+ü‰jÃÿ‰j‡ü‰jÿ‰j»ÿ‰j+‰jL‰j�‰uh}”(j”h·j<j j jBjj¸j$jãjj*j´jj/jºj™j5jÜjŸj4jâjij:jÏjoj7jÕjžj=jß j¤j• jå j  j› jÕ j¦ jý jÛ jîjj„j2j<jŠj6jBjj<jþjjæjj}jôjjjrjwj¤j©jR jW jX#j]#j1%j6%jø&jý&j£(j¨(j�*j•*jâ,jç,j'0j,0j}3j‚3ji5jn5j+7j07j :j:j”;j™;j=j$=j©>j®>j4@j9@j¾AjÃAj„Cj‰Cj FjFj¤Ij©IjýKjLj.Nj3Nj1Qj6QjSj Sj­Tj²TjrVjwVjEXjJXjZjZj4\j9\jÐ]jÕ]jÌ_jÑ_j6bj;bjÂejÇej•gjšgjBjjGjjëljðlj qjqj¶rj»rjPtjUtjêujïujDxjIxj¿Zj }j(}j-}jljqj�j �j ‚j¥‚j:„j?„jÔ…jÙ…jn‡js‡j‰jljj�Œj•Œj ‘j‘j„”j‰”jÄ–jÉ–j™j ™jÍšjÒšj�j�j|¢j�¢j5¤j:¤j´§j¹§jN©jS©jèªjíªjÌ®jÑ®j±°j¶°jK²jP²jÈ´jÍ´j%·j*·jíºjòºjƒ¾jˆ¾jàÀjåÀjÇÃjÌÃjRÅjWÅjìÆjñÆj˜Èj�Èj™ÊjžÊjiÍjnÍj*Ïj/Ïj-Òj2ÒjÇÓjÌÓjšÕjŸÕj£×j¨×j=ÙjBÙj€Ûj…ÛjdÝjiÝjHßjMßjôàjùàj·ãj¼ãjŠåj�åjBçjGçjÜèjáèjšêjŸêj@íjEíj÷ïjüïj£ñj¨ñj6ôj;ôjy÷j~÷jûùjúj:üj?üjæýjëýj’ÿj—ÿjSjXj5j:jqjvj jj$ j) jÐ jÕ j[ j` jõjúj¡j¦jtjyjGjLjðjõjÃjÈjojtjj j¦j«j@jEjìjñj˜!j�!jw$j|$jV'j['j>)jC)j©+j®+jÅ-jÊ-j…/jŠ/jq2jv2j 4j4jú5jÿ5j¯9j´9j <j¥<j+>j0>jµ?jº?jÈBjÍBjtDjyDj Fj%FjºGj¿GjTIjYIjîJjóJjwMj|Mj8Oj=OjQj"Qj=TjBTj×UjÜUjqWjvWjYj"Yj"öjÅZjâZjçZje^jj^j`j`jãajèaj}cj‚cjÀejÅejhgjmgjjjjj¬kj±kj”nj™njÓpjØpjsjsjØujÝujuyjzyj!{j&{jþ|j}jÛ~jà~j��j†�j'„j,„j͆jÒ†jXˆj]ˆj5Šj:Šj�Œj’ŒjQ�jV�jª”j¯”j——jœ—j„šj‰šjq�jv�jµ jº j¢£j§£j‡¥jŒ¥jt¨jy¨ja«jf«jN®jS®j;±j@±j(´j-´j·j·jºjºj­¼j²¼jß¿jä¿jçÁjìÁjÔÄjÙÄjÁÇjÆÇj®Êj³Êj|Ìj�ÌjNÏjSÏjÑj!ÑjÕj ÕjçÖjìÖjÔÙjÙÙj_ÛjdÛjžÞj£Þj^âjcâjäjäjâåjçåjGèjLèjŠêj�êj\ìjaìjîj îj¢ïj§ïj<ñjAñj’ôj—ôjÈÿj(öj0üjcöjN÷j¨öj¹ùjT÷júj¿ùj“új újiûj™új�ûjoûj·ûj–ûjüj½ûj(üjüjÀÿj6üj„üjUüjÿjŠüj¸ÿj ÿj(jÎÿjëÿjðÿj…jŠjšjŸjÝjâjŽj“jÑ jÖ j j jŸj¤jIj.jKjPjŒj‘jŒjOuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.