€•Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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/parport-lowlevel”Œ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ŒPARPORT interface documentation”h]”hŒPARPORT interface documentation”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒI/var/lib/git/docbuild/linux/Documentation/driver-api/parport-lowlevel.rst”h´KubhŒ field_list”“”)�”}”(hhh]”hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒ Time-stamp”h]”hŒ Time-stamp”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhhÒh³hÊh´KubhŒ field_body”“”)�”}”(hŒ<2000-02-24 13:30:20 twaugh> ”h]”hŒ paragraph”“”)�”}”(hŒ<2000-02-24 13:30:20 twaugh>”h]”hŒ<2000-02-24 13:30:20 twaugh>”…”�”}”(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ì)�”}”(hŒ+Described here are the following functions:”h]”hŒ+Described here are the following functions:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khh·h²hubhì)�”}”(hŒGlobal functions::”h]”hŒGlobal functions:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K hh·h²hubhŒ literal_block”“”)�”}”(hX½parport_register_driver parport_unregister_driver parport_enumerate parport_register_device parport_unregister_device parport_claim parport_claim_or_block parport_release parport_yield parport_yield_blocking parport_wait_peripheral parport_poll_peripheral parport_wait_event parport_negotiate parport_read parport_write parport_open parport_close parport_device_id parport_device_coords parport_find_class parport_find_device parport_set_timeout”h]”hX½parport_register_driver parport_unregister_driver parport_enumerate parport_register_device parport_unregister_device parport_claim parport_claim_or_block parport_release parport_yield parport_yield_blocking parport_wait_peripheral parport_poll_peripheral parport_wait_event parport_negotiate parport_read parport_write parport_open parport_close parport_device_id parport_device_coords parport_find_class parport_find_device parport_set_timeout”…”�”}”hj+sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j)h³hÊh´K hh·h²hubhì)�”}”(hŒ8Port functions (can be overridden by low-level drivers):”h]”hŒ8Port functions (can be overridden by low-level drivers):”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K#hh·h²hubhŒ block_quote”“”)�”}”(hX7SPP:: port->ops->read_data port->ops->write_data port->ops->read_status port->ops->read_control port->ops->write_control port->ops->frob_control port->ops->enable_irq port->ops->disable_irq port->ops->data_forward port->ops->data_reverse EPP:: port->ops->epp_write_data port->ops->epp_read_data port->ops->epp_write_addr port->ops->epp_read_addr ECP:: port->ops->ecp_write_data port->ops->ecp_read_data port->ops->ecp_write_addr Other:: port->ops->nibble_read_data port->ops->byte_read_data port->ops->compat_write_data ”h]”(hì)�”}”(hŒSPP::”h]”hŒSPP:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K%hjKubj*)�”}”(hŒçport->ops->read_data port->ops->write_data port->ops->read_status port->ops->read_control port->ops->write_control port->ops->frob_control port->ops->enable_irq port->ops->disable_irq port->ops->data_forward port->ops->data_reverse”h]”hŒçport->ops->read_data port->ops->write_data port->ops->read_status port->ops->read_control port->ops->write_control port->ops->frob_control port->ops->enable_irq port->ops->disable_irq port->ops->data_forward port->ops->data_reverse”…”�”}”hj]sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´K'hjKubhì)�”}”(hŒEPP::”h]”hŒEPP:”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K2hjKubj*)�”}”(hŒeport->ops->epp_write_data port->ops->epp_read_data port->ops->epp_write_addr port->ops->epp_read_addr”h]”hŒeport->ops->epp_write_data port->ops->epp_read_data port->ops->epp_write_addr port->ops->epp_read_addr”…”�”}”hjysbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´K4hjKubhì)�”}”(hŒECP::”h]”hŒECP:”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K9hjKubj*)�”}”(hŒLport->ops->ecp_write_data port->ops->ecp_read_data port->ops->ecp_write_addr”h]”hŒLport->ops->ecp_write_data port->ops->ecp_read_data port->ops->ecp_write_addr”…”�”}”hj•sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´K;hjKubhì)�”}”(hŒOther::”h]”hŒOther:”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K?hjKubj*)�”}”(hŒRport->ops->nibble_read_data port->ops->byte_read_data port->ops->compat_write_data”h]”hŒRport->ops->nibble_read_data port->ops->byte_read_data port->ops->compat_write_data”…”�”}”hj±sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´KAhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jIh³hÊh´K%hh·h²hubhì)�”}”(hŒâThe parport subsystem comprises ``parport`` (the core port-sharing code), and a variety of low-level drivers that actually do the port accesses. Each low-level driver handles a particular style of port (PC, Amiga, and so on).”h]”(hŒ The parport subsystem comprises ”…”�”}”(hjÅh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``parport``”h]”hŒparport”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÅubhŒ· (the core port-sharing code), and a variety of low-level drivers that actually do the port accesses. Each low-level driver handles a particular style of port (PC, Amiga, and so on).”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KEhh·h²hubhì)�”}”(hŒnThe parport interface to the device driver author can be broken down into global functions and port functions.”h]”hŒnThe parport interface to the device driver author can be broken down into global functions and port functions.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KJhh·h²hubhì)�”}”(hX2The global functions are mostly for communicating between the device driver and the parport subsystem: acquiring a list of available ports, claiming a port for exclusive use, and so on. They also include ``generic`` functions for doing standard things that will work on any IEEE 1284-capable architecture.”h]”(hŒÍThe global functions are mostly for communicating between the device driver and the parport subsystem: acquiring a list of available ports, claiming a port for exclusive use, and so on. They also include ”…”�”}”(hjõh²hh³Nh´NubjÎ)�”}”(hŒ ``generic``”h]”hŒgeneric”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjõubhŒZ functions for doing standard things that will work on any IEEE 1284-capable architecture.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KMhh·h²hubhì)�”}”(hŒÑThe port functions are provided by the low-level drivers, although the core parport module provides generic ``defaults`` for some routines. The port functions can be split into three groups: SPP, EPP, and ECP.”h]”(hŒlThe port functions are provided by the low-level drivers, although the core parport module provides generic ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ ``defaults``”h]”hŒdefaults”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒY for some routines. The port functions can be split into three groups: SPP, EPP, and ECP.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KShh·h²hubhì)�”}”(hXASPP (Standard Parallel Port) functions modify so-called ``SPP`` registers: data, status, and control. The hardware may not actually have registers exactly like that, but the PC does and this interface is modelled after common PC implementations. Other low-level drivers may be able to emulate most of the functionality.”h]”(hŒ8SPP (Standard Parallel Port) functions modify so-called ”…”�”}”(hj5h²hh³Nh´NubjÎ)�”}”(hŒ``SPP``”h]”hŒSPP”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj5ubhX registers: data, status, and control. The hardware may not actually have registers exactly like that, but the PC does and this interface is modelled after common PC implementations. Other low-level drivers may be able to emulate most of the functionality.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KWhh·h²hubhì)�”}”(hŒ×EPP (Enhanced Parallel Port) functions are provided for reading and writing in IEEE 1284 EPP mode, and ECP (Extended Capabilities Port) functions are used for IEEE 1284 ECP mode. (What about BECP? Does anyone care?)”h]”hŒ×EPP (Enhanced Parallel Port) functions are provided for reading and writing in IEEE 1284 EPP mode, and ECP (Extended Capabilities Port) functions are used for IEEE 1284 ECP mode. (What about BECP? Does anyone care?)”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K]hh·h²hubhì)�”}”(hXYHardware assistance for EPP and/or ECP transfers may or may not be available, and if it is available it may or may not be used. If hardware is not used, the transfer will be software-driven. In order to cope with peripherals that only tenuously support IEEE 1284, a low-level driver specific function is provided, for altering 'fudge factors'.”h]”hX]Hardware assistance for EPP and/or ECP transfers may or may not be available, and if it is available it may or may not be used. If hardware is not used, the transfer will be software-driven. In order to cope with peripherals that only tenuously support IEEE 1284, a low-level driver specific function is provided, for altering ‘fudge factors’.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kbhh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒGlobal functions”h]”hŒGlobal functions”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjqh²hh³hÊh´Kkubh¶)�”}”(hhh]”(h»)�”}”(hŒ?parport_register_driver - register a device driver with parport”h]”hŒ?parport_register_driver - register a device driver with parport”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‚h²hh³hÊh´Knubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj“h²hh³hÊh´Kqubj*)�”}”(hX#include struct parport_driver { const char *name; void (*attach) (struct parport *); void (*detach) (struct parport *); struct parport_driver *next; }; int parport_register_driver (struct parport_driver *driver);”h]”hX#include struct parport_driver { const char *name; void (*attach) (struct parport *); void (*detach) (struct parport *); struct parport_driver *next; }; int parport_register_driver (struct parport_driver *driver);”…”�”}”hj¤sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Kuhj“h²hubeh}”(h]”Œsynopsis”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj‚h²hh³hÊh´KqŒ referenced”Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj»h²hh³hÊh´K€ubhì)�”}”(hŒüIn order to be notified about parallel ports when they are detected, parport_register_driver should be called. Your driver will immediately be notified of all ports that have already been detected, and of each new port as low-level drivers are loaded.”h]”hŒüIn order to be notified about parallel ports when they are detected, parport_register_driver should be called. Your driver will immediately be notified of all ports that have already been detected, and of each new port as low-level drivers are loaded.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K‚hj»h²hubhì)�”}”(hX6A ``struct parport_driver`` contains the textual name of your driver, a pointer to a function to handle new ports, and a pointer to a function to handle ports going away due to a low-level driver unloading. Ports will only be detached if they are not being used (i.e. there are no devices registered on them).”h]”(hŒA ”…”�”}”(hjÚh²hh³Nh´NubjÎ)�”}”(hŒ``struct parport_driver``”h]”hŒstruct parport_driver”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÚubhX contains the textual name of your driver, a pointer to a function to handle new ports, and a pointer to a function to handle ports going away due to a low-level driver unloading. Ports will only be detached if they are not being used (i.e. there are no devices registered on them).”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K‡hj»h²hubhì)�”}”(hŒSThe visible parts of the ``struct parport *`` argument given to attach/detach are::”h]”(hŒThe visible parts of the ”…”�”}”(hjúh²hh³Nh´NubjÎ)�”}”(hŒ``struct parport *``”h]”hŒstruct parport *”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjúubhŒ% argument given to attach/detach are:”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K�hj»h²hubj*)�”}”(hX|struct parport { struct parport *next; /* next parport in list */ const char *name; /* port's name */ unsigned int modes; /* bitfield of hardware modes */ struct parport_device_info probe_info; /* IEEE1284 info */ int number; /* parport index */ struct parport_operations *ops; ... };”h]”hX|struct parport { struct parport *next; /* next parport in list */ const char *name; /* port's name */ unsigned int modes; /* bitfield of hardware modes */ struct parport_device_info probe_info; /* IEEE1284 info */ int number; /* parport index */ struct parport_operations *ops; ... };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´K�hj»h²hubhì)�”}”(hŒIThere are other members of the structure, but they should not be touched.”h]”hŒIThere are other members of the structure, but they should not be touched.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kœhj»h²hubhì)�”}”(hŒ†The ``modes`` member summarises the capabilities of the underlying hardware. It consists of flags which may be bitwise-ored together:”h]”(hŒThe ”…”�”}”(hj6h²hh³Nh´NubjÎ)�”}”(hŒ ``modes``”h]”hŒmodes”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6ubhŒy member summarises the capabilities of the underlying hardware. It consists of flags which may be bitwise-ored together:”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KŸhj»h²hubjJ)�”}”(hX§============================= =============================================== PARPORT_MODE_PCSPP IBM PC registers are available, i.e. functions that act on data, control and status registers are probably writing directly to the hardware. PARPORT_MODE_TRISTATE The data drivers may be turned off. This allows the data lines to be used for reverse (peripheral to host) transfers. PARPORT_MODE_COMPAT The hardware can assist with compatibility-mode (printer) transfers, i.e. compat_write_block. PARPORT_MODE_EPP The hardware can assist with EPP transfers. PARPORT_MODE_ECP The hardware can assist with ECP transfers. PARPORT_MODE_DMA The hardware can use DMA, so you might want to pass ISA DMA-able memory (i.e. memory allocated using the GFP_DMA flag with kmalloc) to the low-level driver in order to take advantage of it. ============================= =============================================== ”h]”hŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjaubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K/uh1jdhjaubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_PCSPP”h]”hŒPARPORT_MODE_PCSPP”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K£hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubj…)�”}”(hhh]”hì)�”}”(hŒŒIBM PC registers are available, i.e. functions that act on data, control and status registers are probably writing directly to the hardware.”h]”hŒŒIBM PC registers are available, i.e. functions that act on data, control and status registers are probably writing directly to the hardware.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K£hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_TRISTATE”h]”hŒPARPORT_MODE_TRISTATE”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¨hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjºubj…)�”}”(hhh]”hì)�”}”(hŒuThe data drivers may be turned off. This allows the data lines to be used for reverse (peripheral to host) transfers.”h]”hŒuThe data drivers may be turned off. This allows the data lines to be used for reverse (peripheral to host) transfers.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¨hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_COMPAT”h]”hŒPARPORT_MODE_COMPAT”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¬hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjñubj…)�”}”(hhh]”hì)�”}”(hŒ]The hardware can assist with compatibility-mode (printer) transfers, i.e. compat_write_block.”h]”hŒ]The hardware can assist with compatibility-mode (printer) transfers, i.e. compat_write_block.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¬hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_EPP”h]”hŒPARPORT_MODE_EPP”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¯hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj(ubj…)�”}”(hhh]”hì)�”}”(hŒ+The hardware can assist with EPP transfers.”h]”hŒ+The hardware can assist with EPP transfers.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¯hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_ECP”h]”hŒPARPORT_MODE_ECP”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K±hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj_ubj…)�”}”(hhh]”hì)�”}”(hŒ+The hardware can assist with ECP transfers.”h]”hŒ+The hardware can assist with ECP transfers.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K±hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_MODE_DMA”h]”hŒPARPORT_MODE_DMA”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K³hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj–ubj…)�”}”(hhh]”hì)�”}”(hŒ½The hardware can use DMA, so you might want to pass ISA DMA-able memory (i.e. memory allocated using the GFP_DMA flag with kmalloc) to the low-level driver in order to take advantage of it.”h]”hŒ½The hardware can use DMA, so you might want to pass ISA DMA-able memory (i.e. memory allocated using the GFP_DMA flag with kmalloc) to the low-level driver in order to take advantage of it.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K³hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jzhjaubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jIh³hÊh´K¢hj»h²hubhì)�”}”(hŒ.There may be other flags in ``modes`` as well.”h]”(hŒThere may be other flags in ”…”�”}”(hjæh²hh³Nh´NubjÎ)�”}”(hŒ ``modes``”h]”hŒmodes”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjæubhŒ as well.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K»hj»h²hubhì)�”}”(hX$The contents of ``modes`` is advisory only. For example, if the hardware is capable of DMA, and PARPORT_MODE_DMA is in ``modes``, it doesn't necessarily mean that DMA will always be used when possible. Similarly, hardware that is capable of assisting ECP transfers won't necessarily be used.”h]”(hŒThe contents of ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ ``modes``”h]”hŒmodes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒ_ is advisory only. For example, if the hardware is capable of DMA, and PARPORT_MODE_DMA is in ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ ``modes``”h]”hŒmodes”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒ§, it doesn’t necessarily mean that DMA will always be used when possible. Similarly, hardware that is capable of assisting ECP transfers won’t necessarily be used.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K½hj»h²hubeh}”(h]”Œ description”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj‚h²hh³hÊh´K€jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj@h²hh³hÊh´KÄubhì)�”}”(hŒ)Zero on success, otherwise an error code.”h]”hŒ)Zero on success, otherwise an error code.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÆhj@h²hubeh}”(h]”Œ return-value”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj‚h²hh³hÊh´KÄjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒERRORS”h]”hŒERRORS”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjgh²hh³hÊh´KÉubhì)�”}”(hŒ$None. (Can it fail? Why return int?)”h]”hŒ$None. (Can it fail? Why return int?)”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KËhjgh²hubeh}”(h]”Œerrors”ah ]”h"]”h$]”Œerrors”ah&]”uh1hµhj‚h²hh³hÊh´KÉjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLE”h]”hŒEXAMPLE”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŽh²hh³hÊh´KÎubj*)�”}”(hX$static void lp_attach (struct parport *port) { ... private = kmalloc (...); dev[count++] = parport_register_device (...); ... } static void lp_detach (struct parport *port) { ... } static struct parport_driver lp_driver = { "lp", lp_attach, lp_detach, NULL /* always put NULL here */ }; int lp_init (void) { ... if (parport_register_driver (&lp_driver)) { /* Failed; nothing we can do. */ return -EIO; } ... }”h]”hX$static void lp_attach (struct parport *port) { ... private = kmalloc (...); dev[count++] = parport_register_device (...); ... } static void lp_detach (struct parport *port) { ... } static struct parport_driver lp_driver = { "lp", lp_attach, lp_detach, NULL /* always put NULL here */ }; int lp_init (void) { ... if (parport_register_driver (&lp_driver)) { /* Failed; nothing we can do. */ return -EIO; } ... }”…”�”}”hjŸsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´KÒhjŽh²hubeh}”(h]”Œexample”ah ]”h"]”h$]”Œexample”ah&]”uh1hµhj‚h²hh³hÊh´KÎjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjµh²hh³hÊh´Kòubhì)�”}”(hŒEparport_unregister_driver, parport_register_device, parport_enumerate”h]”hŒEparport_unregister_driver, parport_register_device, parport_enumerate”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kôhjµh²hubeh}”(h]”Œsee-also”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj‚h²hh³hÊh´KòjºKubeh}”(h]”Œ=parport-register-driver-register-a-device-driver-with-parport”ah ]”h"]”Œ?parport_register_driver - register a device driver with parport”ah$]”h&]”uh1hµhjqh²hh³hÊh´Knubh¶)�”}”(hhh]”(h»)�”}”(hŒDparport_unregister_driver - tell parport to forget about this driver”h]”hŒDparport_unregister_driver - tell parport to forget about this driver”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjäh²hh³hÊh´Kùubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjõh²hh³hÊh´Küubj*)�”}”(hX #include struct parport_driver { const char *name; void (*attach) (struct parport *); void (*detach) (struct parport *); struct parport_driver *next; }; void parport_unregister_driver (struct parport_driver *driver);”h]”hX #include struct parport_driver { const char *name; void (*attach) (struct parport *); void (*detach) (struct parport *); struct parport_driver *next; }; void parport_unregister_driver (struct parport_driver *driver);”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mhjõh²hubeh}”(h]”Œid1”ah ]”h"]”h$]”j¸ah&]”uh1hµhjäh²hh³hÊh´KüjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M ubhì)�”}”(hŒÏThis tells parport not to notify the device driver of new ports or of ports going away. Registered devices belonging to that driver are NOT unregistered: parport_unregister_device must be used for each one.”h]”hŒÏThis tells parport not to notify the device driver of new ports or of ports going away. Registered devices belonging to that driver are NOT unregistered: parport_unregister_device must be used for each one.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjh²hubeh}”(h]”Œid2”ah ]”h"]”h$]”j>ah&]”uh1hµhjäh²hh³hÊh´M jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLE”h]”hŒEXAMPLE”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjAh²hh³hÊh´Mubj*)�”}”(hXvoid cleanup_module (void) { ... /* Stop notifications. */ parport_unregister_driver (&lp_driver); /* Unregister devices. */ for (i = 0; i < NUM_DEVS; i++) parport_unregister_device (dev[i]); ... }”h]”hXvoid cleanup_module (void) { ... /* Stop notifications. */ parport_unregister_driver (&lp_driver); /* Unregister devices. */ for (i = 0; i < NUM_DEVS; i++) parport_unregister_device (dev[i]); ... }”…”�”}”hjRsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MhjAh²hubeh}”(h]”Œid3”ah ]”h"]”h$]”j³ah&]”uh1hµhjäh²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjgh²hh³hÊh´M#ubhì)�”}”(hŒ*parport_register_driver, parport_enumerate”h]”hŒ*parport_register_driver, parport_enumerate”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M%hjgh²hubeh}”(h]”Œid4”ah ]”h"]”h$]”jÚah&]”uh1hµhjäh²hh³hÊh´M#jºKubeh}”(h]”ŒBparport-unregister-driver-tell-parport-to-forget-about-this-driver”ah ]”h"]”ŒDparport_unregister_driver - tell parport to forget about this driver”ah$]”h&]”uh1hµhjqh²hh³hÊh´Kùubh¶)�”}”(hhh]”(h»)�”}”(hŒBparport_enumerate - retrieve a list of parallel ports (DEPRECATED)”h]”hŒBparport_enumerate - retrieve a list of parallel ports (DEPRECATED)”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj•h²hh³hÊh´M*ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¦h²hh³hÊh´M-ubj*)�”}”(hŒE#include struct parport *parport_enumerate (void);”h]”hŒE#include struct parport *parport_enumerate (void);”…”�”}”hj·sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M1hj¦h²hubeh}”(h]”Œid5”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj•h²hh³hÊh´M-jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÍh²hh³hÊh´M6ubhì)�”}”(hXHRetrieve the first of a list of valid parallel ports for this machine. Successive parallel ports can be found using the ``struct parport *next`` element of the ``struct parport *`` that is returned. If ``next`` is NULL, there are no more parallel ports in the list. The number of ports in the list will not exceed PARPORT_MAX.”h]”(hŒxRetrieve the first of a list of valid parallel ports for this machine. Successive parallel ports can be found using the ”…”�”}”(hjÞh²hh³Nh´NubjÎ)�”}”(hŒ``struct parport *next``”h]”hŒstruct parport *next”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÞubhŒ element of the ”…”�”}”(hjÞh²hh³Nh´NubjÎ)�”}”(hŒ``struct parport *``”h]”hŒstruct parport *”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÞubhŒ that is returned. If ”…”�”}”(hjÞh²hh³Nh´NubjÎ)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÞubhŒu is NULL, there are no more parallel ports in the list. The number of ports in the list will not exceed PARPORT_MAX.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M8hjÍh²hubeh}”(h]”Œid6”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj•h²hh³hÊh´M6jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj*h²hh³hÊh´M?ubhì)�”}”(hŒcA ``struct parport *`` describing a valid parallel port for the machine, or NULL if there are none.”h]”(hŒA ”…”�”}”(hj;h²hh³Nh´NubjÎ)�”}”(hŒ``struct parport *``”h]”hŒstruct parport *”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj;ubhŒM describing a valid parallel port for the machine, or NULL if there are none.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MAhj*h²hubeh}”(h]”Œid7”ah ]”h"]”h$]”jeah&]”uh1hµhj•h²hh³hÊh´M?jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒERRORS”h]”hŒERRORS”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjbh²hh³hÊh´MEubhì)�”}”(hŒRThis function can return NULL to indicate that there are no parallel ports to use.”h]”hŒRThis function can return NULL to indicate that there are no parallel ports to use.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MGhjbh²hubeh}”(h]”Œid8”ah ]”h"]”h$]”jŒah&]”uh1hµhj•h²hh³hÊh´MEjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLE”h]”hŒEXAMPLE”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjˆh²hh³hÊh´MKubj*)�”}”(hX int detect_device (void) { struct parport *port; for (port = parport_enumerate (); port != NULL; port = port->next) { /* Try to detect a device on the port... */ ... } } ... }”h]”hX int detect_device (void) { struct parport *port; for (port = parport_enumerate (); port != NULL; port = port->next) { /* Try to detect a device on the port... */ ... } } ... }”…”�”}”hj™sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MOhjˆh²hubeh}”(h]”Œid9”ah ]”h"]”h$]”Œexample”ah&]”uh1hµhj•h²hh³hÊh´MKjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¯h²hh³hÊh´M_ubhì)�”}”(hŒPparport_enumerate is deprecated; parport_register_driver should be used instead.”h]”hŒPparport_enumerate is deprecated; parport_register_driver should be used instead.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mahj¯h²hubeh}”(h]”Œnotes”ah ]”h"]”h$]”Œnotes”ah&]”uh1hµhj•h²hh³hÊh´M_jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÖh²hh³hÊh´Meubhì)�”}”(hŒ2parport_register_driver, parport_unregister_driver”h]”hŒ2parport_register_driver, parport_unregister_driver”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MghjÖh²hubeh}”(h]”Œid10”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj•h²hh³hÊh´MejºKubeh}”(h]”Œ>parport-enumerate-retrieve-a-list-of-parallel-ports-deprecated”ah ]”h"]”ŒBparport_enumerate - retrieve a list of parallel ports (deprecated)”ah$]”h&]”uh1hµhjqh²hh³hÊh´M*ubh¶)�”}”(hhh]”(h»)�”}”(hŒ0parport_register_device - register to use a port”h]”hŒ0parport_register_device - register to use a port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mlubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Moubj*)�”}”(hXW#include typedef int (*preempt_func) (void *handle); typedef void (*wakeup_func) (void *handle); typedef int (*irq_func) (int irq, void *handle, struct pt_regs *); struct pardevice *parport_register_device(struct parport *port, const char *name, preempt_func preempt, wakeup_func wakeup, irq_func irq, int flags, void *handle);”h]”hXW#include typedef int (*preempt_func) (void *handle); typedef void (*wakeup_func) (void *handle); typedef int (*irq_func) (int irq, void *handle, struct pt_regs *); struct pardevice *parport_register_device(struct parport *port, const char *name, preempt_func preempt, wakeup_func wakeup, irq_func irq, int flags, void *handle);”…”�”}”hj'sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mshjh²hubeh}”(h]”Œid11”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjh²hh³hÊh´MojºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj=h²hh³hÊh´M‚ubhì)�”}”(hŒ½Use this function to register your device driver on a parallel port (``port``). Once you have done that, you will be able to use parport_claim and parport_release in order to use the port.”h]”(hŒEUse this function to register your device driver on a parallel port (”…”�”}”(hjNh²hh³Nh´NubjÎ)�”}”(hŒ``port``”h]”hŒport”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjNubhŒp). Once you have done that, you will be able to use parport_claim and parport_release in order to use the port.”…”�”}”(hjNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M„hj=h²hubhì)�”}”(hŒ¾The (``name``) argument is the name of the device that appears in /proc filesystem. The string must be valid for the whole lifetime of the device (until parport_unregister_device is called).”h]”(hŒThe (”…”�”}”(hjnh²hh³Nh´NubjÎ)�”}”(hŒ``name``”h]”hŒname”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjnubhŒ±) argument is the name of the device that appears in /proc filesystem. The string must be valid for the whole lifetime of the device (until parport_unregister_device is called).”…”�”}”(hjnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mˆhj=h²hubhì)�”}”(hŒ³This function will register three callbacks into your driver: ``preempt``, ``wakeup`` and ``irq``. Each of these may be NULL in order to indicate that you do not want a callback.”h]”(hŒ>This function will register three callbacks into your driver: ”…”�”}”(hjŽh²hh³Nh´NubjÎ)�”}”(hŒ ``preempt``”h]”hŒpreempt”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŽubhŒ, ”…”�”}”(hjŽh²hh³Nh´NubjÎ)�”}”(hŒ ``wakeup``”h]”hŒwakeup”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŽubhŒ and ”…”�”}”(hjŽh²hh³Nh´NubjÎ)�”}”(hŒ``irq``”h]”hŒirq”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjŽubhŒR. Each of these may be NULL in order to indicate that you do not want a callback.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MŒhj=h²hubhì)�”}”(hX*When the ``preempt`` function is called, it is because another driver wishes to use the parallel port. The ``preempt`` function should return non-zero if the parallel port cannot be released yet -- if zero is returned, the port is lost to another driver and the port must be re-claimed before use.”h]”(hŒ When the ”…”�”}”(hjÒh²hh³Nh´NubjÎ)�”}”(hŒ ``preempt``”h]”hŒpreempt”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÒubhŒX function is called, it is because another driver wishes to use the parallel port. The ”…”�”}”(hjÒh²hh³Nh´NubjÎ)�”}”(hŒ ``preempt``”h]”hŒpreempt”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÒubhŒ³ function should return non-zero if the parallel port cannot be released yet -- if zero is returned, the port is lost to another driver and the port must be re-claimed before use.”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj=h²hubhì)�”}”(hXThe ``wakeup`` function is called once another driver has released the port and no other driver has yet claimed it. You can claim the parallel port from within the ``wakeup`` function (in which case the claim is guaranteed to succeed), or choose not to if you don't need it now.”h]”(hŒThe ”…”�”}”(hj h²hh³Nh´NubjÎ)�”}”(hŒ ``wakeup``”h]”hŒwakeup”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj ubhŒ— function is called once another driver has released the port and no other driver has yet claimed it. You can claim the parallel port from within the ”…”�”}”(hj h²hh³Nh´NubjÎ)�”}”(hŒ ``wakeup``”h]”hŒwakeup”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj ubhŒj function (in which case the claim is guaranteed to succeed), or choose not to if you don’t need it now.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M–hj=h²hubhì)�”}”(hŒ™If an interrupt occurs on the parallel port your driver has claimed, the ``irq`` function will be called. (Write something about shared interrupts here.)”h]”(hŒIIf an interrupt occurs on the parallel port your driver has claimed, the ”…”�”}”(hj6 h²hh³Nh´NubjÎ)�”}”(hŒ``irq``”h]”hŒirq”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj6 ubhŒI function will be called. (Write something about shared interrupts here.)”…”�”}”(hj6 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mœhj=h²hubhì)�”}”(hŒ]The ``handle`` is a pointer to driver-specific data, and is passed to the callback functions.”h]”(hŒThe ”…”�”}”(hjV h²hh³Nh´NubjÎ)�”}”(hŒ ``handle``”h]”hŒhandle”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjV ubhŒO is a pointer to driver-specific data, and is passed to the callback functions.”…”�”}”(hjV h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hj=h²hubhì)�”}”(hŒ>``flags`` may be a bitwise combination of the following flags:”h]”(jÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjv ubhŒ5 may be a bitwise combination of the following flags:”…”�”}”(hjv h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M£hj=h²hubjJ)�”}”(hX}===================== ================================================= Flag Meaning ===================== ================================================= PARPORT_DEV_EXCL The device cannot share the parallel port at all. Use this only when absolutely necessary. ===================== ================================================= ”h]”j[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhj™ ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jdhj™ ubhŒthead”“”)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒFlag”h]”hŒFlag”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¦hj¸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjµ ubj…)�”}”(hhh]”hì)�”}”(hŒMeaning”h]”hŒMeaning”…”�”}”(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&]”uh1jhj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1j° hj™ ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_DEV_EXCL”h]”hŒPARPORT_DEV_EXCL”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¨hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjõ ubj…)�”}”(hhh]”hì)�”}”(hŒZThe device cannot share the parallel port at all. Use this only when absolutely necessary.”h]”hŒZThe device cannot share the parallel port at all. Use this only when absolutely necessary.”…”�”}”(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&]”uh1jhjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj™ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIh³hÊh´M¥hj=h²hubhì)�”}”(hŒsThe typedefs are not actually defined -- they are only shown in order to make the function prototype more readable.”h]”hŒsThe typedefs are not actually defined -- they are only shown in order to make the function prototype more readable.”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¬hj=h²hubhì)�”}”(hŒdev; if (!dev) return; /* avoid races */ if (want_port) parport_claim (dev); } static int toaster_detect (struct toaster *private, struct parport *port) { private->dev = parport_register_device (port, "toaster", preempt, wakeup, NULL, 0, private); if (!private->dev) /* Couldn't register with parport. */ return -EIO; must_reclaim_port = 0; busy_right_now = 1; parport_claim_or_block (private->dev); ... /* Don't need the port while the toaster warms up. */ busy_right_now = 0; ... busy_right_now = 1; if (must_reclaim_port) { parport_claim_or_block (private->dev); must_reclaim_port = 0; } ... }”h]”hX…static int preempt (void *handle) { if (busy_right_now) return 1; must_reclaim_port = 1; return 0; } static void wakeup (void *handle) { struct toaster *private = handle; struct pardevice *dev = private->dev; if (!dev) return; /* avoid races */ if (want_port) parport_claim (dev); } static int toaster_detect (struct toaster *private, struct parport *port) { private->dev = parport_register_device (port, "toaster", preempt, wakeup, NULL, 0, private); if (!private->dev) /* Couldn't register with parport. */ return -EIO; must_reclaim_port = 0; busy_right_now = 1; parport_claim_or_block (private->dev); ... /* Don't need the port while the toaster warms up. */ busy_right_now = 0; ... busy_right_now = 1; if (must_reclaim_port) { parport_claim_or_block (private->dev); must_reclaim_port = 0; } ... }”…”�”}”hjú sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÈhjé h²hubeh}”(h]”Œid15”ah ]”h"]”h$]”Œexample”ah&]”uh1hµhjh²hh³hÊh´MÄjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Môubhì)�”}”(hŒ(parport_unregister_device, parport_claim”h]”hŒ(parport_unregister_device, parport_claim”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Möhj h²hubeh}”(h]”Œid16”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjh²hh³hÊh´MôjºKubeh}”(h]”Œ.parport-register-device-register-to-use-a-port”ah ]”h"]”Œ0parport_register_device - register to use a port”ah$]”h&]”uh1hµhjqh²hh³hÊh´Mlubh¶)�”}”(hhh]”(h»)�”}”(hŒ/parport_unregister_device - finish using a port”h]”hŒ/parport_unregister_device - finish using a port”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj? h²hh³hÊh´Müubhì)�”}”(hŒ SYNPOPSIS”h]”hŒ SYNPOPSIS”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mþhj? h²hubj*)�”}”(hŒS#include void parport_unregister_device (struct pardevice *dev);”h]”hŒS#include void parport_unregister_device (struct pardevice *dev);”…”�”}”hj^ sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mhj? h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjl h²hh³hÊh´Mubhì)�”}”(hŒ�This function is the opposite of parport_register_device. After using parport_unregister_device, ``dev`` is no longer a valid device handle.”h]”(hŒbThis function is the opposite of parport_register_device. After using parport_unregister_device, ”…”�”}”(hj} h²hh³Nh´NubjÎ)�”}”(hŒ``dev``”h]”hŒdev”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj} ubhŒ$ is no longer a valid device handle.”…”�”}”(hj} h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjl h²hubhì)�”}”(hŒsYou should not unregister a device that is currently claimed, although if you do it will be released automatically.”h]”hŒsYou should not unregister a device that is currently claimed, although if you do it will be released automatically.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjl h²hubeh}”(h]”Œid17”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj? h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLE”h]”hŒEXAMPLE”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³ h²hh³hÊh´Mubj*)�”}”(hŒ_... kfree (dev->private); /* before we lose the pointer */ parport_unregister_device (dev); ...”h]”hŒ_... kfree (dev->private); /* before we lose the pointer */ parport_unregister_device (dev); ...”…”�”}”hjÄ sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mhj³ h²hubeh}”(h]”Œid18”ah ]”h"]”h$]”Œexample”ah&]”uh1hµhj? h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÚ h²hh³hÊh´Mubhì)�”}”(hŒparport_unregister_driver”h]”hŒparport_unregister_driver”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÚ h²hubeh}”(h]”Œid19”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj? h²hh³hÊh´MjºKubeh}”(h]”Œ-parport-unregister-device-finish-using-a-port”ah ]”h"]”Œ/parport_unregister_device - finish using a port”ah$]”h&]”uh1hµhjqh²hh³hÊh´Müubh¶)�”}”(hhh]”(h»)�”}”(hŒLparport_claim, parport_claim_or_block - claim the parallel port for a device”h]”hŒLparport_claim, parport_claim_or_block - claim the parallel port for a device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´M!ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´M$ubj*)�”}”(hŒz#include int parport_claim (struct pardevice *dev); int parport_claim_or_block (struct pardevice *dev);”h]”hŒz#include int parport_claim (struct pardevice *dev); int parport_claim_or_block (struct pardevice *dev);”…”�”}”hj+ sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M(hj h²hubeh}”(h]”Œid20”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj h²hh³hÊh´M$jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjA h²hh³hÊh´M.ubhì)�”}”(hŒîThese functions attempt to gain control of the parallel port on which ``dev`` is registered. ``parport_claim`` does not block, but ``parport_claim_or_block`` may do. (Put something here about blocking interruptibly or non-interruptibly.)”h]”(hŒFThese functions attempt to gain control of the parallel port on which ”…”�”}”(hjR h²hh³Nh´NubjÎ)�”}”(hŒ``dev``”h]”hŒdev”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjR ubhŒ is registered. ”…”�”}”(hjR h²hh³Nh´NubjÎ)�”}”(hŒ``parport_claim``”h]”hŒ parport_claim”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjR ubhŒ does not block, but ”…”�”}”(hjR h²hh³Nh´NubjÎ)�”}”(hŒ``parport_claim_or_block``”h]”hŒparport_claim_or_block”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjR ubhŒP may do. (Put something here about blocking interruptibly or non-interruptibly.)”…”�”}”(hjR h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M0hjA h²hubhì)�”}”(hŒAYou should not try to claim a port that you have already claimed.”h]”hŒAYou should not try to claim a port that you have already claimed.”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M5hjA h²hubeh}”(h]”Œid21”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj h²hh³hÊh´M.jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¬ h²hh³hÊh´M8ubhì)�”}”(hŒ€A return value of zero indicates that the port was successfully claimed, and the caller now has possession of the parallel port.”h]”hŒ€A return value of zero indicates that the port was successfully claimed, and the caller now has possession of the parallel port.”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M:hj¬ h²hubhì)�”}”(hŒaIf ``parport_claim_or_block`` blocks before returning successfully, the return value is positive.”h]”(hŒIf ”…”�”}”(hjË h²hh³Nh´NubjÎ)�”}”(hŒ``parport_claim_or_block``”h]”hŒparport_claim_or_block”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjË ubhŒD blocks before returning successfully, the return value is positive.”…”�”}”(hjË h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M=hj¬ h²hubeh}”(h]”Œid22”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj h²hh³hÊh´M8jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒERRORS”h]”hŒERRORS”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjó h²hh³hÊh´MAubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jdhj ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1jdhj ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ-EAGAIN”h]”hŒ-EAGAIN”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MDhj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj! ubj…)�”}”(hhh]”hì)�”}”(hŒSThe port is unavailable at the moment, but another attempt to claim it may succeed.”h]”hŒSThe port is unavailable at the moment, but another attempt to claim it may succeed.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MDhj; ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj! ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjó h²hh³hÊh´Nubeh}”(h]”Œid23”ah ]”h"]”h$]”Œerrors”ah&]”uh1hµhj h²hh³hÊh´MAjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjs h²hh³hÊh´MIubhì)�”}”(hŒparport_release”h]”hŒparport_release”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MLhjs h²hubeh}”(h]”Œid24”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj h²hh³hÊh´MIjºKubeh}”(h]”ŒIparport-claim-parport-claim-or-block-claim-the-parallel-port-for-a-device”ah ]”h"]”ŒLparport_claim, parport_claim_or_block - claim the parallel port for a device”ah$]”h&]”uh1hµhjqh²hh³hÊh´M!ubh¶)�”}”(hhh]”(h»)�”}”(hŒ+parport_release - release the parallel port”h]”hŒ+parport_release - release the parallel port”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¢ h²hh³hÊh´MPubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³ h²hh³hÊh´MSubj*)�”}”(hŒI#include void parport_release (struct pardevice *dev);”h]”hŒI#include void parport_release (struct pardevice *dev);”…”�”}”hjÄ sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MWhj³ h²hubeh}”(h]”Œid25”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj¢ h²hh³hÊh´MSjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÚ h²hh³hÊh´M\ubhì)�”}”(hŒ´Once a parallel port device has been claimed, it can be released using ``parport_release``. It cannot fail, but you should not release a device that you do not have possession of.”h]”(hŒGOnce a parallel port device has been claimed, it can be released using ”…”�”}”(hjë h²hh³Nh´NubjÎ)�”}”(hŒ``parport_release``”h]”hŒparport_release”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjë ubhŒZ. It cannot fail, but you should not release a device that you do not have possession of.”…”�”}”(hjë h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M^hjÚ h²hubeh}”(h]”Œid26”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj¢ h²hh³hÊh´M\jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒEXAMPLE”h]”hŒEXAMPLE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mcubj*)�”}”(hX static size_t write (struct pardevice *dev, const void *buf, size_t len) { ... written = dev->port->ops->write_ecp_data (dev->port, buf, len); parport_release (dev); ... }”h]”hX static size_t write (struct pardevice *dev, const void *buf, size_t len) { ... written = dev->port->ops->write_ecp_data (dev->port, buf, len); parport_release (dev); ... }”…”�”}”hj$sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mghjh²hubeh}”(h]”Œid27”ah ]”h"]”h$]”Œexample”ah&]”uh1hµhj¢ h²hh³hÊh´McjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj:h²hh³hÊh´Msubhì)�”}”(hŒAchange_mode, parport_claim, parport_claim_or_block, parport_yield”h]”hŒAchange_mode, parport_claim, parport_claim_or_block, parport_yield”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Muhj:h²hubeh}”(h]”Œid28”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj¢ h²hh³hÊh´MsjºKubeh}”(h]”Œ)parport-release-release-the-parallel-port”ah ]”h"]”Œ+parport_release - release the parallel port”ah$]”h&]”uh1hµhjqh²hh³hÊh´MPubh¶)�”}”(hhh]”(h»)�”}”(hŒKparport_yield, parport_yield_blocking - temporarily release a parallel port”h]”hŒKparport_yield, parport_yield_blocking - temporarily release a parallel port”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjih²hh³hÊh´Mzubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjzh²hh³hÊh´M}ubj*)�”}”(hŒy#include int parport_yield (struct pardevice *dev) int parport_yield_blocking (struct pardevice *dev);”h]”hŒy#include int parport_yield (struct pardevice *dev) int parport_yield_blocking (struct pardevice *dev);”…”�”}”hj‹sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M�hjzh²hubeh}”(h]”Œid29”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjih²hh³hÊh´M}jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¡h²hh³hÊh´M‡ubhì)�”}”(hŒ­When a driver has control of a parallel port, it may allow another driver to temporarily ``borrow`` it. ``parport_yield`` does not block; ``parport_yield_blocking`` may do.”h]”(hŒYWhen a driver has control of a parallel port, it may allow another driver to temporarily ”…”�”}”(hj²h²hh³Nh´NubjÎ)�”}”(hŒ ``borrow``”h]”hŒborrow”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²ubhŒ it. ”…”�”}”(hj²h²hh³Nh´NubjÎ)�”}”(hŒ``parport_yield``”h]”hŒ parport_yield”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²ubhŒ does not block; ”…”�”}”(hj²h²hh³Nh´NubjÎ)�”}”(hŒ``parport_yield_blocking``”h]”hŒparport_yield_blocking”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj²ubhŒ may do.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M‰hj¡h²hubeh}”(h]”Œid30”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjih²hh³hÊh´M‡jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjþh²hh³hÊh´MŽubhì)�”}”(hŒ`A return value of zero indicates that the caller still owns the port and the call did not block.”h]”hŒ`A return value of zero indicates that the caller still owns the port and the call did not block.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hjþh²hubhì)�”}”(hŒ{A positive return value from ``parport_yield_blocking`` indicates that the caller still owns the port and the call blocked.”h]”(hŒA positive return value from ”…”�”}”(hjh²hh³Nh´NubjÎ)�”}”(hŒ``parport_yield_blocking``”h]”hŒparport_yield_blocking”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjubhŒD indicates that the caller still owns the port and the call blocked.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M“hjþh²hubhì)�”}”(hŒrA return value of -EAGAIN indicates that the caller no longer owns the port, and it must be re-claimed before use.”h]”hŒrA return value of -EAGAIN indicates that the caller no longer owns the port, and it must be re-claimed before use.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M–hjþh²hubeh}”(h]”Œid31”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjih²hh³hÊh´MŽjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒERRORS”h]”hŒERRORS”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjSh²hh³hÊh´Mšubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jdhjgubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1jdhjgubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ-EAGAIN”h]”hŒ-EAGAIN”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubj…)�”}”(hhh]”hì)�”}”(hŒ.Ownership of the parallel port was given away.”h]”hŒ.Ownership of the parallel port was given away.”…”�”}”(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&]”uh1jhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhjgubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjSh²hh³hÊh´Nubeh}”(h]”Œid32”ah ]”h"]”h$]”Œerrors”ah&]”uh1hµhjih²hh³hÊh´MšjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÓh²hh³hÊh´M¡ubhì)�”}”(hŒparport_release”h]”hŒparport_release”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M£hjÓh²hubeh}”(h]”Œid33”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjih²hh³hÊh´M¡jºKubeh}”(h]”ŒHparport-yield-parport-yield-blocking-temporarily-release-a-parallel-port”ah ]”h"]”ŒKparport_yield, parport_yield_blocking - temporarily release a parallel port”ah$]”h&]”uh1hµhjqh²hh³hÊh´Mzubh¶)�”}”(hhh]”(h»)�”}”(hŒ;parport_wait_peripheral - wait for status lines, up to 35ms”h]”hŒ;parport_wait_peripheral - wait for status lines, up to 35ms”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M©ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M¬ubj*)�”}”(hŒ°#include int parport_wait_peripheral (struct parport *port, unsigned char mask, unsigned char val);”h]”hŒ°#include int parport_wait_peripheral (struct parport *port, unsigned char mask, unsigned char val);”…”�”}”hj$sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M°hjh²hubeh}”(h]”Œid34”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjh²hh³hÊh´M¬jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj=h²•nhh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj:h²hh³hÊh´M·ubhì)�”}”(hŒ=Wait for the status lines in mask to match the values in val.”h]”hŒ=Wait for the status lines in mask to match the values in val.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¹hj:h²hubeh}”(h]”Œid35”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjh²hh³hÊh´M·jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjah²hh³hÊh´M¼ubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjuubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1jdhjuubj{)�”}”(hhh]”(j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ-EINTR”h]”hŒ-EINTR”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¿hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj�ubj…)�”}”(hhh]”hì)�”}”(hŒa signal is pending”h]”hŒa signal is pending”…”�”}”(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&]”uh1jhjŒubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÀhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjÆubj…)�”}”(hhh]”hì)�”}”(hŒ+the status lines in mask have values in val”h]”hŒ+the status lines in mask have values in val”…”�”}”(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&]”uh1jhjŒubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÁhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjýubj…)�”}”(hhh]”hì)�”}”(hŒ&timed out while waiting (35ms elapsed)”h]”hŒ&timed out while waiting (35ms elapsed)”…”�”}”(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&]”uh1jhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jzhjuubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjah²hh³hÊh´Nubeh}”(h]”Œid36”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjh²hh³hÊh´M¼jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjOh²hh³hÊh´MÅubhì)�”}”(hŒparport_poll_peripheral”h]”hŒparport_poll_peripheral”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÇhjOh²hubeh}”(h]”Œid37”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjh²hh³hÊh´MÅjºKubeh}”(h]”Œ8parport-wait-peripheral-wait-for-status-lines-up-to-35ms”ah ]”h"]”Œ;parport_wait_peripheral - wait for status lines, up to 35ms”ah$]”h&]”uh1hµhjqh²hh³hÊh´M©ubh¶)�”}”(hhh]”(h»)�”}”(hŒ8parport_poll_peripheral - wait for status lines, in usec”h]”hŒ8parport_poll_peripheral - wait for status lines, in usec”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj~h²hh³hÊh´MÍubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj�h²hh³hÊh´MÐubj*)�”}”(hŒ×#include int parport_poll_peripheral (struct parport *port, unsigned char mask, unsigned char val, int usec);”h]”hŒ×#include int parport_poll_peripheral (struct parport *port, unsigned char mask, unsigned char val, int usec);”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÔhj�h²hubeh}”(h]”Œid38”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj~h²hh³hÊh´MÐjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¶h²hh³hÊh´MÜubhì)�”}”(hŒ=Wait for the status lines in mask to match the values in val.”h]”hŒ=Wait for the status lines in mask to match the values in val.”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÞhj¶h²hubeh}”(h]”Œid39”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj~h²hh³hÊh´MÜjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÝh²hh³hÊh´Máubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjñubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1jdhjñubj{)�”}”(hhh]”(j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ-EINTR”h]”hŒ-EINTR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mähjubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj ubj…)�”}”(hhh]”hì)�”}”(hŒa signal is pending”h]”hŒa signal is pending”…”�”}”(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&]”uh1jhjubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hjÎh]”hŒ0”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MåhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjBubj…)�”}”(hhh]”hì)�”}”(hŒ+the status lines in mask have values in val”h]”hŒ+the status lines in mask have values in val”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Måhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hjh]”hŒ1”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mæhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjxubj…)�”}”(hhh]”hì)�”}”(hŒ8timed out while waiting (usec microseconds have elapsed)”h]”hŒ8timed out while waiting (usec microseconds have elapsed)”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mæhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jzhjñubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÝh²hh³hÊh´Nubeh}”(h]”Œid40”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj~h²hh³hÊh´MájºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÉh²hh³hÊh´Mêubhì)�”}”(hŒparport_wait_peripheral”h]”hŒparport_wait_peripheral”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MìhjÉh²hubeh}”(h]”Œid41”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj~h²hh³hÊh´MêjºKubeh}”(h]”Œ5parport-poll-peripheral-wait-for-status-lines-in-usec”ah ]”h"]”Œ8parport_poll_peripheral - wait for status lines, in usec”ah$]”h&]”uh1hµhjqh²hh³hÊh´MÍubh¶)�”}”(hhh]”(h»)�”}”(hŒ0parport_wait_event - wait for an event on a port”h]”hŒ0parport_wait_event - wait for an event on a port”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjøh²hh³hÊh´Mñubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Môubj*)�”}”(hŒ^#include int parport_wait_event (struct parport *port, signed long timeout)”h]”hŒ^#include int parport_wait_event (struct parport *port, signed long timeout)”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Møhj h²hubeh}”(h]”Œid42”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjøh²hh³hÊh´MôjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj0h²hh³hÊh´Mýubhì)�”}”(hŒIWait for an event (e.g. interrupt) on a port. The timeout is in jiffies.”h]”hŒIWait for an event (e.g. interrupt) on a port. The timeout is in jiffies.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mÿhj0h²hubeh}”(h]”Œid43”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjøh²hh³hÊh´MýjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjWh²hh³hÊh´Mubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjkubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K:uh1jdhjkubj{)�”}”(hhh]”(j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hjÎh]”hŒ0”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj…ubj…)�”}”(hhh]”hì)�”}”(hŒsuccess”h]”hŒsuccess”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ<0”h]”hŒ<0”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj»ubj…)�”}”(hhh]”hì)�”}”(hŒ error (exit as soon as possible)”h]”hŒ error (exit as soon as possible)”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubj€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒ>0”h]”hŒ>0”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjòubj…)�”}”(hhh]”hì)�”}”(hŒ timed out”h]”hŒ timed out”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jzhjkubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjWh²hh³hÊh´Nubeh}”(h]”Œid44”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjøh²hh³hÊh´MjºKubeh}”(h]”Œ.parport-wait-event-wait-for-an-event-on-a-port”ah ]”h"]”Œ0parport_wait_event - wait for an event on a port”ah$]”h&]”uh1hµhjqh²hh³hÊh´Mñubh¶)�”}”(hhh]”(h»)�”}”(hŒ1parport_negotiate - perform IEEE 1284 negotiation”h]”hŒ1parport_negotiate - perform IEEE 1284 negotiation”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjLh²hh³hÊh´M ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj]h²hh³hÊh´Mubj*)�”}”(hŒO#include int parport_negotiate (struct parport *, int mode);”h]”hŒO#include int parport_negotiate (struct parport *, int mode);”…”�”}”hjnsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mhj]h²hubeh}”(h]”Œid45”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjLh²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj„h²hh³hÊh´Mubhì)�”}”(hŒPerform IEEE 1284 negotiation.”h]”hŒPerform IEEE 1284 negotiation.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj„h²hubeh}”(h]”Œid46”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjLh²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj«h²hh³hÊh´Mubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhj¿ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K ssize_t parport_read (struct parport *, void *buf, size_t len);”h]”hŒ[#include ssize_t parport_read (struct parport *, void *buf, size_t len);”…”�”}”hjèsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M5hj×h²hubeh}”(h]”Œid49”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjÆh²hh³hÊh´M1jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjþh²hh³hÊh´M:ubhì)�”}”(hŒxRead data from device in current IEEE 1284 transfer mode. This only works for modes that support reverse data transfer.”h]”hŒxRead data from device in current IEEE 1284 transfer mode. This only works for modes that support reverse data transfer.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M<hjþh²hubeh}”(h]”Œid50”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjÆh²hh³hÊh´M:jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj%h²hh³hÊh´M@ubhì)�”}”(hŒFIf negative, an error code; otherwise the number of bytes transferred.”h]”hŒFIf negative, an error code; otherwise the number of bytes transferred.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MBhj%h²hubeh}”(h]”Œid51”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjÆh²hh³hÊh´M@jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjLh²hh³hÊh´MEubhì)�”}”(hŒ parport_write, parport_negotiate”h]”hŒ parport_write, parport_negotiate”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MGhjLh²hubeh}”(h]”Œid52”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjÆh²hh³hÊh´MEjºKubeh}”(h]”Œ"parport-read-read-data-from-device”ah ]”h"]”Œ$parport_read - read data from device”ah$]”h&]”uh1hµhjqh²hh³hÊh´M.ubh¶)�”}”(hhh]”(h»)�”}”(hŒ$parport_write - write data to device”h]”hŒ$parport_write - write data to device”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj{h²hh³hÊh´MLubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŒh²hh³hÊh´MOubj*)�”}”(hŒb#include ssize_t parport_write (struct parport *, const void *buf, size_t len);”h]”hŒb#include ssize_t parport_write (struct parport *, const void *buf, size_t len);”…”�”}”hj�sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MShjŒh²hubeh}”(h]”Œid53”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj{h²hh³hÊh´MOjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³h²hh³hÊh´MXubhì)�”}”(hŒwWrite data to device in current IEEE 1284 transfer mode. This only works for modes that support forward data transfer.”h]”hŒwWrite data to device in current IEEE 1284 transfer mode. This only works for modes that support forward data transfer.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MZhj³h²hubeh}”(h]”Œid54”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj{h²hh³hÊh´MXjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÚh²hh³hÊh´M^ubhì)�”}”(hŒFIf negative, an error code; otherwise the number of bytes transferred.”h]”hŒFIf negative, an error code; otherwise the number of bytes transferred.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M`hjÚh²hubeh}”(h]”Œid55”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj{h²hh³hÊh´M^jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mcubhì)�”}”(hŒparport_read, parport_negotiate”h]”hŒparport_read, parport_negotiate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mehjh²hubeh}”(h]”Œid56”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj{h²hh³hÊh´McjºKubeh}”(h]”Œ"parport-write-write-data-to-device”ah ]”h"]”Œ$parport_write - write data to device”ah$]”h&]”uh1hµhjqh²hh³hÊh´MLubh¶)�”}”(hhh]”(h»)�”}”(hŒ;parport_open - register device for particular device number”h]”hŒ;parport_open - register device for particular device number”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj0h²hh³hÊh´Mkubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjAh²hh³hÊh´Mnubj*)�”}”(hXx#include struct pardevice *parport_open (int devnum, const char *name, int (*pf) (void *), void (*kf) (void *), void (*irqf) (int, void *, struct pt_regs *), int flags, void *handle);”h]”hXx#include struct pardevice *parport_open (int devnum, const char *name, int (*pf) (void *), void (*kf) (void *), void (*irqf) (int, void *, struct pt_regs *), int flags, void *handle);”…”�”}”hjRsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MrhjAh²hubeh}”(h]”Œid57”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj0h²hh³hÊh´MnjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjhh²hh³hÊh´M|ubhì)�”}”(hŒhThis is like parport_register_device but takes a device number instead of a pointer to a struct parport.”h]”hŒhThis is like parport_register_device but takes a device number instead of a pointer to a struct parport.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M~hjhh²hubeh}”(h]”Œid58”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj0h²hh³hÊh´M|jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj�h²hh³hÊh´M‚ubhì)�”}”(hŒWSee parport_register_device. If no device is associated with devnum, NULL is returned.”h]”hŒWSee parport_register_device. If no device is associated with devnum, NULL is returned.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M„hj�h²hubeh}”(h]”Œid59”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj0h²hh³hÊh´M‚jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¶h²hh³hÊh´Mˆubhì)�”}”(hŒparport_register_device”h]”hŒparport_register_device”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MŠhj¶h²hubeh}”(h]”Œid60”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj0h²hh³hÊh´MˆjºKubeh}”(h]”Œ9parport-open-register-device-for-particular-device-number”ah ]”h"]”Œ;parport_open - register device for particular device number”ah$]”h&]”uh1hµhjqh²hh³hÊh´Mkubh¶)�”}”(hhh]”(h»)�”}”(hŒ>parport_close - unregister device for particular device number”h]”hŒ>parport_close - unregister device for particular device number”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjåh²hh³hÊh´M�ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjöh²hh³hÊh´M’ubj*)�”}”(hŒG#include void parport_close (struct pardevice *dev);”h]”hŒG#include void parport_close (struct pardevice *dev);”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M–hjöh²hubeh}”(h]”Œid61”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjåh²hh³hÊh´M’jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M›ubhì)�”}”(hŒEThis is the equivalent of parport_unregister_device for parport_open.”h]”hŒEThis is the equivalent of parport_unregister_device for parport_open.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hjh²hubeh}”(h]”Œid62”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjåh²hh³hÊh´M›jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjDh²hh³hÊh´M ubhì)�”}”(hŒ'parport_unregister_device, parport_open”h]”hŒ'parport_unregister_device, parport_open”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¢hjDh²hubeh}”(h]”Œid63”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjåh²hh³hÊh´M jºKubeh}”(h]”Œparport_close - unregister device for particular device number”ah$]”h&]”uh1hµhjqh²hh³hÊh´M�ubh¶)�”}”(hhh]”(h»)�”}”(hŒ.parport_device_id - obtain IEEE 1284 Device ID”h]”hŒ.parport_device_id - obtain IEEE 1284 Device ID”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjsh²hh³hÊh´M§ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj„h²hh³hÊh´Mªubj*)�”}”(hŒ]#include ssize_t parport_device_id (int devnum, char *buffer, size_t len);”h]”hŒ]#include ssize_t parport_device_id (int devnum, char *buffer, size_t len);”…”�”}”hj•sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M®hj„h²hubeh}”(h]”Œid64”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjsh²hh³hÊh´MªjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj«h²hh³hÊh´M³ubhì)�”}”(hŒ?Obtains the IEEE 1284 Device ID associated with a given device.”h]”hŒ?Obtains the IEEE 1284 Device ID associated with a given device.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mµhj«h²hubeh}”(h]”Œid65”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjsh²hh³hÊh´M³jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÒh²hh³hÊh´M¸ubhì)�”}”(hŒ�If negative, an error code; otherwise, the number of bytes of buffer that contain the device ID. The format of the device ID is as follows::”h]”hŒŒIf negative, an error code; otherwise, the number of bytes of buffer that contain the device ID. The format of the device ID is as follows:”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MºhjÒh²hubj*)�”}”(hŒ [length][ID]”h]”hŒ [length][ID]”…”�”}”hjñsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M¾hjÒh²hubhì)�”}”(hŒ”The first two bytes indicate the inclusive length of the entire Device ID, and are in big-endian order. The ID is a sequence of pairs of the form::”h]”hŒ“The first two bytes indicate the inclusive length of the entire Device ID, and are in big-endian order. The ID is a sequence of pairs of the form:”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÀhjÒh²hubj*)�”}”(hŒ key:value;”h]”hŒ key:value;”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÄhjÒh²hubeh}”(h]”Œid66”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjsh²hh³hÊh´M¸jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj#h²hh³hÊh´MÇubhì)�”}”(hŒ2Many devices have ill-formed IEEE 1284 Device IDs.”h]”hŒ2Many devices have ill-formed IEEE 1284 Device IDs.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÉhj#h²hubeh}”(h]”Œid67”ah ]”h"]”h$]”jÔah&]”uh1hµhjsh²hh³hÊh´MÇjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjIh²hh³hÊh´MÌubhì)�”}”(hŒ'parport_find_class, parport_find_device”h]”hŒ'parport_find_class, parport_find_device”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÎhjIh²hubeh}”(h]”Œid68”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjsh²hh³hÊh´MÌjºKubeh}”(h]”Œ,parport-device-id-obtain-ieee-1284-device-id”ah ]”h"]”Œ.parport_device_id - obtain ieee 1284 device id”ah$]”h&]”uh1hµhjqh²hh³hÊh´M§ubh¶)�”}”(hhh]”(h»)�”}”(hŒCparport_device_coords - convert device number to device coordinates”h]”hŒCparport_device_coords - convert device number to device coordinates”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjxh²hh³hÊh´MÓubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‰h²hh³hÊh´MÖubj*)�”}”(hŒ‚#include int parport_device_coords (int devnum, int *parport, int *mux, int *daisy);”h]”hŒ‚#include int parport_device_coords (int devnum, int *parport, int *mux, int *daisy);”…”�”}”hjšsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÚhj‰h²hubeh}”(h]”Œid69”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjxh²hh³hÊh´MÖjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj°h²hh³hÊh´Màubhì)�”}”(hŒkConvert between device number (zero-based) and device coordinates (port, multiplexor, daisy chain address).”h]”hŒkConvert between device number (zero-based) and device coordinates (port, multiplexor, daisy chain address).”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mâhj°h²hubeh}”(h]”Œid70”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjxh²hh³hÊh´MàjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj×h²hh³hÊh´Mæubhì)�”}”(hŒXZero on success, in which case the coordinates are (``*parport``, ``*mux``, ``*daisy``).”h]”(hŒ4Zero on success, in which case the coordinates are (”…”�”}”(hjèh²hh³Nh´NubjÎ)�”}”(hŒ ``*parport``”h]”hŒ*parport”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjèubhŒ, ”…”�”}”(hjèh²hh³Nh´NubjÎ)�”}”(hŒ``*mux``”h]”hŒ*mux”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjèubhŒ, ”…”�”}”(hjèh²hh³Nh´NubjÎ)�”}”(hŒ ``*daisy``”h]”hŒ*daisy”…”�”}”(hjh²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×h²hubeh}”(h]”Œid71”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjxh²hh³hÊh´MæjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj4h²hh³hÊh´Mìubhì)�”}”(hŒparport_open, parport_device_id”h]”hŒparport_open, parport_device_id”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mîhj4h²hubeh}”(h]”Œid72”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjxh²hh³hÊh´MìjºKubeh}”(h]”ŒAparport-device-coords-convert-device-number-to-device-coordinates”ah ]”h"]”ŒCparport_device_coords - convert device number to device coordinates”ah$]”h&]”uh1hµhjqh²hh³hÊh´MÓubh¶)�”}”(hhh]”(h»)�”}”(hŒ/parport_find_class - find a device by its class”h]”hŒ/parport_find_class - find a device by its class”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjch²hh³hÊh´Móubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjth²hh³hÊh´Möubj*)�”}”(hXø#include typedef enum { PARPORT_CLASS_LEGACY = 0, /* Non-IEEE1284 device */ PARPORT_CLASS_PRINTER, PARPORT_CLASS_MODEM, PARPORT_CLASS_NET, PARPORT_CLASS_HDC, /* Hard disk controller */ PARPORT_CLASS_PCMCIA, PARPORT_CLASS_MEDIA, /* Multimedia device */ PARPORT_CLASS_FDC, /* Floppy disk controller */ PARPORT_CLASS_PORTS, PARPORT_CLASS_SCANNER, PARPORT_CLASS_DIGCAM, PARPORT_CLASS_OTHER, /* Anything else */ PARPORT_CLASS_UNSPEC, /* No CLS field in ID */ PARPORT_CLASS_SCSIADAPTER } parport_device_class; int parport_find_class (parport_device_class cls, int from);”h]”hXø#include typedef enum { PARPORT_CLASS_LEGACY = 0, /* Non-IEEE1284 device */ PARPORT_CLASS_PRINTER, PARPORT_CLASS_MODEM, PARPORT_CLASS_NET, PARPORT_CLASS_HDC, /* Hard disk controller */ PARPORT_CLASS_PCMCIA, PARPORT_CLASS_MEDIA, /* Multimedia device */ PARPORT_CLASS_FDC, /* Floppy disk controller */ PARPORT_CLASS_PORTS, PARPORT_CLASS_SCANNER, PARPORT_CLASS_DIGCAM, PARPORT_CLASS_OTHER, /* Anything else */ PARPORT_CLASS_UNSPEC, /* No CLS field in ID */ PARPORT_CLASS_SCSIADAPTER } parport_device_class; int parport_find_class (parport_device_class cls, int from);”…”�”}”hj…sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Múhjth²hubeh}”(h]”Œid73”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjch²hh³hÊh´MöjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj›h²hh³hÊh´Mubhì)�”}”(hŒEFind a device by class. The search starts from device number from+1.”h]”hŒEFind a device by class. The search starts from device number from+1.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhj›h²hubeh}”(h]”Œid74”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjch²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÂh²hh³hÊh´Mubhì)�”}”(hŒSThe device number of the next device in that class, or -1 if no such device exists.”h]”hŒSThe device number of the next device in that class, or -1 if no such device exists.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÂh²hubeh}”(h]”Œid75”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjch²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjéh²hh³hÊh´Mubhì)�”}”(hŒExample usage::”h]”hŒExample usage:”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjéh²hubj*)�”}”(hŒ§int devnum = -1; while ((devnum = parport_find_class (PARPORT_CLASS_DIGCAM, devnum)) != -1) { struct pardevice *dev = parport_open (devnum, ...); ... }”h]”hŒ§int devnum = -1; while ((devnum = parport_find_class (PARPORT_CLASS_DIGCAM, devnum)) != -1) { struct pardevice *dev = parport_open (devnum, ...); ... }”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mhjéh²hubeh}”(h]”Œid76”ah ]”h"]”h$]”Œnotes”ah&]”uh1hµhjch²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M&ubhì)�”}”(hŒ4parport_find_device, parport_open, parport_device_id”h]”hŒ4parport_find_device, parport_open, parport_device_id”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M(hjh²hubeh}”(h]”Œid77”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjch²hh³hÊh´M&jºKubeh}”(h]”Œ-parport-find-class-find-a-device-by-its-class”ah ]”h"]”Œ/parport_find_class - find a device by its class”ah$]”h&]”uh1hµhjqh²hh³hÊh´Móubh¶)�”}”(hhh]”(h»)�”}”(hŒ0parport_find_device - find a device by its class”h]”hŒ0parport_find_device - find a device by its class”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjMh²hh³hÊh´M-ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj^h²hh³hÊh´M0ubj*)�”}”(hŒa#include int parport_find_device (const char *mfg, const char *mdl, int from);”h]”hŒa#include int parport_find_device (const char *mfg, const char *mdl, int from);”…”�”}”hjosbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M4hj^h²hubeh}”(h]”Œid78”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjMh²hh³hÊh´M0jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj…h²hh³hÊh´M9ubhì)�”}”(hŒPFind a device by vendor and model. The search starts from device number from+1.”h]”hŒPFind a device by vendor and model. The search starts from device number from+1.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M;hj…h²hubeh}”(h]”Œid79”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjMh²hh³hÊh´M9jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¬h²hh³hÊh´M?ubhì)�”}”(hŒaThe device number of the next device matching the specifications, or -1 if no such device exists.”h]”hŒaThe device number of the next device matching the specifications, or -1 if no such device exists.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MAhj¬h²hubeh}”(h]”Œid80”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjMh²hh³hÊh´M?jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÓh²hh³hÊh´MEubhì)�”}”(hŒExample usage::”h]”hŒExample usage:”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MGhjÓh²hubj*)�”}”(hŒ¤int devnum = -1; while ((devnum = parport_find_device ("IOMEGA", "ZIP+", devnum)) != -1) { struct pardevice *dev = parport_open (devnum, ...); ... }”h]”hŒ¤int devnum = -1; while ((devnum = parport_find_device ("IOMEGA", "ZIP+", devnum)) != -1) { struct pardevice *dev = parport_open (devnum, ...); ... }”…”�”}”hjòsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MIhjÓh²hubeh}”(h]”Œid81”ah ]”h"]”h$]”Œnotes”ah&]”uh1hµhjMh²hh³hÊh´MEjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´MPubhì)�”}”(hŒ3parport_find_class, parport_open, parport_device_id”h]”hŒ3parport_find_class, parport_open, parport_device_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MRhjh²hubeh}”(h]”Œid82”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjMh²hh³hÊh´MPjºKubeh}”(h]”Œ.parport-find-device-find-a-device-by-its-class”ah ]”h"]”Œ0parport_find_device - find a device by its class”ah$]”h&]”uh1hµhjqh²hh³hÊh´M-ubh¶)�”}”(hhh]”(h»)�”}”(hŒ0parport_set_timeout - set the inactivity timeout”h]”hŒ0parport_set_timeout - set the inactivity timeout”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj7h²hh³hÊh´MXubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjHh²hh³hÊh´M[ubj*)�”}”(hŒ^#include long parport_set_timeout (struct pardevice *dev, long inactivity);”h]”hŒ^#include long parport_set_timeout (struct pardevice *dev, long inactivity);”…”�”}”hjYsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M_hjHh²hubeh}”(h]”Œid83”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj7h²hh³hÊh´M[jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjoh²hh³hÊh´Mdubhì)�”}”(hŒcSet the inactivity timeout, in jiffies, for a registered device. The previous timeout is returned.”h]”hŒcSet the inactivity timeout, in jiffies, for a registered device. The previous timeout is returned.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mfhjoh²hubeh}”(h]”Œid84”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj7h²hh³hÊh´MdjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj–h²hh³hÊh´Mjubhì)�”}”(hŒ!The previous timeout, in jiffies.”h]”hŒ!The previous timeout, in jiffies.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mlhj–h²hubeh}”(h]”Œid85”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj7h²hh³hÊh´MjjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj½h²hh³hÊh´Moubhì)�”}”(hŒßSome of the port->ops functions for a parport may take time, owing to delays at the peripheral. After the peripheral has not responded for ``inactivity`` jiffies, a timeout will occur and the blocking function will return.”h]”(hŒŒSome of the port->ops functions for a parport may take time, owing to delays at the peripheral. After the peripheral has not responded for ”…”�”}”(hjÎh²hh³Nh´NubjÎ)�”}”(hŒ``inactivity``”h]”hŒ inactivity”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÎubhŒE jiffies, a timeout will occur and the blocking function will return.”…”�”}”(hjÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mqhj½h²hubhì)�”}”(hXA timeout of 0 jiffies is a special case: the function must do as much as it can without blocking or leaving the hardware in an unknown state. If port operations are performed from within an interrupt handler, for instance, a timeout of 0 jiffies should be used.”h]”hXA timeout of 0 jiffies is a special case: the function must do as much as it can without blocking or leaving the hardware in an unknown state. If port operations are performed from within an interrupt handler, for instance, a timeout of 0 jiffies should be used.”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mvhj½h²hubhì)�”}”(hŒ[Once set for a registered device, the timeout will remain at the set value until set again.”h]”hŒ[Once set for a registered device, the timeout will remain at the set value until set again.”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M{hj½h²hubeh}”(h]”Œid86”ah ]”h"]”h$]”Œnotes”ah&]”uh1hµhj7h²hh³hÊh´MojºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mubhì)�”}”(hŒport->ops->xxx_read/write_yyy”h]”hŒport->ops->xxx_read/write_yyy”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hjh²hubeh}”(h]”Œid87”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj7h²hh³hÊh´MjºKubeh}”(h]”Œ.parport-set-timeout-set-the-inactivity-timeout”ah ]”h"]”Œ0parport_set_timeout - set the inactivity timeout”ah$]”h&]”uh1hµhjqh²hh³hÊh´MXubeh}”(h]”Œglobal-functions”ah ]”h"]”Œglobal functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kkubh¶)�”}”(hhh]”(h»)�”}”(hŒPORT FUNCTIONS”h]”hŒPORT FUNCTIONS”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjIh²hh³hÊh´M‡ubhì)�”}”(hŒ„The functions in the port->ops structure (struct parport_operations) are provided by the low-level driver responsible for that port.”h]”hŒ„The functions in the port->ops structure (struct parport_operations) are provided by the low-level driver responsible for that port.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M‰hjIh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ-port->ops->read_data - read the data register”h]”hŒ-port->ops->read_data - read the data register”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjhh²hh³hÊh´M�ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjyh²hh³hÊh´M�ubj*)�”}”(hŒ�#include struct parport_operations { ... unsigned char (*read_data) (struct parport *port); ... };”h]”hŒ�#include struct parport_operations { ... unsigned char (*read_data) (struct parport *port); ... };”…”�”}”hjŠsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M”hjyh²hubeh}”(h]”Œid88”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjhh²hh³hÊh´M�jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´M�ubhì)�”}”(hX€If port->modes contains the PARPORT_MODE_TRISTATE flag and the PARPORT_CONTROL_DIRECTION bit in the control register is set, this returns the value on the data pins. If port->modes contains the PARPORT_MODE_TRISTATE flag and the PARPORT_CONTROL_DIRECTION bit is not set, the return value _may_ be the last value written to the data register. Otherwise the return value is undefined.”h]”hX€If port->modes contains the PARPORT_MODE_TRISTATE flag and the PARPORT_CONTROL_DIRECTION bit in the control register is set, this returns the value on the data pins. If port->modes contains the PARPORT_MODE_TRISTATE flag and the PARPORT_CONTROL_DIRECTION bit is not set, the return value _may_ be the last value written to the data register. Otherwise the return value is undefined.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MŸhj h²hubeh}”(h]”Œid89”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjhh²hh³hÊh´M�jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÇh²hh³hÊh´M§ubhì)�”}”(hŒ&write_data, read_status, write_control”h]”hŒ&write_data, read_status, write_control”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M©hjÇh²hubeh}”(h]”Œid90”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjhh²hh³hÊh´M§jºKubeh}”(h]”Œ)port-ops-read-data-read-the-data-register”ah ]”h"]”Œ-port->ops->read_data - read the data register”ah$]”h&]”uh1hµhjIh²hh³hÊh´M�ubh¶)�”}”(hhh]”(h»)�”}”(hŒ/port->ops->write_data - write the data register”h]”hŒ/port->ops->write_data - write the data register”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjöh²hh³hÊh´M¯ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M²ubj*)�”}”(hŒ–#include struct parport_operations { ... void (*write_data) (struct parport *port, unsigned char d); ... };”h]”hŒ–#include struct parport_operations { ... void (*write_data) (struct parport *port, unsigned char d); ... };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M¶hjh²hubeh}”(h]”Œid91”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjöh²hh³hÊh´M²jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj.h²hh³hÊh´M¿ubhì)�”}”(hŒSWrites to the data register. May have side-effects (a STROBE pulse, for instance).”h]”hŒSWrites to the data register. May have side-effects (a STROBE pulse, for instance).”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÁhj.h²hubeh}”(h]”Œid92”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjöh²hh³hÊh´M¿jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjUh²hh³hÊh´MÅubhì)�”}”(hŒ%read_data, read_status, write_control”h]”hŒ%read_data, read_status, write_control”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÇhjUh²hubeh}”(h]”Œid93”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjöh²hh³hÊh´MÅjºKubeh}”(h]”Œ+port-ops-write-data-write-the-data-register”ah ]”h"]”Œ/port->ops->write_data - write the data register”ah$]”h&]”uh1hµhjIh²hh³hÊh´M¯ubh¶)�”}”(hhh]”(h»)�”}”(hŒ1port->ops->read_status - read the status register”h]”hŒ1port->ops->read_status - read the status register”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj„h²hh³hÊh´MÍubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj•h²hh³hÊh´MÐubj*)�”}”(hŒ�#include struct parport_operations { ... unsigned char (*read_status) (struct parport *port); ... };”h]”hŒ�#include struct parport_operations { ... unsigned char (*read_status) (struct parport *port); ... };”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÔhj•h²hubeh}”(h]”Œid94”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj„h²hh³hÊh´MÐjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¼h²hh³hÊh´MÝubhì)�”}”(hŒ3Reads from the status register. This is a bitmask:”h]”hŒ3Reads from the status register. This is a bitmask:”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mßhj¼h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ.PARPORT_STATUS_ERROR (printer fault, "nFault")”h]”hì)�”}”(hjäh]”hŒ2PARPORT_STATUS_ERROR (printer fault, “nFaultâ€�)”…”�”}”(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Œ)PARPORT_STATUS_SELECT (on-line, "Select")”h]”hì)�”}”(hjûh]”hŒ-PARPORT_STATUS_SELECT (on-line, “Selectâ€�)”…”�”}”(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Œ,PARPORT_STATUS_PAPEROUT (no paper, "PError")”h]”hì)�”}”(hjh]”hŒ0PARPORT_STATUS_PAPEROUT (no paper, “PErrorâ€�)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mãhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjÝh²hh³hÊh´Nubjá)�”}”(hŒ&PARPORT_STATUS_ACK (handshake, "nAck")”h]”hì)�”}”(hj)h]”hŒ*PARPORT_STATUS_ACK (handshake, “nAckâ€�)”…”�”}”(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Œ#PARPORT_STATUS_BUSY (busy, "Busy") ”h]”hì)�”}”(hŒ"PARPORT_STATUS_BUSY (busy, "Busy")”h]”hŒ&PARPORT_STATUS_BUSY (busy, “Busyâ€�)”…”�”}”(hjBh²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&]”Œbullet”Œ-”uh1jÛh³hÊh´Máhj¼h²hubhì)�”}”(hŒThere may be other bits set.”h]”hŒThere may be other bits set.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mçhj¼h²hubeh}”(h]”Œid95”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj„h²hh³hÊh´MÝjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjth²hh³hÊh´Mêubhì)�”}”(hŒ$read_data, write_data, write_control”h]”hŒ$read_data, write_data, write_control”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mìhjth²hubeh}”(h]”Œid96”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj„h²hh³hÊh´MêjºKubeh}”(h]”Œ-port-ops-read-status-read-the-status-register”ah ]”h"]”Œ1port->ops->read_status - read the status register”ah$]”h&]”uh1hµhjIh²hh³hÊh´MÍubh¶)�”}”(hhh]”(h»)�”}”(hŒ3port->ops->read_control - read the control register”h]”hŒ3port->ops->read_control - read the control register”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj£h²hh³hÊh´Mòubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj´h²hh³hÊh´Mõubj*)�”}”(hŒ�#include struct parport_operations { ... unsigned char (*read_control) (struct parport *port); ... };”h]”hŒ�#include struct parport_operations { ... unsigned char (*read_control) (struct parport *port); ... };”…”�”}”hjÅsbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mùhj´h²hubeh}”(h]”Œid97”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj£h²hh³hÊh´MõjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÛh²hh³hÊh´Mubhì)�”}”(hŒ�Returns the last value written to the control register (either from write_control or frob_control). No port access is performed.”h]”hŒ�Returns the last value written to the control register (either from write_control or frob_control). No port access is performed.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÛh²hubeh}”(h]”Œid98”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj£h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´Mubhì)�”}”(hŒ1read_data, write_data, read_status, write_control”h]”hŒ1read_data, write_data, read_status, write_control”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hj h²hubeh}”(h]”Œid99”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj£h²hh³hÊh´MjºKubeh}”(h]”Œ/port-ops-read-control-read-the-control-register”ah ]”h"]”Œ3port->ops->read_control - read the control register”ah$]”h&]”uh1hµhjIh²hh³hÊh´Mòubh¶)�”}”(hhh]”(h»)�”}”(hŒ5port->ops->write_control - write the control register”h]”hŒ5port->ops->write_control - write the control register”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj1 h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjB h²hh³hÊh´Mubj*)�”}”(hŒ™#include struct parport_operations { ... void (*write_control) (struct parport *port, unsigned char s); ... };”h]”hŒ™#include struct parport_operations { ... void (*write_control) (struct parport *port, unsigned char s); ... };”…”�”}”hjS sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MhjB h²hubeh}”(h]”Œid100”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj1 h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhji h²hh³hÊh´M ubhì)�”}”(hŒ3Writes to the control register. This is a bitmask::”h]”hŒ2Writes to the control register. This is a bitmask:”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M"hji h²hubj*)�”}”(hX _______ - PARPORT_CONTROL_STROBE (nStrobe) _______ - PARPORT_CONTROL_AUTOFD (nAutoFd) _____ - PARPORT_CONTROL_INIT (nInit) _________ - PARPORT_CONTROL_SELECT (nSelectIn)”h]”hX _______ - PARPORT_CONTROL_STROBE (nStrobe) _______ - PARPORT_CONTROL_AUTOFD (nAutoFd) _____ - PARPORT_CONTROL_INIT (nInit) _________ - PARPORT_CONTROL_SELECT (nSelectIn)”…”�”}”hjˆ sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M$hji h²hubeh}”(h]”Œid101”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj1 h²hh³hÊh´M jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjž h²hh³hÊh´M.ubhì)�”}”(hŒ0read_data, write_data, read_status, frob_control”h]”hŒ0read_data, write_data, read_status, frob_control”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M0hjž h²hubeh}”(h]”Œid102”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj1 h²hh³hÊh´M.jºKubeh}”(h]”Œ1port-ops-write-control-write-the-control-register”ah ]”h"]”Œ5port->ops->write_control - write the control register”ah$]”h&]”uh1hµhjIh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ5port->ops->frob_control - write control register bits”h]”hŒ5port->ops->frob_control - write control register bits”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÍ h²hh³hÊh´M6ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÞ h²hh³hÊh´M9ubj*)�”}”(hŒ÷#include struct parport_operations { ... unsigned char (*frob_control) (struct parport *port, unsigned char mask, unsigned char val); ... };”h]”hŒ÷#include struct parport_operations { ... unsigned char (*frob_control) (struct parport *port, unsigned char mask, unsigned char val); ... };”…”�”}”hjï sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M=hjÞ h²hubeh}”(h]”Œid103”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjÍ h²hh³hÊh´M9jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj!h²hh³hÊh´MHubhì)�”}”(hŒ­This is equivalent to reading from the control register, masking out the bits in mask, exclusive-or'ing with the bits in val, and writing the result to the control register.”h]”hŒ¯This is equivalent to reading from the control register, masking out the bits in mask, exclusive-or’ing with the bits in val, and writing the result to the control register.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MJhj!h²hubhì)�”}”(hŒ–As some ports don't allow reads from the control port, a software copy of its contents is maintained, so frob_control is in fact only one port access.”h]”hŒ˜As some ports don’t allow reads from the control port, a software copy of its contents is maintained, so frob_control is in fact only one port access.”…”�”}”(hj$!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MNhj!h²hubeh}”(h]”Œid104”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjÍ h²hh³hÊh´MHjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj:!h²hh³hÊh´MSubhì)�”}”(hŒ1read_data, write_data, read_status, write_control”h]”hŒ1read_data, write_data, read_status, write_control”…”�”}”(hjK!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MUhj:!h²hubeh}”(h]”Œid105”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjÍ h²hh³hÊh´MSjºKubeh}”(h]”Œ1port-ops-frob-control-write-control-register-bits”ah ]”h"]”Œ5port->ops->frob_control - write control register bits”ah$]”h&]”uh1hµhjIh²hh³hÊh´M6ubh¶)�”}”(hhh]”(h»)�”}”(hŒ3port->ops->enable_irq - enable interrupt generation”h]”hŒ3port->ops->enable_irq - enable interrupt generation”…”�”}”(hjl!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhji!h²hh³hÊh´M[ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj}!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjz!h²hh³hÊh´M^ubj*)�”}”(hŒ…#include struct parport_operations { ... void (*enable_irq) (struct parport *port); ... };”h]”hŒ…#include struct parport_operations { ... void (*enable_irq) (struct parport *port); ... };”…”�”}”hj‹!sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mbhjz!h²hubeh}”(h]”Œid106”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhji!h²hh³hÊh´M^jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj¤!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¡!h²hh³hÊh´Mkubhì)�”}”(hŒáThe parallel port hardware is instructed to generate interrupts at appropriate moments, although those moments are architecture-specific. For the PC architecture, interrupts are commonly generated on the rising edge of nAck.”h]”hŒáThe parallel port hardware is instructed to generate interrupts at appropriate moments, although those moments are architecture-specific. For the PC architecture, interrupts are commonly generated on the rising edge of nAck.”…”�”}”(hj²!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mmhj¡!h²hubeh}”(h]”Œid107”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhji!h²hh³hÊh´MkjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjË!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÈ!h²hh³hÊh´Msubhì)�”}”(hŒ disable_irq”h]”hŒ disable_irq”…”�”}”(hjÙ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MuhjÈ!h²hubeh}”(h]”Œid108”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhji!h²hh³hÊh´MsjºKubeh}”(h]”Œ/port-ops-enable-irq-enable-interrupt-generation”ah ]”h"]”Œ3port->ops->enable_irq - enable interrupt generation”ah$]”h&]”uh1hµhjIh²hh³hÊh´M[ubh¶)�”}”(hhh]”(h»)�”}”(hŒ5port->ops->disable_irq - disable interrupt generation”h]”hŒ5port->ops->disable_irq - disable interrupt generation”…”�”}”(hjú!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj÷!h²hh³hÊh´M{ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj"h²hh³hÊh´M~ubj*)�”}”(hŒ†#include struct parport_operations { ... void (*disable_irq) (struct parport *port); ... };”h]”hŒ†#include struct parport_operations { ... void (*disable_irq) (struct parport *port); ... };”…”�”}”hj"sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M‚hj"h²hubeh}”(h]”Œid109”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj÷!h²hh³hÊh´M~jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj2"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj/"h²hh³hÊh´M‹ubhì)�”}”(hŒhThe parallel port hardware is instructed not to generate interrupts. The interrupt itself is not masked.”h]”hŒhThe parallel port hardware is instructed not to generate interrupts. The interrupt itself is not masked.”…”�”}”(hj@"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj/"h²hubeh}”(h]”Œid110”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj÷!h²hh³hÊh´M‹jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjY"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjV"h²hh³hÊh´M‘ubhì)�”}”(hŒ enable_irq”h]”hŒ enable_irq”…”�”}”(hjg"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M“hjV"h²hubeh}”(h]”Œid111”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj÷!h²hh³hÊh´M‘jºKubeh}”(h]”Œ1port-ops-disable-irq-disable-interrupt-generation”ah ]”h"]”Œ5port->ops->disable_irq - disable interrupt generation”ah$]”h&]”uh1hµhjIh²hh³hÊh´M{ubh¶)�”}”(hhh]”(h»)�”}”(hŒ-port->ops->data_forward - enable data drivers”h]”hŒ-port->ops->data_forward - enable data drivers”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj…"h²hh³hÊh´M™ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj™"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj–"h²hh³hÊh´Mœubj*)�”}”(hŒ‡#include struct parport_operations { ... void (*data_forward) (struct parport *port); ... };”h]”hŒ‡#include struct parport_operations { ... void (*data_forward) (struct parport *port); ... };”…”�”}”hj§"sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M hj–"h²hubeh}”(h]”Œid112”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj…"h²hh³hÊh´MœjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÀ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj½"h²hh³hÊh´M©ubhì)�”}”(hŒKEnables the data line drivers, for 8-bit host-to-peripheral communications.”h]”hŒKEnables the data line drivers, for 8-bit host-to-peripheral communications.”…”�”}”(hjÎ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M«hj½"h²hubeh}”(h]”Œid113”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj…"h²hh³hÊh´M©jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjä"h²hh³hÊh´M¯ubhì)�”}”(hŒ data_reverse”h]”hŒ data_reverse”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M±hjä"h²hubeh}”(h]”Œid114”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj…"h²hh³hÊh´M¯jºKubeh}”(h]”Œ)port-ops-data-forward-enable-data-drivers”ah ]”h"]”Œ-port->ops->data_forward - enable data drivers”ah$]”h&]”uh1hµhjIh²hh³hÊh´M™ubh¶)�”}”(hhh]”(h»)�”}”(hŒ-port->ops->data_reverse - tristate the buffer”h]”hŒ-port->ops->data_reverse - tristate the buffer”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj#h²hh³hÊh´M·ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj$#h²hh³hÊh´Mºubj*)�”}”(hŒ‡#include struct parport_operations { ... void (*data_reverse) (struct parport *port); ... };”h]”hŒ‡#include struct parport_operations { ... void (*data_reverse) (struct parport *port); ... };”…”�”}”hj5#sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M¾hj$#h²hubeh}”(h]”Œid115”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj#h²hh³hÊh´MºjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjN#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjK#h²hh³hÊh´MÇubhì)�”}”(hŒdPlaces the data bus in a high impedance state, if port->modes has the PARPORT_MODE_TRISTATE bit set.”h]”hŒdPlaces the data bus in a high impedance state, if port->modes has the PARPORT_MODE_TRISTATE bit set.”…”�”}”(hj\#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÉhjK#h²hubeh}”(h]”Œid116”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj#h²hh³hÊh´MÇjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hju#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjr#h²hh³hÊh´MÍubhì)�”}”(hŒ data_forward”h]”hŒ data_forward”…”�”}”(hjƒ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÏhjr#h²hubeh}”(h]”Œid117”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj#h²hh³hÊh´MÍjºKubeh}”(h]”Œ)port-ops-data-reverse-tristate-the-buffer”ah ]”h"]”Œ-port->ops->data_reverse - tristate the buffer”ah$]”h&]”uh1hµhjIh²hh³hÊh´M·ubh¶)�”}”(hhh]”(h»)�”}”(hŒ*port->ops->epp_write_data - write EPP data”h]”hŒ*port->ops->epp_write_data - write EPP data”…”�”}”(hj¤#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¡#h²hh³hÊh´MÔubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjµ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj²#h²hh³hÊh´M×ubj*)�”}”(hŒÓ#include struct parport_operations { ... size_t (*epp_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”h]”hŒÓ#include struct parport_operations { ... size_t (*epp_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”…”�”}”hjÃ#sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÛhj²#h²hubeh}”(h]”Œid118”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj¡#h²hh³hÊh´M×jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÜ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÙ#h²hh³hÊh´Måubhì)�”}”(hŒAWrites data in EPP mode, and returns the number of bytes written.”h]”hŒAWrites data in EPP mode, and returns the number of bytes written.”…”�”}”(hjê#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MçhjÙ#h²hubhì)�”}”(hŒTThe ``flags`` parameter may be one or more of the following, bitwise-or'ed together:”h]”(hŒThe ”…”�”}”(hjø#h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjø#ubhŒI parameter may be one or more of the following, bitwise-or’ed together:”…”�”}”(hjø#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MéhjÙ#h²hubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhj$ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jdhj$ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_EPP_FAST”h]”hŒPARPORT_EPP_FAST”…”�”}”(hj;$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Míhj8$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj5$ubj…)�”}”(hhh]”hì)�”}”(hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”•h]”hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”…”�”}”(hjR$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MíhjO$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj5$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj2$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj$ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjÙ#h²hh³hÊh´Nubeh}”(h]”Œid119”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj¡#h²hh³hÊh´MåjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjŠ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‡$h²hh³hÊh´Móubhì)�”}”(hŒ,epp_read_data, epp_write_addr, epp_read_addr”h]”hŒ,epp_read_data, epp_write_addr, epp_read_addr”…”�”}”(hj˜$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mõhj‡$h²hubeh}”(h]”Œid120”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj¡#h²hh³hÊh´MójºKubeh}”(h]”Œ&port-ops-epp-write-data-write-epp-data”ah ]”h"]”Œ*port->ops->epp_write_data - write epp data”ah$]”h&]”uh1hµhjIh²hh³hÊh´MÔubh¶)�”}”(hhh]”(h»)�”}”(hŒ(port->ops->epp_read_data - read EPP data”h]”hŒ(port->ops->epp_read_data - read EPP data”…”�”}”(hj¹$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¶$h²hh³hÊh´Mûubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjÊ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÇ$h²hh³hÊh´Mþubj*)�”}”(hŒÌ#include struct parport_operations { ... size_t (*epp_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”h]”hŒÌ#include struct parport_operations { ... size_t (*epp_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”…”�”}”hjØ$sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MhjÇ$h²hubeh}”(h]”Œid121”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj¶$h²hh³hÊh´MþjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjñ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjî$h²hh³hÊh´M ubhì)�”}”(hŒ=Reads data in EPP mode, and returns the number of bytes read.”h]”hŒ=Reads data in EPP mode, and returns the number of bytes read.”…”�”}”(hjÿ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjî$h²hubhì)�”}”(hŒTThe ``flags`` parameter may be one or more of the following, bitwise-or'ed together:”h]”(hŒThe ”…”�”}”(hj %h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj %ubhŒI parameter may be one or more of the following, bitwise-or’ed together:”…”�”}”(hj %h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjî$h²hubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhj0%ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jdhj0%ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_EPP_FAST”h]”hŒPARPORT_EPP_FAST”…”�”}”(hjP%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjM%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjJ%ubj…)�”}”(hhh]”hì)�”}”(hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”h]”hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”…”�”}”(hjg%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjd%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hjJ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjG%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhj0%ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hj-%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhjî$h²hh³hÊh´Nubeh}”(h]”Œid122”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj¶$h²hh³hÊh´M jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjŸ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjœ%h²hh³hÊh´Mubhì)�”}”(hŒ-epp_write_data, epp_write_addr, epp_read_addr”h]”hŒ-epp_write_data, epp_write_addr, epp_read_addr”…”�”}”(hj­%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhjœ%h²hubeh}”(h]”Œid123”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj¶$h²hh³hÊh´MjºKubeh}”(h]”Œ$port-ops-epp-read-data-read-epp-data”ah ]”h"]”Œ(port->ops->epp_read_data - read epp data”ah$]”h&]”uh1hµhjIh²hh³hÊh´Mûubh¶)�”}”(hhh]”(h»)�”}”(hŒ-port->ops->epp_write_addr - write EPP address”h]”hŒ-port->ops->epp_write_addr - write EPP address”…”�”}”(hjÎ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjË%h²hh³hÊh´M!ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjß%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÜ%h²hh³hÊh´M$ubj*)�”}”(hŒÓ#include struct parport_operations { ... size_t (*epp_write_addr) (struct parport *port, const void *buf, size_t len, int flags); ... };”h]”hŒÓ#include struct parport_operations { ... size_t (*epp_write_addr) (struct parport *port, const void *buf, size_t len, int flags); ... };”…”�”}”hjí%sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M(hjÜ%h²hubeh}”(h]”Œid124”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjË%h²hh³hÊh´M$jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj&h²hh³hÊh´M2ubhì)�”}”(hŒCWrites EPP addresses (8 bits each), and returns the number written.”h]”hŒCWrites EPP addresses (8 bits each), and returns the number written.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M4hj&h²hubhì)�”}”(hŒTThe ``flags`` parameter may be one or more of the following, bitwise-or'ed together:”h]”(hŒThe ”…”�”}”(hj"&h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj*&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj"&ubhŒI parameter may be one or more of the following, bitwise-or’ed together:”…”�”}”(hj"&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M6hj&h²hubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjE&ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jdhjE&ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_EPP_FAST”h]”hŒPARPORT_EPP_FAST”…”�”}”(hje&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M:hjb&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj_&ubj…)�”}”(hhh]”hì)�”}”(hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”h]”hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”…”�”}”(hj|&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M:hjy&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj_&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj\&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhjE&ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hjB&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj&h²hh³hÊh´Nubhì)�”}”(hŒ5(Does PARPORT_EPP_FAST make sense for this function?)”h]”hŒ5(Does PARPORT_EPP_FAST make sense for this function?)”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M?hj&h²hubeh}”(h]”Œid125”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjË%h²hh³hÊh´M2jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjÂ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¿&h²hh³hÊh´MBubhì)�”}”(hŒ,epp_write_data, epp_read_data, epp_read_addr”h]”hŒ,epp_write_data, epp_read_data, epp_read_addr”…”�”}”(hjÐ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MDhj¿&h²hubeh}”(h]”Œid126”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjË%h²hh³hÊh´MBjºKubeh}”(h]”Œ)port-ops-epp-write-addr-write-epp-address”ah ]”h"]”Œ-port->ops->epp_write_addr - write epp address”ah$]”h&]”uh1hµhjIh²hh³hÊh´M!ubh¶)�”}”(hhh]”(h»)�”}”(hŒ+port->ops->epp_read_addr - read EPP address”h]”hŒ+port->ops->epp_read_addr - read EPP address”…”�”}”(hjñ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjî&h²hh³hÊh´MJubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÿ&h²hh³hÊh´MMubj*)�”}”(hŒÌ#include struct parport_operations { ... size_t (*epp_read_addr) (struct parport *port, void *buf, size_t len, int flags); ... };”h]”hŒÌ#include struct parport_operations { ... size_t (*epp_read_addr) (struct parport *port, void *buf, size_t len, int flags); ... };”…”�”}”hj'sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MQhjÿ&h²hubeh}”(h]”Œid127”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjî&h²hh³hÊh´MMjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj)'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj&'h²hh³hÊh´M[ubhì)�”}”(hŒ?Reads EPP addresses (8 bits each), and returns the number read.”h]”hŒ?Reads EPP addresses (8 bits each), and returns the number read.”…”�”}”(hj7'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M]hj&'h²hubhì)�”}”(hŒTThe ``flags`` parameter may be one or more of the following, bitwise-or'ed together:”h]”(hŒThe ”…”�”}”(hjE'h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjM'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjE'ubhŒI parameter may be one or more of the following, bitwise-or’ed together:”…”�”}”(hjE'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M_hj&'h²hubj[)�”}”(hhh]”j`)�”}”(hhh]”(je)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jdhjh'ubje)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jdhjh'ubj{)�”}”(hhh]”j€)�”}”(hhh]”(j…)�”}”(hhh]”hì)�”}”(hŒPARPORT_EPP_FAST”h]”hŒPARPORT_EPP_FAST”…”�”}”(hjˆ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mchj…'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj‚'ubj…)�”}”(hhh]”hì)�”}”(hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”h]”hŒŠUse fast transfers. Some chips provide 16-bit and 32-bit registers. However, if a transfer times out, the return value may be unreliable.”…”�”}”(hjŸ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mchjœ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j„hj‚'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jzhjh'ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j_hje'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jZhj&'h²hh³hÊh´Nubhì)�”}”(hŒ5(Does PARPORT_EPP_FAST make sense for this function?)”h]”hŒ5(Does PARPORT_EPP_FAST make sense for this function?)”…”�”}”(hjÌ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mhhj&'h²hubeh}”(h]”Œid128”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjî&h²hh³hÊh´M[jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjå'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjâ'h²hh³hÊh´Mkubhì)�”}”(hŒ-epp_write_data, epp_read_data, epp_write_addr”h]”hŒ-epp_write_data, epp_read_data, epp_write_addr”…”�”}”(hjó'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mmhjâ'h²hubeh}”(h]”Œid129”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjî&h²hh³hÊh´MkjºKubeh}”(h]”Œ'port-ops-epp-read-addr-read-epp-address”ah ]”h"]”Œ+port->ops->epp_read_addr - read epp address”ah$]”h&]”uh1hµhjIh²hh³hÊh´MJubh¶)�”}”(hhh]”(h»)�”}”(hŒ5port->ops->ecp_write_data - write a block of ECP data”h]”hŒ5port->ops->ecp_write_data - write a block of ECP data”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj(h²hh³hÊh´Msubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj%(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj"(h²hh³hÊh´Mvubj*)�”}”(hŒÓ#include struct parport_operations { ... size_t (*ecp_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”h]”hŒÓ#include struct parport_operations { ... size_t (*ecp_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”…”�”}”hj3(sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mzhj"(h²hubeh}”(h]”Œid130”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj(h²hh³hÊh´MvjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjL(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjI(h²hh³hÊh´M„ubhì)�”}”(hŒ@Writes a block of ECP data. The ``flags`` parameter is ignored.”h]”(hŒ!Writes a block of ECP data. The ”…”�”}”(hjZ(h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjZ(ubhŒ parameter is ignored.”…”�”}”(hjZ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M†hjI(h²hubeh}”(h]”Œid131”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj(h²hh³hÊh´M„jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj…(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj‚(h²hh³hÊh´M‰ubhì)�”}”(hŒThe number of bytes written.”h]”hŒThe number of bytes written.”…”�”}”(hj“(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M‹hj‚(h²hubeh}”(h]”Œid132”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj(h²hh³hÊh´M‰jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj¬(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj©(h²hh³hÊh´MŽubhì)�”}”(hŒecp_read_data, ecp_write_addr”h]”hŒecp_read_data, ecp_write_addr”…”�”}”(hjº(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M�hj©(h²hubeh}”(h]”Œid133”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj(h²hh³hÊh´MŽjºKubeh}”(h]”Œ1port-ops-ecp-write-data-write-a-block-of-ecp-data”ah ]”h"]”Œ5port->ops->ecp_write_data - write a block of ecp data”ah$]”h&]”uh1hµhjIh²hh³hÊh´Msubh¶)�”}”(hhh]”(h»)�”}”(hŒ3port->ops->ecp_read_data - read a block of ECP data”h]”hŒ3port->ops->ecp_read_data - read a block of ECP data”…”�”}”(hjÛ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjØ(h²hh³hÊh´M–ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjì(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjé(h²hh³hÊh´M™ubj*)�”}”(hŒÌ#include struct parport_operations { ... size_t (*ecp_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”h]”hŒÌ#include struct parport_operations { ... size_t (*ecp_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”…”�”}”hjú(sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M�hjé(h²hubeh}”(h]”Œid134”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjØ(h²hh³hÊh´M™jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj)h²hh³hÊh´M§ubhì)�”}”(hŒ?Reads a block of ECP data. The ``flags`` parameter is ignored.”h]”(hŒ Reads a block of ECP data. The ”…”�”}”(hj!)h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj))h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj!)ubhŒ parameter is ignored.”…”�”}”(hj!)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M©hj)h²hubeh}”(h]”Œid135”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjØ(h²hh³hÊh´M§jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjL)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjI)h²hh³hÊh´M¬ubhì)�”}”(hŒ}The number of bytes read. NB. There may be more unread data in a FIFO. Is there a way of stunning the FIFO to prevent this?”h]”hŒ}The number of bytes read. NB. There may be more unread data in a FIFO. Is there a way of stunning the FIFO to prevent this?”…”�”}”(hjZ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M®hjI)h²hubeh}”(h]”Œid136”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjØ(h²hh³hÊh´M¬jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjs)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjp)h²hh³hÊh´M²ubhì)�”}”(hŒecp_write_block, ecp_write_addr”h]”hŒecp_write_block, ecp_write_addr”…”�”}”(hj�)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M´hjp)h²hubeh}”(h]”Œid137”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjØ(h²hh³hÊh´M²jºKubeh}”(h]”Œ/port-ops-ecp-read-data-read-a-block-of-ecp-data”ah ]”h"]”Œ3port->ops->ecp_read_data - read a block of ecp data”ah$]”h&]”uh1hµhjIh²hh³hÊh´M–ubh¶)�”}”(hhh]”(h»)�”}”(hŒ:port->ops->ecp_write_addr - write a block of ECP addresses”h]”hŒ:port->ops->ecp_write_addr - write a block of ECP addresses”…”�”}”(hj¢)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŸ)h²hh³hÊh´M¹ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj³)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj°)h²hh³hÊh´M¼ubj*)�”}”(hŒÓ#include struct parport_operations { ... size_t (*ecp_write_addr) (struct parport *port, const void *buf, size_t len, int flags); ... };”h]”hŒÓ#include struct parport_operations { ... size_t (*ecp_write_addr) (struct parport *port, const void *buf, size_t len, int flags); ... };”…”�”}”hjÁ)sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´MÀhj°)h²hubeh}”(h]”Œid138”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjŸ)h²hh³hÊh´M¼jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÚ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj×)h²hh³hÊh´MÊubhì)�”}”(hŒEWrites a block of ECP addresses. The ``flags`` parameter is ignored.”h]”(hŒ&Writes a block of ECP addresses. The ”…”�”}”(hjè)h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjð)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjè)ubhŒ parameter is ignored.”…”�”}”(hjè)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÌhj×)h²hubeh}”(h]”Œid139”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjŸ)h²hh³hÊh´MÊjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj*h²hh³hÊh´MÏubhì)�”}”(hŒThe number of bytes written.”h]”hŒThe number of bytes written.”…”�”}”(hj!*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÑhj*h²hubeh}”(h]”Œid140”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjŸ)h²hh³hÊh´MÏjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒNOTES”h]”hŒNOTES”…”�”}”(hj:*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj7*h²hh³hÊh´MÔubhì)�”}”(hŒHThis may use a FIFO, and if so shall not return until the FIFO is empty.”h]”hŒHThis may use a FIFO, and if so shall not return until the FIFO is empty.”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÖhj7*h²hubeh}”(h]”Œid141”ah ]”h"]”h$]”Œnotes”ah&]”uh1hµhjŸ)h²hh³hÊh´MÔjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hja*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj^*h²hh³hÊh´MÙubhì)�”}”(hŒecp_read_data, ecp_write_data”h]”hŒecp_read_data, ecp_write_data”…”�”}”(hjo*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÛhj^*h²hubeh}”(h]”Œid142”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjŸ)h²hh³hÊh´MÙjºKubeh}”(h]”Œ6port-ops-ecp-write-addr-write-a-block-of-ecp-addresses”ah ]”h"]”Œ:port->ops->ecp_write_addr - write a block of ecp addresses”ah$]”h&]”uh1hµhjIh²hh³hÊh´M¹ubh¶)�”}”(hhh]”(h»)�”}”(hŒAport->ops->nibble_read_data - read a block of data in nibble mode”h]”hŒAport->ops->nibble_read_data - read a block of data in nibble mode”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj�*h²hh³hÊh´Màubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj¡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjž*h²hh³hÊh´Mãubj*)�”}”(hŒÏ#include struct parport_operations { ... size_t (*nibble_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”h]”hŒÏ#include struct parport_operations { ... size_t (*nibble_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”…”�”}”hj¯*sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´Mçhjž*h²hubeh}”(h]”Œid143”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj�*h²hh³hÊh´MãjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjÈ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÅ*h²hh³hÊh´Mñubhì)�”}”(hŒJReads a block of data in nibble mode. The ``flags`` parameter is ignored.”h]”(hŒ+Reads a block of data in nibble mode. The ”…”�”}”(hjÖ*h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjÞ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjÖ*ubhŒ parameter is ignored.”…”�”}”(hjÖ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MóhjÅ*h²hubeh}”(h]”Œid144”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj�*h²hh³hÊh´MñjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjþ*h²hh³hÊh´Möubhì)�”}”(hŒThe number of whole bytes read.”h]”hŒThe number of whole bytes read.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Møhjþ*h²hubeh}”(h]”Œid145”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj�*h²hh³hÊh´MöjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj(+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj%+h²hh³hÊh´Mûubhì)�”}”(hŒ!byte_read_data, compat_write_data”h]”hŒ!byte_read_data, compat_write_data”…”�”}”(hj6+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mýhj%+h²hubeh}”(h]”Œid146”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj�*h²hh³hÊh´MûjºKubeh}”(h]”Œ=port-ops-nibble-read-data-read-a-block-of-data-in-nibble-mode”ah ]”h"]”ŒAport->ops->nibble_read_data - read a block of data in nibble mode”ah$]”h&]”uh1hµhjIh²hh³hÊh´Màubh¶)�”}”(hhh]”(h»)�”}”(hŒ=port->ops->byte_read_data - read a block of data in byte mode”h]”hŒ=port->ops->byte_read_data - read a block of data in byte mode”…”�”}”(hjW+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjT+h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hjh+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhje+h²hh³hÊh´Mubj*)�”}”(hŒÍ#include struct parport_operations { ... size_t (*byte_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”h]”hŒÍ#include struct parport_operations { ... size_t (*byte_read_data) (struct parport *port, void *buf, size_t len, int flags); ... };”…”�”}”hjv+sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M hje+h²hubeh}”(h]”Œid147”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhjT+h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŒ+h²hh³hÊh´Mubhì)�”}”(hŒHReads a block of data in byte mode. The ``flags`` parameter is ignored.”h]”(hŒ)Reads a block of data in byte mode. The ”…”�”}”(hj�+h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhj�+ubhŒ parameter is ignored.”…”�”}”(hj�+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjŒ+h²hubeh}”(h]”Œid148”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhjT+h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÅ+h²hh³hÊh´Mubhì)�”}”(hŒThe number of bytes read.”h]”hŒThe number of bytes read.”…”�”}”(hjÖ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjÅ+h²hubeh}”(h]”Œid149”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhjT+h²hh³hÊh´MjºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hjï+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjì+h²hh³hÊh´Mubhì)�”}”(hŒ#nibble_read_data, compat_write_data”h]”hŒ#nibble_read_data, compat_write_data”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjì+h²hubeh}”(h]”Œid150”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhjT+h²hh³hÊh´MjºKubeh}”(h]”Œ9port-ops-byte-read-data-read-a-block-of-data-in-byte-mode”ah ]”h"]”Œ=port->ops->byte_read_data - read a block of data in byte mode”ah$]”h&]”uh1hµhjIh²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒJport->ops->compat_write_data - write a block of data in compatibility mode”h]”hŒJport->ops->compat_write_data - write a block of data in compatibility mode”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj,h²hh³hÊh´M&ubh¶)�”}”(hhh]”(h»)�”}”(hŒSYNOPSIS”h]”hŒSYNOPSIS”…”�”}”(hj/,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj,,h²hh³hÊh´M)ubj*)�”}”(hŒÖ#include struct parport_operations { ... size_t (*compat_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”h]”hŒÖ#include struct parport_operations { ... size_t (*compat_write_data) (struct parport *port, const void *buf, size_t len, int flags); ... };”…”�”}”hj=,sbah}”(h]”h ]”h"]”h$]”h&]”j9j:uh1j)h³hÊh´M-hj,,h²hubeh}”(h]”Œid151”ah ]”h"]”h$]”Œsynopsis”ah&]”uh1hµhj,h²hh³hÊh´M)jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ DESCRIPTION”h]”hŒ DESCRIPTION”…”�”}”(hjV,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjS,h²hh³hÊh´M7ubhì)�”}”(hŒRWrites a block of data in compatibility mode. The ``flags`` parameter is ignored.”h]”(hŒ3Writes a block of data in compatibility mode. The ”…”�”}”(hjd,h²hh³Nh´NubjÎ)�”}”(hŒ ``flags``”h]”hŒflags”…”�”}”(hjl,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍhjd,ubhŒ parameter is ignored.”…”�”}”(hjd,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M9hjS,h²hubeh}”(h]”Œid152”ah ]”h"]”h$]”Œ description”ah&]”uh1hµhj,h²hh³hÊh´M7jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒ RETURN VALUE”h]”hŒ RETURN VALUE”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjŒ,h²hh³hÊh´M=ubhì)�”}”(hŒThe number of bytes written.”h]”hŒThe number of bytes written.”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M?hjŒ,h²hubeh}”(h]”Œid153”ah ]”h"]”h$]”Œ return value”ah&]”uh1hµhj,h²hh³hÊh´M=jºKubh¶)�”}”(hhh]”(h»)�”}”(hŒSEE ALSO”h]”hŒSEE ALSO”…”�”}”(hj¶,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj³,h²hh³hÊh´MBubhì)�”}”(hŒ nibble_read_data, byte_read_data”h]”hŒ nibble_read_data, byte_read_data”…”�”}”(hjÄ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MDhj³,h²hubeh}”(h]”Œid154”ah ]”h"]”h$]”Œsee also”ah&]”uh1hµhj,h²hh³hÊh´MBjºKubeh}”(h]”ŒFport-ops-compat-write-data-write-a-block-of-data-in-compatibility-mode”ah ]”h"]”ŒJport->ops->compat_write_data - write a block of data in compatibility mode”ah$]”h&]”uh1hµhjIh²hh³hÊh´M&ubeh}”(h]”Œport-functions”ah ]”h"]”Œport functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´M‡ubeh}”(h]”Œparport-interface-documentation”ah ]”h"]”Œparport interface documentation”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”j„Œ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ì,jFjCjájÞŒsynopsis”NŒ description”NŒ return value”NŒerrors”NŒexample”NŒsee also”Nj’j�jjÿŒnotes”Nj< j9 j j jŸ jœ jfjcjÿjüj{jxjõjòjIjFjÃjÀjxjuj-j*jâjßjpjmjujrj`j]jJjGj4j1j>j;jç,jä,jójðj�j~j j�j. j+ jÊ jÇ jf!jc!jô!jñ!j‚"j"j#j #jž#j›#j³$j°$jÈ%jÅ%jë&jè&j(j (jÕ(jÒ(jœ)j™)jŠ*j‡*jQ+jN+j,j,jß,jÜ,uŒ nametypes”}”(jï,‰jF‰já‰jX-‰jY-‰jZ-‰j[-‰j\-‰j]-‰j’‰j‰j^-‰j< ‰j ‰jŸ ‰jf‰jÿ‰j{‰jõ‰jI‰jÉjx‰j-‰jâ‰jp‰ju‰j`‰jJ‰j4‰j>‰jç,‰jó‰j�‰j ‰j. ‰jÊ ‰jf!‰jô!‰j‚"‰j#‰jž#‰j³$‰jÈ%‰jë&‰j(‰jÕ(‰jœ)‰jŠ*‰jQ+‰j,‰jß,‰uh}”(jì,h·jCjqjÞj‚j´j“j:j»jaj@jˆjgj¯jŽjÖjµj�jäjjõj<jjbjAjˆjgjÿj•jÇj¦j$jÍj]j*jƒjbj©jˆjÐj¯j÷jÖj9 jj7jjƒ j=j¼ j‰ jã j j jé j1 j j j? j­ jl jÔ j³ jû jÚ jœ j j; j j¦ jA jí j¬ jm jó j” js jcj¢ jÔ j³ j jÚ j4jj[j:jüjij›jzjøj¡jMjþjÍjSjôjÓjxjj4jj[j:jIjajpjOjòj~j°j�j×j¶jÃjÝjêjÉjFjøj*j jQj0j>jWjÀjLj~j]j¥j„j‘j«j¸j—jujÆjøj×jjþjFj%jmjLj*j{j­jŒjÔj³jûjÚj"jjßj0jbjAj‰jhj°j�j×j¶jmjåjjöj>jjejDjrjsj¥j„jÌj«jjÒjDj#jjjIj]jxjªj‰jÑj°j.j×jUj4jGjcj•jtj¼j›jãjÂjjéj?jj1jMjj^j¦j…jÍj¬jjÓj)jj;j7jijHj�joj·j–j j½j3jjä,jIjðjhjšjyjÁj jèjÇj~jöj(jjOj.jvjUj�j„j¶j•jnj¼j•jtj+ j£jÕj´jüjÛj# j jÇ j1 jc jB j˜ ji j¿ jž jc!jÍ jÿ jÞ j4!j!j[!j:!jñ!ji!j›!jz!jÂ!j¡!jé!jÈ!j"j÷!j)"j"jP"j/"jw"jV"j #j…"j·"j–"jÞ"j½"j#jä"j›#j#jE#j$#jl#jK#j“#jr#j°$j¡#jÓ#j²#j�$jÙ#j¨$j‡$jÅ%j¶$jè$jÇ$j–%jî$j½%jœ%jè&jË%jý%jÜ%j¹&j&jà&j¿&j (jî&j 'jÿ&jÜ'j&'j(jâ'jÒ(j(jC(j"(j|(jI(j£(j‚(jÊ(j©(j™)jØ(j )jé(jC)j)jj)jI)j‘)jp)j‡*jŸ)jÑ)j°)j *j×)j1*j*jX*j7*j*j^*jN+j�*j¿*jž*jø*jÅ*j+jþ*jF+j%+j,jT+j†+je+j¿+jŒ+jæ+jÅ+j ,jì+jÜ,j,jM,j,,j†,jS,j­,jŒ,jÔ,j³,uŒ 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”“”}”j"-Kšs…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj‚-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj-ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”ŒINFO”Œsource”hÊŒline”Küuh1j}-hjõh²hh³hÊh´Küubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjž-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj›-ubah}”(h]”h ]”h"]”h$]”h&]”j<aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M uh1j}-hjh²hh³hÊh´M ubj~-)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "example".”h]”hŒ.Duplicate implicit target name: “exampleâ€�.”…”�”}”(hj¹-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¶-ubah}”(h]”h ]”h"]”h$]”h&]”jbaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjAh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÑ-ubah}”(h]”h ]”h"]”h$]”h&]”jˆaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M#uh1j}-hjgh²hh³hÊh´M#ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjì-ubah}”(h]”h ]”h"]”h$]”h&]”jÇaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M-uh1j}-hj¦h²hh³hÊh´M-ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj.ubah}”(h]”h ]”h"]”h$]”h&]”j$aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M6uh1j}-hjÍh²hh³hÊh´M6ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj%.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj".ubah}”(h]”h ]”h"]”h$]”h&]”j]aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M?uh1j}-hj*h²hh³hÊh´M?ubj~-)�”}”(hhh]”hì)�”}”(hŒ)Duplicate implicit target name: "errors".”h]”hŒ-Duplicate implicit target name: “errorsâ€�.”…”�”}”(hj@.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj=.ubah}”(h]”h ]”h"]”h$]”h&]”jƒaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MEuh1j}-hjbh²hh³hÊh´MEubj~-)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "example".”h]”hŒ.Duplicate implicit target name: “exampleâ€�.”…”�”}”(hj[.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjX.ubah}”(h]”h ]”h"]”h$]”h&]”j©aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MKuh1j}-hjˆh²hh³hÊh´MKubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjv.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjs.ubah}”(h]”h ]”h"]”h$]”h&]”j÷aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Meuh1j}-hjÖh²hh³hÊh´Meubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj‘.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjŽ.ubah}”(h]”h ]”h"]”h$]”h&]”j7aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mouh1j}-hjh²hh³hÊh´Moubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj¬.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj©.ubah}”(h]”h ]”h"]”h$]”h&]”jƒ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‚uh1j}-hj=h²hh³hÊh´M‚ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÄ.ubah}”(h]”h ]”h"]”h$]”h&]”j¼ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¸uh1j}-hj‰ h²hh³hÊh´M¸ubj~-)�”}”(hhh]”hì)�”}”(hŒ)Duplicate implicit target name: "errors".”h]”hŒ-Duplicate implicit target name: “errorsâ€�.”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjß.ubah}”(h]”h ]”h"]”h$]”h&]”jã aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¾uh1j}-hj h²hh³hÊh´M¾ubj~-)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "example".”h]”hŒ.Duplicate implicit target name: “exampleâ€�.”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjú.ubah}”(h]”h ]”h"]”h$]”h&]”j aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÄuh1j}-hjé h²hh³hÊh´MÄubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj/ubah}”(h]”h ]”h"]”h$]”h&]”j1 aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Môuh1j}-hj h²hh³hÊh´Môubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj3/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj0/ubah}”(h]”h ]”h"]”h$]”h&]”j­ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjl h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "example".”h]”hŒ.Duplicate implicit target name: “exampleâ€�.”…”�”}”(hjN/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjK/ubah}”(h]”h ]”h"]”h$]”h&]”jÔ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj³ h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hji/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjf/ubah}”(h]”h ]”h"]”h$]”h&]”jû aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjÚ h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj„/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�/ubah}”(h]”h ]”h"]”h$]”h&]”j; aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M$uh1j}-hj h²hh³hÊh´M$ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjŸ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjœ/ubah}”(h]”h ]”h"]”h$]”h&]”j¦ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M.uh1j}-hjA h²hh³hÊh´M.ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjº/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj·/ubah}”(h]”h ]”h"]”h$]”h&]”jí aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M8uh1j}-hj¬ h²hh³hÊh´M8ubj~-)�”}”(hhh]”hì)�”}”(hŒ)Duplicate implicit target name: "errors".”h]”hŒ-Duplicate implicit target name: “errorsâ€�.”…”�”}”(hjÕ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÒ/ubah}”(h]”h ]”h"]”h$]”h&]”jm aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MAuh1j}-hjó h²hh³hÊh´MAubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjð/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjí/ubah}”(h]”h ]”h"]”h$]”h&]”j” aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MIuh1j}-hjs h²hh³hÊh´MIubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj0ubah}”(h]”h ]”h"]”h$]”h&]”jÔ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MSuh1j}-hj³ h²hh³hÊh´MSubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj&0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj#0ubah}”(h]”h ]”h"]”h$]”h&]”j aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M\uh1j}-hjÚ h²hh³hÊh´M\ubj~-)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "example".”h]”hŒ.Duplicate implicit target name: “exampleâ€�.”…”�”}”(hjA0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj>0ubah}”(h]”h ]”h"]”h$]”h&]”j4aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mcuh1j}-hjh²hh³hÊh´Mcubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj\0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjY0ubah}”(h]”h ]”h"]”h$]”h&]”j[aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Msuh1j}-hj:h²hh³hÊh´Msubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjw0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjt0ubah}”(h]”h ]”h"]”h$]”h&]”j›aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M}uh1j}-hjzh²hh³hÊh´M}ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj’0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�0ubah}”(h]”h ]”h"]”h$]”h&]”jøaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‡uh1j}-hj¡h²hh³hÊh´M‡ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj­0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjª0ubah}”(h]”h ]”h"]”h$]”h&]”jMaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MŽuh1j}-hjþh²hh³hÊh´MŽubj~-)�”}”(hhh]”hì)�”}”(hŒ)Duplicate implicit target name: "errors".”h]”hŒ-Duplicate implicit target name: “errorsâ€�.”…”�”}”(hjÈ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÅ0ubah}”(h]”h ]”h"]”h$]”h&]”jÍaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mšuh1j}-hjSh²hh³hÊh´Mšubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjã0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjà0ubah}”(h]”h ]”h"]”h$]”h&]”jôaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¡uh1j}-hjÓh²hh³hÊh´M¡ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjþ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjû0ubah}”(h]”h ]”h"]”h$]”h&]”j4aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¬uh1j}-hjh²hh³hÊh´M¬ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj1ubah}”(h]”h ]”h"]”h$]”h&]”j[aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M·uh1j}-hj:h²hh³hÊh´M·ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj41h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj11ubah}”(h]”h ]”h"]”h$]”h&]”jIaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¼uh1j}-hjah²hh³hÊh´M¼ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjO1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjL1ubah}”(h]”h ]”h"]”h$]”h&]”jpaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÅuh1j}-hjOh²hh³hÊh´MÅubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjg1ubah}”(h]”h ]”h"]”h$]”h&]”j°aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÐuh1j}-hj�h²hh³hÊh´MÐubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj…1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‚1ubah}”(h]”h ]”h"]”h$]”h&]”j×aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÜuh1j}-hj¶h²hh³hÊh´MÜubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�1ubah}”(h]”h ]”h"]”h$]”h&]”jÃaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Máuh1j}-hjÝh²hh³hÊh´Máubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj»1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¸1ubah}”(h]”h ]”h"]”h$]”h&]”jêaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mêuh1j}-hjÉh²hh³hÊh´Mêubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjÖ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÓ1ubah}”(h]”h ]”h"]”h$]”h&]”j*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Môuh1j}-hj h²hh³hÊh´Môubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjñ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjî1ubah}”(h]”h ]”h"]”h$]”h&]”jQaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mýuh1j}-hj0h²hh³hÊh´Mýubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 2ubah}”(h]”h ]”h"]”h$]”h&]”j>aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjWh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj'2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj$2ubah}”(h]”h ]”h"]”h$]”h&]”j~aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj]h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj?2ubah}”(h]”h ]”h"]”h$]”h&]”j¥aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj„h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj]2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjZ2ubah}”(h]”h ]”h"]”h$]”h&]”j‘aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj«h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjx2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhju2ubah}”(h]”h ]”h"]”h$]”h&]”j¸aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M'uh1j}-hj—h²hh³hÊh´M'ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�2ubah}”(h]”h ]”h"]”h$]”h&]”jøaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M1uh1j}-hj×h²hh³hÊh´M1ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj«2ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M:uh1j}-hjþh²hh³hÊh´M:ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÆ2ubah}”(h]”h ]”h"]”h$]”h&]”jFaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M@uh1j}-hj%h²hh³hÊh´M@ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjä2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjá2ubah}”(h]”h ]”h"]”h$]”h&]”jmaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MEuh1j}-hjLh²hh³hÊh´MEubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjÿ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjü2ubah}”(h]”h ]”h"]”h$]”h&]”j­aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MOuh1j}-hjŒh²hh³hÊh´MOubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj3ubah}”(h]”h ]”h"]”h$]”h&]”jÔaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MXuh1j}-hj³h²hh³hÊh´MXubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj23ubah}”(h]”h ]”h"]”h$]”h&]”jûaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M^uh1j}-hjÚh²hh³hÊh´M^ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjP3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjM3ubah}”(h]”h ]”h"]”h$]”h&]”j"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mcuh1j}-hjh²hh³hÊh´Mcubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjk3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjh3ubah}”(h]”h ]”h"]”h$]”h&]”jbaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mnuh1j}-hjAh²hh³hÊh´Mnubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjƒ3ubah}”(h]”h ]”h"]”h$]”h&]”j‰aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M|uh1j}-hjhh²hh³hÊh´M|ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj¡3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjž3ubah}”(h]”h ]”h"]”h$]”h&]”j°aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‚uh1j}-hj�h²hh³hÊh´M‚ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj¼3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¹3ubah}”(h]”h ]”h"]”h$]”h&]”j×aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mˆuh1j}-hj¶h²hh³hÊh´Mˆubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj×3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÔ3ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M’uh1j}-hjöh²hh³hÊh´M’ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjò3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjï3ubah}”(h]”h ]”h"]”h$]”h&]”j>aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M›uh1j}-hjh²hh³hÊh´M›ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 4ubah}”(h]”h ]”h"]”h$]”h&]”jeaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M uh1j}-hjDh²hh³hÊh´M ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj(4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj%4ubah}”(h]”h ]”h"]”h$]”h&]”j¥aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mªuh1j}-hj„h²hh³hÊh´Mªubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjC4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj@4ubah}”(h]”h ]”h"]”h$]”h&]”jÌaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M³uh1j}-hj«h²hh³hÊh´M³ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj^4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj[4ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¸uh1j}-hjÒh²hh³hÊh´M¸ubj~-)�”}”(hhh]”hì)�”}”(hŒ(Duplicate implicit target name: "notes".”h]”hŒ,Duplicate implicit target name: “notesâ€�.”…”�”}”(hjy4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjv4ubah}”(h]”h ]”h"]”h$]”h&]”jDaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÇuh1j}-hj#h²hh³hÊh´MÇubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj”4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‘4ubah}”(h]”h ]”h"]”h$]”h&]”jjaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÌuh1j}-hjIh²hh³hÊh´MÌubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj¯4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¬4ubah}”(h]”h ]”h"]”h$]”h&]”jªaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÖuh1j}-hj‰h²hh³hÊh´MÖubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjÊ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÇ4ubah}”(h]”h ]”h"]”h$]”h&]”jÑaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Màuh1j}-hj°h²hh³hÊh´Màubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjå4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjâ4ubah}”(h]”h ]”h"]”h$]”h&]”j.aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mæuh1j}-hj×h²hh³hÊh´Mæubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjý4ubah}”(h]”h ]”h"]”h$]”h&]”jUaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mìuh1j}-hj4h²hh³hÊh´Mìubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj5ubah}”(h]”h ]”h"]”h$]”h&]”j•aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Möuh1j}-hjth²hh³hÊh´Möubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj65h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj35ubah}”(h]”h ]”h"]”h$]”h&]”j¼aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj›h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjQ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjN5ubah}”(h]”h ]”h"]”h$]”h&]”jãaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjÂh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ(Duplicate implicit target name: "notes".”h]”hŒ,Duplicate implicit target name: “notesâ€�.”…”�”}”(hjl5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhji5ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjéh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj‡5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj„5ubah}”(h]”h ]”h"]”h$]”h&]”j?aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M&uh1j}-hjh²hh³hÊh´M&ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj¢5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjŸ5ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M0uh1j}-hj^h²hh³hÊh´M0ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj½5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjº5ubah}”(h]”h ]”h"]”h$]”h&]”j¦aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M9uh1j}-hj…h²hh³hÊh´M9ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjØ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÕ5ubah}”(h]”h ]”h"]”h$]”h&]”jÍaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M?uh1j}-hj¬h²hh³hÊh´M?ubj~-)�”}”(hhh]”hì)�”}”(hŒ(Duplicate implicit target name: "notes".”h]”hŒ,Duplicate implicit target name: “notesâ€�.”…”�”}”(hjó5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjð5ubah}”(h]”h ]”h"]”h$]”h&]”jaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MEuh1j}-hjÓh²hh³hÊh´MEubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 6ubah}”(h]”h ]”h"]”h$]”h&]”j)aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MPuh1j}-hjh²hh³hÊh´MPubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj)6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj&6ubah}”(h]”h ]”h"]”h$]”h&]”jiaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M[uh1j}-hjHh²hh³hÊh´M[ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjD6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjA6ubah}”(h]”h ]”h"]”h$]”h&]”j�aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mduh1j}-hjoh²hh³hÊh´Mdubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj_6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj\6ubah}”(h]”h ]”h"]”h$]”h&]”j·aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mjuh1j}-hj–h²hh³hÊh´Mjubj~-)�”}”(hhh]”hì)�”}”(hŒ(Duplicate implicit target name: "notes".”h]”hŒ,Duplicate implicit target name: “notesâ€�.”…”�”}”(hjz6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjw6ubah}”(h]”h ]”h"]”h$]”h&]”j aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mouh1j}-hj½h²hh³hÊh´Moubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj•6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj’6ubah}”(h]”h ]”h"]”h$]”h&]”j3aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj°6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj­6ubah}”(h]”h ]”h"]”h$]”h&]”jšaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M�uh1j}-hjyh²hh³hÊh´M�ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjË6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÈ6ubah}”(h]”h ]”h"]”h$]”h&]”jÁaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M�uh1j}-hj h²hh³hÊh´M�ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjæ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjã6ubah}”(h]”h ]”h"]”h$]”h&]”jèaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M§uh1j}-hjÇh²hh³hÊh´M§ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjþ6ubah}”(h]”h ]”h"]”h$]”h&]”j(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M²uh1j}-hjh²hh³hÊh´M²ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj7ubah}”(h]”h ]”h"]”h$]”h&]”jOaŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¿uh1j}-hj.h²hh³hÊh´M¿ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj77h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj47ubah}”(h]”h ]”h"]”h$]”h&]”jvaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÅuh1j}-hjUh²hh³hÊh´MÅubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjO7ubah}”(h]”h ]”h"]”h$]”h&]”j¶aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÐuh1j}-hj•h²hh³hÊh´MÐubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjm7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjj7ubah}”(h]”h ]”h"]”h$]”h&]”jnaŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÝuh1j}-hj¼h²hh³hÊh´MÝubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj…7ubah}”(h]”h ]”h"]”h$]”h&]”j•aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mêuh1j}-hjth²hh³hÊh´Mêubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj£7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 7ubah}”(h]”h ]”h"]”h$]”h&]”jÕaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mõuh1j}-hj´h²hh³hÊh´Mõubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj»7ubah}”(h]”h ]”h"]”h$]”h&]”jüaŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjÛh²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjÙ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÖ7ubah}”(h]”h ]”h"]”h$]”h&]”j# aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hj h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjô7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjñ7ubah}”(h]”h ]”h"]”h$]”h&]”jc aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjB h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 8ubah}”(h]”h ]”h"]”h$]”h&]”j˜ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M uh1j}-hji h²hh³hÊh´M ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj*8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj'8ubah}”(h]”h ]”h"]”h$]”h&]”j¿ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M.uh1j}-hjž h²hh³hÊh´M.ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjE8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjB8ubah}”(h]”h ]”h"]”h$]”h&]”jÿ aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M9uh1j}-hjÞ h²hh³hÊh´M9ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj`8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj]8ubah}”(h]”h ]”h"]”h$]”h&]”j4!aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MHuh1j}-hj!h²hh³hÊh´MHubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj{8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjx8ubah}”(h]”h ]”h"]”h$]”h&]”j[!aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MSuh1j}-hj:!h²hh³hÊh´MSubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj–8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj“8ubah}”(h]”h ]”h"]”h$]”h&]”j›!aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M^uh1j}-hjz!h²hh³hÊh´M^ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj±8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj®8ubah}”(h]”h ]”h"]”h$]”h&]”jÂ!aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mkuh1j}-hj¡!h²hh³hÊh´Mkubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjÌ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÉ8ubah}”(h]”h ]”h"]”h$]”h&]”jé!aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Msuh1j}-hjÈ!h²hh³hÊh´Msubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjç8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjä8ubah}”(h]”h ]”h"]”h$]”h&]”j)"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M~uh1j}-hj"h²hh³hÊh´M~ubj~-)�”}”(h•Í5hh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÿ8ubah}”(h]”h ]”h"]”h$]”h&]”jP"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‹uh1j}-hj/"h²hh³hÊh´M‹ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj9ubah}”(h]”h ]”h"]”h$]”h&]”jw"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‘uh1j}-hjV"h²hh³hÊh´M‘ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj89h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj59ubah}”(h]”h ]”h"]”h$]”h&]”j·"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mœuh1j}-hj–"h²hh³hÊh´Mœubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjS9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjP9ubah}”(h]”h ]”h"]”h$]”h&]”jÞ"aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M©uh1j}-hj½"h²hh³hÊh´M©ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjn9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjk9ubah}”(h]”h ]”h"]”h$]”h&]”j#aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¯uh1j}-hjä"h²hh³hÊh´M¯ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj‰9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj†9ubah}”(h]”h ]”h"]”h$]”h&]”jE#aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mºuh1j}-hj$#h²hh³hÊh´Mºubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj¤9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¡9ubah}”(h]”h ]”h"]”h$]”h&]”jl#aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÇuh1j}-hjK#h²hh³hÊh´MÇubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj¿9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¼9ubah}”(h]”h ]”h"]”h$]”h&]”j“#aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÍuh1j}-hjr#h²hh³hÊh´MÍubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjÚ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj×9ubah}”(h]”h ]”h"]”h$]”h&]”jÓ#aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M×uh1j}-hj²#h²hh³hÊh´M×ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjõ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjò9ubah}”(h]”h ]”h"]”h$]”h&]”j�$aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Måuh1j}-hjÙ#h²hh³hÊh´Måubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj :ubah}”(h]”h ]”h"]”h$]”h&]”j¨$aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Móuh1j}-hj‡$h²hh³hÊh´Móubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj+:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj(:ubah}”(h]”h ]”h"]”h$]”h&]”jè$aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mþuh1j}-hjÇ$h²hh³hÊh´Mþubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjF:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjC:ubah}”(h]”h ]”h"]”h$]”h&]”j–%aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M uh1j}-hjî$h²hh³hÊh´M ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hja:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj^:ubah}”(h]”h ]”h"]”h$]”h&]”j½%aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjœ%h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjy:ubah}”(h]”h ]”h"]”h$]”h&]”jý%aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M$uh1j}-hjÜ%h²hh³hÊh´M$ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj—:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj”:ubah}”(h]”h ]”h"]”h$]”h&]”j¹&aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M2uh1j}-hj&h²hh³hÊh´M2ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj²:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¯:ubah}”(h]”h ]”h"]”h$]”h&]”jà&aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MBuh1j}-hj¿&h²hh³hÊh´MBubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjÍ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÊ:ubah}”(h]”h ]”h"]”h$]”h&]”j 'aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MMuh1j}-hjÿ&h²hh³hÊh´MMubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjè:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjå:ubah}”(h]”h ]”h"]”h$]”h&]”jÜ'aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M[uh1j}-hj&'h²hh³hÊh´M[ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj;ubah}”(h]”h ]”h"]”h$]”h&]”j(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mkuh1j}-hjâ'h²hh³hÊh´Mkubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj;ubah}”(h]”h ]”h"]”h$]”h&]”jC(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mvuh1j}-hj"(h²hh³hÊh´Mvubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj9;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj6;ubah}”(h]”h ]”h"]”h$]”h&]”j|(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M„uh1j}-hjI(h²hh³hÊh´M„ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjT;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjQ;ubah}”(h]”h ]”h"]”h$]”h&]”j£(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M‰uh1j}-hj‚(h²hh³hÊh´M‰ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjo;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjl;ubah}”(h]”h ]”h"]”h$]”h&]”jÊ(aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MŽuh1j}-hj©(h²hh³hÊh´MŽubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjŠ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‡;ubah}”(h]”h ]”h"]”h$]”h&]”j )aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M™uh1j}-hjé(h²hh³hÊh´M™ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj¥;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¢;ubah}”(h]”h ]”h"]”h$]”h&]”jC)aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M§uh1j}-hj)h²hh³hÊh´M§ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hjÀ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj½;ubah}”(h]”h ]”h"]”h$]”h&]”jj)aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¬uh1j}-hjI)h²hh³hÊh´M¬ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjÛ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjØ;ubah}”(h]”h ]”h"]”h$]”h&]”j‘)aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M²uh1j}-hjp)h²hh³hÊh´M²ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjö;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjó;ubah}”(h]”h ]”h"]”h$]”h&]”jÑ)aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M¼uh1j}-hj°)h²hh³hÊh´M¼ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj<ubah}”(h]”h ]”h"]”h$]”h&]”j *aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÊuh1j}-hj×)h²hh³hÊh´MÊubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj)<ubah}”(h]”h ]”h"]”h$]”h&]”j1*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÏuh1j}-hj*h²hh³hÊh´MÏubj~-)�”}”(hhh]”hì)�”}”(hŒ(Duplicate implicit target name: "notes".”h]”hŒ,Duplicate implicit target name: “notesâ€�.”…”�”}”(hjG<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjD<ubah}”(h]”h ]”h"]”h$]”h&]”jX*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÔuh1j}-hj7*h²hh³hÊh´MÔubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjb<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj_<ubah}”(h]”h ]”h"]”h$]”h&]”j*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MÙuh1j}-hj^*h²hh³hÊh´MÙubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hj}<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjz<ubah}”(h]”h ]”h"]”h$]”h&]”j¿*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mãuh1j}-hjž*h²hh³hÊh´Mãubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj˜<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj•<ubah}”(h]”h ]”h"]”h$]”h&]”jø*aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mñuh1j}-hjÅ*h²hh³hÊh´Mñubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj³<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj°<ubah}”(h]”h ]”h"]”h$]”h&]”j+aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Möuh1j}-hjþ*h²hh³hÊh´Möubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hjÎ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjË<ubah}”(h]”h ]”h"]”h$]”h&]”jF+aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Mûuh1j}-hj%+h²hh³hÊh´Mûubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjé<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjæ<ubah}”(h]”h ]”h"]”h$]”h&]”j†+aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hje+h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj=ubah}”(h]”h ]”h"]”h$]”h&]”j¿+aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjŒ+h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj=ubah}”(h]”h ]”h"]”h$]”h&]”jæ+aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjÅ+h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj:=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj7=ubah}”(h]”h ]”h"]”h$]”h&]”j ,aŒlevel”KŒtype”j˜-Œsource”hÊŒline”Muh1j}-hjì+h²hh³hÊh´Mubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "synopsis".”h]”hŒ/Duplicate implicit target name: “synopsisâ€�.”…”�”}”(hjU=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjR=ubah}”(h]”h ]”h"]”h$]”h&]”jM,aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M)uh1j}-hj,,h²hh³hÊh´M)ubj~-)�”}”(hhh]”hì)�”}”(hŒ.Duplicate implicit target name: "description".”h]”hŒ2Duplicate implicit target name: “descriptionâ€�.”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjm=ubah}”(h]”h ]”h"]”h$]”h&]”j†,aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M7uh1j}-hjS,h²hh³hÊh´M7ubj~-)�”}”(hhh]”hì)�”}”(hŒ/Duplicate implicit target name: "return value".”h]”hŒ3Duplicate implicit target name: “return valueâ€�.”…”�”}”(hj‹=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjˆ=ubah}”(h]”h ]”h"]”h$]”h&]”j­,aŒlevel”KŒtype”j˜-Œsource”hÊŒline”M=uh1j}-hjŒ,h²hh³hÊh´M=ubj~-)�”}”(hhh]”hì)�”}”(hŒ+Duplicate implicit target name: "see also".”h]”hŒ/Duplicate implicit target name: “see alsoâ€�.”…”�”}”(hj¦=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj£=ubah}”(h]”h ]”h"]”h$]”h&]”jÔ,aŒlevel”KŒtype”j˜-Œsource”hÊŒline”MBuh1j}-hj³,h²hh³hÊh´MBubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.