€•ŠíŒ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/extcon”Œ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/extcon”Œ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/extcon”Œ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/extcon”Œ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/extcon”Œ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/extcon”Œ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/extcon”Œ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ŒExtcon Device Subsystem”h]”hŒExtcon Device Subsystem”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ?/var/lib/git/docbuild/linux/Documentation/driver-api/extcon.rst”h´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhËh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hX The Extcon (External Connector) subsystem provides a unified framework for managing external connectors in Linux systems. It allows drivers to report the state of external connectors and provides a standardized interface for userspace to query and monitor these states.”h]”hX The Extcon (External Connector) subsystem provides a unified framework for managing external connectors in Linux systems. It allows drivers to report the state of external connectors and provides a standardized interface for userspace to query and monitor these states.”…”�”}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhÝ)�”}”(hŒ¶Extcon is particularly useful in modern devices with multiple connectivity options, such as smartphones, tablets, and laptops. It helps manage various types of connectors, including:”h]”hŒ¶Extcon is particularly useful in modern devices with multiple connectivity options, such as smartphones, tablets, and laptops. It helps manage various types of connectors, including:”…”�”}”(hhìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hhËh²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ'USB connectors (e.g., USB-C, micro-USB)”h]”hÝ)�”}”(hjh]”hŒ'USB connectors (e.g., USB-C, micro-USB)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüh²hh³hÊh´Nubj)�”}”(hŒ7Charging ports (e.g., fast charging, wireless charging)”h]”hÝ)�”}”(hjh]”hŒ7Charging ports (e.g., fast charging, wireless charging)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüh²hh³hÊh´Nubj)�”}”(hŒ(Audio jacks (e.g., 3.5mm headphone jack)”h]”hÝ)�”}”(hj1h]”hŒ(Audio jacks (e.g., 3.5mm headphone jack)”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüh²hh³hÊh´Nubj)�”}”(hŒ'Video outputs (e.g., HDMI, DisplayPort)”h]”hÝ)�”}”(hjHh]”hŒ'Video outputs (e.g., HDMI, DisplayPort)”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüh²hh³hÊh´Nubj)�”}”(hŒDocking stations ”h]”hÝ)�”}”(hŒDocking stations”h]”hŒDocking stations”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhhüh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1húhhËh²hh³hÊh´KubhÝ)�”}”(hŒReal-world examples:”h]”hŒReal-world examples:”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KhhËh²hubhû)�”}”(hhh]”(j)�”}”(hX8Smartphone USB-C port: A single USB-C port on a smartphone can serve multiple functions. Extcon can manage the different states of this port, such as: - USB data connection - Charging (various types like fast charging, USB Power Delivery) - Audio output (USB-C headphones) - Video output (USB-C to HDMI adapter) ”h]”hÝ)�”}”(hX7Smartphone USB-C port: A single USB-C port on a smartphone can serve multiple functions. Extcon can manage the different states of this port, such as: - USB data connection - Charging (various types like fast charging, USB Power Delivery) - Audio output (USB-C headphones) - Video output (USB-C to HDMI adapter)”h]”hX7Smartphone USB-C port: A single USB-C port on a smartphone can serve multiple functions. Extcon can manage the different states of this port, such as: - USB data connection - Charging (various types like fast charging, USB Power Delivery) - Audio output (USB-C headphones) - Video output (USB-C to HDMI adapter)”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Khj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjŽh²hh³hÊh´Nubj)�”}”(hŒóLaptop docking station: When a laptop is connected to a docking station, multiple connections are made simultaneously. Extcon can handle the state changes for: - Power delivery - External displays - USB hub connections - Ethernet connectivity ”h]”hÝ)�”}”(hŒòLaptop docking station: When a laptop is connected to a docking station, multiple connections are made simultaneously. Extcon can handle the state changes for: - Power delivery - External displays - USB hub connections - Ethernet connectivity”h]”hŒòLaptop docking station: When a laptop is connected to a docking station, multiple connections are made simultaneously. Extcon can handle the state changes for: - Power delivery - External displays - USB hub connections - Ethernet connectivity”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K!hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjŽh²hh³hÊh´Nubj)�”}”(hŒÀWireless charging pad: Extcon can manage the state of a wireless charging connection, allowing the system to respond appropriately when a device is placed on or removed from the charging pad. ”h]”hÝ)�”}”(hŒ¿Wireless charging pad: Extcon can manage the state of a wireless charging connection, allowing the system to respond appropriately when a device is placed on or removed from the charging pad.”h]”hŒ¿Wireless charging pad: Extcon can manage the state of a wireless charging connection, allowing the system to respond appropriately when a device is placed on or removed from the charging pad.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K)hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjŽh²hh³hÊh´Nubj)�”}”(hŒåSmart TV HDMI ports: In a smart TV, Extcon can manage multiple HDMI ports, detecting when devices are connected or disconnected, and potentially identifying the type of device (e.g., gaming console, set-top box, Blu-ray player). ”h]”hÝ)�”}”(hŒäSmart TV HDMI ports: In a smart TV, Extcon can manage multiple HDMI ports, detecting when devices are connected or disconnected, and potentially identifying the type of device (e.g., gaming console, set-top box, Blu-ray player).”h]”hŒäSmart TV HDMI ports: In a smart TV, Extcon can manage multiple HDMI ports, detecting when devices are connected or disconnected, and potentially identifying the type of device (e.g., gaming console, set-top box, Blu-ray player).”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K.hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhjŽh²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j{j|j}hj~juh1húhhËh²hh³hÊh´KubhÝ)�”}”(hXAThe Extcon framework simplifies the development of drivers for these complex scenarios by providing a standardized way to report and query connector states, handle mutually exclusive connections, and manage connector properties. This allows for more robust and flexible handling of external connections in modern devices.”h]”hXAThe Extcon framework simplifies the development of drivers for these complex scenarios by providing a standardized way to report and query connector states, handle mutually exclusive connections, and manage connector properties. This allows for more robust and flexible handling of external connections in modern devices.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K3hhËh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒKey Components”h]”hŒKey Components”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´K:ubh¶)�”}”(hhh]”(h»)�”}”(hŒ extcon_dev”h]”hŒ extcon_dev”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K=ubhÝ)�”}”(hŒ2The core structure representing an Extcon device::”h]”hŒ1The core structure representing an Extcon device:”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K?hjh²hubhŒ literal_block”“”)�”}”(hX3struct extcon_dev { const char *name; const unsigned int *supported_cable; const u32 *mutually_exclusive; /* Internal data */ struct device dev; unsigned int id; struct raw_notifier_head nh_all; struct raw_notifier_head *nh; struct list_head entry; int max_supported; spinlock_t lock; u32 state; /* Sysfs related */ struct device_type extcon_dev_type; struct extcon_cable *cables; struct attribute_group attr_g_muex; struct attribute **attrs_muex; struct device_attribute *d_attrs_muex; };”h]”hX3struct extcon_dev { const char *name; const unsigned int *supported_cable; const u32 *mutually_exclusive; /* Internal data */ struct device dev; unsigned int id; struct raw_notifier_head nh_all; struct raw_notifier_head *nh; struct list_head entry; int max_supported; spinlock_t lock; u32 state; /* Sysfs related */ struct device_type extcon_dev_type; struct extcon_cable *cables; struct attribute_group attr_g_muex; struct attribute **attrs_muex; struct device_attribute *d_attrs_muex; };”…”�”}”hj?sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j=h³hÊh´KAhjh²hubhÝ)�”}”(hŒ Key fields:”h]”hŒ Key fields:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KXhjh²hubhŒ bullet_list”“”)�”}”(hhh]”(j)�”}”(hŒ#``name``: Name of the Extcon device”h]”hÝ)�”}”(hjdh]”(hŒliteral”“”)�”}”(hŒ``name``”h]”hŒname”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjfubhŒ: Name of the Extcon device”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´KZhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj_h²hh³hÊh´Nubj)�”}”(hŒ3``supported_cable``: Array of supported cable types”h]”hÝ)�”}”(hj‹h]”(jj)�”}”(hŒ``supported_cable``”h]”hŒsupported_cable”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj�ubhŒ : Array of supported cable types”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K[hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj_h²hh³hÊh´Nubj)�”}”(hX¯``mutually_exclusive``: Array defining mutually exclusive cable types This field is crucial for enforcing hardware constraints. It's an array of 32-bit unsigned integers, where each element represents a set of mutually exclusive cable types. The array should be terminated with a 0. For example: :: static const u32 mutually_exclusive[] = { BIT(0) | BIT(1), /* Cable 0 and 1 are mutually exclusive */ BIT(2) | BIT(3) | BIT(4), /* Cables 2, 3, and 4 are mutually exclusive */ 0 /* Terminator */ }; In this example, cables 0 and 1 cannot be connected simultaneously, and cables 2, 3, and 4 are also mutually exclusive. This is useful for scenarios like a single port that can either be USB or HDMI, but not both at the same time. The Extcon core uses this information to prevent invalid combinations of cable states, ensuring that the reported states are always consistent with the hardware capabilities. ”h]”(hÝ)�”}”(hX``mutually_exclusive``: Array defining mutually exclusive cable types This field is crucial for enforcing hardware constraints. It's an array of 32-bit unsigned integers, where each element represents a set of mutually exclusive cable types. The array should be terminated with a 0.”h]”(jj)�”}”(hŒ``mutually_exclusive``”h]”hŒmutually_exclusive”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj²ubhX: Array defining mutually exclusive cable types This field is crucial for enforcing hardware constraints. It’s an array of 32-bit unsigned integers, where each element represents a set of mutually exclusive cable types. The array should be terminated with a 0.”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K\hj®ubhÝ)�”}”(hŒ For example:”h]”hŒ For example:”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kahj®ubj>)�”}”(hŒÔstatic const u32 mutually_exclusive[] = { BIT(0) | BIT(1), /* Cable 0 and 1 are mutually exclusive */ BIT(2) | BIT(3) | BIT(4), /* Cables 2, 3, and 4 are mutually exclusive */ 0 /* Terminator */ };”h]”hŒÔstatic const u32 mutually_exclusive[] = { BIT(0) | BIT(1), /* Cable 0 and 1 are mutually exclusive */ BIT(2) | BIT(3) | BIT(4), /* Cables 2, 3, and 4 are mutually exclusive */ 0 /* Terminator */ };”…”�”}”hjÜsbah}”(h]”h ]”h"]”h$]”h&]”jMjNuh1j=h³hÊh´Kehj®ubhÝ)�”}”(hŒæIn this example, cables 0 and 1 cannot be connected simultaneously, and cables 2, 3, and 4 are also mutually exclusive. This is useful for scenarios like a single port that can either be USB or HDMI, but not both at the same time.”h]”hŒæIn this example, cables 0 and 1 cannot be connected simultaneously, and cables 2, 3, and 4 are also mutually exclusive. This is useful for scenarios like a single port that can either be USB or HDMI, but not both at the same time.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kkhj®ubhÝ)�”}”(hŒ®The Extcon core uses this information to prevent invalid combinations of cable states, ensuring that the reported states are always consistent with the hardware capabilities.”h]”hŒ®The Extcon core uses this information to prevent invalid combinations of cable states, ensuring that the reported states are always consistent with the hardware capabilities.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kphj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj_h²hh³hÊh´Nubj)�”}”(hŒE``state``: Current state of the device (bitmap of connected cables) ”h]”hÝ)�”}”(hŒC``state``: Current state of the device (bitmap of connected cables)”h]”(jj)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjubhŒ:: Current state of the device (bitmap of connected cables)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kthj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj_h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j]h³hÊh´KZhjh²hubeh}”(h]”Œ extcon-dev”ah ]”h"]”Œ extcon_dev”ah$]”h&]”uh1hµhj h²hh³hÊh´K=ubh¶)�”}”(hhh]”(h»)�”}”(hŒ extcon_cable”h]”hŒ extcon_cable”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjBh²hh³hÊh´KxubhÝ)�”}”(hŒ)�”}”(hX¸struct extcon_cable { struct extcon_dev *edev; int cable_index; struct attribute_group attr_g; struct device_attribute attr_name; struct device_attribute attr_state; struct attribute *attrs[3]; union extcon_property_value usb_propval[EXTCON_PROP_USB_CNT]; union extcon_property_value chg_propval[EXTCON_PROP_CHG_CNT]; union extcon_property_value jack_propval[EXTCON_PROP_JACK_CNT]; union extcon_property_value disp_propval[EXTCON_PROP_DISP_CNT]; DECLARE_BITMAP(usb_bits, EXTCON_PROP_USB_CNT); DECLARE_BITMAP(chg_bits, EXTCON_PROP_CHG_CNT); DECLARE_BITMAP(jack_bits, EXTCON_PROP_JACK_CNT); DECLARE_BITMAP(disp_bits, EXTCON_PROP_DISP_CNT); };”h]”hX¸struct extcon_cable { struct extcon_dev *edev; int cable_index; struct attribute_group attr_g; struct device_attribute attr_name; struct device_attribute attr_state; struct attribute *attrs[3]; union extcon_property_value usb_propval[EXTCON_PROP_USB_CNT]; union extcon_property_value chg_propval[EXTCON_PROP_CHG_CNT]; union extcon_property_value jack_propval[EXTCON_PROP_JACK_CNT]; union extcon_property_value disp_propval[EXTCON_PROP_DISP_CNT]; DECLARE_BITMAP(usb_bits, EXTCON_PROP_USB_CNT); DECLARE_BITMAP(chg_bits, EXTCON_PROP_CHG_CNT); DECLARE_BITMAP(jack_bits, EXTCON_PROP_JACK_CNT); DECLARE_BITMAP(disp_bits, EXTCON_PROP_DISP_CNT); };”…”�”}”hjasbah}”(h]”h ]”h"]”h$]”h&]”jMjNuh1j=h³hÊh´K|hjBh²hubeh}”(h]”Œ extcon-cable”ah ]”h"]”Œ extcon_cable”ah$]”h&]”uh1hµhj h²hh³hÊh´Kxubeh}”(h]”Œkey-components”ah ]”h"]”Œkey components”ah$]”h&]”uh1hµhh·h²hh³hÊh´K:ubh¶)�”}”(hhh]”(h»)�”}”(hŒCore Functions”h]”hŒCore Functions”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´KŽubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œextcon_get_state (C function)”Œc.extcon_get_state”hNt”auh1j�hjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒEint extcon_get_state (struct extcon_dev *edev, const unsigned int id)”h]”hŒdesc_signature_line”“”)�”}”(hŒDint extcon_get_state(struct extcon_dev *edev, const unsigned int id)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j²hj®h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´MøubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jÄhj®h²hh³jÃh´MøubhŒ desc_name”“”)�”}”(hŒextcon_get_state”h]”hŒ desc_sig_name”“”)�”}”(hŒextcon_get_state”h]”hŒextcon_get_state”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jÛhj×ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”jMjNuh1jÕhj®h²hh³jÃh´MøubhŒdesc_parameterlist”“”)�”}”(hŒ0(struct extcon_dev *edev, const unsigned int id)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct extcon_dev *edev”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jhjüubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjüubh)�”}”(hhh]”jÜ)�”}”(hŒ extcon_dev”h]”hŒ extcon_dev”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j$Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”j>Œ ASTIdentifier”“”)�”}”j9jßsbŒc.extcon_get_state”†”asbuh1hhjüubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjüubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jYhjüubjÜ)�”}”(hŒedev”h]”hŒedev”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjöubjû)�”}”(hŒconst unsigned int id”h]”(j)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubj³)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubj³)�”}”(hŒint”h]”hŒint”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubjÜ)�”}”(hŒid”h]”hŒid”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjöubeh}”(h]”h ]”h"]”h$]”h&]”jMjNuh1jôhj®h²hh³jÃh´Møubeh}”(h]”h ]”h"]”h$]”h&]”jMjNŒ add_permalink”ˆuh1j¬Œsphinx_line_type”Œ declarator”hj¨h²hh³jÃh´Møubah}”(h]”jŸah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j¦h³jÃh´Møhj£h²hubhŒ desc_content”“”)�”}”(hhh]”hÝ)�”}”(hŒ'Get the state of an external connector.”h]”hŒ'Get the state of an external connector.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´Møhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£h²hh³jÃh´Møubeh}”(h]”h ]”(j7Œfunction”eh"]”h$]”h&]”Œdomain”j7Œobjtype”j#Œdesctype”j#Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j¡h²hhjh³Nh´NubhŒ container”“”)�”}”(hŒË**Parameters** ``struct extcon_dev *edev`` the extcon device ``const unsigned int id`` the unique id indicating an external connector **Description** Returns 0 if success or error number if fail.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj5h]”hŒ Parameters”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´Mühj/ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ.``struct extcon_dev *edev`` the extcon device ”h]”(hŒterm”“”)�”}”(hŒ``struct extcon_dev *edev``”h]”jj)�”}”(hj\h]”hŒstruct extcon_dev *edev”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´MùhjTubhŒ definition”“”)�”}”(hhh]”hÝ)�”}”(hŒthe extcon device”h]”hŒthe extcon device”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jqh´Mùhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jqh´MùhjOubjS)�”}”(hŒI``const unsigned int id`` the unique id indicating an external connector ”h]”(jY)�”}”(hŒ``const unsigned int id``”h]”jj)�”}”(hj—h]”hŒconst unsigned int id”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´Múhj‘ubjs)�”}”(hhh]”hÝ)�”}”(hŒ.the unique id indicating an external connector”h]”hŒ.the unique id indicating an external connector”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j¬h´Múhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³j¬h´MúhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj/ubhÝ)�”}”(hŒ**Description**”h]”j8)�”}”(hjÒh]”hŒ Description”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´Mühj/ubhÝ)�”}”(hŒ-Returns 0 if success or error number if fail.”h]”hŒ-Returns 0 if success or error number if fail.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:144: ./drivers/extcon/extcon.c”h´Mûhj/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j-hjh²hh³Nh´Nubj‘)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œextcon_set_state (C function)”Œc.extcon_set_state”hNt”auh1j�hjh²hh³Nh´Nubj¢)�”}”(hhh]”(j§)�”}”(hŒKint extcon_set_state (struct extcon_dev *edev, unsigned int id, bool state)”h]”j­)�”}”(hŒJint extcon_set_state(struct extcon_dev *edev, unsigned int id, bool state)”h]”(j³)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjh²hh³j%h´MubjÖ)�”}”(hŒextcon_set_state”h]”jÜ)�”}”(hŒextcon_set_state”h]”hŒextcon_set_state”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhj4ubah}”(h]”h ]”(jïjðeh"]”h$]”h&]”jMjNuh1jÕhjh²hh³j%h´Mubjõ)�”}”(hŒ6(struct extcon_dev *edev, unsigned int id, bool state)”h]”(jû)�”}”(hŒstruct extcon_dev *edev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhjPubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjPubh)�”}”(hhh]”jÜ)�”}”(hŒ extcon_dev”h]”hŒ extcon_dev”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j7Œreftype”j9Œ reftarget”jtŒmodname”NŒ classname”Nj=j@)�”}”jC]”jF)�”}”j9j:sbŒc.extcon_set_state”†”asbuh1hhjPubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjPubjZ)�”}”(hj]h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjPubjÜ)�”}”(hŒedev”h]”hŒedev”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjLubjû)�”}”(hŒunsigned int id”h]”(j³)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÂubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÂubj³)�”}”(hŒint”h]”hŒint”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÂubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÂubjÜ)�”}”(hŒid”h]”hŒid”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjLubjû)�”}”(hŒ bool state”h]”(j³)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjubjÜ)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjLubeh}”(h]”h ]”h"]”h$]”h&]”jMjNuh1jôhjh²hh³j%h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jMjNjøˆuh1j¬jùjúhjh²hh³j%h´Mubah}”(h]”j ah ]”(jþjÿeh"]”h$]”h&]”jˆj)jhuh1j¦h³j%h´Mhj h²hubj)�”}”(hhh]”hÝ)�”}”(hŒ'Set the state of an external connector.”h]”hŒ'Set the state of an external connector.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MhjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³j%h´Mubeh}”(h]”h ]”(j7Œfunction”eh"]”h$]”h&]”j'j7j(juj)juj*‰j+‰j,‰uh1j¡h²hhjh³Nh´Nubj.)�”}”(hXþ**Parameters** ``struct extcon_dev *edev`` the extcon device ``unsigned int id`` the unique id indicating an external connector ``bool state`` the new state of an external connector. the default semantics is true: attached / false: detached. **Description** Note that this function set the state of an external connector without a notification. To synchronize the state of an external connector, have to use extcon_set_state_sync() and extcon_sync(). Returns 0 if success or error number if fail.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j8)�”}”(hjh]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MhjyubjN)�”}”(hhh]”(jS)�”}”(hŒ.``struct extcon_dev *edev`` the extcon device ”h]”(jY)�”}”(hŒ``struct extcon_dev *edev``”h]”jj)�”}”(hjžh]”hŒstruct extcon_dev *edev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´Mhj˜ubjs)�”}”(hhh]”hÝ)�”}”(hŒthe extcon device”h]”hŒthe extcon device”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j³h´Mhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³j³h´Mhj•ubjS)�”}”(hŒC``unsigned int id`` the unique id indicating an external connector ”h]”(jY)�”}”(hŒ``unsigned int id``”h]”jj)�”}”(hj×h]”hŒunsigned int id”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MhjÑubjs)�”}”(hhh]”hÝ)�”}”(hŒ.the unique id indicating an external connector”h]”hŒ.the unique id indicating an external connector”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jìh´Mhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jìh´Mhj•ubjS)�”}”(hŒr``bool state`` the new state of an external connector. the default semantics is true: attached / false: detached. ”h]”(jY)�”}”(hŒ``bool state``”h]”jj)�”}”(hjh]”hŒ bool state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´Mhj ubjs)�”}”(hhh]”hÝ)�”}”(hŒbthe new state of an external connector. the default semantics is true: attached / false: detached.”h]”hŒbthe new state of an external connector. the default semantics is true: attached / false: detached.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´Mhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³j%h´Mhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhjyubhÝ)�”}”(hŒ**Description**”h]”j8)�”}”(hjLh]”hŒ Description”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MhjyubhÝ)�”}”(hŒÀNote that this function set the state of an external connector without a notification. To synchronize the state of an external connector, have to use extcon_set_state_sync() and extcon_sync().”h]”hŒÀNote that this function set the state of an external connector without a notification. To synchronize the state of an external connector, have to use extcon_set_state_sync() and extcon_sync().”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´MhjyubhÝ)�”}”(hŒ-Returns 0 if success or error number if fail.”h]”hŒ-Returns 0 if success or error number if fail.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:147: ./drivers/extcon/extcon.c”h´Mhjyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j-hjh²hh³Nh´Nubj‘)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ"extcon_set_state_sync (C function)”Œc.extcon_set_state_sync”hNt”auh1j�hjh²hh³Nh´Nubj¢)�”}”(hhh]”(j§)�”}”(hŒPint extcon_set_state_sync (struct extcon_dev *edev, unsigned int id, bool state)”h]”j­)�”}”(hŒOint extcon_set_state_sync(struct extcon_dev *edev, unsigned int id, bool state)”h]”(j³)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjœh²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MKubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjœh²hh³j®h´MKubjÖ)�”}”(hŒextcon_set_state_sync”h]”jÜ)�”}”(hŒextcon_set_state_sync”h]”hŒextcon_set_state_sync”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhj½ubah}”(h]”h ]”(jïjðeh"]”h$]”h&]”jMjNuh1jÕhjœh²hh³j®h´MKubjõ)�”}”(hŒ6(struct extcon_dev *edev, unsigned int id, bool state)”h]”(jû)�”}”(hŒstruct extcon_dev *edev”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 ]”jÑah"]”h$]”h&]”uh1jÄhjÙubh)�”}”(hhh]”jÜ)�”}”(hŒ extcon_dev”h]”hŒ extcon_dev”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j7Œreftype”j9Œ reftarget”jýŒmodname”NŒ classname”Nj=j@)�”}”jC]”jF)�”}”j9jÃsbŒc.extcon_set_state_sync”†”asbuh1hhjÙubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÙubjZ)�”}”(hj]h]”hŒ*”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhjÙubjÜ)�”}”(hŒedev”h]”hŒedev”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjÕubjû)�”}”(hŒunsigned int id”h]”(j³)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjK ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjK ubj³)�”}”(hŒint”h]”hŒint”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjK ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjK ubjÜ)�”}”(hŒid”h]”hŒid”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjK ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjÕubjû)�”}”(hŒ bool state”h]”(j³)�”}”(hjh]”hŒbool”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjœ ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjœ ubjÜ)�”}”(hŒstate”h]”hŒstate”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjœ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhjÕubeh}”(h]”h ]”h"]”h$]”h&]”jMjNuh1jôhjœh²hh³j®h´MKubeh}”(h]”h ]”h"]”h$]”h&]”jMjNjøˆuh1j¬jùjúhj˜h²hh³j®h´MKubah}”(h]”j“ah ]”(jþjÿeh"]”h$]”h&]”jˆj)jhuh1j¦h³j®h´MKhj•h²hubj)�”}”(hhh]”hÝ)�”}”(hŒ1Set the state of an external connector with sync.”h]”hŒ1Set the state of an external connector with sync.”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MKhjâ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•h²hh³j®h´MKubeh}”(h]”h ]”(j7Œfunction”eh"]”h$]”h&]”j'j7j(jý j)jý j*‰j+‰j,‰uh1j¡h²hhjh³Nh´Nubj.)�”}”(hX«**Parameters** ``struct extcon_dev *edev`` the extcon device ``unsigned int id`` the unique id indicating an external connector ``bool state`` the new state of external connector. the default semantics is true: attached / false: detached. **Description** Note that this function set the state of external connector and synchronize the state by sending a notification. Returns 0 if success or error number if fail.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j8)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MOhj ubjN)�”}”(hhh]”(jS)�”}”(hŒ.``struct extcon_dev *edev`` the extcon device ”h]”(jY)�”}”(hŒ``struct extcon_dev *edev``”h]”jj)�”}”(hj& h]”hŒstruct extcon_dev *edev”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MLhj ubjs)�”}”(hhh]”hÝ)�”}”(hŒthe extcon device”h]”hŒthe extcon device”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³j; h´MLhj< ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³j; h´MLhj ubjS)�”}”(hŒC``unsigned int id`` the unique id indicating an external connector ”h]”(jY)�”}”(hŒ``unsigned int id``”h]”jj)�”}”(hj_ h]”hŒunsigned int id”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MMhjY ubjs)�”}”(hhh]”hÝ)�”}”(hŒ.the unique id indicating an external connector”h]”hŒ.the unique id indicating an external connector”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jt h´MMhju ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjY ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jt h´MMhj ubjS)�”}”(hŒo``bool state`` the new state of external connector. the default semantics is true: attached / false: detached. ”h]”(jY)�”}”(hŒ``bool state``”h]”jj)�”}”(hj˜ h]”hŒ bool state”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MOhj’ ubjs)�”}”(hhh]”hÝ)�”}”(hŒ_the new state of external connector. the default semantics is true: attached / false: detached.”h]”hŒ_the new state of external connector. the default semantics is true: attached / false: detached.”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MNhj® ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj’ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³j­ h´MOhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj ubhÝ)�”}”(hŒ**Description**”h]”j8)�”}”(hjÔ h]”hŒ Description”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MQhj ubhÝ)�”}”(hŒpNote that this function set the state of external connector and synchronize the state by sending a notification.”h]”hŒpNote that this function set the state of external connector and synchronize the state by sending a notification.”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MPhj ubhÝ)�”}”(hŒ-Returns 0 if success or error number if fail.”h]”hŒ-Returns 0 if success or error number if fail.”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:150: ./drivers/extcon/extcon.c”h´MShj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j-hjh²hh³Nh´Nubj‘)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j�Œ extcon_get_property (C function)”Œc.extcon_get_property”hNt”auh1j�hjh²hh³Nh´Nubj¢)�”}”(hhh]”(j§)�”}”(hŒ|int extcon_get_property (struct extcon_dev *edev, unsigned int id, unsigned int prop, union extcon_property_value *prop_val)”h]”j­)�”}”(hŒ{int extcon_get_property(struct extcon_dev *edev, unsigned int id, unsigned int prop, union extcon_property_value *prop_val)”h]”(j³)�”}”(hŒint”h]”hŒint”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj$ h²hh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´McubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj$ h²hh³j6 h´McubjÖ)�”}”(hŒextcon_get_property”h]”jÜ)�”}”(hŒextcon_get_property”h]”hŒextcon_get_property”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjE ubah}”(h]”h ]”(jïjðeh"]”h$]”h&]”jMjNuh1jÕhj$ h²hh³j6 h´Mcubjõ)�”}”(hŒd(struct extcon_dev *edev, unsigned int id, unsigned int prop, union extcon_property_value *prop_val)”h]”(jû)�”}”(hŒstruct extcon_dev *edev”h]”(j)�”}”(hjh]”hŒstruct”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhja ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhja ubh)�”}”(hhh]”jÜ)�”}”(hŒ extcon_dev”h]”hŒ extcon_dev”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhj€ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j7Œreftype”j9Œ reftarget”j… Œmodname”NŒ classname”Nj=j@)�”}”jC]”jF)�”}”j9jK sbŒc.extcon_get_property”†”asbuh1hhja ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhja ubjZ)�”}”(hj]h]”hŒ*”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhja ubjÜ)�”}”(hŒedev”h]”hŒedev”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhja ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhj] ubjû)�”}”(hŒunsigned int id”h]”(j³)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj× h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÓ ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÓ ubj³)�”}”(hŒint”h]”hŒint”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÓ ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhjÓ ubjÜ)�”}”(hŒid”h]”hŒid”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhjÓ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhj] ubjû)�”}”(hŒunsigned int prop”h]”(j³)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj$ ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj$ ubj³)�”}”(hŒint”h]”hŒint”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj$ ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhj$ ubjÜ)�”}”(hŒprop”h]”hŒprop”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhj] ubjû)�”}”(hŒ%union extcon_property_value *prop_val”h]”(j)�”}”(hŒunion”h]”hŒunion”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”uh1jhju ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhju ubh)�”}”(hhh]”jÜ)�”}”(hŒextcon_property_value”h]”hŒextcon_property_value”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhj• ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j7Œreftype”j9Œ reftarget”jš Œmodname”NŒ classname”Nj=j@)�”}”jC]”jŸ Œc.extcon_get_property”†”asbuh1hhju ubjÅ)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”jÑah"]”h$]”h&]”uh1jÄhju ubjZ)�”}”(hj]h]”hŒ*”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”jfah"]”h$]”h&]”uh1jYhju ubjÜ)�”}”(hŒprop_val”h]”hŒprop_val”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”jèah"]”h$]”h&]”uh1jÛhju ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjMjNuh1júhj] ubeh}”(h]”h ]”h"]”h$]”h&]”jMjNuh1jôhj$ h²hh³j6 h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jMjNjøˆuh1j¬jùjúhj h²hh³j6 h´Mcubah}”(h]”j ah ]”(jþjÿeh"]”h$]”h&]”jˆj)jhuh1j¦h³j6 h´Mchj h²hubj)�”}”(hhh]”hÝ)�”}”(hŒ0Get the property value of an external connector.”h]”hŒ0Get the property value of an external connector.”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mchjø h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³j6 h´Mcubeh}”(h]”h ]”(j7Œfunction”eh"]”h$]”h&]”j'j7j(j j)j j*‰j+‰j,‰uh1j¡h²hhjh³Nh´Nubj.)�”}”(hX�**Parameters** ``struct extcon_dev *edev`` the extcon device ``unsigned int id`` the unique id indicating an external connector ``unsigned int prop`` the property id indicating an extcon property ``union extcon_property_value *prop_val`` the pointer which store the value of extcon property **Description** Note that when getting the property value of external connector, the external connector should be attached. If detached state, function return 0 without property value. Also, the each property should be included in the list of supported properties according to extcon type. Returns 0 if success or error number if fail.”h]”(hÝ)�”}”(hŒ**Parameters**”h]”j8)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mghj ubjN)�”}”(hhh]”(jS)�”}”(hŒ.``struct extcon_dev *edev`` the extcon device ”h]”(jY)�”}”(hŒ``struct extcon_dev *edev``”h]”jj)�”}”(hj< h]”hŒstruct extcon_dev *edev”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mdhj6 ubjs)�”}”(hhh]”hÝ)�”}”(hŒthe extcon device”h]”hŒthe extcon device”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jQ h´MdhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jQ h´Mdhj3 ubjS)�”}”(hŒC``unsigned int id`` the unique id indicating an external connector ”h]”(jY)�”}”(hŒ``unsigned int id``”h]”jj)�”}”(hju h]”hŒunsigned int id”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mehjo ubjs)�”}”(hhh]”hÝ)�”}”(hŒ.the unique id indicating an external connector”h]”hŒ.the unique id indicating an external connector”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jŠ h´Mehj‹ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjo ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jŠ h´Mehj3 ubjS)�”}”(hŒD``unsigned int prop`` the property id indicating an extcon property ”h]”(jY)�”}”(hŒ``unsigned int prop``”h]”jj)�”}”(hj® h]”hŒunsigned int prop”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mfhj¨ ubjs)�”}”(hhh]”hÝ)�”}”(hŒ-the property id indicating an extcon property”h]”hŒ-the property id indicating an extcon property”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jà h´MfhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jà h´Mfhj3 ubjS)�”}”(hŒ_``union extcon_property_value *prop_val`` the pointer which store the value of extcon property ”h]”(jY)�”}”(hŒ)``union extcon_property_value *prop_val``”h]”jj)�”}”(hjç h]”hŒ%union extcon_property_value *prop_val”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjå ubah}”(h]”h ]”h"]”h$]”h&]”uh1jXh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mghjá ubjs)�”}”(hhh]”hÝ)�”}”(hŒ4the pointer which store the value of extcon property”h]”hŒ4the pointer which store the value of extcon property”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³jü h´Mghjý ubah}”(h]”h ]”h"]”h$]”h&]”uh1jrhjá ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jRh³jü h´Mghj3 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jMhj ubhÝ)�”}”(hŒ**Description**”h]”j8)�”}”(hj"h]”hŒ Description”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mihj ubhÝ)�”}”(hXNote that when getting the property value of external connector, the external connector should be attached. If detached state, function return 0 without property value. Also, the each property should be included in the list of supported properties according to extcon type.”h]”hXNote that when getting the property value of external connector, the external connector should be attached. If detached state, function return 0 without property value. Also, the each property should be included in the list of supported properties according to extcon type.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mhhj ubhÝ)�”}”(hŒ-Returns 0 if success or error number if fail.”h]”hŒ-Returns 0 if success or error number if fail.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³ŒZ/var/lib/git/docbuild/linux/Documentation/driver-api/extcon:153: ./drivers/extcon/extcon.c”h´Mmhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j-hjh²hh³Nh´Nubeh}”(h]”Œcore-functions”ah ]”h"]”Œcore functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´KŽubh¶)�”}”(hhh]”(h»)�”}”(hŒSysfs Interface”h]”hŒSysfs Interface”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjeh²hh³hÊh´KžubhÝ)�”}”(hŒ5Extcon devices expose the following sysfs attributes:”h]”hŒ5Extcon devices expose the following sysfs attributes:”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K hjeh²hubj^)�”}”(hhh]”(j)�”}”(hŒ#``name``: Name of the Extcon device”h]”hÝ)�”}”(hj‰h]”(jj)�”}”(hŒ``name``”h]”hŒname”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj‹ubhŒ: Name of the Extcon device”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¢hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj„h²hh³hÊh´Nubj)�”}”(hŒ0``state``: Current state of all supported cables”h]”hÝ)�”}”(hj®h]”(jj)�”}”(hŒ ``state``”h]”hŒstate”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihj°ubhŒ': Current state of all supported cables”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K£hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj„h²hh³hÊh´Nubj)�”}”(hŒ1``cable.N/name``: Name of the Nth supported cable”h]”hÝ)�”}”(hjÓh]”(jj)�”}”(hŒ``cable.N/name``”h]”hŒ cable.N/name”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjÕubhŒ!: Name of the Nth supported cable”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¤hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj„h²hh³hÊh´Nubj)�”}”(hŒ4``cable.N/state``: State of the Nth supported cable ”h]”hÝ)�”}”(hŒ3``cable.N/state``: State of the Nth supported cable”h]”(jj)�”}”(hŒ``cable.N/state``”h]”hŒ cable.N/state”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jihjúubhŒ": State of the Nth supported cable”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´K¥hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj„h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j8j9uh1j]h³hÊh´K¢hjeh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ Usage Example”h]”hŒ Usage Example”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj"h²hh³hÊh´K¨ubj>)�”}”(hXo#include #include #include struct my_extcon_data { struct extcon_dev *edev; struct device *dev; }; static const unsigned int my_extcon_cable[] = { EXTCON_USB, EXTCON_USB_HOST, EXTCON_NONE, }; static int my_extcon_probe(struct platform_device *pdev) { struct my_extcon_data *data; int ret; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->dev = &pdev->dev; /* Initialize extcon device */ data->edev = devm_extcon_dev_allocate(data->dev, my_extcon_cable); if (IS_ERR(data->edev)) { dev_err(data->dev, "Failed to allocate extcon device\n"); return PTR_ERR(data->edev); } /* Register extcon device */ ret = devm_extcon_dev_register(data->dev, data->edev); if (ret < 0) { dev_err(data->dev, "Failed to register extcon device\n"); return ret; } platform_set_drvdata(pdev, data); /* Example: Set initial state */ extcon_set_state_sync(data->edev, EXTCON_USB, true); dev_info(data->dev, "My extcon driver probed successfully\n"); return 0; } static int my_extcon_remove(struct platform_device *pdev) { struct my_extcon_data *data = platform_get_drvdata(pdev); /* Example: Clear state before removal */ extcon_set_state_sync(data->edev, EXTCON_USB, false); dev_info(data->dev, "My extcon driver removed\n"); return 0; } static const struct of_device_id my_extcon_of_match[] = { { .compatible = "my,extcon-device", }, { }, }; MODULE_DEVICE_TABLE(of, my_extcon_of_match); static struct platform_driver my_extcon_driver = { .driver = { .name = "my-extcon-driver", .of_match_table = my_extcon_of_match, }, .probe = my_extcon_probe, .remove = my_extcon_remove, }; module_platform_driver(my_extcon_driver);”h]”hXo#include #include #include struct my_extcon_data { struct extcon_dev *edev; struct device *dev; }; static const unsigned int my_extcon_cable[] = { EXTCON_USB, EXTCON_USB_HOST, EXTCON_NONE, }; static int my_extcon_probe(struct platform_device *pdev) { struct my_extcon_data *data; int ret; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->dev = &pdev->dev; /* Initialize extcon device */ data->edev = devm_extcon_dev_allocate(data->dev, my_extcon_cable); if (IS_ERR(data->edev)) { dev_err(data->dev, "Failed to allocate extcon device\n"); return PTR_ERR(data->edev); } /* Register extcon device */ ret = devm_extcon_dev_register(data->dev, data->edev); if (ret < 0) { dev_err(data->dev, "Failed to register extcon device\n"); return ret; } platform_set_drvdata(pdev, data); /* Example: Set initial state */ extcon_set_state_sync(data->edev, EXTCON_USB, true); dev_info(data->dev, "My extcon driver probed successfully\n"); return 0; } static int my_extcon_remove(struct platform_device *pdev) { struct my_extcon_data *data = platform_get_drvdata(pdev); /* Example: Clear state before removal */ extcon_set_state_sync(data->edev, EXTCON_USB, false); dev_info(data->dev, "My extcon driver removed\n"); return 0; } static const struct of_device_id my_extcon_of_match[] = { { .compatible = "my,extcon-device", }, { }, }; MODULE_DEVICE_TABLE(of, my_extcon_of_match); static struct platform_driver my_extcon_driver = { .driver = { .name = "my-extcon-driver", .of_match_table = my_extcon_of_match, }, .probe = my_extcon_probe, .remove = my_extcon_remove, }; module_platform_driver(my_extcon_driver);”…”�”}”hj3sbah}”(h]”h ]”h"]”h$]”h&]”jMjNŒforce”‰Œlanguage”j7Œhighlight_args”}”uh1j=h³hÊh´Kªhj"h²hubeh}”(h]”Œ usage-example”ah ]”h"]”Œ usage example”ah$]”h&]”uh1hµhjeh²hh³hÊh´K¨ubh¶)�”}”(hhh]”(h»)�”}”(hŒThis example demonstrates:”h]”hŒThis example demonstrates:”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjMh²hh³hÊh´Kúubj^)�”}”(hhh]”(j)�”}”(hŒ?Defining supported cable types (USB and USB Host in this case).”h]”hÝ)�”}”(hjch]”hŒ?Defining supported cable types (USB and USB Host in this case).”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kühjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj^h²hh³hÊh´Nubj)�”}”(hŒ,Allocating and registering an extcon device.”h]”hÝ)�”}”(hjzh]”hŒ,Allocating and registering an extcon device.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kýhjxubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj^h²hh³hÊh´Nubj)�”}”(hŒESetting an initial state for a cable (USB connected in this example).”h]”hÝ)�”}”(hj‘h]”hŒESetting an initial state for a cable (USB connected in this example).”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kþhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj^h²hh³hÊh´Nubj)�”}”(hŒ.Clearing the state when the driver is removed.”h]”hÝ)�”}”(hj¨h]”hŒ.Clearing the state when the driver is removed.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÜh³hÊh´Kÿhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÿhj^h²hh³hÊh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j8j9uh1j]h³hÊh´KühjMh²hubeh}”(h]”Œthis-example-demonstrates”ah ]”h"]”Œthis example demonstrates:”ah$]”h&]”uh1hµhjeh²hh³hÊh´Kúubeh}”(h]”Œsysfs-interface”ah ]”h"]”Œsysfs interface”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kžubeh}”(h]”Œextcon-device-subsystem”ah ]”h"]”Œextcon device subsystem”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jþŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jØjÕj jj|jyj?j<jtjqjbj_jÐjÍjJjGjÈjÅuŒ nametypes”}”(j؉j ‰j|‰j?‰jt‰jb‰jЉjJ‰jȉuh}”(jÕh·jhËjyj j<jjqjBj_jjŸj¨j jj“j˜j j jÍjejGj"jÅjMuŒ 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.