€•RŒ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/serial/driver”Œ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/serial/driver”Œ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/serial/driver”Œ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/serial/driver”Œ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/serial/driver”Œ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/serial/driver”Œ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/serial/driver”Œ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ŒLow Level Serial API”h]”hŒLow Level Serial API”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver.rst”h´KubhŒ paragraph”“”)�”}”(hŒ­This document is meant as a brief overview of some aspects of the new serial driver. It is not complete, any questions you have should be directed to ”h]”(hŒ˜This document is meant as a brief overview of some aspects of the new serial driver. It is not complete, any questions you have should be directed to <”…”�”}”(hhÍh²hh³Nh´NubhŒ reference”“”)�”}”(hŒrmk@arm.linux.org.uk”h]”hŒrmk@arm.linux.org.uk”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:rmk@arm.linux.org.uk”uh1hÕhhÍubhŒ>”…”�”}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒ>The reference implementation is contained within amba-pl011.c.”h]”hŒ>The reference implementation is contained within amba-pl011.c.”…”�”}”(hhñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ Low Level Serial Hardware Driver”h]”hŒ Low Level Serial Hardware Driver”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÿh²hh³hÊh´KubhÌ)�”}”(hX*The low level serial hardware driver is responsible for supplying port information (defined by uart_port) and a set of control methods (defined by uart_ops) to the core serial driver. The low level driver is also responsible for handling interrupts for the port, and providing any console support.”h]”hX*The low level serial hardware driver is responsible for supplying port information (defined by uart_port) and a set of control methods (defined by uart_ops) to the core serial driver. The low level driver is also responsible for handling interrupts for the port, and providing any console support.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khhÿh²hubeh}”(h]”Œ low-level-serial-hardware-driver”ah ]”h"]”Œ low level serial hardware driver”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒConsole Support”h]”hŒConsole Support”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj&h²hh³hÊh´KubhÌ)�”}”(hŒwThe serial core provides a few helper functions. This includes decoding command line arguments (uart_parse_options()).”h]”hŒwThe serial core provides a few helper functions. This includes decoding command line arguments (uart_parse_options()).”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj&h²hubhÌ)�”}”(hŒíThere is also a helper function (uart_console_write()) which performs a character by character write, translating newlines to CRLF sequences. Driver writers are recommended to use this function rather than implementing their own version.”h]”hŒíThere is also a helper function (uart_console_write()) which performs a character by character write, translating newlines to CRLF sequences. Driver writers are recommended to use this function rather than implementing their own version.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj&h²hubeh}”(h]”Œconsole-support”ah ]”h"]”Œconsole support”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒLocking”h]”hŒLocking”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj[h²hh³hÊh´K%ubhÌ)�”}”(hŒÃIt is the responsibility of the low level hardware driver to perform the necessary locking using port->lock. There are some exceptions (which are described in the struct uart_ops listing below.)”h]”hŒÃIt is the responsibility of the low level hardware driver to perform the necessary locking using port->lock. There are some exceptions (which are described in the struct uart_ops listing below.)”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K'hj[h²hubhÌ)�”}”(hŒDThere are two locks. A per-port spinlock, and an overall semaphore.”h]”hŒDThere are two locks. A per-port spinlock, and an overall semaphore.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K+hj[h²hubhÌ)�”}”(hŒKFrom the core driver perspective, the port->lock locks the following data::”h]”hŒJFrom the core driver perspective, the port->lock locks the following data:”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K-hj[h²hubhŒ literal_block”“”)�”}”(hŒhport->mctrl port->icount port->state->xmit.head (circ_buf->head) port->state->xmit.tail (circ_buf->tail)”h]”hŒhport->mctrl port->icount port->state->xmit.head (circ_buf->head) port->state->xmit.tail (circ_buf->tail)”…”�”}”hj˜sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j–h³hÊh´K0hj[h²hubhÌ)�”}”(hŒPThe low level driver is free to use this lock to provide any additional locking.”h]”hŒPThe low level driver is free to use this lock to provide any additional locking.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K5hj[h²hubhÌ)�”}”(hŒòThe port_sem semaphore is used to protect against ports being added/ removed or reconfigured at inappropriate times. Since v2.6.27, this semaphore has been the 'mutex' member of the tty_port struct, and commonly referred to as the port mutex.”h]”hŒöThe port_sem semaphore is used to protect against ports being added/ removed or reconfigured at inappropriate times. Since v2.6.27, this semaphore has been the ‘mutex’ member of the tty_port struct, and commonly referred to as the port mutex.”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K8hj[h²hubeh}”(h]”Œlocking”ah ]”h"]”Œlocking”ah$]”h&]”uh1hµhh·h²hh³hÊh´K%ubh¶)�”}”(hhh]”(h»)�”}”(hŒuart_ops”h]”hŒuart_ops”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÌh²hh³hÊh´K?ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œuart_ops (C struct)”Œ c.uart_ops”hNt”auh1jÝhjÌh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒuart_ops”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct uart_ops”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjüh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jhjüh²hh³jh´KubhŒ desc_name”“”)�”}”(hŒuart_ops”h]”hŒ desc_sig_name”“”)�”}”(hjøh]”hŒuart_ops”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j)hj%ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”j¦j§uh1j#hjüh²hh³jh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§Œ add_permalink”ˆuh1júŒsphinx_line_type”Œ declarator”hjöh²hh³jh´Kubah}”(h]”jìah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jôh³jh´Khjñh²hubhŒ desc_content”“”)�”}”(hhh]”hŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒ,interface between serial_core and the driver”h]”hÌ)�”}”(hjch]”hŒ,interface between serial_core and the driver”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K%hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj\h²hh³jrh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jZh³jrh´K%hjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjñh²hh³jh´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”jŠŒobjtype”j‹Œdesctype”j‹Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jïh²hhjÌh³jîh´NubhŒ container”“”)�”}”(hX¼ **Definition**:: struct uart_ops { unsigned int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, unsigned int mctrl); unsigned int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *); void (*start_tx)(struct uart_port *); void (*throttle)(struct uart_port *); void (*unthrottle)(struct uart_port *); void (*send_xchar)(struct uart_port *, char ch); void (*stop_rx)(struct uart_port *); void (*start_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *); void (*shutdown)(struct uart_port *); void (*flush_buffer)(struct uart_port *); void (*set_termios)(struct uart_port *, struct ktermios *new, const struct ktermios *old); void (*set_ldisc)(struct uart_port *, struct ktermios *); void (*pm)(struct uart_port *, unsigned int state, unsigned int oldstate); const char *(*type)(struct uart_port *); void (*release_port)(struct uart_port *); int (*request_port)(struct uart_port *); void (*config_port)(struct uart_port *, int); int (*verify_port)(struct uart_port *, struct serial_struct *); int (*ioctl)(struct uart_port *, unsigned int, unsigned long); #ifdef CONFIG_CONSOLE_POLL; int (*poll_init)(struct uart_port *); void (*poll_put_char)(struct uart_port *, unsigned char); int (*poll_get_char)(struct uart_port *); #endif; }; **Members** ``tx_empty`` ``unsigned int ()(struct uart_port *port)`` ``set_mctrl`` ``void ()(struct uart_port *port, unsigned int mctrl)`` ``get_mctrl`` ``unsigned int ()(struct uart_port *port)`` ``stop_tx`` ``void ()(struct uart_port *port)`` ``start_tx`` ``void ()(struct uart_port *port)`` ``throttle`` ``void ()(struct uart_port *port)`` ``unthrottle`` ``void ()(struct uart_port *port)`` ``send_xchar`` ``void ()(struct uart_port *port, char ch)`` ``stop_rx`` ``void ()(struct uart_port *port)`` ``start_rx`` ``void ()(struct uart_port *port)`` ``enable_ms`` ``void ()(struct uart_port *port)`` ``break_ctl`` ``void ()(struct uart_port *port, int ctl)`` ``startup`` ``int ()(struct uart_port *port)`` ``shutdown`` ``void ()(struct uart_port *port)`` ``flush_buffer`` ``void ()(struct uart_port *port)`` ``set_termios`` ``void ()(struct uart_port *port, struct ktermios *new, struct ktermios *old)`` ``set_ldisc`` ``void ()(struct uart_port *port, struct ktermios *termios)`` ``pm`` ``void ()(struct uart_port *port, unsigned int state, unsigned int oldstate)`` ``type`` ``const char *()(struct uart_port *port)`` ``release_port`` ``void ()(struct uart_port *port)`` ``request_port`` ``int ()(struct uart_port *port)`` ``config_port`` ``void ()(struct uart_port *port, int type)`` ``verify_port`` ``int ()(struct uart_port *port, struct serial_struct *serinfo)`` ``ioctl`` ``int ()(struct uart_port *port, unsigned int cmd, unsigned long arg)`` ``poll_init`` ``int ()(struct uart_port *port)`` ``poll_put_char`` ``void ()(struct uart_port *port, unsigned char ch)`` ``poll_get_char`` ``int ()(struct uart_port *port)``”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj›ubhŒ:”…”�”}”(hj›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K)hj—ubj—)�”}”(hXºstruct uart_ops { unsigned int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, unsigned int mctrl); unsigned int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *); void (*start_tx)(struct uart_port *); void (*throttle)(struct uart_port *); void (*unthrottle)(struct uart_port *); void (*send_xchar)(struct uart_port *, char ch); void (*stop_rx)(struct uart_port *); void (*start_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *); void (*shutdown)(struct uart_port *); void (*flush_buffer)(struct uart_port *); void (*set_termios)(struct uart_port *, struct ktermios *new, const struct ktermios *old); void (*set_ldisc)(struct uart_port *, struct ktermios *); void (*pm)(struct uart_port *, unsigned int state, unsigned int oldstate); const char *(*type)(struct uart_port *); void (*release_port)(struct uart_port *); int (*request_port)(struct uart_port *); void (*config_port)(struct uart_port *, int); int (*verify_port)(struct uart_port *, struct serial_struct *); int (*ioctl)(struct uart_port *, unsigned int, unsigned long); #ifdef CONFIG_CONSOLE_POLL; int (*poll_init)(struct uart_port *); void (*poll_put_char)(struct uart_port *, unsigned char); int (*poll_get_char)(struct uart_port *); #endif; };”h]”hXºstruct uart_ops { unsigned int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, unsigned int mctrl); unsigned int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *); void (*start_tx)(struct uart_port *); void (*throttle)(struct uart_port *); void (*unthrottle)(struct uart_port *); void (*send_xchar)(struct uart_port *, char ch); void (*stop_rx)(struct uart_port *); void (*start_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *); void (*shutdown)(struct uart_port *); void (*flush_buffer)(struct uart_port *); void (*set_termios)(struct uart_port *, struct ktermios *new, const struct ktermios *old); void (*set_ldisc)(struct uart_port *, struct ktermios *); void (*pm)(struct uart_port *, unsigned int state, unsigned int oldstate); const char *(*type)(struct uart_port *); void (*release_port)(struct uart_port *); int (*request_port)(struct uart_port *); void (*config_port)(struct uart_port *, int); int (*verify_port)(struct uart_port *, struct serial_struct *); int (*ioctl)(struct uart_port *, unsigned int, unsigned long); #ifdef CONFIG_CONSOLE_POLL; int (*poll_init)(struct uart_port *); void (*poll_put_char)(struct uart_port *, unsigned char); int (*poll_get_char)(struct uart_port *); #endif; };”…”�”}”hjºsbah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j–h³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K+hj—ubhÌ)�”}”(hŒ **Members**”h]”j )�”}”(hjËh]”hŒMembers”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KKhj—ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ9``tx_empty`` ``unsigned int ()(struct uart_port *port)`` ”h]”(hŒterm”“”)�”}”(hŒ ``tx_empty``”h]”hŒliteral”“”)�”}”(hjðh]”hŒtx_empty”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K+hjèubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hŒ+``unsigned int ()(struct uart_port *port)``”h]”jó)�”}”(hjh]”hŒ'unsigned int ()(struct uart_port *port)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jh´K+hjãubjç)�”}”(hŒF``set_mctrl`` ``void ()(struct uart_port *port, unsigned int mctrl)`` ”h]”(jí)�”}”(hŒ ``set_mctrl``”h]”jó)�”}”(hj6h]”hŒ set_mctrl”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K6hj0ubj )�”}”(hhh]”hÌ)�”}”(hŒ7``void ()(struct uart_port *port, unsigned int mctrl)``”h]”jó)�”}”(hjQh]”hŒ3void ()(struct uart_port *port, unsigned int mctrl)”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´K6hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jKh´K6hjãubjç)�”}”(hŒ:``get_mctrl`` ``unsigned int ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``get_mctrl``”h]”jó)�”}”(hjxh]”hŒ get_mctrl”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KIhjrubj )�”}”(hhh]”hÌ)�”}”(hŒ+``unsigned int ()(struct uart_port *port)``”h]”jó)�”}”(hj“h]”hŒ'unsigned int ()(struct uart_port *port)”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´KIhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j�h´KIhjãubjç)�”}”(hŒ0``stop_tx`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``stop_tx``”h]”jó)�”}”(hjºh]”hŒstop_tx”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K]hj´ubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjÕh]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏh´K]hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÏh´K]hjãubjç)�”}”(hŒ1``start_tx`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``start_tx``”h]”jó)�”}”(hjüh]”hŒstart_tx”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kihjöubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjh]”hŒvoid ()(struct uart_port *port)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Kihjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jh´Kihjãubjç)�”}”(hŒ1``throttle`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``throttle``”h]”jó)�”}”(hj>h]”hŒthrottle”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kqhj8ubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjYh]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jSh´KqhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jSh´Kqhjãubjç)�”}”(hŒ3``unthrottle`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ``unthrottle``”h]”jó)�”}”(hj€h]”hŒ unthrottle”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K{hjzubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hj›h]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•h´K{hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j•h´K{hjãubjç)�”}”(hŒ<``send_xchar`` ``void ()(struct uart_port *port, char ch)`` ”h]”(jí)�”}”(hŒ``send_xchar``”h]”jó)�”}”(hjÂh]”hŒ send_xchar”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K†hj¼ubj )�”}”(hhh]”hÌ)�”}”(hŒ,``void ()(struct uart_port *port, char ch)``”h]”jó)�”}”(hjÝh]”hŒ(void ()(struct uart_port *port, char ch)”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×h´K†hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j×h´K†hjãubjç)�”}”(hŒ0``stop_rx`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``stop_rx``”h]”jó)�”}”(hjh]”hŒstop_rx”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K›hjþubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjh]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´K›hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jh´K›hjãubjç)�”}”(hŒ1``start_rx`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``start_rx``”h]”jó)�”}”(hjFh]”hŒstart_rx”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K“hj@ubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjah]”hŒvoid ()(struct uart_port *port)”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[h´K“hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j[h´K“hjãubjç)�”}”(hŒ2``enable_ms`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``enable_ms``”h]”jó)�”}”(hjˆh]”hŒ enable_ms”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K£hj‚ubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hj£h]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´K£hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j�h´K£hjãubjç)�”}”(hŒ;``break_ctl`` ``void ()(struct uart_port *port, int ctl)`` ”h]”(jí)�”}”(hŒ ``break_ctl``”h]”jó)�”}”(hjÊh]”hŒ break_ctl”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K®hjÄubj )�”}”(hhh]”hÌ)�”}”(hŒ,``void ()(struct uart_port *port, int ctl)``”h]”jó)�”}”(hjåh]”hŒ(void ()(struct uart_port *port, int ctl)”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßh´K®hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jßh´K®hjãubjç)�”}”(hŒ/``startup`` ``int ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``startup``”h]”jó)�”}”(hj h]”hŒstartup”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¶hjubj )�”}”(hhh]”hÌ)�”}”(hŒ"``int ()(struct uart_port *port)``”h]”jó)�”}”(hj'h]”hŒint ()(struct uart_port *port)”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!h´K¶hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j!h´K¶hjãubjç)�”}”(hŒ1``shutdown`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``shutdown``”h]”jó)�”}”(hjNh]”hŒshutdown”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÁhjHubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hjih]”hŒvoid ()(struct uart_port *port)”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jch´KÁhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jch´KÁhjãubjç)�”}”(hŒ5``flush_buffer`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ``flush_buffer``”h]”jó)�”}”(hj�h]”hŒ flush_buffer”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÏhjŠubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hj«h]”hŒvoid ()(struct uart_port *port)”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥h´KÏhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j¥h´KÏhjãubjç)�”}”(hŒ```set_termios`` ``void ()(struct uart_port *port, struct ktermios *new, struct ktermios *old)`` ”h]”(jí)�”}”(hŒ``set_termios``”h]”jó)�”}”(hjÒh]”hŒ set_termios”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÜhjÌubj )�”}”(hhh]”hÌ)�”}”(hŒO``void ()(struct uart_port *port, struct ktermios *new, struct ktermios *old)``”h]”jó)�”}”(hjíh]”hŒKvoid ()(struct uart_port *port, struct ktermios *new, struct ktermios *old)”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÛhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jçh´KÜhjãubjç)�”}”(hŒL``set_ldisc`` ``void ()(struct uart_port *port, struct ktermios *termios)`` ”h]”(jí)�”}”(hŒ ``set_ldisc``”h]”jó)�”}”(hjh]”hŒ set_ldisc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M hjubj )�”}”(hhh]”hÌ)�”}”(hŒ=``void ()(struct uart_port *port, struct ktermios *termios)``”h]”jó)�”}”(hj0h]”hŒ9void ()(struct uart_port *port, struct ktermios *termios)”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j*h´M hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j*h´M hjãubjç)�”}”(hŒV``pm`` ``void ()(struct uart_port *port, unsigned int state, unsigned int oldstate)`` ”h]”(jí)�”}”(hŒ``pm``”h]”jó)�”}”(hjWh]”hŒpm”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MhjQubj )�”}”(hhh]”hÌ)�”}”(hŒN``void ()(struct uart_port *port, unsigned int state, unsigned int oldstate)``”h]”jó)�”}”(hjrh]”hŒJvoid ()(struct uart_port *port, unsigned int state, unsigned int oldstate)”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jlh´Mhjãubjç)�”}”(hŒ4``type`` ``const char *()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ``type``”h]”jó)�”}”(hjšh]”hŒtype”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M!hj”ubj )�”}”(hhh]”hÌ)�”}”(hŒ*``const char *()(struct uart_port *port)``”h]”jó)�”}”(hjµh]”hŒ&const char *()(struct uart_port *port)”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯h´M!hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j¯h´M!hjãubjç)�”}”(hŒ5``release_port`` ``void ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ``release_port``”h]”jó)�”}”(hjÜh]”hŒ release_port”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M)hjÖubj )�”}”(hhh]”hÌ)�”}”(hŒ#``void ()(struct uart_port *port)``”h]”jó)�”}”(hj÷h]”hŒvoid ()(struct uart_port *port)”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñh´M)hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jñh´M)hjãubjç)�”}”(hŒ4``request_port`` ``int ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ``request_port``”h]”jó)�”}”(hjh]”hŒ request_port”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M1hjubj )�”}”(hhh]”hÌ)�”}”(hŒ"``int ()(struct uart_port *port)``”h]”jó)�”}”(hj9h]”hŒint ()(struct uart_port *port)”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3h´M1hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j3h´M1hjãubjç)�”}”(hŒ>``config_port`` ``void ()(struct uart_port *port, int type)`` ”h]”(jí)�”}”(hŒ``config_port``”h]”jó)�”}”(hj`h]”hŒ config_port”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M:hjZubj )�”}”(hhh]”hÌ)�”}”(hŒ-``void ()(struct uart_port *port, int type)``”h]”jó)�”}”(hj{h]”hŒ)void ()(struct uart_port *port, int type)”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³juh´M:hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³juh´M:hjãubjç)�”}”(hŒR``verify_port`` ``int ()(struct uart_port *port, struct serial_struct *serinfo)`` ”h]”(jí)�”}”(hŒ``verify_port``”h]”jó)�”}”(hj¢h]”hŒ verify_port”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MKhjœubj )�”}”(hhh]”hÌ)�”}”(hŒA``int ()(struct uart_port *port, struct serial_struct *serinfo)``”h]”jó)�”}”(hj½h]”hŒ=int ()(struct uart_port *port, struct serial_struct *serinfo)”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MJhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j·h´MKhjãubjç)�”}”(hŒR``ioctl`` ``int ()(struct uart_port *port, unsigned int cmd, unsigned long arg)`` ”h]”(jí)�”}”(hŒ ``ioctl``”h]”jó)�”}”(hjåh]”hŒioctl”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MThjßubj )�”}”(hhh]”hÌ)�”}”(hŒG``int ()(struct uart_port *port, unsigned int cmd, unsigned long arg)``”h]”jó)�”}”(hj h]”hŒCint ()(struct uart_port *port, unsigned int cmd, unsigned long arg)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MShjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³júh´MThjãubjç)�”}”(hŒ1``poll_init`` ``int ()(struct uart_port *port)`` ”h]”(jí)�”}”(hŒ ``poll_init``”h]”jó)�”}”(hj( h]”hŒ poll_init”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M\hj" ubj )�”}”(hhh]”hÌ)�”}”(hŒ"``int ()(struct uart_port *port)``”h]”jó)�”}”(hjC h]”hŒint ()(struct uart_port *port)”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j= h´M\hj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj" ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j= h´M\hjãubjç)�”}”(hŒH``poll_put_char`` ``void ()(struct uart_port *port, unsigned char ch)`` ”h]”(jí)�”}”(hŒ``poll_put_char``”h]”jó)�”}”(hjj h]”hŒ poll_put_char”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjh ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mehjd ubj )�”}”(hhh]”hÌ)�”}”(hŒ5``void ()(struct uart_port *port, unsigned char ch)``”h]”jó)�”}”(hj… h]”hŒ1void ()(struct uart_port *port, unsigned char ch)”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mehj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjd ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j h´Mehjãubjç)�”}”(hŒ4``poll_get_char`` ``int ()(struct uart_port *port)``”h]”(jí)�”}”(hŒ``poll_get_char``”h]”jó)�”}”(hj¬ h]”hŒ poll_get_char”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mmhj¦ ubj )�”}”(hhh]”hÌ)�”}”(hŒ"``int ()(struct uart_port *port)``”h]”jó)�”}”(hjÇ h]”hŒint ()(struct uart_port *port)”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mnhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÁ h´Mmhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjÌh²hh³jîh´NubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjø h]”hŒ Description”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MqhjÌh²hubhÌ)�”}”(hŒVThis structure describes all the operations that can be done on the physical hardware.”h]”hŒVThis structure describes all the operations that can be done on the physical hardware.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K&hjÌh²hubhŒ block_quote”“”)�”}”(hXV%This function tests whether the transmitter fifo and shifter for the **port** is empty. If it is empty, this function should return ``TIOCSER_TEMT``, otherwise return 0. If the port does not support this operation, then it should return ``TIOCSER_TEMT``. Locking: none. Interrupts: caller dependent. This call must not sleep This function sets the modem control lines for **port** to the state described by **mctrl**. The relevant bits of **mctrl** are: - ``TIOCM_RTS`` RTS signal. - ``TIOCM_DTR`` DTR signal. - ``TIOCM_OUT1`` OUT1 signal. - ``TIOCM_OUT2`` OUT2 signal. - ``TIOCM_LOOP`` Set the port into loopback mode. If the appropriate bit is set, the signal should be driven active. If the bit is clear, the signal should be driven inactive. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Returns the current state of modem control inputs of **port**. The state of the outputs should not be returned, since the core keeps track of their state. The state information should include: - ``TIOCM_CAR`` state of DCD signal - ``TIOCM_CTS`` state of CTS signal - ``TIOCM_DSR`` state of DSR signal - ``TIOCM_RI`` state of RI signal The bit is set if the signal is currently driven active. If the port does not support CTS, DCD or DSR, the driver should indicate that the signal is permanently active. If RI is not available, the signal should not be indicated as active. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Stop transmitting characters. This might be due to the CTS line becoming inactive or the tty layer indicating we want to stop transmission due to an ``XOFF`` character. The driver should stop transmitting characters as soon as possible. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Start transmitting characters. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Notify the serial driver that input buffers for the line discipline are close to full, and it should somehow signal that no more characters should be sent to the serial port. This will be called only if hardware assisted flow control is enabled. Locking: serialized with **unthrottle\(\)** and termios modification by the tty layer. Notify the serial driver that characters can now be sent to the serial port without fear of overrunning the input buffers of the line disciplines. This will be called only if hardware assisted flow control is enabled. Locking: serialized with **throttle\(\)** and termios modification by the tty layer. Transmit a high priority character, even if the port is stopped. This is used to implement XON/XOFF flow control and tcflow(). If the serial driver does not implement this function, the tty core will append the character to the circular buffer and then call start_tx() / stop_tx() to flush the data out. Do not transmit if **ch** == '\0' (``__DISABLED_CHAR``). Locking: none. Interrupts: caller dependent. Start receiving characters. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Stop receiving characters; the **port** is in the process of being closed. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Enable the modem status interrupts. This method may be called multiple times. Modem status interrupts should be disabled when the **shutdown\(\)** method is called. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Control the transmission of a break signal. If **ctl** is nonzero, the break signal should be transmitted. The signal should be terminated when another call is made with a zero **ctl**. Locking: caller holds tty_port->mutex Grab any interrupt resources and initialise any low level driver state. Enable the port for reception. It should not activate RTS nor DTR; this will be done via a separate call to **set_mctrl\(\)**. This method will only be called when the port is initially opened. Locking: port_sem taken. Interrupts: globally disabled. Disable the **port**, disable any break condition that may be in effect, and free any interrupt resources. It should not disable RTS nor DTR; this will have already been done via a separate call to **set_mctrl\(\)**. Drivers must not access **port->state** once this call has completed. This method will only be called when there are no more users of this **port**. Locking: port_sem taken. Interrupts: caller dependent. Flush any write buffers, reset any DMA state and stop any ongoing DMA transfers. This will be called whenever the **port->state->xmit** circular buffer is cleared. Locking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep Change the **port** parameters, including word length, parity, stop bits. Update **port->read_status_mask** and **port->ignore_status_mask** to indicate the types of events we are interested in receiving. Relevant ktermios::c_cflag bits are: - ``CSIZE`` - word size - ``CSTOPB`` - 2 stop bits - ``PARENB`` - parity enable - ``PARODD`` - odd parity (when ``PARENB`` is in force) - ``ADDRB`` - address bit (changed through uart_port::rs485_config()). - ``CREAD`` - enable reception of characters (if not set, still receive characters from the port, but throw them away). - ``CRTSCTS`` - if set, enable CTS status change reporting. - ``CLOCAL`` - if not set, enable modem status change reporting. Relevant ktermios::c_iflag bits are: - ``INPCK`` - enable frame and parity error events to be passed to the TTY layer. - ``BRKINT`` / ``PARMRK`` - both of these enable break events to be passed to the TTY layer. - ``IGNPAR`` - ignore parity and framing errors. - ``IGNBRK`` - ignore break errors. If ``IGNPAR`` is also set, ignore overrun errors as well. The interaction of the ktermios::c_iflag bits is as follows (parity error given as an example): ============ ======= ======= ========================================= Parity error INPCK IGNPAR ============ ======= ======= ========================================= n/a 0 n/a character received, marked as ``TTY_NORMAL`` None 1 n/a character received, marked as ``TTY_NORMAL`` Yes 1 0 character received, marked as ``TTY_PARITY`` Yes 1 1 character discarded ============ ======= ======= ========================================= Other flags may be used (eg, xon/xoff characters) if your hardware supports hardware "soft" flow control. Locking: caller holds tty_port->mutex Interrupts: caller dependent. This call must not sleep Notifier for discipline change. See Documentation/driver-api/tty/tty_ldisc.rst. Locking: caller holds tty_port->mutex Perform any power management related activities on the specified **port**. **state** indicates the new state (defined by enum uart_pm_state), **oldstate** indicates the previous state. This function should not be used to grab any resources. This will be called when the **port** is initially opened and finally closed, except when the **port** is also the system console. This will occur even if ``CONFIG_PM`` is not set. Locking: none. Interrupts: caller dependent. Return a pointer to a string constant describing the specified **port**, or return ``NULL``, in which case the string 'unknown' is substituted. Locking: none. Interrupts: caller dependent. Release any memory and IO region resources currently in use by the **port**. Locking: none. Interrupts: caller dependent. Request any memory and IO region resources required by the port. If any fail, no resources should be registered when this function returns, and it should return -``EBUSY`` on failure. Locking: none. Interrupts: caller dependent. Perform any autoconfiguration steps required for the **port**. **type** contains a bit mask of the required configuration. ``UART_CONFIG_TYPE`` indicates that the port requires detection and identification. **port->type** should be set to the type found, or ``PORT_UNKNOWN`` if no port was detected. ``UART_CONFIG_IRQ`` indicates autoconfiguration of the interrupt signal, which should be probed using standard kernel autoprobing techniques. This is not necessary on platforms where ports have interrupts internally hard wired (eg, system on a chip implementations). Locking: none. Interrupts: caller dependent. Verify the new serial port information contained within **serinfo** is suitable for this port type. Locking: none. Interrupts: caller dependent. Perform any port specific IOCTLs. IOCTL commands must be defined using the standard numbering system found in . Locking: none. Interrupts: caller dependent. Called by kgdb to perform the minimal hardware initialization needed to support **poll_put_char\(\)** and **poll_get_char\(\)**. Unlike **startup\(\)**, this should not request interrupts. Locking: ``tty_mutex`` and tty_port->mutex taken. Interrupts: n/a. Called by kgdb to write a single character **ch** directly to the serial **port**. It can and should block until there is space in the TX FIFO. Locking: none. Interrupts: caller dependent. This call must not sleep Called by kgdb to read a single character directly from the serial port. If data is available, it should be returned; otherwise the function should return ``NO_POLL_CHAR`` immediately. Locking: none. Interrupts: caller dependent. This call must not sleep ”h]”(hÌ)�”}”(hŒþThis function tests whether the transmitter fifo and shifter for the **port** is empty. If it is empty, this function should return ``TIOCSER_TEMT``, otherwise return 0. If the port does not support this operation, then it should return ``TIOCSER_TEMT``.”h]”(hŒEThis function tests whether the transmitter fifo and shifter for the ”…”�”}”(hj# h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj# ubhŒ7 is empty. If it is empty, this function should return ”…”�”}”(hj# h²hh³Nh´Nubjó)�”}”(hŒ``TIOCSER_TEMT``”h]”hŒ TIOCSER_TEMT”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj# ubhŒY, otherwise return 0. If the port does not support this operation, then it should return ”…”�”}”(hj# h²hh³Nh´Nubjó)�”}”(hŒ``TIOCSER_TEMT``”h]”hŒ TIOCSER_TEMT”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj# ubhŒ.”…”�”}”(hj# h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K*hj ubhÌ)�”}”(hŒELocking: none. Interrupts: caller dependent. This call must not sleep”h]”hŒELocking: none. Interrupts: caller dependent. This call must not sleep”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K/hj ubhÌ)�”}”(hŒ€This function sets the modem control lines for **port** to the state described by **mctrl**. The relevant bits of **mctrl** are:”h]”(hŒ/This function sets the modem control lines for ”…”�”}”(hjw h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjw ubhŒ to the state described by ”…”�”}”(hjw h²hh³Nh´Nubj )�”}”(hŒ **mctrl**”h]”hŒmctrl”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjw ubhŒ. The relevant bits of ”…”�”}”(hjw h²hh³Nh´Nubj )�”}”(hŒ **mctrl**”h]”hŒmctrl”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjw ubhŒ are:”…”�”}”(hjw h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K4hj ubj )�”}”(hŒ²- ``TIOCM_RTS`` RTS signal. - ``TIOCM_DTR`` DTR signal. - ``TIOCM_OUT1`` OUT1 signal. - ``TIOCM_OUT2`` OUT2 signal. - ``TIOCM_LOOP`` Set the port into loopback mode. ”h]”j[)�”}”(hhh]”(j`)�”}”(hŒ``TIOCM_RTS`` RTS signal.”h]”hÌ)�”}”(hjÅ h]”(jó)�”}”(hŒ ``TIOCM_RTS``”h]”hŒ TIOCM_RTS”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÇ ubhŒ RTS signal.”…”�”}”(hjÇ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K7hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÀ ubj`)�”}”(hŒ``TIOCM_DTR`` DTR signal.”h]”hÌ)�”}”(hjë h]”(jó)�”}”(hŒ ``TIOCM_DTR``”h]”hŒ TIOCM_DTR”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjí ubhŒ DTR signal.”…”�”}”(hjí h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K8hjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÀ ubj`)�”}”(hŒ``TIOCM_OUT1`` OUT1 signal.”h]”hÌ)�”}”(hj h]”(jó)�”}”(hŒ``TIOCM_OUT1``”h]”hŒ TIOCM_OUT1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ OUT1 signal.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K9hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÀ ubj`)�”}”(hŒ``TIOCM_OUT2`` OUT2 signal.”h]”hÌ)�”}”(hj7 h]”(jó)�”}”(hŒ``TIOCM_OUT2``”h]”hŒ TIOCM_OUT2”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj9 ubhŒ OUT2 signal.”…”�”}”(hj9 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K:hj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÀ ubj`)�”}”(hŒ2``TIOCM_LOOP`` Set the port into loopback mode. ”h]”hÌ)�”}”(hŒ1``TIOCM_LOOP`` Set the port into loopback mode.”h]”(jó)�”}”(hŒ``TIOCM_LOOP``”h]”hŒ TIOCM_LOOP”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_ ubhŒ# Set the port into loopback mode.”…”�”}”(hj_ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K;hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjÀ ubeh}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³jâ h´K7hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jâ h´K7hj ubhÌ)�”}”(hŒ~If the appropriate bit is set, the signal should be driven active. If the bit is clear, the signal should be driven inactive.”h]”hŒ~If the appropriate bit is set, the signal should be driven active. If the bit is clear, the signal should be driven inactive.”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K=hj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hj� h²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj� ubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KAhj ubhÌ)�”}”(hŒÀReturns the current state of modem control inputs of **port**. The state of the outputs should not be returned, since the core keeps track of their state. The state information should include:”h]”(hŒ5Returns the current state of modem control inputs of ”…”�”}”(hj¾ h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¾ ubhŒƒ. The state of the outputs should not be returned, since the core keeps track of their state. The state information should include:”…”�”}”(hj¾ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KFhj ubj )�”}”(hŒ›- ``TIOCM_CAR`` state of DCD signal - ``TIOCM_CTS`` state of CTS signal - ``TIOCM_DSR`` state of DSR signal - ``TIOCM_RI`` state of RI signal ”h]”j[)�”}”(hhh]”(j`)�”}”(hŒ$``TIOCM_CAR`` state of DCD signal”h]”hÌ)�”}”(hjè h]”(jó)�”}”(hŒ ``TIOCM_CAR``”h]”hŒ TIOCM_CAR”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjê ubhŒ state of DCD signal”…”�”}”(hjê h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KJhjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjã ubj`)�”}”(hŒ$``TIOCM_CTS`` state of CTS signal”h]”hÌ)�”}”(hj h]”(jó)�”}”(hŒ ``TIOCM_CTS``”h]”hŒ TIOCM_CTS”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ state of CTS signal”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KKhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjã ubj`)�”}”(hŒ$``TIOCM_DSR`` state of DSR signal”h]”hÌ)�”}”(hj4 h]”(jó)�”}”(hŒ ``TIOCM_DSR``”h]”hŒ TIOCM_DSR”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj6 ubhŒ state of DSR signal”…”�”}”(hj6 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KLhj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjã ubj`)�”}”(hŒ$``TIOCM_RI`` state of RI signal ”h]”hÌ)�”}”(hŒ#``TIOCM_RI`` state of RI signal”h]”(jó)�”}”(hŒ ``TIOCM_RI``”h]”hŒTIOCM_RI”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj\ ubhŒ state of RI signal”…”�”}”(hj\ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KMhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjã ubeh}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³j h´KJhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j h´KJhj ubhÌ)�”}”(hŒïThe bit is set if the signal is currently driven active. If the port does not support CTS, DCD or DSR, the driver should indicate that the signal is permanently active. If RI is not available, the signal should not be indicated as active.”h]”hŒïThe bit is set if the signal is currently driven active. If the port does not support CTS, DCD or DSR, the driver should indicate that the signal is permanently active. If RI is not available, the signal should not be indicated as active.”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KOhj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hjš h²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjš ubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hjš h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KThj ubhÌ)�”}”(hŒ¨Stop transmitting characters. This might be due to the CTS line becoming inactive or the tty layer indicating we want to stop transmission due to an ``XOFF`` character.”h]”(hŒ•Stop transmitting characters. This might be due to the CTS line becoming inactive or the tty layer indicating we want to stop transmission due to an ”…”�”}”(hj» h²hh³Nh´Nubjó)�”}”(hŒ``XOFF``”h]”hŒXOFF”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj» ubhŒ character.”…”�”}”(hj» h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KYhj ubhÌ)�”}”(hŒCThe driver should stop transmitting characters as soon as possible.”h]”hŒCThe driver should stop transmitting characters as soon as possible.”…”�”}”(hjÜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K]hj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hjë h²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjë ubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hjë h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K_hj ubhÌ)�”}”(hŒStart transmitting characters.”h]”hŒStart transmitting characters.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kdhj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj ubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kfhj ubhÌ)�”}”(hŒõNotify the serial driver that input buffers for the line discipline are close to full, and it should somehow signal that no more characters should be sent to the serial port. This will be called only if hardware assisted flow control is enabled.”h]”hŒõNotify the serial driver that input buffers for the line discipline are close to full, and it should somehow signal that no more characters should be sent to the serial port. This will be called only if hardware assisted flow control is enabled.”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kkhj ubhÌ)�”}”(hŒVLocking: serialized with **unthrottle\(\)** and termios modification by the tty layer.”h]”(hŒLocking: serialized with ”…”�”}”(hjK h²hh³Nh´Nubj )�”}”(hŒ**unthrottle\(\)**”h]”hŒunthrottle()”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjK ubhŒ+ and termios modification by the tty layer.”…”�”}”(hjK h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kphj ubhÌ)�”}”(hŒ’Notify the serial driver that characters can now be sent to the serial port without fear of overrunning the input buffers of the line disciplines.”h]”hŒ’Notify the serial driver that characters can now be sent to the serial port without fear of overrunning the input buffers of the line disciplines.”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kthj ubhÌ)�”}”(hŒFThis will be called only if hardware assisted flow control is enabled.”h]”hŒFThis will be called only if hardware assisted flow control is enabled.”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kxhj ubhÌ)�”}”(hŒTLocking: serialized with **throttle\(\)** and termios modification by the tty layer.”h]”(hŒLocking: serialized with ”…”�”}”(hjŠ h²hh³Nh´Nubj )�”}”(hŒ**throttle\(\)**”h]”hŒ throttle()”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjŠ ubhŒ+ and termios modification by the tty layer.”…”�”}”(hjŠ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kzhj ubhÌ)�”}”(hX/Transmit a high priority character, even if the port is stopped. This is used to implement XON/XOFF flow control and tcflow(). If the serial driver does not implement this function, the tty core will append the character to the circular buffer and then call start_tx() / stop_tx() to flush the data out.”h]”hX/Transmit a high priority character, even if the port is stopped. This is used to implement XON/XOFF flow control and tcflow(). If the serial driver does not implement this function, the tty core will append the character to the circular buffer and then call start_tx() / stop_tx() to flush the data out.”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K~hj ubhÌ)�”}”(hŒ8Do not transmit if **ch** == '\0' (``__DISABLED_CHAR``).”h]”(hŒDo not transmit if ”…”�”}”(hjº h²hh³Nh´Nubj )�”}”(hŒ**ch**”h]”hŒch”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjº ubhŒ == ‘0’ (”…”�”}”(hjº h²hh³Nh´Nubjó)�”}”(hŒ``__DISABLED_CHAR``”h]”hŒ__DISABLED_CHAR”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjº ubhŒ).”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K„hj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K†hj ubhÌ)�”}”(hŒStart receiving characters.”h]”hŒStart receiving characters.”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KŠhj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hj h²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj ubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KŒhj ubhÌ)�”}”(hŒJStop receiving characters; the **port** is in the process of being closed.”h]”(hŒStop receiving characters; the ”…”�”}”(hj,h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj,ubhŒ# is in the process of being closed.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K‘hj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hjMh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjMubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K“hj ubhÌ)�”}”(hŒ#Enable the modem status interrupts.”h]”hŒ#Enable the modem status interrupts.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”•h´K˜hj ubhÌ)�”}”(hŒ€This method may be called multiple times. Modem status interrupts should be disabled when the **shutdown\(\)** method is called.”h]”(hŒ^This method may be called multiple times. Modem status interrupts should be disabled when the ”…”�”}”(hj}h²hh³Nh´Nubj )�”}”(hŒ**shutdown\(\)**”h]”hŒ shutdown()”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj}ubhŒ method is called.”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kšhj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hjžh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjžubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K�hj ubhÌ)�”}”(hŒ¹Control the transmission of a break signal. If **ctl** is nonzero, the break signal should be transmitted. The signal should be terminated when another call is made with a zero **ctl**.”h]”(hŒ/Control the transmission of a break signal. If ”…”�”}”(hj¿h²hh³Nh´Nubj )�”}”(hŒ**ctl**”h]”hŒctl”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¿ubhŒ{ is nonzero, the break signal should be transmitted. The signal should be terminated when another call is made with a zero ”…”�”}”(hj¿h²hh³Nh´Nubj )�”}”(hŒ**ctl**”h]”hŒctl”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¿ubhŒ.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¢hj ubhÌ)�”}”(hŒ%Locking: caller holds tty_port->mutex”h]”hŒ%Locking: caller holds tty_port->mutex”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¦hj ubhÌ)�”}”(hŒÆGrab any interrupt resources and initialise any low level driver state. Enable the port for reception. It should not activate RTS nor DTR; this will be done via a separate call to **set_mctrl\(\)**.”h]”(hŒ´Grab any interrupt resources and initialise any low level driver state. Enable the port for reception. It should not activate RTS nor DTR; this will be done via a separate call to ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ**set_mctrl\(\)**”h]”hŒ set_mctrl()”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K©hj ubhÌ)�”}”(hŒBThis method will only be called when the port is initially opened.”h]”hŒBThis method will only be called when the port is initially opened.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K­hj ubhÌ)�”}”(hŒ7Locking: port_sem taken. Interrupts: globally disabled.”h]”hŒ7Locking: port_sem taken. Interrupts: globally disabled.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¯hj ubhÌ)�”}”(hŒØDisable the **port**, disable any break condition that may be in effect, and free any interrupt resources. It should not disable RTS nor DTR; this will have already been done via a separate call to **set_mctrl\(\)**.”h]”(hŒ Disable the ”…”�”}”(hj@h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj@ubhŒ², disable any break condition that may be in effect, and free any interrupt resources. It should not disable RTS nor DTR; this will have already been done via a separate call to ”…”�”}”(hj@h²hh³Nh´Nubj )�”}”(hŒ**set_mctrl\(\)**”h]”hŒ set_mctrl()”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj@ubhŒ.”…”�”}”(hj@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K³hj ubhÌ)�”}”(hŒEDrivers must not access **port->state** once this call has completed.”h]”(hŒDrivers must not access ”…”�”}”(hjsh²hh³Nh´Nubj )�”}”(hŒ**port->state**”h]”hŒ port->state”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjsubhŒ once this call has completed.”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K·hj ubhÌ)�”}”(hŒNThis method will only be called when there are no more users of this **port**.”h]”(hŒEThis method will only be called when there are no more users of this ”…”�”}”(hj”h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj”ubhŒ.”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¹hj ubhÌ)�”}”(hŒ6Locking: port_sem taken. Interrupts: caller dependent.”h]”hŒ6Locking: port_sem taken. Interrupts: caller dependent.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K¼hj ubhÌ)�”}”(hŒPFlush any write buffers, reset any DMA state and stop any ongoing DMA transfers.”h]”hŒPFlush any write buffers, reset any DMA state and stop any ongoing DMA transfers.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÀhj ubhÌ)�”}”(hŒRThis will be called whenever the **port->state->xmit** circular buffer is cleared.”h]”(hŒ!This will be called whenever the ”…”�”}”(hjÓh²hh³Nh´Nubj )�”}”(hŒ**port->state->xmit**”h]”hŒport->state->xmit”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÓubhŒ circular buffer is cleared.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÃhj ubhÌ)�”}”(hŒULocking: **port->lock** taken. Interrupts: locally disabled. This call must not sleep”h]”(hŒ Locking: ”…”�”}”(hjôh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjôubhŒ> taken. Interrupts: locally disabled. This call must not sleep”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÆhj ubhÌ)�”}”(hŒñChange the **port** parameters, including word length, parity, stop bits. Update **port->read_status_mask** and **port->ignore_status_mask** to indicate the types of events we are interested in receiving. Relevant ktermios::c_cflag bits are:”h]”(hŒ Change the ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjubhŒ> parameters, including word length, parity, stop bits. Update ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ**port->read_status_mask**”h]”hŒport->read_status_mask”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ**port->ignore_status_mask**”h]”hŒport->ignore_status_mask”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjubhŒe to indicate the types of events we are interested in receiving. Relevant ktermios::c_cflag bits are:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KËhj ubj[)�”}”(hhh]”(j`)�”}”(hŒ``CSIZE`` - word size”h]”hÌ)�”}”(hj_h]”(jó)�”}”(hŒ ``CSIZE``”h]”hŒCSIZE”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjaubhŒ - word size”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÐhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒ``CSTOPB`` - 2 stop bits”h]”hÌ)�”}”(hj…h]”(jó)�”}”(hŒ ``CSTOPB``”h]”hŒCSTOPB”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‡ubhŒ - 2 stop bits”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÑhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒ``PARENB`` - parity enable”h]”hÌ)�”}”(hj«h]”(jó)�”}”(hŒ ``PARENB``”h]”hŒPARENB”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj­ubhŒ - parity enable”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÒhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒ5``PARODD`` - odd parity (when ``PARENB`` is in force)”h]”hÌ)�”}”(hjÑh]”(jó)�”}”(hŒ ``PARODD``”h]”hŒPARODD”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÓubhŒ - odd parity (when ”…”�”}”(hjÓh²hh³Nh´Nubjó)�”}”(hŒ ``PARENB``”h]”hŒPARENB”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÓubhŒ is in force)”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÓhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒD``ADDRB`` - address bit (changed through uart_port::rs485_config()).”h]”hÌ)�”}”(hj h]”(jó)�”}”(hŒ ``ADDRB``”h]”hŒADDRB”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ubhŒ; - address bit (changed through uart_port::rs485_config()).”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÔhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒu``CREAD`` - enable reception of characters (if not set, still receive characters from the port, but throw them away).”h]”hÌ)�”}”(hŒu``CREAD`` - enable reception of characters (if not set, still receive characters from the port, but throw them away).”h]”(jó)�”}”(hŒ ``CREAD``”h]”hŒCREAD”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj1ubhŒl - enable reception of characters (if not set, still receive characters from the port, but throw them away).”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÕhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒ9``CRTSCTS`` - if set, enable CTS status change reporting.”h]”hÌ)�”}”(hjVh]”(jó)�”}”(hŒ ``CRTSCTS``”h]”hŒCRTSCTS”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjXubhŒ. - if set, enable CTS status change reporting.”…”�”}”(hjXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´K×hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubj`)�”}”(hŒ?``CLOCAL`` - if not set, enable modem status change reporting. ”h]”hÌ)�”}”(hŒ>``CLOCAL`` - if not set, enable modem status change reporting.”h]”(jó)�”}”(hŒ ``CLOCAL``”h]”hŒCLOCAL”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj~ubhŒ4 - if not set, enable modem status change reporting.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KØhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjZubeh}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³j|h´KÐhj ubhÌ)�”}”(hŒ$Relevant ktermios::c_iflag bits are:”h]”hŒ$Relevant ktermios::c_iflag bits are:”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÚhj ubj[)�”}”(hhh]”(j`)�”}”(hŒO``INPCK`` - enable frame and parity error events to be passed to the TTY layer.”h]”hÌ)�”}”(hŒO``INPCK`` - enable frame and parity error events to be passed to the TTY layer.”h]”(jó)�”}”(hŒ ``INPCK``”h]”hŒINPCK”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj½ubhŒF - enable frame and parity error events to be passed to the TTY layer.”…”�”}”(hj½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÜhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¶ubj`)�”}”(hŒZ``BRKINT`` / ``PARMRK`` - both of these enable break events to be passed to the TTY layer.”h]”hÌ)�”}”(hŒZ``BRKINT`` / ``PARMRK`` - both of these enable break events to be passed to the TTY layer.”h]”(jó)�”}”(hŒ ``BRKINT``”h]”hŒBRKINT”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjäubhŒ / ”…”�”}”(hjäh²hh³Nh´Nubjó)�”}”(hŒ ``PARMRK``”h]”hŒPARMRK”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjäubhŒC - both of these enable break events to be passed to the TTY layer.”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KÞhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¶ubj`)�”}”(hŒ.``IGNPAR`` - ignore parity and framing errors.”h]”hÌ)�”}”(hjh]”(jó)�”}”(hŒ ``IGNPAR``”h]”hŒIGNPAR”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubhŒ$ - ignore parity and framing errors.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kàhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¶ubj`)�”}”(hŒ\``IGNBRK`` - ignore break errors. If ``IGNPAR`` is also set, ignore overrun errors as well. ”h]”hÌ)�”}”(hŒ[``IGNBRK`` - ignore break errors. If ``IGNPAR`` is also set, ignore overrun errors as well.”h]”(jó)�”}”(hŒ ``IGNBRK``”h]”hŒIGNBRK”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCubhŒ - ignore break errors. If ”…”�”}”(hjCh²hh³Nh´Nubjó)�”}”(hŒ ``IGNPAR``”h]”hŒIGNPAR”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCubhŒ, is also set, ignore overrun errors as well.”…”�”}”(hjCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Káhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³jÙh´KÜhj ubhÌ)�”}”(hŒ_The interaction of the ktermios::c_iflag bits is as follows (parity error given as an example):”h]”hŒ_The interaction of the ktermios::c_iflag bits is as follows (parity error given as an example):”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kähj ubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1j—hj”ubj˜)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j—hj”ubj˜)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1j—hj”ubj˜)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K,uh1j—hj”ubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÌ)�”}”(hŒ Parity error”h]”hŒ Parity error”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KèhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjÈubjÌ)�”}”(hhh]”hÌ)�”}”(hŒINPCK”h]”hŒINPCK”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞh´Kèhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjÈubjÌ)�”}”(hhh]”hÌ)�”}”(hŒIGNPAR”h]”hŒIGNPAR”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞh´Kèhjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjÈubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jËhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jÁhj”ubhŒtbody”“”)�”}”(hhh]”(jÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”hÌ)�”}”(hŒn/a”h]”hŒn/a”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kêhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj-ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒ0”h]”hŒ0”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAh´KêhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj-ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒn/a”h]”hŒn/a”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAh´Kêhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj-ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒ,character received, marked as ``TTY_NORMAL``”h]”(hŒcharacter received, marked as ”…”�”}”(hjyh²hh³Nh´Nubjó)�”}”(hŒ``TTY_NORMAL``”h]”hŒ TTY_NORMAL”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAh´Kêhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhj*ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”hÌ)�”}”(hŒNone”h]”hŒNone”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Këhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj¡ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒ1”h]”hŒ1”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµh´Këhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj¡ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒn/a”h]”hŒn/a”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµh´KëhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj¡ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒ,character received, marked as ``TTY_NORMAL``”h]”(hŒcharacter received, marked as ”…”�”}”(hjíh²hh³Nh´Nubjó)�”}”(hŒ``TTY_NORMAL``”h]”hŒ TTY_NORMAL”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµh´Këhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhj*ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”hÌ)�”}”(hŒYes”h]”hŒYes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjubjÌ)�”}”(hhh]”hÌ)�”}”(hjÁh]”hŒ1”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)h´Kìhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjubjÌ)�”}”(hhh]”hÌ)�”}”(hjMh]”hŒ0”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)h´KìhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjubjÌ)�”}”(hhh]”hÌ)�”}”(hŒ,character received, marked as ``TTY_PARITY``”h]”(hŒcharacter received, marked as ”…”�”}”(hj_h²hh³Nh´Nubjó)�”}”(hŒ``TTY_PARITY``”h]”hŒ TTY_PARITY”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)h´Kìhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhj*ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”hÌ)�”}”(hŒYes”h]”hŒYes”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´KíhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj‡ubjÌ)�”}”(hhh]”hÌ)�”}”(hjÁh]”hŒ1”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´Kíhj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj‡ubjÌ)�”}”(hhh]”hÌ)�”}”(hjÁh]”hŒ1”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´Kíhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj‡ubjÌ)�”}”(hhh]”hÌ)�”}”(hŒcharacter discarded”h]”hŒcharacter discarded”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´KíhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1jËhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÆhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j(hj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1j’hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj ubhÌ)�”}”(hŒiOther flags may be used (eg, xon/xoff characters) if your hardware supports hardware "soft" flow control.”h]”hŒmOther flags may be used (eg, xon/xoff characters) if your hardware supports hardware “softâ€� flow control.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kðhj ubhÌ)�”}”(hŒ\Locking: caller holds tty_port->mutex Interrupts: caller dependent. This call must not sleep”h]”hŒ\Locking: caller holds tty_port->mutex Interrupts: caller dependent. This call must not sleep”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kóhj ubhÌ)�”}”(hŒONotifier for discipline change. See Documentation/driver-api/tty/tty_ldisc.rst.”h]”hŒONotifier for discipline change. See Documentation/driver-api/tty/tty_ldisc.rst.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Køhj ubhÌ)�”}”(hŒ%Locking: caller holds tty_port->mutex”h]”hŒ%Locking: caller holds tty_port->mutex”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kûhj ubhÌ)�”}”(hŒ¸Perform any power management related activities on the specified **port**. **state** indicates the new state (defined by enum uart_pm_state), **oldstate** indicates the previous state.”h]”(hŒAPerform any power management related activities on the specified ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj:ubhŒ. ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj:ubhŒ: indicates the new state (defined by enum uart_pm_state), ”…”�”}”(hj:h²hh³Nh´Nubj )�”}”(hŒ **oldstate**”h]”hŒoldstate”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj:ubhŒ indicates the previous state.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Kþhj ubhÌ)�”}”(hŒ7This function should not be used to grab any resources.”h]”hŒ7This function should not be used to grab any resources.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ´This will be called when the **port** is initially opened and finally closed, except when the **port** is also the system console. This will occur even if ``CONFIG_PM`` is not set.”h]”(hŒThis will be called when the ”…”�”}”(hjŽh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjŽubhŒ9 is initially opened and finally closed, except when the ”…”�”}”(hjŽh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjŽubhŒ5 is also the system console. This will occur even if ”…”�”}”(hjŽh²hh³Nh´Nubjó)�”}”(hŒ ``CONFIG_PM``”h]”hŒ CONFIG_PM”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjŽubhŒ is not set.”…”�”}”(hjŽh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ�Return a pointer to a string constant describing the specified **port**, or return ``NULL``, in which case the string 'unknown' is substituted.”h]”(hŒ?Return a pointer to a string constant describing the specified ”…”�”}”(hjâh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjâubhŒ , or return ”…”�”}”(hjâh²hh³Nh´Nubjó)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjâubhŒ8, in which case the string ‘unknown’ is substituted.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M hj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒLRelease any memory and IO region resources currently in use by the **port**.”h]”(hŒCRelease any memory and IO region resources currently in use by the ”…”�”}”(hj$h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj$ubhŒ.”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ·Request any memory and IO region resources required by the port. If any fail, no resources should be registered when this function returns, and it should return -``EBUSY`` on failure.”h]”(hŒ¢Request any memory and IO region resources required by the port. If any fail, no resources should be registered when this function returns, and it should return -”…”�”}”(hjTh²hh³Nh´Nubjó)�”}”(hŒ ``EBUSY``”h]”hŒEBUSY”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjTubhŒ on failure.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´Mhj ubhÌ)�”}”(hX+Perform any autoconfiguration steps required for the **port**. **type** contains a bit mask of the required configuration. ``UART_CONFIG_TYPE`` indicates that the port requires detection and identification. **port->type** should be set to the type found, or ``PORT_UNKNOWN`` if no port was detected.”h]”(hŒ5Perform any autoconfiguration steps required for the ”…”�”}”(hj„h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj„ubhŒ. ”…”�”}”(hj„h²hh³Nh´Nubj )�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj„ubhŒ4 contains a bit mask of the required configuration. ”…”�”}”(hj„h²hh³Nh´Nubjó)�”}”(hŒ``UART_CONFIG_TYPE``”h]”hŒUART_CONFIG_TYPE”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj„ubhŒ@ indicates that the port requires detection and identification. ”…”�”}”(hj„h²hh³Nh´Nubj )�”}”(hŒ**port->type**”h]”hŒ port->type”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj„ubhŒ% should be set to the type found, or ”…”�”}”(hj„h²hh³Nh´Nubjó)�”}”(hŒ``PORT_UNKNOWN``”h]”hŒ PORT_UNKNOWN”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj„ubhŒ if no port was detected.”…”�”}”(hj„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M"hj ubhÌ)�”}”(hX ``UART_CONFIG_IRQ`` indicates autoconfiguration of the interrupt signal, which should be probed using standard kernel autoprobing techniques. This is not necessary on platforms where ports have interrupts internally hard wired (eg, system on a chip implementations).”h]”(jó)�”}”(hŒ``UART_CONFIG_IRQ``”h]”hŒUART_CONFIG_IRQ”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjíubhŒ÷ indicates autoconfiguration of the interrupt signal, which should be probed using standard kernel autoprobing techniques. This is not necessary on platforms where ports have interrupts internally hard wired (eg, system on a chip implementations).”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M(hj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M-hj ubhÌ)�”}”(hŒcVerify the new serial port information contained within **serinfo** is suitable for this port type.”h]”(hŒ8Verify the new serial port information contained within ”…”�”}”(hjh²hh³Nh´Nubj )�”}”(hŒ **serinfo**”h]”hŒserinfo”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjubhŒ is suitable for this port type.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M1hj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M4hj ubhÌ)�”}”(hŒ|Perform any port specific IOCTLs. IOCTL commands must be defined using the standard numbering system found in .”h]”hŒ|Perform any port specific IOCTLs. IOCTL commands must be defined using the standard numbering system found in .”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M8hj ubhÌ)�”}”(hŒ,Locking: none. Interrupts: caller dependent.”h]”hŒ,Locking: none. Interrupts: caller dependent.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M;hj ubhÌ)�”}”(hŒ¼Called by kgdb to perform the minimal hardware initialization needed to support **poll_put_char\(\)** and **poll_get_char\(\)**. Unlike **startup\(\)**, this should not request interrupts.”h]”(hŒPCalled by kgdb to perform the minimal hardware initialization needed to support ”…”�”}”(hjgh²hh³Nh´Nubj )�”}”(hŒ**poll_put_char\(\)**”h]”hŒpoll_put_char()”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjgubhŒ and ”…”�”}”(hjgh²hh³Nh´Nubj )�”}”(hŒ**poll_get_char\(\)**”h]”hŒpoll_get_char()”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjgubhŒ . Unlike ”…”�”}”(hjgh²hh³Nh´Nubj )�”}”(hŒ**startup\(\)**”h]”hŒ startup()”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjgubhŒ%, this should not request interrupts.”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´M?hj ubhÌ)�”}”(hŒBLocking: ``tty_mutex`` and tty_port->mutex taken. Interrupts: n/a.”h]”(hŒ Locking: ”…”�”}”(hj¬h²hh³Nh´Nubjó)�”}”(hŒ ``tty_mutex``”h]”hŒ tty_mutex”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¬ubhŒ, and tty_port->mutex taken. Interrupts: n/a.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MChj ubhÌ)�”}”(hŒ�Called by kgdb to write a single character **ch** directly to the serial **port**. It can and should block until there is space in the TX FIFO.”h]”(hŒ+Called by kgdb to write a single character ”…”�”}”(hjÍh²hh³Nh´Nubj )�”}”(hŒ**ch**”h]”hŒch”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÍubhŒ directly to the serial ”…”�”}”(hjÍh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÍubhŒ>. It can and should block until there is space in the TX FIFO.”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MGhj ubhÌ)�”}”(hŒELocking: none. Interrupts: caller dependent. This call must not sleep”h]”hŒELocking: none. Interrupts: caller dependent. This call must not sleep”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MJhj ubhÌ)�”}”(hŒ¸Called by kgdb to read a single character directly from the serial port. If data is available, it should be returned; otherwise the function should return ``NO_POLL_CHAR`` immediately.”h]”(hŒ›Called by kgdb to read a single character directly from the serial port. If data is available, it should be returned; otherwise the function should return ”…”�”}”(hjh²hh³Nh´Nubjó)�”}”(hŒ``NO_POLL_CHAR``”h]”hŒ NO_POLL_CHAR”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubhŒ immediately.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MOhj ubhÌ)�”}”(hŒELocking: none. Interrupts: caller dependent. This call must not sleep”h]”hŒELocking: none. Interrupts: caller dependent. This call must not sleep”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:65: ./include/linux/serial_core.h”h´MShj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j h³jg h´K*hjÌh²hubeh}”(h]”Œuart-ops”ah ]”h"]”Œuart_ops”ah$]”h&]”uh1hµhh·h²hh³hÊh´K?ubh¶)�”}”(hhh]”(h»)�”}”(hŒOther functions”h]”hŒOther functions”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjMh²hh³hÊh´KEubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_write_wakeup (C function)”Œc.uart_write_wakeup”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ/void uart_write_wakeup (struct uart_port *port)”h]”jû)�”}”(hŒ.void uart_write_wakeup(struct uart_port *port)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jwhjsh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Khubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjsh²hh³jˆh´Khubj$)�”}”(hŒuart_write_wakeup”h]”j*)�”}”(hŒuart_write_wakeup”h]”hŒuart_write_wakeup”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj—ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjsh²hh³jˆh´KhubhŒdesc_parameterlist”“”)�”}”(hŒ(struct uart_port *port)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj·ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”Œ identifier”Œ reftarget”jÛŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jôŒ ASTIdentifier”“”)�”}”jïj�sbŒc.uart_write_wakeup”†”asbuh1hhj·ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj·ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jhj·ubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj±ubah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjsh²hh³jˆh´Khubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjoh²hh³jˆh´Khubah}”(h]”jjah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jˆh´Khhjlh²hubjV)�”}”(hhh]”hÌ)�”}”(hŒschedule write processing”h]”hŒschedule write processing”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´KhhjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjlh²hh³jˆh´Khubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�jbj‘jbj’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXq**Parameters** ``struct uart_port *port`` port to be processed **Description** This routine is used by the interrupt handler to schedule processing in the software interrupt portion of the driver. A driver is expected to call this function when the number of characters in the transmit buffer have dropped below a threshold. Locking: **port->lock** should be held”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjlh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Klhjfubjâ)�”}”(hhh]”jç)�”}”(hŒ0``struct uart_port *port`` port to be processed ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hj‹h]”hŒstruct uart_port *port”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Kihj…ubj )�”}”(hhh]”hÌ)�”}”(hŒport to be processed”h]”hŒport to be processed”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Kihj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j h´Kihj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjfubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjÆh]”hŒ Description”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´KkhjfubhÌ)�”}”(hŒõThis routine is used by the interrupt handler to schedule processing in the software interrupt portion of the driver. A driver is expected to call this function when the number of characters in the transmit buffer have dropped below a threshold.”h]”hŒõThis routine is used by the interrupt handler to schedule processing in the software interrupt portion of the driver. A driver is expected to call this function when the number of characters in the transmit buffer have dropped below a threshold.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´KjhjfubhÌ)�”}”(hŒ&Locking: **port->lock** should be held”h]”(hŒ Locking: ”…”�”}”(hjëh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjëubhŒ should be held”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Kohjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ uart_update_timeout (C function)”Œc.uart_update_timeout”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒXvoid uart_update_timeout (struct uart_port *port, unsigned int cflag, unsigned int baud)”h]”jû)�”}”(hŒWvoid uart_update_timeout(struct uart_port *port, unsigned int cflag, unsigned int baud)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(h²hh³j:h´M²ubj$)�”}”(hŒuart_update_timeout”h]”j*)�”}”(hŒuart_update_timeout”h]”hŒuart_update_timeout”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjIubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj(h²hh³j:h´M²ubj°)�”}”(hŒ?(struct uart_port *port, unsigned int cflag, unsigned int baud)”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j‰Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjOsbŒc.uart_update_timeout”†”asbuh1hhjeubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubj)�”}”(hjh]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjeubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjaubj¶)�”}”(hŒunsigned int cflag”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj×ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj×ubj*)�”}”(hŒcflag”h]”hŒcflag”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjaubj¶)�”}”(hŒunsigned int baud”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj(ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj(ubj*)�”}”(hŒbaud”h]”hŒbaud”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjaubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj(h²hh³j:h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj$h²hh³j:h´M²ubah}”(h]”jah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j:h´M²hj!h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ(update per-port frame timing information”h]”hŒ(update per-port frame timing information”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M²hj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj!h²hh³j:h´M²ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j¦j‘j¦j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXÚ**Parameters** ``struct uart_port *port`` uart_port structure describing the port ``unsigned int cflag`` termios cflag value ``unsigned int baud`` speed of the port **Description** Set the **port** frame timing information from which the FIFO timeout value is derived. The **cflag** value should reflect the actual hardware settings as number of bits, parity, stop bits and baud rate is taken into account here. Locking: caller is expected to take **port->lock**”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj°h]”hŒ Parameters”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¶hjªubjâ)�”}”(hhh]”(jç)�”}”(hŒC``struct uart_port *port`` uart_port structure describing the port ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hjÏh]”hŒstruct uart_port *port”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M³hjÉubj )�”}”(hhh]”hÌ)�”}”(hŒ'uart_port structure describing the port”h]”hŒ'uart_port structure describing the port”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jäh´M³hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jäh´M³hjÆubjç)�”}”(hŒ+``unsigned int cflag`` termios cflag value ”h]”(jí)�”}”(hŒ``unsigned int cflag``”h]”jó)�”}”(hjh]”hŒunsigned int cflag”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M´hjubj )�”}”(hhh]”hÌ)�”}”(hŒtermios cflag value”h]”hŒtermios cflag value”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jh´M´hjÆubjç)�”}”(hŒ(``unsigned int baud`` speed of the port ”h]”(jí)�”}”(hŒ``unsigned int baud``”h]”jó)�”}”(hjAh]”hŒunsigned int baud”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mµhj;ubj )�”}”(hhh]”hÌ)�”}”(hŒspeed of the port”h]”hŒspeed of the port”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVh´MµhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jVh´MµhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjªubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hj|h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M·hjªubhÌ)�”}”(hŒæSet the **port** frame timing information from which the FIFO timeout value is derived. The **cflag** value should reflect the actual hardware settings as number of bits, parity, stop bits and baud rate is taken into account here.”h]”(hŒSet the ”…”�”}”(hj’h²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj’ubhŒL frame timing information from which the FIFO timeout value is derived. The ”…”�”}”(hj’h²hh³Nh´Nubj )�”}”(hŒ **cflag**”h]”hŒcflag”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj’ubhŒ� value should reflect the actual hardware settings as number of bits, parity, stop bits and baud rate is taken into account here.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¶hjªubhÌ)�”}”(hŒ2Locking: caller is expected to take **port->lock**”h]”(hŒ$Locking: caller is expected to take ”…”�”}”(hjÅh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mºhjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_get_baud_rate (C function)”Œc.uart_get_baud_rate”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ’unsigned int uart_get_baud_rate (struct uart_port *port, struct ktermios *termios, const struct ktermios *old, unsigned int min, unsigned int max)”h]”jû)�”}”(hŒ‘unsigned int uart_get_baud_rate(struct uart_port *port, struct ktermios *termios, const struct ktermios *old, unsigned int min, unsigned int max)”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjþh²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþh²hh³jh´MÉubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjþh²hh³jh´MÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjþh²hh³jh´MÉubj$)�”}”(hŒuart_get_baud_rate”h]”j*)�”}”(hŒuart_get_baud_rate”h]”hŒuart_get_baud_rate”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj;ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjþh²hh³jh´MÉubj°)�”}”(hŒr(struct uart_port *port, struct ktermios *termios, const struct ktermios *old, unsigned int min, unsigned int max)”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j{Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjAsbŒc.uart_get_baud_rate”†”asbuh1hhjWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubj)�”}”(hjh]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjWubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjSubj¶)�”}”(hŒstruct ktermios *termios”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubh)�”}”(hhh]”j*)�”}”(hŒktermios”h]”hŒktermios”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jíŒmodname”NŒ classname”Njójö)�”}”jù]”j•Œc.uart_get_baud_rate”†”asbuh1hhjÉubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubj)�”}”(hjh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÉubj*)�”}”(hŒtermios”h]”hŒtermios”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjSubj¶)�”}”(hŒconst struct ktermios *old”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubh)�”}”(hhh]”j*)�”}”(hŒktermios”h]”hŒktermios”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jyŒmodname”NŒ classname”Njójö)�”}”jù]”j•Œc.uart_get_baud_rate”†”asbuh1hhj9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubj)�”}”(hjh]”hŒ*”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj9ubj*)�”}”(hŒold”h]”hŒold”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjSubj¶)�”}”(hŒunsigned int min”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÅubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅubj*)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjSubj¶)�”}”(hŒunsigned int max”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjubj*)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjSubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjþh²hh³jh´MÉubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjúh²hh³jh´MÉubah}”(h]”jõah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jh´MÉhj÷h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ&return baud rate for a particular port”h]”hŒ&return baud rate for a particular port”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÉhjyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj÷h²hh³jh´MÉubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j”j‘j”j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXV**Parameters** ``struct uart_port *port`` uart_port structure describing the port in question. ``struct ktermios *termios`` desired termios settings ``const struct ktermios *old`` old termios (or ``NULL``) ``unsigned int min`` minimum acceptable baud rate ``unsigned int max`` maximum acceptable baud rate **Description** Decode the termios structure into a numeric baud rate, taking account of the magic 38400 baud rate (with spd_* flags), and mapping the ``B0`` rate to 9600 baud or min argument, whichever is greater. If the new baud rate is invalid, try the **old** termios setting. If it's still invalid, clip to the nearest chip supported rate. The **termios** structure is updated to reflect the baud rate we're actually going to be using. Don't do this for the case where B0 is requested ("hang up"). Locking: caller dependent”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjžh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÍhj˜ubjâ)�”}”(hhh]”(jç)�”}”(hŒP``struct uart_port *port`` uart_port structure describing the port in question. ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hj½h]”hŒstruct uart_port *port”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÊhj·ubj )�”}”(hhh]”hÌ)�”}”(hŒ4uart_port structure describing the port in question.”h]”hŒ4uart_port structure describing the port in question.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒh´MÊhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÒh´MÊhj´ubjç)�”}”(hŒ6``struct ktermios *termios`` desired termios settings ”h]”(jí)�”}”(hŒ``struct ktermios *termios``”h]”jó)�”}”(hjöh]”hŒstruct ktermios *termios”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MËhjðubj )�”}”(hhh]”hÌ)�”}”(hŒdesired termios settings”h]”hŒdesired termios settings”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MËhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j h´MËhj´ubjç)�”}”(hŒ9``const struct ktermios *old`` old termios (or ``NULL``) ”h]”(jí)�”}”(hŒ``const struct ktermios *old``”h]”jó)�”}”(hj/ h]”hŒconst struct ktermios *old”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÌhj) ubj )�”}”(hhh]”hÌ)�”}”(hŒold termios (or ``NULL``)”h]”(hŒold termios (or ”…”�”}”(hjH h²hh³Nh´Nubjó)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjH ubhŒ)”…”�”}”(hjH h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jD h´MÌhjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj) ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jD h´MÌhj´ubjç)�”}”(hŒ2``unsigned int min`` minimum acceptable baud rate ”h]”(jí)�”}”(hŒ``unsigned int min``”h]”jó)�”}”(hjz h]”hŒunsigned int min”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÍhjt ubj )�”}”(hhh]”hÌ)�”}”(hŒminimum acceptable baud rate”h]”hŒminimum acceptable baud rate”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j� h´MÍhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j� h´MÍhj´ubjç)�”}”(hŒ2``unsigned int max`` maximum acceptable baud rate ”h]”(jí)�”}”(hŒ``unsigned int max``”h]”jó)�”}”(hj³ h]”hŒunsigned int max”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÎhj­ ubj )�”}”(hhh]”hÌ)�”}”(hŒmaximum acceptable baud rate”h]”hŒmaximum acceptable baud rate”…”�”}”(hjÌ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈ h´MÎhjÉ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÈ h´MÎhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj˜ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjî h]”hŒ Description”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÐhj˜ubhÌ)�”}”(hŒÆDecode the termios structure into a numeric baud rate, taking account of the magic 38400 baud rate (with spd_* flags), and mapping the ``B0`` rate to 9600 baud or min argument, whichever is greater.”h]”(hŒ‡Decode the termios structure into a numeric baud rate, taking account of the magic 38400 baud rate (with spd_* flags), and mapping the ”…”�”}”(hj!h²hh³Nh´Nubjó)�”}”(hŒ``B0``”h]”hŒB0”…”�”}”(hj !h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj!ubhŒ9 rate to 9600 baud or min argument, whichever is greater.”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÏhj˜ubhÌ)�”}”(hŒ�If the new baud rate is invalid, try the **old** termios setting. If it's still invalid, clip to the nearest chip supported rate.”h]”(hŒ)If the new baud rate is invalid, try the ”…”�”}”(hj%!h²hh³Nh´Nubj )�”}”(hŒ**old**”h]”hŒold”…”�”}”(hj-!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj%!ubhŒS termios setting. If it’s still invalid, clip to the nearest chip supported rate.”…”�”}”(hj%!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÓhj˜ubhÌ)�”}”(hŒ�The **termios** structure is updated to reflect the baud rate we're actually going to be using. Don't do this for the case where B0 is requested ("hang up").”h]”(hŒThe ”…”�”}”(hjF!h²hh³Nh´Nubj )�”}”(hŒ **termios**”h]”hŒtermios”…”�”}”(hjN!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjF!ubhŒ– structure is updated to reflect the baud rate we’re actually going to be using. Don’t do this for the case where B0 is requested (“hang upâ€�).”…”�”}”(hjF!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÖhj˜ubhÌ)�”}”(hŒLocking: caller dependent”h]”hŒLocking: caller dependent”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÚhj˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_get_divisor (C function)”Œc.uart_get_divisor”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒIunsigned int uart_get_divisor (struct uart_port *port, unsigned int baud)”h]”jû)�”}”(hŒHunsigned int uart_get_divisor(struct uart_port *port, unsigned int baud)”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj–!h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj’!h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’!h²hh³j¤!h´M*ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hj³!h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj’!h²hh³j¤!h´M*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj’!h²hh³j¤!h´M*ubj$)�”}”(hŒuart_get_divisor”h]”j*)�”}”(hŒuart_get_divisor”h]”hŒuart_get_divisor”…”�”}”(hjÓ!h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÏ!ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj’!h²hh³j¤!h´M*ubj°)�”}”(hŒ+(struct uart_port *port, unsigned int baud)”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjï!h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjë!ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü!h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjë!ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj "ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j"Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÕ!sbŒc.uart_get_divisor”†”asbuh1hhjë!ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjë!ub•kj)�”}”(hjh]”hŒ*”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjë!ubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hjH"h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjë!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjç!ubj¶)�”}”(hŒunsigned int baud”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hja"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]"ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]"ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hj}"h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj]"ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹"h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj]"ubj*)�”}”(hŒbaud”h]”hŒbaud”…”�”}”(hj™"h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj]"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjç!ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj’!h²hh³j¤!h´M*ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjŽ!h²hh³j¤!h´M*ubah}”(h]”j‰!ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j¤!h´M*hj‹!h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒreturn uart clock divisor”h]”hŒreturn uart clock divisor”…”�”}”(hjÃ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M*hjÀ"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‹!h²hh³j¤!h´M*ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�jÛ"j‘jÛ"j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXZ**Parameters** ``struct uart_port *port`` uart_port structure describing the port ``unsigned int baud`` desired baud rate **Description** Calculate the divisor (baud_base / baud) for the specified **baud**, appropriately rounded. If 38400 baud and custom divisor is selected, return the custom divisor instead. Locking: caller dependent”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjå"h]”hŒ Parameters”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjã"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M.hjß"ubjâ)�”}”(hhh]”(jç)�”}”(hŒC``struct uart_port *port`` uart_port structure describing the port ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hj#h]”hŒstruct uart_port *port”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M+hjþ"ubj )�”}”(hhh]”hÌ)�”}”(hŒ'uart_port structure describing the port”h]”hŒ'uart_port structure describing the port”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#h´M+hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j#h´M+hjû"ubjç)�”}”(hŒ(``unsigned int baud`` desired baud rate ”h]”(jí)�”}”(hŒ``unsigned int baud``”h]”jó)�”}”(hj=#h]”hŒunsigned int baud”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj;#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M,hj7#ubj )�”}”(hhh]”hÌ)�”}”(hŒdesired baud rate”h]”hŒdesired baud rate”…”�”}”(hjV#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR#h´M,hjS#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj7#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jR#h´M,hjû"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjß"ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjx#h]”hŒ Description”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjv#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M.hjß"ubhÌ)�”}”(hŒ[Calculate the divisor (baud_base / baud) for the specified **baud**, appropriately rounded.”h]”(hŒ;Calculate the divisor (baud_base / baud) for the specified ”…”�”}”(hjŽ#h²hh³Nh´Nubj )�”}”(hŒ**baud**”h]”hŒbaud”…”�”}”(hj–#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjŽ#ubhŒ, appropriately rounded.”…”�”}”(hjŽ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M-hjß"ubhÌ)�”}”(hŒPIf 38400 baud and custom divisor is selected, return the custom divisor instead.”h]”hŒPIf 38400 baud and custom divisor is selected, return the custom divisor instead.”…”�”}”(hj¯#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M0hjß"ubhÌ)�”}”(hŒLocking: caller dependent”h]”hŒLocking: caller dependent”…”�”}”(hj¾#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M3hjß"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_get_lsr_info (C function)”Œc.uart_get_lsr_info”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒdint uart_get_lsr_info (struct tty_struct *tty, struct uart_state *state, unsigned int __user *value)”h]”jû)�”}”(hŒcint uart_get_lsr_info(struct tty_struct *tty, struct uart_state *state, unsigned int __user *value)”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjí#h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjé#h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü#h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé#h²hh³jû#h´Mubj$)�”}”(hŒuart_get_lsr_info”h]”j*)�”}”(hŒuart_get_lsr_info”h]”hŒuart_get_lsr_info”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj $ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjé#h²hh³jû#h´Mubj°)�”}”(hŒN(struct tty_struct *tty, struct uart_state *state, unsigned int __user *value)”h]”(j¶)�”}”(hŒstruct tty_struct *tty”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj&$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&$ubh)�”}”(hhh]”j*)�”}”(hŒ tty_struct”h]”hŒ tty_struct”…”�”}”(hjH$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjE$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jJ$Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïj$sbŒc.uart_get_lsr_info”†”asbuh1hhj&$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&$ubj)�”}”(hjh]”hŒ*”…”�”}”(hjv$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&$ubj*)�”}”(hŒtty”h]”hŒtty”…”�”}”(hjƒ$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj&$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"$ubj¶)�”}”(hŒstruct uart_state *state”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjœ$h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj˜$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜$ubh)�”}”(hhh]”j*)�”}”(hŒ uart_state”h]”hŒ uart_state”…”�”}”(hjº$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj·$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j¼$Œmodname”NŒ classname”Njójö)�”}”jù]”jd$Œc.uart_get_lsr_info”†”asbuh1hhj˜$ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜$ubj)�”}”(hjh]”hŒ*”…”�”}”(hjæ$h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜$ubj*)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjó$h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj˜$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"$ubj¶)�”}”(hŒunsigned int __user *value”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj %h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hj(%h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj%ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubhŒ__user”…”�”}”(hj%h²hh³Nh´Nubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubj)�”}”(hjh]”hŒ*”…”�”}”(hjV%h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj%ubj*)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjc%h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"$ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjé#h²hh³jû#h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjå#h²hh³jû#h´Mubah}”(h]”jà#ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jû#h´Mhjâ#h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒget line status register info”h]”hŒget line status register info”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MhjŠ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjâ#h²hh³jû#h´Mubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j¥%j‘j¥%j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hŒ³**Parameters** ``struct tty_struct *tty`` tty associated with the UART ``struct uart_state *state`` UART being queried ``unsigned int __user *value`` returned modem value”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¯%h]”hŒ Parameters”…”�”}”(hj±%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj­%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mhj©%ubjâ)�”}”(hhh]”(jç)�”}”(hŒ8``struct tty_struct *tty`` tty associated with the UART ”h]”(jí)�”}”(hŒ``struct tty_struct *tty``”h]”jó)�”}”(hjÎ%h]”hŒstruct tty_struct *tty”…”�”}”(hjÐ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÌ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MhjÈ%ubj )�”}”(hhh]”hÌ)�”}”(hŒtty associated with the UART”h]”hŒtty associated with the UART”…”�”}”(hjç%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jã%h´Mhjä%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÈ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jã%h´MhjÅ%ubjç)�”}”(hŒ0``struct uart_state *state`` UART being queried ”h]”(jí)�”}”(hŒ``struct uart_state *state``”h]”jó)�”}”(hj&h]”hŒstruct uart_state *state”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mhj&ubj )�”}”(hhh]”hÌ)�”}”(hŒUART being queried”h]”hŒUART being queried”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&h´Mhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j&h´MhjÅ%ubjç)�”}”(hŒ3``unsigned int __user *value`` returned modem value”h]”(jí)�”}”(hŒ``unsigned int __user *value``”h]”jó)�”}”(hj@&h]”hŒunsigned int __user *value”…”�”}”(hjB&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj>&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mhj:&ubj )�”}”(hhh]”hÌ)�”}”(hŒreturned modem value”h]”hŒreturned modem value”…”�”}”(hjY&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MhjV&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj:&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jU&h´MhjÅ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj©%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_console_write (C function)”Œc.uart_console_write”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ‡void uart_console_write (struct uart_port *port, const char *s, unsigned int count, void (*putchar)(struct uart_port *, unsigned char))”h]”jû)�”}”(hŒ…void uart_console_write(struct uart_port *port, const char *s, unsigned int count, void (*putchar)(struct uart_port*, unsigned char))”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjš&h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj–&h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MBubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj–&h²hh³j¨&h´MBubj$)�”}”(hŒuart_console_write”h]”j*)�”}”(hŒuart_console_write”h]”hŒuart_console_write”…”�”}”(hj»&h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj·&ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj–&h²hh³j¨&h´MBubj°)�”}”(hŒn(struct uart_port *port, const char *s, unsigned int count, void (*putchar)(struct uart_port*, unsigned char))”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj×&h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÓ&ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä&h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ&ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjõ&h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjò&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j÷&Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïj½&sbŒc.uart_console_write”†”asbuh1hhjÓ&ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ&ubj)�”}”(hjh]”hŒ*”…”�”}”(hj#'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÓ&ubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hj0'h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÓ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÏ&ubj¶)�”}”(hŒ const char *s”h]”(j)�”}”(hj?h]”hŒconst”…”�”}”(hjI'h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjE'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE'ubjx)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjd'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjE'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE'ubj)�”}”(hjh]”hŒ*”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjE'ubj*)�”}”(hŒs”h]”hŒs”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjE'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÏ&ubj¶)�”}”(hŒunsigned int count”h]”(jx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¦'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¢'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢'ubjx)�”}”(hŒint”h]”hŒint”…”�”}”(hjÂ'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¢'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ'h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¢'ubj*)�”}”(hŒcount”h]”hŒcount”…”�”}”(hjÞ'h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj¢'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÏ&ubj¶)�”}”(hŒ1void (*putchar)(struct uart_port*, unsigned char)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj÷'h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjó'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hŒ(”h]”hŒ(”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hjh]”hŒ*”…”�”}”(hj!(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj*)�”}”(hŒputchar”h]”hŒputchar”…”�”}”(hj.(h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjó'ubj)�”}”(hŒ)”h]”hŒ)”…”�”}”(hj<(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hj(h]”hŒ(”…”�”}”(hjJ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hjh]”hŒstruct”…”�”}”(hjW(h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hju(h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjr(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jw(Œmodname”NŒ classname”Njójö)�”}”jù]”j'Œc.uart_console_write”†”asbuh1hhjó'ubj)�”}”(hjh]”hŒ*”…”�”}”(hj“(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hŒ,”h]”hŒ,”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubjx)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¼(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjó'ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubjx)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjØ(h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjó'ubj)�”}”(hj>(h]”hŒ)”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjó'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÏ&ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj–&h²hh³j¨&h´MBubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj’&h²hh³j¨&h´MBubah}”(h]”j�&ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j¨&h´MBhj�&h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ(write a console message to a serial port”h]”hŒ(write a console message to a serial port”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MBhj )h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj�&h²hh³j¨&h´MBubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j')j‘j')j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hX**Parameters** ``struct uart_port *port`` the port to write the message ``const char *s`` array of characters ``unsigned int count`` number of characters in string to write ``void (*putchar)(struct uart_port *, unsigned char)`` function to write character to port”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj1)h]”hŒ Parameters”…”�”}”(hj3)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj/)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MFhj+)ubjâ)�”}”(hhh]”(jç)�”}”(hŒ9``struct uart_port *port`` the port to write the message ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hjP)h]”hŒstruct uart_port *port”…”�”}”(hjR)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjN)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MChjJ)ubj )�”}”(hhh]”hÌ)�”}”(hŒthe port to write the message”h]”hŒthe port to write the message”…”�”}”(hji)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je)h´MChjf)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³je)h´MChjG)ubjç)�”}”(hŒ&``const char *s`` array of characters ”h]”(jí)�”}”(hŒ``const char *s``”h]”jó)�”}”(hj‰)h]”hŒ const char *s”…”�”}”(hj‹)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‡)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MDhjƒ)ubj )�”}”(hhh]”hÌ)�”}”(hŒarray of characters”h]”hŒarray of characters”…”�”}”(hj¢)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jž)h´MDhjŸ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jž)h´MDhjG)ubjç)�”}”(hŒ?``unsigned int count`` number of characters in string to write ”h]”(jí)�”}”(hŒ``unsigned int count``”h]”jó)�”}”(hjÂ)h]”hŒunsigned int count”…”�”}”(hjÄ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÀ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MEhj¼)ubj )�”}”(hhh]”hÌ)�”}”(hŒ'number of characters in string to write”h]”hŒ'number of characters in string to write”…”�”}”(hjÛ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×)h´MEhjØ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j×)h´MEhjG)ubjç)�”}”(hŒZ``void (*putchar)(struct uart_port *, unsigned char)`` function to write character to port”h]”(jí)�”}”(hŒ6``void (*putchar)(struct uart_port *, unsigned char)``”h]”jó)�”}”(hjû)h]”hŒ2void (*putchar)(struct uart_port *, unsigned char)”…”�”}”(hjý)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjù)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MGhjõ)ubj )�”}”(hhh]”hÌ)�”}”(hŒ#function to write character to port”h]”hŒ#function to write character to port”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MFhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j*h´MGhjG)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj+)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ uart_parse_earlycon (C function)”Œc.uart_parse_earlycon”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒbint uart_parse_earlycon (char *p, enum uart_iotype *iotype, resource_size_t *addr, char **options)”h]”jû)�”}”(hŒaint uart_parse_earlycon(char *p, enum uart_iotype *iotype, resource_size_t *addr, char **options)”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjQ*h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MWubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjQ*h²hh³jc*h´MWubj$)�”}”(hŒuart_parse_earlycon”h]”j*)�”}”(hŒuart_parse_earlycon”h]”hŒuart_parse_earlycon”…”�”}”(hjv*h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjr*ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjQ*h²hh³jc*h´MWubj°)�”}”(hŒJ(char *p, enum uart_iotype *iotype, resource_size_t *addr, char **options)”h]”(j¶)�”}”(hŒchar *p”h]”(jx)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj’*h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjŽ*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ*ubj)�”}”(hjh]”hŒ*”…”�”}”(hj®*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŽ*ubj*)�”}”(hjh]”hŒp”…”�”}”(hj»*h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjŽ*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjŠ*ubj¶)�”}”(hŒenum uart_iotype *iotype”h]”(j)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÓ*h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÏ*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá*h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ*ubh)�”}”(hhh]”j*)�”}”(hŒ uart_iotype”h]”hŒ uart_iotype”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjï*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jô*Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjx*sbŒc.uart_parse_earlycon”†”asbuh1hhjÏ*ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ*ubj)�”}”(hjh]”hŒ*”…”�”}”(hj +h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÏ*ubj*)�”}”(hŒiotype”h]”hŒiotype”…”�”}”(hj-+h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÏ*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjŠ*ubj¶)�”}”(hŒresource_size_t *addr”h]”(h)�”}”(hhh]”j*)�”}”(hŒresource_size_t”h]”hŒresource_size_t”…”�”}”(hjI+h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjF+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jK+Œmodname”NŒ classname”Njójö)�”}”jù]”j+Œc.uart_parse_earlycon”†”asbuh1hhjB+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB+ubj)�”}”(hjh]”hŒ*”…”�”}”(hju+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjB+ubj*)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj‚+h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjB+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjŠ*ubj¶)�”}”(hŒchar **options”h]”(jx)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj›+h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj—+ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—+ubj)�”}”(hjh]”hŒ*”…”�”}”(hj·+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—+ubj)�”}”(hjh]”hŒ*”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj—+ubj*)�”}”(hŒoptions”h]”hŒoptions”…”�”}”(hjÑ+h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj—+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjŠ*ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjQ*h²hh³jc*h´MWubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjM*h²hh³jc*h´MWubah}”(h]”jH*ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jc*h´MWhjJ*h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒParse earlycon options”h]”hŒParse earlycon options”…”�”}”(hjû+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MWhjø+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjJ*h²hh³jc*h´MWubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j,j‘j,j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXÙ**Parameters** ``char *p`` ptr to 2nd field (ie., just beyond ',') ``enum uart_iotype *iotype`` ptr for decoded iotype (out) ``resource_size_t *addr`` ptr for decoded mapbase/iobase (out) ``char **options`` ptr for field; ``NULL`` if not present (out) **Description** Decodes earlycon kernel command line parameters of the form: * earlycon=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,, * console=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,, The optional form: * earlycon=,0x, * console=,0x, is also accepted; the returned **iotype** will be ``UPIO_MEM``. **Return** 0 on success or -``EINVAL`` on failure”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj,h]”hŒ Parameters”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M[hj,ubjâ)�”}”(hhh]”(jç)�”}”(hŒ:``char *p`` ptr to 2nd field (ie., just beyond ',') ”h]”(jí)�”}”(hŒ ``char *p``”h]”jó)�”}”(hj<,h]”hŒchar *p”…”�”}”(hj>,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj:,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MXhj6,ubj )�”}”(hhh]”hÌ)�”}”(hŒ-ptr to 2nd field (ie., just beyond ',')”h]”hŒ1ptr to 2nd field (ie., just beyond ‘,’)”…”�”}”(hjU,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQ,h´MXhjR,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj6,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jQ,h´MXhj3,ubjç)�”}”(hŒ:``enum uart_iotype *iotype`` ptr for decoded iotype (out) ”h]”(jí)�”}”(hŒ``enum uart_iotype *iotype``”h]”jó)�”}”(hju,h]”hŒenum uart_iotype *iotype”…”�”}”(hjw,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjs,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MYhjo,ubj )�”}”(hhh]”hÌ)�”}”(hŒptr for decoded iotype (out)”h]”hŒptr for decoded iotype (out)”…”�”}”(hjŽ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠ,h´MYhj‹,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jŠ,h´MYhj3,ubjç)�”}”(hŒ?``resource_size_t *addr`` ptr for decoded mapbase/iobase (out) ”h]”(jí)�”}”(hŒ``resource_size_t *addr``”h]”jó)�”}”(hj®,h]”hŒresource_size_t *addr”…”�”}”(hj°,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¬,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MZhj¨,ubj )�”}”(hhh]”hÌ)�”}”(hŒ$ptr for decoded mapbase/iobase (out)”h]”hŒ$ptr for decoded mapbase/iobase (out)”…”�”}”(hjÇ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃ,h´MZhjÄ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÃ,h´MZhj3,ubjç)�”}”(hŒJ``char **options`` ptr for field; ``NULL`` if not present (out) ”h]”(jí)�”}”(hŒ``char **options``”h]”jó)�”}”(hjç,h]”hŒchar **options”…”�”}”(hjé,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjå,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M[hjá,ubj )�”}”(hhh]”hÌ)�”}”(hŒ6ptr for field; ``NULL`` if not present (out)”h]”(hŒptr for field; ”…”�”}”(hj-h²hh³Nh´Nubjó)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj-ubhŒ if not present (out)”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü,h´M[hjý,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jü,h´M[hj3,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj,ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hj4-h]”hŒ Description”…”�”}”(hj6-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj2-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M]hj,ubjâ)�”}”(hhh]”(jç)�”}”(hŒÚDecodes earlycon kernel command line parameters of the form: * earlycon=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,, * console=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,, ”h]”(jí)�”}”(hŒ,io|mmio|mmio16|mmio32|mmio32be|mmio32native,,”h]”hÌ)�”}”(hjh-h]”hŒLearlycon=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,,”…”�”}”(hjj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M]hjf-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjc-ubj`)�”}”(hŒLconsole=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,, ”h]”hÌ)�”}”(hŒKconsole=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,,”h]”hŒKconsole=,io|mmio|mmio16|mmio32|mmio32be|mmio32native,,”…”�”}”(hj‚-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_-h´M^hj~-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjc-ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jZh³jw-h´M]hj`-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j_-h´M^hjJ-ubjç)�”}”(hŒ\The optional form: * earlycon=,0x, * console=,0x, ”h]”(jí)�”}”(hŒThe optional form:”h]”hŒThe optional form:”…”�”}”(hj¬-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mbhj¨-ubj )�”}”(hhh]”j[)�”}”(hhh]”(j`)�”}”(hŒ"earlycon=,0x,”h]”hÌ)�”}”(hjÃ-h]”hŒ"earlycon=,0x,”…”�”}”(hjÅ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MahjÁ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¾-ubj`)�”}”(hŒ"console=,0x, ”h]”hÌ)�”}”(hŒ!console=,0x,”h]”hŒ!console=,0x,”…”�”}”(hjÝ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jº-h´MbhjÙ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hj¾-ubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jZh³jÒ-h´Mahj»-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jº-h´MbhjJ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj,ubhÌ)�”}”(hŒ?is also accepted; the returned **iotype** will be ``UPIO_MEM``.”h]”(hŒis also accepted; the returned ”…”�”}”(hj .h²hh³Nh´Nubj )�”}”(hŒ **iotype**”h]”hŒiotype”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj .ubhŒ will be ”…”�”}”(hj .h²hh³Nh´Nubjó)�”}”(hŒ ``UPIO_MEM``”h]”hŒUPIO_MEM”…”�”}”(hj#.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj .ubhŒ.”…”�”}”(hj .h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mdhj,ubhÌ)�”}”(hŒ **Return**”h]”j )�”}”(hj>.h]”hŒReturn”…”�”}”(hj@.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj<.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mfhj,ubhÌ)�”}”(hŒ&0 on success or -``EINVAL`` on failure”h]”(hŒ0 on success or -”…”�”}”(hjT.h²hh³Nh´Nubjó)�”}”(hŒ ``EINVAL``”h]”hŒEINVAL”…”�”}”(hj\.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjT.ubhŒ on failure”…”�”}”(hjT.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mghj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_parse_options (C function)”Œc.uart_parse_options”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ[void uart_parse_options (const char *options, int *baud, int *parity, int *bits, int *flow)”h]”jû)�”}”(hŒZvoid uart_parse_options(const char *options, int *baud, int *parity, int *bits, int *flow)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•.h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‘.h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M”ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‘.h²hh³j£.h´M”ubj$)�”}”(hŒuart_parse_options”h]”j*)�”}”(hŒuart_parse_options”h]”hŒuart_parse_options”…”�”}”(hj¶.h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj².ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj‘.h²hh³j£.h´M”ubj°)�”}”(hŒC(const char *options, int *baud, int *parity, int *bits, int *flow)”h]”(j¶)�”}”(hŒconst char *options”h]”(j)�”}”(hj?h]”hŒconst”…”�”}”(hjÒ.h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÎ.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ.ubjx)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjí.h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjÎ.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû.h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ.ubj)�”}”(hjh]”hŒ*”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÎ.ubj*)�”}”(hŒoptions”h]”hŒoptions”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÎ.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÊ.ubj¶)�”}”(hŒ int *baud”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hj//h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj+/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+/ubj)�”}”(hjh]”hŒ*”…”�”}”(hjK/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj+/ubj*)�”}”(hŒbaud”h]”hŒbaud”…”�”}”(hjX/h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj+/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÊ.ubj¶)�”}”(hŒ int *parity”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjm/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm/ubj)�”}”(hjh]”hŒ*”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjm/ubj*)�”}”(hŒparity”h]”hŒparity”…”�”}”(hjš/h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjm/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÊ.ubj¶)�”}”(hŒ int *bits”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hj³/h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¯/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯/ubj)�”}”(hjh]”hŒ*”…”�”}”(hjÏ/h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯/ubj*)�”}”(hŒbits”h]”hŒbits”…”�”}”(hjÜ/h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj¯/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÊ.ubj¶)�”}”(hŒ int *flow”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjõ/h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjñ/ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ/ubj)�”}”(hjh]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjñ/ubj*)�”}”(hŒflow”h]”hŒflow”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjñ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÊ.ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj‘.h²hh³j£.h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj�.h²hh³j£.h´M”ubah}”(h]”jˆ.ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j£.h´M”hjŠ.h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ0Parse serial port baud/parity/bits/flow control.”h]”hŒ0Parse serial port baud/parity/bits/flow control.”…”�”}”(hjH0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M”hjE0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjŠ.h²hh³j£.h´M”ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j`0j‘j`0j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hX**Parameters** ``const char *options`` pointer to option string ``int *baud`` pointer to an 'int' variable for the baud rate. ``int *parity`` pointer to an 'int' variable for the parity. ``int *bits`` pointer to an 'int' variable for the number of data bits. ``int *flow`` pointer to an 'int' variable for the flow control character. **Description** uart_parse_options() decodes a string containing the serial console options. The format of the string is , eg: 115200n8r”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjj0h]”hŒ Parameters”…”�”}”(hjl0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjh0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M˜hjd0ubjâ)�”}”(hhh]”(jç)�”}”(hŒ1``const char *options`` pointer to option string ”h]”(jí)�”}”(hŒ``const char *options``”h]”jó)�”}”(hj‰0h]”hŒconst char *options”…”�”}”(hj‹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj‡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M•hjƒ0ubj )�”}”(hhh]”hÌ)�”}”(hŒpointer to option string”h]”hŒpointer to option string”…”�”}”(hj¢0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jž0h´M•hjŸ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jž0h´M•hj€0ubjç)�”}”(hŒ>``int *baud`` pointer to an 'int' variable for the baud rate. ”h]”(jí)�”}”(hŒ ``int *baud``”h]”jó)�”}”(hjÂ0h]”hŒ int *baud”…”�”}”(hjÄ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÀ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M–hj¼0ubj )�”}”(hhh]”hÌ)�”}”(hŒ/pointer to an 'int' variable for the baud rate.”h]”hŒ3pointer to an ‘int’ variable for the baud rate.”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×0h´M–hjØ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j×0h´M–hj€0ubjç)�”}”(hŒ=``int *parity`` pointer to an 'int' variable for the parity. ”h]”(jí)�”}”(hŒ``int *parity``”h]”jó)�”}”(hjû0h]”hŒ int *parity”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjù0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M—hjõ0ubj )�”}”(hhh]”hÌ)�”}”(hŒ,pointer to an 'int' variable for the parity.”h]”hŒ0pointer to an ‘int’ variable for the parity.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1h´M—hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j1h´M—hj€0ubjç)�”}”(hŒH``int *bits`` pointer to an 'int' variable for the number of data bits. ”h]”(jí)�”}”(hŒ ``int *bits``”h]”jó)�”}”(hj41h]”hŒ int *bits”…”�”}”(hj61h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj21ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M˜hj.1ubj )�”}”(hhh]”hÌ)�”}”(hŒ9pointer to an 'int' variable for the number of data bits.”h]”hŒ=pointer to an ‘int’ variable for the number of data bits.”…”�”}”(hjM1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jI1h´M˜hjJ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jI1h´M˜hj€0ubjç)�”}”(hŒK``int *flow`` pointer to an 'int' variable for the flow control character. ”h]”(jí)�”}”(hŒ ``int *flow``”h]”jó)�”}”(hjm1h]”hŒ int *flow”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjk1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M™hjg1ubj )�”}”(hhh]”hÌ)�”}”(hŒ, eg: 115200n8r”h]”hŒ’uart_parse_options() decodes a string containing the serial console options. The format of the string is , eg: 115200n8r”…”�”}”(hj¾1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mšhjd0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_set_options (C function)”Œc.uart_set_options”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒkint uart_set_options (struct uart_port *port, struct console *co, int baud, int parity, int bits, int flow)”h]”jû)�”}”(hŒjint uart_set_options(struct uart_port *port, struct console *co, int baud, int parity, int bits, int flow)”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjí1h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjé1h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M²ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü1h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjé1h²hh³jû1h´M²ubj$)�”}”(hŒuart_set_options”h]”j*)�”}”(hŒuart_set_options”h]”hŒuart_set_options”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj 2ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjé1h²hh³jû1h´M²ubj°)�”}”(hŒV(struct uart_port *port, struct console *co, int baud, int parity, int bits, int flow)”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj*2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj&2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj72h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&2ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjE2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jJ2Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïj2sbŒc.uart_set_options”†”asbuh1hhj&2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&2ubj)�”}”(hjh]”hŒ*”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj&2ubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hjƒ2h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj&2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubj¶)�”}”(hŒstruct console *co”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjœ2h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj˜2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜2ubh)�”}”(hhh]”j*)�”}”(hŒconsole”h]”hŒconsole”…”�”}”(hjº2h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj·2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j¼2Œmodname”NŒ classname”Njójö)�”}”jù]”jd2Œc.uart_set_options”†”asbuh1hhj˜2ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜2ubj)�”}”(hjh]”hŒ*”…”�”}”(hjæ2h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj˜2ubj*)�”}”(hŒco”h]”hŒco”…”�”}”(hjó2h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj˜2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubj¶)�”}”(hŒint baud”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj3ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj3ubj*)�”}”(hŒbaud”h]”hŒbaud”…”�”}”(hj(3h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubj¶)�”}”(hŒ int parity”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjA3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj=3ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj=3ubj*)�”}”(hŒparity”h]”hŒparity”…”�”}”(hj]3h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj=3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubj¶)�”}”(hŒint bits”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjv3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjr3ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjr3ubj*)�”}”(hŒbits”h]”hŒbits”…”�”}”(hj’3h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjr3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubj¶)�”}”(hŒint flow”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hj«3h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj§3ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹3h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj§3ubj*)�”}”(hŒflow”h]”hŒflow”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj§3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj"2ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjé1h²hh³jû1h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjå1h²hh³jû1h´M²ubah}”(h]”jà1ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jû1h´M²hjâ1h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ#setup the serial console parameters”h]”hŒ#setup the serial console parameters”…”�”}”(hjñ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M²hjî3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjâ1h²hh³jû1h´M²ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j 4j‘j 4j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXÃ**Parameters** ``struct uart_port *port`` pointer to the serial ports uart_port structure ``struct console *co`` console pointer ``int baud`` baud rate ``int parity`` parity character - 'n' (none), 'o' (odd), 'e' (even) ``int bits`` number of data bits ``int flow`` flow control character - 'r' (rts) **Description** Locking: Caller must hold console_list_lock in order to serialize early initialization of the serial-console lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj4h]”hŒ Parameters”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¶hj 4ubjâ)�”}”(hhh]”(jç)�”}”(hŒK``struct uart_port *port`` pointer to the serial ports uart_port structure ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hj24h]”hŒstruct uart_port *port”…”�”}”(hj44h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj04ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M³hj,4ubj )�”}”(hhh]”hÌ)�”}”(hŒ/pointer to the serial ports uart_port structure”h]”hŒ/pointer to the serial ports uart_port structure”…”�”}”(hjK4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG4h´M³hjH4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj,4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jG4h´M³hj)4ubjç)�”}”(hŒ'``struct console *co`` console pointer ”h]”(jí)�”}”(hŒ``struct console *co``”h]”jó)�”}”(hjk4h]”hŒstruct console *co”…”�”}”(hjm4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhji4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M´hje4ubj )�”}”(hhh]”hÌ)�”}”(hŒconsole pointer”h]”hŒconsole pointer”…”�”}”(hj„4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€4h´M´hj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhje4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j€4h´M´hj)4ubjç)�”}”(hŒ``int baud`` baud rate ”h]”(jí)�”}”(hŒ ``int baud``”h]”jó)�”}”(hj¤4h]”hŒint baud”…”�”}”(hj¦4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¢4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mµhjž4ubj )�”}”(hhh]”hÌ)�”}”(hŒ baud rate”h]”hŒ baud rate”…”�”}”(hj½4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹4h´Mµhjº4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjž4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j¹4h´Mµhj)4ubjç)�”}”(hŒD``int parity`` parity character - 'n' (none), 'o' (odd), 'e' (even) ”h]”(jí)�”}”(hŒ``int parity``”h]”jó)�”}”(hjÝ4h]”hŒ int parity”…”�”}”(hjß4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÛ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¶hj×4ubj )�”}”(hhh]”hÌ)�”}”(hŒ4parity character - 'n' (none), 'o' (odd), 'e' (even)”h]”hŒ@parity character - ‘n’ (none), ‘o’ (odd), ‘e’ (even)”…”�”}”(hjö4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò4h´M¶hjó4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj×4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jò4h´M¶hj)4ubjç)�”}”(hŒ!``int bits`` number of data bits ”h]”(jí)�”}”(hŒ ``int bits``”h]”jó)�”}”(hj5h]”hŒint bits”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M·hj5ubj )�”}”(hhh]”hÌ)�”}”(hŒnumber of data bits”h]”hŒnumber of data bits”…”�”}”(hj/5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+5h´M·hj,5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j+5h´M·hj)4ubjç)�”}”(hŒ0``int flow`` flow control character - 'r' (rts) ”h]”(jí)�”}”(hŒ ``int flow``”h]”jó)�”}”(hjO5h]”hŒint flow”…”�”}”(hjQ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjM5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¸hjI5ubj )�”}”(hhh]”hÌ)�”}”(hŒ"flow control character - 'r' (rts)”h]”hŒ&flow control character - ‘r’ (rts)”…”�”}”(hjh5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd5h´M¸hje5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jd5h´M¸hj)4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj 4ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjŠ5h]”hŒ Description”…”�”}”(hjŒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjˆ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mºhj 4ubhÌ)�”}”(hŒrLocking: Caller must hold console_list_lock in order to serialize early initialization of the serial-console lock.”h]”hŒrLocking: Caller must hold console_list_lock in order to serialize early initialization of the serial-console lock.”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¹hj 4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ!uart_register_driver (C function)”Œc.uart_register_driver”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ2int uart_register_driver (struct uart_driver *drv)”h]”jû)�”}”(hŒ1int uart_register_driver(struct uart_driver *drv)”h]”(jx)�”}”(hŒint”h]”hŒint”…”�”}”(hjÏ5h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjË5h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÑ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ5h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjË5h²hh³jÝ5h´MÑ ubj$)�”}”(hŒuart_register_driver”h]”j*)�”}”(hŒuart_register_driver”h]”hŒuart_register_driver”…”�”}”(hjð5h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjì5ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjË5h²hh³jÝ5h´MÑ ubj°)�”}”(hŒ(struct uart_driver *drv)”h]”j¶)�”}”(hŒstruct uart_driver *drv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubh)�”}”(hhh]”j*)�”}”(hŒ uart_driver”h]”hŒ uart_driver”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj'6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j,6Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjò5sbŒc.uart_register_driver”†”asbuh1hhj6ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubj)�”}”(hjh]”hŒ*”…”�”}”(hjX6h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj6ubj*)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hje6h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj6ubah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjË5h²hh³jÝ5h´MÑ ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjÇ5h²hh³jÝ5h´MÑ ubah}”(h]”jÂ5ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jÝ5h´MÑ hjÄ5h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ*register a driver with the uart core layer”h]”hŒ*register a driver with the uart core layer”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÑ hjŒ6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjÄ5h²hh³jÝ5h´MÑ ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j§6j‘j§6j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXà**Parameters** ``struct uart_driver *drv`` low level driver structure **Description** Register a uart driver with the core driver. We in turn register with the tty layer, and initialise the core driver per-port state. We have a proc file in /proc/tty/driver which is named after the normal driver. **drv->port** should be ``NULL``, and the per-port structures should be registered using uart_add_one_port() after this call has succeeded. Locking: none, Interrupts: enabled”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj±6h]”hŒ Parameters”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¯6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÕ hj«6ubjâ)�”}”(hhh]”jç)�”}”(hŒ7``struct uart_driver *drv`` low level driver structure ”h]”(jí)�”}”(hŒ``struct uart_driver *drv``”h]”jó)�”}”(hjÐ6h]”hŒstruct uart_driver *drv”…”�”}”(hjÒ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÎ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÒ hjÊ6ubj )�”}”(hhh]”hÌ)�”}”(hŒlow level driver structure”h]”hŒlow level driver structure”…”�”}”(hjé6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jå6h´MÒ hjæ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÊ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jå6h´MÒ hjÇ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj«6ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hj 7h]”hŒ Description”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÔ hj«6ubhÌ)�”}”(hŒƒRegister a uart driver with the core driver. We in turn register with the tty layer, and initialise the core driver per-port state.”h]”hŒƒRegister a uart driver with the core driver. We in turn register with the tty layer, and initialise the core driver per-port state.”…”�”}”(hj!7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÓ hj«6ubhÌ)�”}”(hŒOWe have a proc file in /proc/tty/driver which is named after the normal driver.”h]”hŒOWe have a proc file in /proc/tty/driver which is named after the normal driver.”…”�”}”(hj07h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÖ hj«6ubhÌ)�”}”(hŒ‹**drv->port** should be ``NULL``, and the per-port structures should be registered using uart_add_one_port() after this call has succeeded.”h]”(j )�”}”(hŒ **drv->port**”h]”hŒ drv->port”…”�”}”(hjC7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj?7ubhŒ should be ”…”�”}”(hj?7h²hh³Nh´Nubjó)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjU7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?7ubhŒk, and the per-port structures should be registered using uart_add_one_port() after this call has succeeded.”…”�”}”(hj?7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÙ hj«6ubhÌ)�”}”(hŒ"Locking: none, Interrupts: enabled”h]”hŒ"Locking: none, Interrupts: enabled”…”�”}”(hjn7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÜ hj«6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ#uart_unregister_driver (C function)”Œc.uart_unregister_driver”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ5void uart_unregister_driver (struct uart_driver *drv)”h]”jû)�”}”(hŒ4void uart_unregister_driver(struct uart_driver *drv)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj™7h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj™7h²hh³j«7h´M ubj$)�”}”(hŒuart_unregister_driver”h]”j*)�”}”(hŒuart_unregister_driver”h]”hŒuart_unregister_driver”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjº7ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj™7h²hh³j«7h´M ubj°)�”}”(hŒ(struct uart_driver *drv)”h]”j¶)�”}”(hŒstruct uart_driver *drv”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÚ7h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÖ7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç7h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ7ubh)�”}”(hhh]”j*)�”}”(hŒ uart_driver”h]”hŒ uart_driver”…”�”}”(hjø7h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjõ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jú7Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÀ7sbŒc.uart_unregister_driver”†”asbuh1hhjÖ7ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ7ubj)�”}”(hjh]”hŒ*”…”�”}”(hj&8h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÖ7ubj*)�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj38h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÖ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÒ7ubah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj™7h²hh³j«7h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj•7h²hh³j«7h´M ubah}”(h]”j�7ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j«7h´M hj’7h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ(remove a driver from the uart core layer”h]”hŒ(remove a driver from the uart core layer”…”�”}”(hj]8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M hjZ8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj’7h²hh³j«7h´M ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�ju8j‘ju8j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hX\**Parameters** ``struct uart_driver *drv`` low level driver structure **Description** Remove all references to a driver from the core driver. The low level driver must have removed all its ports via the uart_remove_one_port() if it registered them with uart_add_one_port(). (I.e. **drv->port** is ``NULL``.) Locking: none, Interrupts: enabled”•h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj8h]”hŒ Parameters”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj}8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M# hjy8ubjâ)�”}”(hhh]”jç)�”}”(hŒ7``struct uart_driver *drv`` low level driver structure ”h]”(jí)�”}”(hŒ``struct uart_driver *drv``”h]”jó)�”}”(hjž8h]”hŒstruct uart_driver *drv”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjœ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M hj˜8ubj )�”}”(hhh]”hÌ)�”}”(hŒlow level driver structure”h]”hŒlow level driver structure”…”�”}”(hj·8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j³8h´M hj´8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j³8h´M hj•8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjy8ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjÙ8h]”hŒ Description”…”�”}”(hjÛ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj×8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M" hjy8ubhÌ)�”}”(hŒÝRemove all references to a driver from the core driver. The low level driver must have removed all its ports via the uart_remove_one_port() if it registered them with uart_add_one_port(). (I.e. **drv->port** is ``NULL``.)”h]”(hŒÂRemove all references to a driver from the core driver. The low level driver must have removed all its ports via the uart_remove_one_port() if it registered them with uart_add_one_port(). (I.e. ”…”�”}”(hjï8h²hh³Nh´Nubj )�”}”(hŒ **drv->port**”h]”hŒ drv->port”…”�”}”(hj÷8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjï8ubhŒ is ”…”�”}”(hjï8h²hh³Nh´Nubjó)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjï8ubhŒ.)”…”�”}”(hjï8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M! hjy8ubhÌ)�”}”(hŒ"Locking: none, Interrupts: enabled”h]”hŒ"Locking: none, Interrupts: enabled”…”�”}”(hj"9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M% hjy8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_match_port (C function)”Œc.uart_match_port”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒSbool uart_match_port (const struct uart_port *port1, const struct uart_port *port2)”h]”jû)�”}”(hŒRbool uart_match_port(const struct uart_port *port1, const struct uart_port *port2)”h]”(jx)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjQ9h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjM9h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¼ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjM9h²hh³j_9h´M¼ ubj$)�”}”(hŒuart_match_port”h]”j*)�”}”(hŒuart_match_port”h]”hŒuart_match_port”…”�”}”(hjr9h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjn9ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjM9h²hh³j_9h´M¼ ubj°)�”}”(hŒ>(const struct uart_port *port1, const struct uart_port *port2)”h]”(j¶)�”}”(hŒconst struct uart_port *port1”h]”(j)�”}”(hj?h]”hŒconst”…”�”}”(hjŽ9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjŠ9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ9ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj©9h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjŠ9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ9ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjÇ9h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÄ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jÉ9Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjt9sbŒc.uart_match_port”†”asbuh1hhjŠ9ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ9ubj)�”}”(hjh]”hŒ*”…”�”}”(hjõ9h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjŠ9ubj*)�”}”(hŒport1”h]”hŒport1”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjŠ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj†9ubj¶)�”}”(hŒconst struct uart_port *port2”h]”(j)�”}”(hj?h]”hŒconst”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubj)�”}”(hjh]”hŒstruct”…”�”}”(hj6:h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhj:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjT:h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjQ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jV:Œmodname”NŒ classname”Njójö)�”}”jù]”jã9Œc.uart_match_port”†”asbuh1hhj:ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubj)�”}”(hjh]”hŒ*”…”�”}”(hj€:h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj:ubj*)�”}”(hŒport2”h]”hŒport2”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhj†9ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hjM9h²hh³j_9h´M¼ ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjI9h²hh³j_9h´M¼ ubah}”(h]”jD9ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j_9h´M¼ hjF9h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒare the two ports equivalent?”h]”hŒare the two ports equivalent?”…”�”}”(hj·:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¼ hj´:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjF9h²hh³j_9h´M¼ ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�jÏ:j‘jÏ:j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hŒé**Parameters** ``const struct uart_port *port1`` first port ``const struct uart_port *port2`` second port **Description** This utility function can be used to determine whether two uart_port structures describe the same port.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÙ:h]”hŒ Parameters”…”�”}”(hjÛ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj×:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÀ hjÓ:ubjâ)�”}”(hhh]”(jç)�”}”(hŒ-``const struct uart_port *port1`` first port ”h]”(jí)�”}”(hŒ!``const struct uart_port *port1``”h]”jó)�”}”(hjø:h]”hŒconst struct uart_port *port1”…”�”}”(hjú:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjö:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M½ hjò:ubj )�”}”(hhh]”hÌ)�”}”(hŒ first port”h]”hŒ first port”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ;h´M½ hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjò:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j ;h´M½ hjï:ubjç)�”}”(hŒ.``const struct uart_port *port2`` second port ”h]”(jí)�”}”(hŒ!``const struct uart_port *port2``”h]”jó)�”}”(hj1;h]”hŒconst struct uart_port *port2”…”�”}”(hj3;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj/;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¾ hj+;ubj )�”}”(hhh]”hÌ)�”}”(hŒ second port”h]”hŒ second port”…”�”}”(hjJ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jF;h´M¾ hjG;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jF;h´M¾ hjï:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÓ:ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjl;h]”hŒ Description”…”�”}”(hjn;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÀ hjÓ:ubhÌ)�”}”(hŒgThis utility function can be used to determine whether two uart_port structures describe the same port.”h]”hŒgThis utility function can be used to determine whether two uart_port structures describe the same port.”…”�”}”(hj‚;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M¿ hjÓ:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ#uart_handle_dcd_change (C function)”Œc.uart_handle_dcd_change”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒBvoid uart_handle_dcd_change (struct uart_port *uport, bool active)”h]”jû)�”}”(hŒAvoid uart_handle_dcd_change(struct uart_port *uport, bool active)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±;h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj­;h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mf ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj­;h²hh³j¿;h´Mf ubj$)�”}”(hŒuart_handle_dcd_change”h]”j*)�”}”(hŒuart_handle_dcd_change”h]”hŒuart_handle_dcd_change”…”�”}”(hjÒ;h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÎ;ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj­;h²hh³j¿;h´Mf ubj°)�”}”(hŒ&(struct uart_port *uport, bool active)”h]”(j¶)�”}”(hŒstruct uart_port *uport”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjî;h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjê;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû;h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê;ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj <ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j<Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÔ;sbŒc.uart_handle_dcd_change”†”asbuh1hhjê;ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê;ubj)�”}”(hjh]”hŒ*”…”�”}”(hj:<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjê;ubj*)�”}”(hŒuport”h]”hŒuport”…”�”}”(hjG<h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjê;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjæ;ubj¶)�”}”(hŒ bool active”h]”(jx)�”}”(hjS9h]”hŒbool”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj\<ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm<h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj\<ubj*)�”}”(hŒactive”h]”hŒactive”…”�”}”(hj{<h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj\<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjæ;ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj­;h²hh³j¿;h´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj©;h²hh³j¿;h´Mf ubah}”(h]”j¤;ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j¿;h´Mf hj¦;h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ'handle a change of carrier detect state”h]”hŒ'handle a change of carrier detect state”…”�”}”(hj¥<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mf hj¢<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj¦;h²hh³j¿;h´Mf ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j½<j‘j½<j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hŒ°**Parameters** ``struct uart_port *uport`` uart_port structure for the open port ``bool active`` new carrier detect status **Description** Caller must hold uport->lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjÇ<h]”hŒ Parameters”…”�”}”(hjÉ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjÅ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mj hjÁ<ubjâ)�”}”(hhh]”(jç)�”}”(hŒB``struct uart_port *uport`` uart_port structure for the open port ”h]”(jí)�”}”(hŒ``struct uart_port *uport``”h]”jó)�”}”(hjæ<h]”hŒstruct uart_port *uport”…”�”}”(hjè<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjä<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mg hjà<ubj )�”}”(hhh]”hÌ)�”}”(hŒ%uart_port structure for the open port”h]”hŒ%uart_port structure for the open port”…”�”}”(hjÿ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jû<h´Mg hjü<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjà<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jû<h´Mg hjÝ<ubjç)�”}”(hŒ*``bool active`` new carrier detect status ”h]”(jí)�”}”(hŒ``bool active``”h]”jó)�”}”(hj=h]”hŒ bool active”…”�”}”(hj!=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mh hj=ubj )�”}”(hhh]”hÌ)�”}”(hŒnew carrier detect status”h]”hŒnew carrier detect status”…”�”}”(hj8=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4=h´Mh hj5=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j4=h´Mh hjÝ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÁ<ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjZ=h]”hŒ Description”…”�”}”(hj\=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjX=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mj hjÁ<ubhÌ)�”}”(hŒCaller must hold uport->lock.”h]”hŒCaller must hold uport->lock.”…”�”}”(hjp=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´Mi hjÁ<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ#uart_handle_cts_change (C function)”Œc.uart_handle_cts_change”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒBvoid uart_handle_cts_change (struct uart_port *uport, bool active)”h]”jû)�”}”(hŒAvoid uart_handle_cts_change(struct uart_port *uport, bool active)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸ=h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj›=h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M‰ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj›=h²hh³j­=h´M‰ ubj$)�”}”(hŒuart_handle_cts_change”h]”j*)�”}”(hŒuart_handle_cts_change”h]”hŒuart_handle_cts_change”…”�”}”(hjÀ=h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj¼=ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj›=h²hh³j­=h´M‰ ubj°)�”}”(hŒ&(struct uart_port *uport, bool active)”h]”(j¶)�”}”(hŒstruct uart_port *uport”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÜ=h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjØ=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé=h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ=ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjú=h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj÷=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jü=Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÂ=sbŒc.uart_handle_cts_change”†”asbuh1hhjØ=ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ=ubj)�”}”(hjh]”hŒ*”…”�”}”(hj(>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjØ=ubj*)�”}”(hŒuport”h]”hŒuport”…”�”}”(hj5>h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjØ=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÔ=ubj¶)�”}”(hŒ bool active”h]”(jx)�”}”(hjS9h]”hŒbool”…”�”}”(hjN>h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhjJ>ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[>h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjJ>ubj*)�”}”(hŒactive”h]”hŒactive”…”�”}”(hji>h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjJ>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÔ=ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj›=h²hh³j­=h´M‰ ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj—=h²hh³j­=h´M‰ ubah}”(h]”j’=ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j­=h´M‰ hj”=h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒ&handle a change of clear-to-send state”h]”hŒ&handle a change of clear-to-send state”…”�”}”(hj“>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M‰ hj�>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj”=h²hh³j­=h´M‰ ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j«>j‘j«>j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hŒ¯**Parameters** ``struct uart_port *uport`` uart_port structure for the open port ``bool active`` new clear-to-send status **Description** Caller must hold uport->lock.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjµ>h]”hŒ Parameters”…”�”}”(hj·>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj³>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M� hj¯>ubjâ)�”}”(hhh]”(jç)�”}”(hŒB``struct uart_port *uport`` uart_port structure for the open port ”h]”(jí)�”}”(hŒ``struct uart_port *uport``”h]”jó)�”}”(hjÔ>h]”hŒstruct uart_port *uport”…”�”}”(hjÖ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÒ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MŠ hjÎ>ubj )�”}”(hhh]”hÌ)�”}”(hŒ%uart_port structure for the open port”h]”hŒ%uart_port structure for the open port”…”�”}”(hjí>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jé>h´MŠ hjê>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jé>h´MŠ hjË>ubjç)�”}”(hŒ)``bool active`` new clear-to-send status ”h]”(jí)�”}”(hŒ``bool active``”h]”jó)�”}”(hj ?h]”hŒ bool active”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M‹ hj?ubj )�”}”(hhh]”hÌ)�”}”(hŒnew clear-to-send status”h]”hŒnew clear-to-send status”…”�”}”(hj&?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"?h´M‹ hj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j"?h´M‹ hjË>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¯>ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjH?h]”hŒ Description”…”�”}”(hjJ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjF?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M� hj¯>ubhÌ)�”}”(hŒCaller must hold uport->lock.”h]”hŒCaller must hold uport->lock.”…”�”}”(hj^?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MŒ hj¯>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒ"uart_try_toggle_sysrq (C function)”Œc.uart_try_toggle_sysrq”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ:bool uart_try_toggle_sysrq (struct uart_port *port, u8 ch)”h]”jû)�”}”(hŒ9bool uart_try_toggle_sysrq(struct uart_port *port, u8 ch)”h]”(jx)�”}”(hjS9h]”hŒbool”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj‰?h²hh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÔ ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj‰?h²hh³jš?h´MÔ ubj$)�”}”(hŒuart_try_toggle_sysrq”h]”j*)�”}”(hŒuart_try_toggle_sysrq”h]”hŒuart_try_toggle_sysrq”…”�”}”(hj­?h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj©?ubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj‰?h²hh³jš?h´MÔ ubj°)�”}”(hŒ(struct uart_port *port, u8 ch)”h]”(j¶)�”}”(hŒstruct uart_port *port”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjÉ?h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÅ?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ?h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ?ubh)�”}”(hhh]”j*)�”}”(hŒ uart_port”h]”hŒ uart_port”…”�”}”(hjç?h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjä?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jé?Œmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïj¯?sbŒc.uart_try_toggle_sysrq”†”asbuh1hhjÅ?ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ?ubj)�”}”(hjh]”hŒ*”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÅ?ubj*)�”}”(hŒport”h]”hŒport”…”�”}”(hj"@h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÅ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÁ?ubj¶)�”}”(hŒu8 ch”h]”(h)�”}”(hhh]”j*)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj>@h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj;@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”j@@Œmodname”NŒ classname”Njójö)�”}”jù]”j@Œc.uart_try_toggle_sysrq”†”asbuh1hhj7@ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\@h²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj7@ubj*)�”}”(hŒch”h]”hŒch”…”�”}”(hjj@h²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj7@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÁ?ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj‰?h²hh³jš?h´MÔ ubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj…?h²hh³jš?h´MÔ ubah}”(h]”j€?ah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jš?h´MÔ hj‚?h²hubjV)�”}”(hhh]”hÌ)�”}”(hŒEnables SysRq from serial line”h]”hŒEnables SysRq from serial line”…”�”}”(hj”@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÔ hj‘@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhj‚?h²hh³jš?h´MÔ ubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j¬@j‘j¬@j’‰j“‰j”‰uh1jïh²hhjMh³Nh´Nubj–)�”}”(hXœ**Parameters** ``struct uart_port *port`` uart_port structure where char(s) after BREAK met ``u8 ch`` new character in the sequence after received BREAK **Description** Enables magic SysRq when the required sequence is met on port (see CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE). **Return** ``false`` if **ch** is out of enabling sequence and should be handled some other way, ``true`` if **ch** was consumed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj¶@h]”hŒ Parameters”…”�”}”(hj¸@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj´@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MØ hj°@ubjâ)�”}”(hhh]”(jç)�”}”(hŒM``struct uart_port *port`` uart_port structure where char(s) after BREAK met ”h]”(jí)�”}”(hŒ``struct uart_port *port``”h]”jó)�”}”(hjÕ@h]”hŒstruct uart_port *port”…”�”}”(hj×@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÓ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÕ hjÏ@ubj )�”}”(hhh]”hÌ)�”}”(hŒ1uart_port structure where char(s) after BREAK met”h]”hŒ1uart_port structure where char(s) after BREAK met”…”�”}”(hjî@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jê@h´MÕ hjë@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jê@h´MÕ hjÌ@ubjç)�”}”(hŒ=``u8 ch`` new character in the sequence after received BREAK ”h]”(jí)�”}”(hŒ ``u8 ch``”h]”jó)�”}”(hjAh]”hŒu8 ch”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÖ hjAubj )�”}”(hhh]”hÌ)�”}”(hŒ2new character in the sequence after received BREAK”h]”hŒ2new character in the sequence after received BREAK”…”�”}”(hj'Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#Ah´MÖ hj$Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j#Ah´MÖ hjÌ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhj°@ubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjIAh]”hŒ Description”…”�”}”(hjKAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjGAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MØ hj°@ubhÌ)�”}”(hŒgEnables magic SysRq when the required sequence is met on port (see CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE).”h]”hŒgEnables magic SysRq when the required sequence is met on port (see CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE).”…”�”}”(hj_Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´M× hj°@ubhÌ)�”}”(hŒ **Return**”h]”j )�”}”(hjpAh]”hŒReturn”…”�”}”(hjrAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjnAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÚ hj°@ubhÌ)�”}”(hŒv``false`` if **ch** is out of enabling sequence and should be handled some other way, ``true`` if **ch** was consumed.”h]”(jó)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjŠAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj†AubhŒ if ”…”�”}”(hj†Ah²hh³Nh´Nubj )�”}”(hŒ**ch**”h]”hŒch”…”�”}”(hjœAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj†AubhŒC is out of enabling sequence and should be handled some other way, ”…”�”}”(hj†Ah²hh³Nh´Nubjó)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj®Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj†AubhŒ if ”…”�”}”hj†Asbj )�”}”(hŒ**ch**”h]”hŒch”…”�”}”(hjÀAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj†AubhŒ was consumed.”…”�”}”(hj†Ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œi/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:71: ./drivers/tty/serial/serial_core.c”h´MÛ hj°@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_port_tx_limited (C macro)”Œc.uart_port_tx_limited”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒuart_port_tx_limited”h]”jû)�”}”(hŒuart_port_tx_limited”h]”j$)�”}”(hŒuart_port_tx_limited”h]”j*)�”}”(hjóAh]”hŒuart_port_tx_limited”…”�”}”(hjýAh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjùAubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hjõAh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÀubah}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhjñAh²hh³jBh´MÀubah}”(h]”jìAah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³jBh´MÀhjîAh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhjîAh²hh³jBh´MÀubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”j�jŠj�j)Bj‘j)Bj’‰j“‰j”‰uh1jïh²hhjMh³Nh´NubhÌ)�”}”(hŒG``uart_port_tx_limited (port, ch, count, tx_ready, put_char, tx_done)``”h]”jó)�”}”(hj/Bh]”hŒCuart_port_tx_limited (port, ch, count, tx_ready, put_char, tx_done)”…”�”}”(hj1Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj-Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÂhjMh²hubj )�”}”(hŒ4- transmit helper for uart_port with count limiting ”h]”j[)�”}”(hhh]”j`)�”}”(hŒ2transmit helper for uart_port with count limiting ”h]”hÌ)�”}”(hŒ1transmit helper for uart_port with count limiting”h]”hŒ1transmit helper for uart_port with count limiting”…”�”}”(hjPBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÀhjLBubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjIBubah}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³j^Bh´MÀhjEBubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³j^Bh´MÀhjMh²hubj–)�”}”(hX„**Parameters** ``port`` uart port ``ch`` variable to store a character to be written to the HW ``count`` a limit of characters to send ``tx_ready`` can HW accept more data function ``put_char`` function to write a character ``tx_done`` function to call after the loop is done **Description** This helper transmits characters from the xmit buffer to the hardware using **put_char\(\)**. It does so until **count** characters are sent and while **tx_ready** evaluates to true. The expression in macro parameters shall be designed as follows: * **tx_ready:** should evaluate to true if the HW can accept more data to be sent. This parameter can be ``true``, which means the HW is always ready. * **put_char:** shall write **ch** to the device of **port**. * **tx_done:** when the write loop is done, this can perform arbitrary action before potential invocation of ops->stop_tx() happens. If the driver does not need to do anything, use e.g. ({}). For all of them, **port->lock** is held, interrupts are locally disabled and the expressions must not sleep. **Return** the number of characters in the xmit buffer when done.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hjwBh]”hŒ Parameters”…”�”}”(hjyBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjuBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÄhjqBubjâ)�”}”(hhh]”(jç)�”}”(hŒ``port`` uart port ”h]”(jí)�”}”(hŒ``port``”h]”jó)�”}”(hj–Bh]”hŒport”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj”Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÁhj�Bubj )�”}”(hhh]”hÌ)�”}”(hŒ uart port”h]”hŒ uart port”…”�”}”(hj¯Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«Bh´MÁhj¬Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j«Bh´MÁhj�Bubjç)�”}”(hŒ=``ch`` variable to store a character to be written to the HW ”h]”(jí)�”}”(hŒ``ch``”h]”jó)�”}”(hjÏBh]”hŒch”…”�”}”(hjÑBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÍBubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÂhjÉBubj )�”}”(hhh]”hÌ)�”}”(hŒ5variable to store a character to be written to the HW”h]”hŒ5variable to store a character to be written to the HW”…”�”}”(hjèBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jäBh´MÂhjåBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jäBh´MÂhj�Bubjç)�”}”(hŒ(``count`` a limit of characters to send ”h]”(jí)�”}”(hŒ ``count``”h]”jó)�”}”(hjCh]”hŒcount”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÃhjCubj )�”}”(hhh]”hÌ)�”}”(hŒa limit of characters to send”h]”hŒa limit of characters to send”…”�”}”(hj!Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCh´MÃhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jCh´MÃhj�Bubjç)�”}”(hŒ.``tx_ready`` can HW accept more data function ”h]”(jí)�”}”(hŒ ``tx_ready``”h]”jó)�”}”(hjACh]”hŒtx_ready”…”�”}”(hjCCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj?Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÄhj;Cubj )�”}”(hhh]”hÌ)�”}”(hŒ can HW accept more data function”h]”hŒ can HW accept more data function”…”�”}”(hjZCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVCh´MÄhjWCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jVCh´MÄhj�Bubjç)�”}”(hŒ+``put_char`` function to write a character ”h]”(jí)�”}”(hŒ ``put_char``”h]”jó)�”}”(hjzCh]”hŒput_char”…”�”}”(hj|Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjxCubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÅhjtCubj )�”}”(hhh]”hÌ)�”}”(hŒfunction to write a character”h]”hŒfunction to write a character”…”�”}”(hj“Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�Ch´MÅhj�Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjtCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j�Ch´MÅhj�Bubjç)�”}”(hŒ4``tx_done`` function to call after the loop is done ”h]”(jí)�”}”(hŒ ``tx_done``”h]”jó)�”}”(hj³Ch]”hŒtx_done”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj±Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÆhj­Cubj )�”}”(hhh]”hÌ)�”}”(hŒ'function to call after the loop is done”h]”hŒ'function to call after the loop is done”…”�”}”(hjÌCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈCh´MÆhjÉCubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jÈCh´MÆhj�Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjqBubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjîCh]”hŒ Description”…”�”}”(hjðCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjìCubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÈhjqBubhÌ)�”}”(hŒ¶This helper transmits characters from the xmit buffer to the hardware using **put_char\(\)**. It does so until **count** characters are sent and while **tx_ready** evaluates to true.”h]”(hŒLThis helper transmits characters from the xmit buffer to the hardware using ”…”�”}”(hjDh²hh³Nh´Nubj )�”}”(hŒ**put_char\(\)**”h]”hŒ put_char()”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjDubhŒ. It does so until ”…”�”}”(hjDh²hh³Nh´Nubj )�”}”(hŒ **count**”h]”hŒcount”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjDubhŒ characters are sent and while ”…”�”}”(hjDh²hh³Nh´Nubj )�”}”(hŒ **tx_ready**”h]”hŒtx_ready”…”�”}”(hj0Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjDubhŒ evaluates to true.”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÇhjqBubjâ)�”}”(hhh]”jç)�”}”(hXÜThe expression in macro parameters shall be designed as follows: * **tx_ready:** should evaluate to true if the HW can accept more data to be sent. This parameter can be ``true``, which means the HW is always ready. * **put_char:** shall write **ch** to the device of **port**. * **tx_done:** when the write loop is done, this can perform arbitrary action before potential invocation of ops->stop_tx() happens. If the driver does not need to do anything, use e.g. ({}). ”h]”(jí)�”}”(hŒ@The expression in macro parameters shall be designed as follows:”h]”hŒ@The expression in macro parameters shall be designed as follows:”…”�”}”(hjPDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÒhjLDubj )�”}”(hhh]”j[)�”}”(hhh]”(j`)�”}”(hŒ”**tx_ready:** should evaluate to true if the HW can accept more data to be sent. This parameter can be ``true``, which means the HW is always ready.”h]”hÌ)�”}”(hŒ”**tx_ready:** should evaluate to true if the HW can accept more data to be sent. This parameter can be ``true``, which means the HW is always ready.”h]”(j )�”}”(hŒ **tx_ready:**”h]”hŒ tx_ready:”…”�”}”(hjmDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjiDubhŒZ should evaluate to true if the HW can accept more data to be sent. This parameter can be ”…”�”}”(hjiDh²hh³Nh´Nubjó)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjiDubhŒ%, which means the HW is always ready.”…”�”}”(hjiDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÍhjeDubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjbDubj`)�”}”(hŒ;**put_char:** shall write **ch** to the device of **port**.”h]”hÌ)�”}”(hj Dh]”(j )�”}”(hŒ **put_char:**”h]”hŒ put_char:”…”�”}”(hj¥Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¢DubhŒ shall write ”…”�”}”(hj¢Dh²hh³Nh´Nubj )�”}”(hŒ**ch**”h]”hŒch”…”�”}”(hj·Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¢DubhŒ to the device of ”…”�”}”(hj¢Dh²hh³Nh´Nubj )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjÉDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj¢DubhŒ.”…”�”}”(hj¢Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÏhjžDubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjbDubj`)�”}”(hŒ¾**tx_done:** when the write loop is done, this can perform arbitrary action before potential invocation of ops->stop_tx() happens. If the driver does not need to do anything, use e.g. ({}). ”h]”hÌ)�”}”(hŒ½**tx_done:** when the write loop is done, this can perform arbitrary action before potential invocation of ops->stop_tx() happens. If the driver does not need to do anything, use e.g. ({}).”h]”(j )�”}”(hŒ **tx_done:**”h]”hŒtx_done:”…”�”}”(hjðDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjìDubhŒ± when the write loop is done, this can perform arbitrary action before potential invocation of ops->stop_tx() happens. If the driver does not need to do anything, use e.g. ({}).”…”�”}”(hjìDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÐhjèDubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjbDubeh}”(h]”h ]”h"]”h$]”h&]”jjuh1jZh³j—Dh´MÍhj_Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j^Dh´MÒhjIDubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjqBubhÌ)�”}”(hŒlFor all of them, **port->lock** is held, interrupts are locally disabled and the expressions must not sleep.”h]”(hŒFor all of them, ”…”�”}”(hj'Eh²hh³Nh´Nubj )�”}”(hŒ**port->lock**”h]”hŒ port->lock”…”�”}”(hj/Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj'EubhŒM is held, interrupts are locally disabled and the expressions must not sleep.”…”�”}”(hj'Eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÔhjqBubhÌ)�”}”(hŒ **Return**”h]”j )�”}”(hjJEh]”hŒReturn”…”�”}”(hjLEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjHEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´M×hjqBubhÌ)�”}”(hŒ6the number of characters in the xmit buffer when done.”h]”hŒ6the number of characters in the xmit buffer when done.”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MÌhjqBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´NubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒuart_port_tx (C macro)”Œc.uart_port_tx”hNt”auh1jÝhjMh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒ uart_port_tx”h]”jû)�”}”(hŒ uart_port_tx”h]”j$)�”}”(hŒ uart_port_tx”h]”j*)�”}”(hj‰Eh]”hŒ uart_port_tx”…”�”}”(hj“Eh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj�Eubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj‹Eh²hh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´Mòubah}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj‡Eh²hh³j¦Eh´Mòubah}”(h]”j‚Eah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j¦Eh´Mòhj„Eh²hubjV)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jUhj„Eh²hh³j¦Eh´Mòubeh}”(h]”h ]”(jŠŒmacro”eh"]”h$]”h&]”j�jŠj�j¿Ej‘j¿Ej’‰j“‰j”‰uh1jïh²hhjMh³Nh´NubhÌ)�”}”(hŒ/``uart_port_tx (port, ch, tx_ready, put_char)``”h]”jó)�”}”(hjÅEh]”hŒ+uart_port_tx (port, ch, tx_ready, put_char)”…”�”}”(hjÇEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÃEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MôhjMh²hubj )�”}”(hŒ - transmit helper for uart_port ”h]”j[)�”}”(hhh]”j`)�”}”(hŒtransmit helper for uart_port ”h]”hÌ)�”}”(hŒtransmit helper for uart_port”h]”hŒtransmit helper for uart_port”…”�”}”(hjæEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MòhjâEubah}”(h]”h ]”h"]”h$]”h&]”uh1j_hjßEubah}”(h]”h ]”h"]”h$]”h&]”jj€uh1jZh³jôEh´MòhjÛEubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³jôEh´MòhjMh²hubj–)�”}”(hX**Parameters** ``port`` uart port ``ch`` variable to store a character to be written to the HW ``tx_ready`` can HW accept more data function ``put_char`` function to write a character **Description** See uart_port_tx_limited() for more details.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj Fh]”hŒ Parameters”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MöhjFubjâ)�”}”(hhh]”(jç)�”}”(hŒ``port`` uart port ”h]”(jí)�”}”(hŒ``port``”h]”jó)�”}”(hj,Fh]”hŒport”…”�”}”(hj.Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj*Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´Móhj&Fubj )�”}”(hhh]”hÌ)�”}”(hŒ uart port”h]”hŒ uart port”…”�”}”(hjEFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAFh´MóhjBFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj&Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jAFh´Móhj#Fubjç)�”}”(hŒ=``ch`` variable to store a character to be written to the HW ”h]”(jí)�”}”(hŒ``ch``”h]”jó)�”}”(hjeFh]”hŒch”…”�”}”(hjgFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjcFubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´Môhj_Fubj )�”}”(hhh]”hÌ)�”}”(hŒ5variable to store a character to be written to the HW”h]”hŒ5variable to store a character to be written to the HW”…”�”}”(hj~Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jzFh´Môhj{Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jzFh´Môhj#Fubjç)�”}”(hŒ.``tx_ready`` can HW accept more data function ”h]”(jí)�”}”(hŒ ``tx_ready``”h]”jó)�”}”(hjžFh]”hŒtx_ready”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjœFubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´Mõhj˜Fubj )�”}”(hhh]”hÌ)�”}”(hŒ can HW accept more data function”h]”hŒ can HW accept more data function”…”�”}”(hj·Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j³Fh´Mõhj´Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j³Fh´Mõhj#Fubjç)�”}”(hŒ+``put_char`` function to write a character ”h]”(jí)�”}”(hŒ ``put_char``”h]”jó)�”}”(hj×Fh]”hŒput_char”…”�”}”(hjÙFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjÕFubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MöhjÑFubj )�”}”(hhh]”hÌ)�”}”(hŒfunction to write a character”h]”hŒfunction to write a character”…”�”}”(hjðFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jìFh´MöhjíFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³jìFh´Möhj#Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jáhjFubhÌ)�”}”(hŒ**Description**”h]”j )�”}”(hjGh]”hŒ Description”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´MøhjFubhÌ)�”}”(hŒ,See uart_port_tx_limited() for more details.”h]”hŒ,See uart_port_tx_limited() for more details.”…”�”}”(hj(Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œd/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:80: ./include/linux/serial_core.h”h´M÷hjFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hjMh²hh³Nh´Nubeh}”(h]”Œother-functions”ah ]”h"]”Œother functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´KEubh¶)�”}”(hhh]”(h»)�”}”(hŒ Other notes”h]”hŒ Other notes”…”�”}”(hjIGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjFGh²hh³hÊh´KTubhÌ)�”}”(hX(It is intended some day to drop the 'unused' entries from uart_port, and allow low level drivers to register their own individual uart_port's with the core. This will allow drivers to use uart_port as a pointer to a structure containing both the uart_port entry with their own extensions, thus::”h]”hX-It is intended some day to drop the ‘unused’ entries from uart_port, and allow low level drivers to register their own individual uart_port’s with the core. This will allow drivers to use uart_port as a pointer to a structure containing both the uart_port entry with their own extensions, thus:”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KVhjFGh²hubj—)�”}”(hŒcstruct my_port { struct uart_port port; int my_stuff; };”h]”hŒcstruct my_port { struct uart_port port; int my_stuff; };”…”�”}”hjeGsbah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j–h³hÊh´K\hjFGh²hubeh}”(h]”Œ other-notes”ah ]”h"]”Œ other notes”ah$]”h&]”uh1hµhh·h²hh³hÊh´KTubh¶)�”}”(hhh]”(h»)�”}”(hŒModem control lines via GPIO”h]”hŒModem control lines via GPIO”…”�”}”(hj~Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj{Gh²hh³hÊh´KbubhÌ)�”}”(hŒKSome helpers are provided in order to set/get modem control lines via GPIO.”h]”hŒKSome helpers are provided in order to set/get modem control lines via GPIO.”…”�”}”(hjŒGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Kdhj{Gh²hubjÞ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jêŒmctrl_gpio_set (C function)”Œc.mctrl_gpio_set”hNt”auh1jÝhj{Gh²hh³Nh´Nubjð)�”}”(hhh]”(jõ)�”}”(hŒCvoid mctrl_gpio_set (struct mctrl_gpios *gpios, unsigned int mctrl)”h]”jû)�”}”(hŒBvoid mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¯Gh²hh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´K.ubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¯Gh²hh³jÁGh´K.ubj$)�”}”(hŒmctrl_gpio_set”h]”j*)�”}”(hŒmctrl_gpio_set”h]”hŒmctrl_gpio_set”…”�”}”(hjÔGh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÐGubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj¯Gh²hh³jÁGh´K.ubj°)�”}”(hŒ/(struct mctrl_gpios *gpios, unsigned int mctrl)”h]”(j¶)�”}”(hŒstruct mctrl_gpios *gpios”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjðGh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjìGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýGh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìGubh)�”}”(hhh]”j*)�”}”(hŒ mctrl_gpios”h]”hŒ mctrl_gpios”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hj Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jHŒmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÖGsbŒc.mctrl_gpio_set”†”asbuh1hhjìGubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Hh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjìGubj)�”}”(hjh]”hŒ*”…”�”}”(hjIh]”hŒunsigned int mctrl”…”�”}”(hj@Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhjKh]”hŒ Parameters”…”�”}”(hj@Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjNh]”hŒ Description”…”�”}”(hj@Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhjvoid mctrl_gpio_disable_ms_no_sync (struct mctrl_gpios *gpios)”h]”jû)�”}”(hŒ=void mctrl_gpio_disable_ms_no_sync(struct mctrl_gpios *gpios)”h]”(jx)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥Sh²hh³Nh´Nubah}”(h]”h ]”j„ah"]”h$]”h&]”uh1jwhj¡Sh²hh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´MKubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´Sh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhj¡Sh²hh³j³Sh´MKubj$)�”}”(hŒmctrl_gpio_disable_ms_no_sync”h]”j*)�”}”(hŒmctrl_gpio_disable_ms_no_sync”h]”hŒmctrl_gpio_disable_ms_no_sync”…”�”}”(hjÆSh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÂSubah}”(h]”h ]”(j<j=eh"]”h$]”h&]”j¦j§uh1j#hj¡Sh²hh³j³Sh´MKubj°)�”}”(hŒ(struct mctrl_gpios *gpios)”h]”j¶)�”}”(hŒstruct mctrl_gpios *gpios”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjÞSubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïSh²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞSubh)�”}”(hhh]”j*)�”}”(hŒ mctrl_gpios”h]”hŒ mctrl_gpios”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjýSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŠŒreftype”jïŒ reftarget”jTŒmodname”NŒ classname”Njójö)�”}”jù]”jü)�”}”jïjÈSsbŒc.mctrl_gpio_disable_ms_no_sync”†”asbuh1hhjÞSubj)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞSubj)�”}”(hjh]”hŒ*”…”�”}”(hj.Th²hh³Nh´Nubah}”(h]”h ]”jah"]”h$]”h&]”uh1jhjÞSubj*)�”}”(hŒgpios”h]”hŒgpios”…”�”}”(hj;Th²hh³Nh´Nubah}”(h]”h ]”j5ah"]”h$]”h&]”uh1j)hjÞSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj¦j§uh1jµhjÚSubah}”(h]”h ]”h"]”h$]”h&]”j¦j§uh1j¯hj¡Sh²hh³j³Sh´MKubeh}”(h]”h ]”h"]”h$]”h&]”j¦j§jGˆuh1jújHjIhj�Sh²hh³j³Sh´MKubah}”(h]”j˜Sah ]”(jMjNeh"]”h$]”h&]”jRˆjS)jThuh1jôh³j³Sh´MKhjšSh²hubjV)�”}”(hhh]”hÌ)�”}”(hŒLdisable irqs and handling of changes to the ms lines, and return immediately”h]”hŒLdisable irqs and handling of changes to the ms lines, and return immediately”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´MKhjbTh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jUhjšSh²hh³j³Sh´MKubeh}”(h]”h ]”(jŠŒfunction”eh"]”h$]”h&]”j�jŠj�j}Tj‘j}Tj’‰j“‰j”‰uh1jïh²hhj{Gh³Nh´Nubj–)�”}”(hŒ@**Parameters** ``struct mctrl_gpios *gpios`` gpios to disable”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j )�”}”(hj‡Th]”hŒ Parameters”…”�”}”(hj‰Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŸhj…Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´MOhj�Tubjâ)�”}”(hhh]”jç)�”}”(hŒ.``struct mctrl_gpios *gpios`` gpios to disable”h]”(jí)�”}”(hŒ``struct mctrl_gpios *gpios``”h]”jó)�”}”(hj¦Th]”hŒstruct mctrl_gpios *gpios”…”�”}”(hj¨Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jòhj¤Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jìh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´MQhj Tubj )�”}”(hhh]”hÌ)�”}”(hŒgpios to disable”h]”hŒgpios to disable”…”�”}”(hj¿Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œp/var/lib/git/docbuild/linux/Documentation/driver-api/serial/driver:102: ./drivers/tty/serial/serial_mctrl_gpio.c”h´MMhj¼Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæh³j»Th´MQhj�Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj�Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j•hj{Gh²hh³Nh´Nubeh}”(h]”Œmodem-control-lines-via-gpio”ah ]”h"]”Œmodem control lines via gpio”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kbubeh}”(h]”Œlow-level-serial-api”ah ]”h"]”Œlow level serial api”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”jUŒ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ôTjñTj#j jXjUjÉjÆjJjGjCGj@GjxGjuGjìTjéTuŒ nametypes”}”(jôT‰j#‰jX‰jɉjJ‰jCG‰jxG‰jìT‰uh}”(jñTh·j hÿjUj&jÆj[jGjÌjìjöj@GjMjjjojj$jõjúj‰!jŽ!jà#jå#j�&j’&jH*jM*jˆ.j�.jà1jå1jÂ5jÇ5j�7j•7jD9jI9j¤;j©;j’=j—=j€?j…?jìAjñAj‚Ej‡EjuGjFGjéTj{Gj¦Gj«Gj±Ij¶Ij LjLjvNj{NjâPjçPj=RjBRj˜Sj�SuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.