€•ÐŒ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/aperture”Œ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/aperture”Œ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/aperture”Œ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/aperture”Œ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/aperture”Œ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/aperture”Œ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/aperture”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒA/var/lib/git/docbuild/linux/Documentation/driver-api/aperture.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ.Managing Ownership of the Framebuffer Aperture”h]”hŒ.Managing Ownership of the Framebuffer Aperture”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXêA graphics device might be supported by different drivers, but only one driver can be active at any given time. Many systems load a generic graphics drivers, such as EFI-GOP or VESA, early during the boot process. During later boot stages, they replace the generic driver with a dedicated, hardware-specific driver. To take over the device, the dedicated driver first has to remove the generic driver. Aperture functions manage ownership of framebuffer memory and hand-over between drivers.”h]”hXêA graphics device might be supported by different drivers, but only one driver can be active at any given time. Many systems load a generic graphics drivers, such as EFI-GOP or VESA, early during the boot process. During later boot stages, they replace the generic driver with a dedicated, hardware-specific driver. To take over the device, the dedicated driver first has to remove the generic driver. Aperture functions manage ownership of framebuffer memory and hand-over between drivers.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KhhÊh²hubhÞ)�”}”(hXGraphics drivers should call aperture_remove_conflicting_devices() at the top of their probe function. The function removes any generic driver that is currently associated with the given framebuffer memory. An example for a graphics device on the platform bus is shown below.”h]”hXGraphics drivers should call aperture_remove_conflicting_devices() at the top of their probe function. The function removes any generic driver that is currently associated with the given framebuffer memory. An example for a graphics device on the platform bus is shown below.”…”�”}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KhhÊh²hubhŒ literal_block”“”)�”}”(hX^static int example_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; int ret; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = aperture_remove_conflicting_devices(base, size, "example"); if (ret) return ret; // Initialize the hardware ... return 0; } static const struct platform_driver example_driver = { .probe = example_probe, ... };”h]”hX^static int example_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; int ret; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = aperture_remove_conflicting_devices(base, size, "example"); if (ret) return ret; // Initialize the hardware ... return 0; } static const struct platform_driver example_driver = { .probe = example_probe, ... };”…”�”}”hhÿsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œc”Œhighlight_args”}”uh1hýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KhhÊh²hubhÞ)�”}”(hXuThe given example reads the platform device's I/O-memory range from the device instance. An active framebuffer will be located within this range. The call to aperture_remove_conflicting_devices() releases drivers that have previously claimed ownership of the range and are currently driving output on the framebuffer. If successful, the new driver can take over the device.”h]”hXwThe given example reads the platform device’s I/O-memory range from the device instance. An active framebuffer will be located within this range. The call to aperture_remove_conflicting_devices() releases drivers that have previously claimed ownership of the range and are currently driving output on the framebuffer. If successful, the new driver can take over the device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´K;hhÊh²hubhÞ)�”}”(hX¥While the given example uses a platform device, the aperture helpers work with every bus that has an addressable framebuffer. In the case of PCI, device drivers can also call aperture_remove_conflicting_pci_devices() and let the function detect the apertures automatically. Device drivers without knowledge of the framebuffer's location can call aperture_remove_all_conflicting_devices(), which removes all known devices.”h]”hX§While the given example uses a platform device, the aperture helpers work with every bus that has an addressable framebuffer. In the case of PCI, device drivers can also call aperture_remove_conflicting_pci_devices() and let the function detect the apertures automatically. Device drivers without knowledge of the framebuffer’s location can call aperture_remove_all_conflicting_devices(), which removes all known devices.”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KBhhÊh²hubhÞ)�”}”(hX·Drivers that are susceptible to being removed by other drivers, such as generic EFI or VESA drivers, have to register themselves as owners of their framebuffer apertures. Ownership of the framebuffer memory is achieved by calling devm_aperture_acquire_for_platform_device(). If successful, the driver is the owner of the framebuffer range. The function fails if the framebuffer is already owned by another driver. See below for an example.”h]”hX·Drivers that are susceptible to being removed by other drivers, such as generic EFI or VESA drivers, have to register themselves as owners of their framebuffer apertures. Ownership of the framebuffer memory is achieved by calling devm_aperture_acquire_for_platform_device(). If successful, the driver is the owner of the framebuffer range. The function fails if the framebuffer is already owned by another driver. See below for an example.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KIhhÊh²hubhþ)�”}”(hXéstatic int generic_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = devm_aperture_acquire_for_platform_device(pdev, base, size); if (ret) return ret; // Initialize the hardware ... return 0; } static int generic_remove(struct platform_device *) { // Hot-unplug the device ... return 0; } static const struct platform_driver generic_driver = { .probe = generic_probe, .remove = generic_remove, ... };”h]”hXéstatic int generic_probe(struct platform_device *pdev) { struct resource *mem; resource_size_t base, size; mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!mem) return -ENODEV; base = mem->start; size = resource_size(mem); ret = devm_aperture_acquire_for_platform_device(pdev, base, size); if (ret) return ret; // Initialize the hardware ... return 0; } static int generic_remove(struct platform_device *) { // Hot-unplug the device ... return 0; } static const struct platform_driver generic_driver = { .probe = generic_probe, .remove = generic_remove, ... };”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj ‰jjj}”uh1hýh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KPhhÊh²hubhÞ)�”}”(hŒÓThe similar to the previous example, the generic driver claims ownership of the framebuffer memory from its probe function. This will fail if the memory range, or parts of it, is already owned by another driver.”h]”hŒÓThe similar to the previous example, the generic driver claims ownership of the framebuffer memory from its probe function. This will fail if the memory range, or parts of it, is already owned by another driver.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KuhhÊh²hubhÞ)�”}”(hXIf successful, the generic driver is now subject to forced removal by another driver. This only works for platform drivers that support hot unplugging. When a driver calls aperture_remove_conflicting_devices() et al for the registered framebuffer range, the aperture helpers call platform_device_unregister() and the generic driver unloads itself. The generic driver also has to provide a remove function to make this work. Once hot unplugged from hardware, it may not access the device's registers, framebuffer memory, ROM, etc afterwards.”h]”hXIf successful, the generic driver is now subject to forced removal by another driver. This only works for platform drivers that support hot unplugging. When a driver calls aperture_remove_conflicting_devices() et al for the registered framebuffer range, the aperture helpers call platform_device_unregister() and the generic driver unloads itself. The generic driver also has to provide a remove function to make this work. Once hot unplugged from hardware, it may not access the device’s registers, framebuffer memory, ROM, etc afterwards.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:6: ./drivers/video/aperture.c”h´KyhhÊh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ4aperture_remove_all_conflicting_devices (C function)”Œ)c.aperture_remove_all_conflicting_devices”hNt”auh1jnhhÊh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ>int aperture_remove_all_conflicting_devices (const char *name)”h]”hŒdesc_signature_line”“”)�”}”(hŒ=int aperture_remove_all_conflicting_devices(const char *name)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒint”h]”hŒint”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j�hjŒh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K0ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j¢hjŒh²hh³j¡h´K0ubhŒ desc_name”“”)�”}”(hŒ'aperture_remove_all_conflicting_devices”h]”hŒ desc_sig_name”“”)�”}”(hŒ'aperture_remove_all_conflicting_devices”h]”hŒ'aperture_remove_all_conflicting_devices”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j¹hjµubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1j³hjŒh²hh³j¡h´K0ubhŒdesc_parameterlist”“”)�”}”(hŒ(const char *name)”h]”hŒdesc_parameter”“”)�”}”(hŒconst char *name”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒconst”h]”hŒconst”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jÞhjÚubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjÚubj‘)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjÚubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjÚubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jhjÚubjº)�”}”(hŒname”h]”hŒname”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhjÔubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÒhjŒh²hh³j¡h´K0ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jŠŒsphinx_line_type”Œ declarator”hj†h²hh³j¡h´K0ubah}”(h]”j}ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j„h³j¡h´K0hj�h²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ remove all existing framebuffers”h]”hŒ remove all existing framebuffers”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K0hj[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj�h²hh³j¡h´K0ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”Œdomain”jŒobjtype”jvŒdesctype”jvŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhÊh³Nh´NubhŒ container”“”)�”}”(hX.**Parameters** ``const char *name`` a descriptive name of the requesting driver **Description** This function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory. **Return** 0 on success, or a negative errno code otherwise”h]”(hÞ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjˆh]”hŒ Parameters”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K4hj‚ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒA``const char *name`` a descriptive name of the requesting driver ”h]”(hŒterm”“”)�”}”(hŒ``const char *name``”h]”hŒliteral”“”)�”}”(hj¯h]”hŒconst char *name”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K1hj§ubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒ+a descriptive name of the requesting driver”h]”hŒ+a descriptive name of the requesting driver”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÆh´K1hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jÆh´K1hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚ubhÞ)�”}”(hŒ**Description**”h]”j‹)�”}”(hjîh]”hŒ Description”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K3hj‚ubhÞ)�”}”(hŒ‹This function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory.”h]”hŒ‹This function removes all graphics device drivers. Use this function on systems that can have their framebuffer located anywhere in memory.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K2hj‚ubhÞ)�”}”(hŒ **Return**”h]”j‹)�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K5hj‚ubhÞ)�”}”(hŒ00 on success, or a negative errno code otherwise”h]”hŒ00 on success, or a negative errno code otherwise”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ[/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:9: ./include/linux/aperture.h”h´K6hj‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j€hhÊh²hh³Nh´Nubjo)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j{Œ6devm_aperture_acquire_for_platform_device (C function)”Œ+c.devm_aperture_acquire_for_platform_device”hNt”auh1jnhhÊh²hh³Nh´Nubj€)�”}”(hhh]”(j…)�”}”(hŒxint devm_aperture_acquire_for_platform_device (struct platform_device *pdev, resource_size_t base, resource_size_t size)”h]”j‹)�”}”(hŒwint devm_aperture_acquire_for_platform_device(struct platform_device *pdev, resource_size_t base, resource_size_t size)”h]”(j‘)�”}”(hŒint”h]”hŒint”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjVh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KÜubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjVh²hh³jhh´KÜubj´)�”}”(hŒ)devm_aperture_acquire_for_platform_device”h]”jº)�”}”(hŒ)devm_aperture_acquire_for_platform_device”h]”hŒ)devm_aperture_acquire_for_platform_device”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjwubah}”(h]”h ]”(jÍjÎeh"]”h$]”h&]”hÅhÆuh1j³hjVh²hh³jhh´KÜubjÓ)�”}”(hŒJ(struct platform_device *pdev, resource_size_t base, resource_size_t size)”h]”(jÙ)�”}”(hŒstruct platform_device *pdev”h]”(jß)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(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“ubh)�”}”(hhh]”jº)�”}”(hŒplatform_device”h]”hŒplatform_device”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”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.devm_aperture_acquire_for_platform_device”†”asbuh1hhj“ubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hj“ubj)�”}”(hjh]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj“ubjº)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj�ubjÙ)�”}”(hŒresource_size_t base”h]”(h)�”}”(hhh]”jº)�”}”(hŒresource_size_t”h]”hŒresource_size_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”jŒmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jÚŒ+c.devm_aperture_acquire_for_platform_device”†”asbuh1hhjubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjubjº)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj�ubjÙ)�”}”(hŒresource_size_t size”h]”(h)�”}”(hhh]”jº)�”}”(hŒresource_size_t”h]”hŒresource_size_t”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjZubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”j_Œmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jÚŒ+c.devm_aperture_acquire_for_platform_device”†”asbuh1hhjVubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjVubjº)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÒhjVh²hh³jhh´KÜubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjKˆuh1jŠjLjMhjRh²hh³jhh´KÜubah}”(h]”jMah ]”(jQjReh"]”h$]”h&]”jVˆjW)jXhuh1j„h³jhh´KÜhjOh²hubjZ)�”}”(hhh]”hÞ)�”}”(hŒAAcquires ownership of an aperture on behalf of a platform device.”h]”hŒAAcquires ownership of an aperture on behalf of a platform device.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KÜhj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjOh²hh³jhh´KÜubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jzjj{jËj|jËj}‰j~‰j‰uh1jh²hhhÊh³Nh´Nubj�)�”}”(hXR**Parameters** ``struct platform_device *pdev`` the platform device to own the aperture ``resource_size_t base`` the aperture's byte offset in physical memory ``resource_size_t size`` the aperture size in bytes **Description** Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away. The function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function. **Return** 0 on success, or a negative errno value otherwise.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j‹)�”}”(hjÕh]”hŒ Parameters”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KàhjÏubj¡)�”}”(hhh]”(j¦)�”}”(hŒI``struct platform_device *pdev`` the platform device to own the aperture ”h]”(j¬)�”}”(hŒ ``struct platform_device *pdev``”h]”j²)�”}”(hjôh]”hŒstruct platform_device *pdev”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KÞhjîubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ'the platform device to own the aperture”h]”hŒ'the platform device to own the aperture”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j h´KÞhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³j h´KÞhjëubj¦)�”}”(hŒG``resource_size_t base`` the aperture's byte offset in physical memory ”h]”(j¬)�”}”(hŒ``resource_size_t base``”h]”j²)�”}”(hj-h]”hŒresource_size_t base”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Kßhj'ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ-the aperture's byte offset in physical memory”h]”hŒ/the aperture’s byte offset in physical memory”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jBh´KßhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jBh´Kßhjëubj¦)�”}”(hŒ4``resource_size_t size`` the aperture size in bytes ”h]”(j¬)�”}”(hŒ``resource_size_t size``”h]”j²)�”}”(hjfh]”hŒresource_size_t size”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Kàhj`ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒthe aperture size in bytes”h]”hŒthe aperture size in bytes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j{h´Kàhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³j{h´Kàhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏubhÞ)�”}”(hŒ**Description**”h]”j‹)�”}”(hj¡h]”hŒ Description”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KâhjÏubhÞ)�”}”(hX[Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away.”h]”hX[Installs the given device as the new owner of the aperture. The function expects the aperture to be provided by a platform device. If another driver takes over ownership of the aperture, aperture helpers will then unregister the platform device automatically. All acquired apertures are released automatically when the underlying device goes away.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KáhjÏubhÞ)�”}”(hŒÇThe function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function.”h]”hŒÇThe function fails if the aperture, or parts of it, is currently owned by another device. To evict current owners, callers should use remove_conflicting_devices() et al. before calling this function.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KçhjÏubhÞ)�”}”(hŒ **Return**”h]”j‹)�”}”(hj×h]”hŒReturn”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KëhjÏubhÞ)�”}”(hŒ20 on success, or a negative errno value otherwise.”h]”hŒ20 on success, or a negative errno value otherwise.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´KìhjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j€hhÊh²hh³Nh´Nubjo)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j{Œ0aperture_remove_conflicting_devices (C function)”Œ%c.aperture_remove_conflicting_devices”hNt”auh1jnhhÊh²hh³Nh´Nubj€)�”}”(hhh]”(j…)�”}”(hŒfint aperture_remove_conflicting_devices (resource_size_t base, resource_size_t size, const char *name)”h]”j‹)�”}”(hŒeint aperture_remove_conflicting_devices(resource_size_t base, resource_size_t size, const char *name)”h]”(j‘)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Mubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjh²hh³j*h´Mubj´)�”}”(hŒ#aperture_remove_conflicting_devices”h]”jº)�”}”(hŒ#aperture_remove_conflicting_devices”h]”hŒ#aperture_remove_conflicting_devices”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj9ubah}”(h]”h ]”(jÍjÎeh"]”h$]”h&]”hÅhÆuh1j³hjh²hh³j*h´MubjÓ)�”}”(hŒ>(resource_size_t base, resource_size_t size, const char *name)”h]”(jÙ)�”}”(hŒresource_size_t base”h]”(h)�”}”(hhh]”jº)�”}”(hŒresource_size_t”h]”hŒresource_size_t”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”j^Œmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jÙ)�”}”jÌj?sbŒ%c.aperture_remove_conflicting_devices”†”asbuh1hhjUubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjUubjº)�”}”(hŒbase”h]”hŒbase”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhjQubjÙ)�”}”(hŒresource_size_t size”h]”(h)�”}”(hhh]”jº)�”}”(hŒresource_size_t”h]”hŒresource_size_t”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”j¨Œmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jxŒ%c.aperture_remove_conflicting_devices”†”asbuh1hhjŸubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjŸubjº)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhjQubjÙ)�”}”(hŒconst char *name”h]”(jß)�”}”(hjâh]”hŒconst”…”�”}”(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Œchar”h]”hŒchar”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjçubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjçubj)�”}”(hjh]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhjçubjº)�”}”(hŒname”h]”hŒname”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhjQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÒhjh²hh³j*h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjKˆuh1jŠjLjMhjh²hh³j*h´Mubah}”(h]”jah ]”(jQjReh"]”h$]”h&]”jVˆjW)jXhuh1j„h³j*h´Mhjh²hubjZ)�”}”(hhh]”hÞ)�”}”(hŒ!remove devices in the given range”h]”hŒ!remove devices in the given range”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjh²hh³j*h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jzjj{jqj|jqj}‰j~‰j‰uh1jh²hhhÊh³Nh´Nubj�)�”}”(hXo**Parameters** ``resource_size_t base`` the aperture's base address in physical memory ``resource_size_t size`` aperture size in bytes ``const char *name`` a descriptive name of the requesting driver **Description** This function removes devices that own apertures within **base** and **size**. **Return** 0 on success, or a negative errno code otherwise”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j‹)�”}”(hj{h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Mhjuubj¡)�”}”(hhh]”(j¦)�”}”(hŒH``resource_size_t base`` the aperture's base address in physical memory ”h]”(j¬)�”}”(hŒ``resource_size_t base``”h]”j²)�”}”(hjšh]”hŒresource_size_t base”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Mhj”ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ.the aperture's base address in physical memory”h]”hŒ0the aperture’s base address in physical memory”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¯h´Mhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³j¯h´Mhj‘ubj¦)�”}”(hŒ0``resource_size_t size`` aperture size in bytes ”h]”(j¬)�”}”(hŒ``resource_size_t size``”h]”j²)�”}”(hjÓh]”hŒresource_size_t size”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjÍubjÈ)�”}”(hhh]”hÞ)�”}”(hŒaperture size in bytes”h]”hŒaperture size in bytes”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jèh´Mhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jèh´Mhj‘ubj¦)�”}”(hŒA``const char *name`` a descriptive name of the requesting driver ”h]”(j¬)�”}”(hŒ``const char *name``”h]”j²)�”}”(hj h]”hŒconst char *name”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ+a descriptive name of the requesting driver”h]”hŒ+a descriptive name of the requesting driver”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j!h´Mhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³j!h´Mhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjuubhÞ)�”}”(hŒ**Description**”h]”j‹)�”}”(hjGh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjuubhÞ)�”}”(hŒNThis function removes devices that own apertures within **base** and **size**.”h]”(hŒ8This function removes devices that own apertures within ”…”�”}”(hj]h²hh³Nh´Nubj‹)�”}”(hŒ**base**”h]”hŒbase”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj]ubhŒ and ”…”�”}”(hj]h²hh³Nh´Nubj‹)�”}”(hŒ**size**”h]”hŒsize”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj]ubhŒ.”…”�”}”(hj]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjuubhÞ)�”}”(hŒ **Return**”h]”j‹)�”}”(hj’h]”hŒReturn”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MhjuubhÞ)�”}”(hŒ00 on success, or a negative errno code otherwise”h]”hŒ00 on success, or a negative errno code otherwise”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´Mhjuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j€hhÊh²hh³Nh´Nubjo)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j{Œ1__aperture_remove_legacy_vga_devices (C function)”Œ&c.__aperture_remove_legacy_vga_devices”hNt”auh1jnhhÊh²hh³Nh´Nubj€)�”}”(hhh]”(j…)�”}”(hŒ?int __aperture_remove_legacy_vga_devices (struct pci_dev *pdev)”h]”j‹)�”}”(hŒ>int __aperture_remove_legacy_vga_devices(struct pci_dev *pdev)”h]”(j‘)�”}”(hŒint”h]”hŒint”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjÓh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M1ubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjÓh²hh³jåh´M1ubj´)�”}”(hŒ$__aperture_remove_legacy_vga_devices”h]”jº)�”}”(hŒ$__aperture_remove_legacy_vga_devices”h]”hŒ$__aperture_remove_legacy_vga_devices”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hjôubah}”(h]”h ]”(jÍjÎeh"]”h$]”h&]”hÅhÆuh1j³hjÓh²hh³jåh´M1ubjÓ)�”}”(hŒ(struct pci_dev *pdev)”h]”jÙ)�”}”(hŒstruct pci_dev *pdev”h]”(jß)�”}”(hj™h]”hŒstruct”…”�”}”(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 ubh)�”}”(hhh]”jº)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj/ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”j4 Œmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jÙ)�”}”jÌjúsbŒ&c.__aperture_remove_legacy_vga_devices”†”asbuh1hhj ubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hj ubj)�”}”(hjh]”hŒ*”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj ubjº)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÒhjÓh²hh³jåh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjKˆuh1jŠjLjMhjÏh²hh³jåh´M1ubah}”(h]”jÊah ]”(jQjReh"]”h$]”h&]”jVˆjW)jXhuh1j„h³jåh´M1hjÌh²hubjZ)�”}”(hhh]”hÞ)�”}”(hŒ*remove legacy VGA devices of a PCI devices”h]”hŒ*remove legacy VGA devices of a PCI devices”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M1hj” h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÌh²hh³jåh´M1ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jzjj{j¯ j|j¯ j}‰j~‰j‰uh1jh²hhhÊh³Nh´Nubj�)�”}”(hX!**Parameters** ``struct pci_dev *pdev`` PCI device **Description** This function removes VGA devices provided by **pdev**, such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices. If your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically. WARNING: Apparently we must remove graphics drivers before calling this helper. Otherwise the vga fbdev driver falls over if we have vgacon configured. **Return** 0 on success, or a negative errno code otherwise”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j‹)�”}”(hj¹ h]”hŒ Parameters”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M5hj³ ubj¡)�”}”(hhh]”j¦)�”}”(hŒ$``struct pci_dev *pdev`` PCI device ”h]”(j¬)�”}”(hŒ``struct pci_dev *pdev``”h]”j²)�”}”(hjØ h]”hŒstruct pci_dev *pdev”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M2hjÒ ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ PCI device”h]”hŒ PCI device”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jí h´M2hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jí h´M2hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³ ubhÞ)�”}”(hŒ**Description**”h]”j‹)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M4hj³ ubhÞ)�”}”(hX@This function removes VGA devices provided by **pdev**, such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices.”h]”(hŒ.This function removes VGA devices provided by ”…”�”}”(hj) h²hh³Nh´Nubj‹)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj) ubhX , such as a VGA framebuffer or a console. This is useful if you have a VGA-compatible PCI graphics device with framebuffers in non-BAR locations. Drivers should acquire ownership of those memory areas and afterwards call this helper to release remaining VGA devices.”…”�”}”(hj) h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M3hj³ ubhÞ)�”}”(hŒ®If your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically.”h]”hŒ®If your hardware has its framebuffers accessible via PCI BARS, use aperture_remove_conflicting_pci_devices() instead. The function will release any VGA devices automatically.”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M9hj³ ubj¡)�”}”(hhh]”j¦)�”}”(hŒ˜WARNING: Apparently we must remove graphics drivers before calling this helper. Otherwise the vga fbdev driver falls over if we have vgacon configured. ”h]”(j¬)�”}”(hŒBWARNING: Apparently we must remove graphics drivers before calling”h]”hŒBWARNING: Apparently we must remove graphics drivers before calling”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M?hj\ ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒTthis helper. Otherwise the vga fbdev driver falls over if we have vgacon configured.”h]”hŒTthis helper. Otherwise the vga fbdev driver falls over if we have vgacon configured.”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´M>hjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jn h´M?hjY ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³ ubhÞ)�”}”(hŒ **Return**”h]”j‹)�”}”(hj• h]”hŒReturn”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MAhj³ ubhÞ)�”}”(hŒ00 on success, or a negative errno code otherwise”h]”hŒ00 on success, or a negative errno code otherwise”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MBhj³ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j€hhÊh²hh³Nh´Nubjo)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j{Œ4aperture_remove_conflicting_pci_devices (C function)”Œ)c.aperture_remove_conflicting_pci_devices”hNt”auh1jnhhÊh²hh³Nh´Nubj€)�”}”(hhh]”(j…)�”}”(hŒTint aperture_remove_conflicting_pci_devices (struct pci_dev *pdev, const char *name)”h]”j‹)�”}”(hŒSint aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const char *name)”h]”(j‘)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hjÖ h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MPubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hjÖ h²hh³jè h´MPubj´)�”}”(hŒ'aperture_remove_conflicting_pci_devices”h]”jº)�”}”(hŒ'aperture_remove_conflicting_pci_devices”h]”hŒ'aperture_remove_conflicting_pci_devices”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj÷ ubah}”(h]”h ]”(jÍjÎeh"]”h$]”h&]”hÅhÆuh1j³hjÖ h²hh³jè h´MPubjÓ)�”}”(hŒ((struct pci_dev *pdev, const char *name)”h]”(jÙ)�”}”(hŒstruct pci_dev *pdev”h]”(jß)�”}”(hj™h]”hŒstruct”…”�”}”(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 ubh)�”}”(hhh]”jº)�”}”(hŒpci_dev”h]”hŒpci_dev”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj2 ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jÌŒ reftarget”j7 Œmodname”NŒ classname”NjÐjÓ)�”}”jÖ]”jÙ)�”}”jÌjý sbŒ)c.aperture_remove_conflicting_pci_devices”†”asbuh1hhj ubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hj ubj)�”}”(hjh]”hŒ*”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj ubjº)�”}”(hŒpdev”h]”hŒpdev”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj ubjÙ)�”}”(hŒconst char *name”h]”(jß)�”}”(hjâh]”hŒconst”…”�”}”(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Œchar”h]”hŒchar”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”j�ah"]”h$]”h&]”uh1j�hj… ubj£)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”j¯ah"]”h$]”h&]”uh1j¢hj… ubj)�”}”(hjh]”hŒ*”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”j&ah"]”h$]”h&]”uh1jhj… ubjº)�”}”(hŒname”h]”hŒname”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”jÆah"]”h$]”h&]”uh1j¹hj… ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jØhj ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jÒhjÖ h²hh³jè h´MPubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjKˆuh1jŠjLjMhjÒ h²hh³jè h´MPubah}”(h]”jÍ ah ]”(jQjReh"]”h$]”h&]”jVˆjW)jXhuh1j„h³jè h´MPhjÏ h²hubjZ)�”}”(hhh]”hÞ)�”}”(hŒ,remove existing framebuffers for PCI devices”h]”hŒ,remove existing framebuffers for PCI devices”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MPhjô h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÏ h²hh³jè h´MPubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”jzjj{j j|j j}‰j~‰j‰uh1jh²hhhÊh³Nh´Nubj�)�”}”(hX™**Parameters** ``struct pci_dev *pdev`` PCI device ``const char *name`` a descriptive name of the requesting driver **Description** This function removes devices that own apertures within any of **pdev**'s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well. **Return** 0 on success, or a negative errno code otherwise”h]”(hÞ)�”}”(hŒ**Parameters**”h]”j‹)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MThj ubj¡)�”}”(hhh]”(j¦)�”}”(hŒ$``struct pci_dev *pdev`` PCI device ”h]”(j¬)�”}”(hŒ``struct pci_dev *pdev``”h]”j²)�”}”(hj8 h]”hŒstruct pci_dev *pdev”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hj6 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MQhj2 ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ PCI device”h]”hŒ PCI device”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jM h´MQhjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhj2 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³jM h´MQhj/ ubj¦)�”}”(hŒA``const char *name`` a descriptive name of the requesting driver ”h]”(j¬)�”}”(hŒ``const char *name``”h]”j²)�”}”(hjq h]”hŒconst char *name”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j±hjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1j«h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MRhjk ubjÈ)�”}”(hhh]”hÞ)�”}”(hŒ+a descriptive name of the requesting driver”h]”hŒ+a descriptive name of the requesting driver”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j† h´MRhj‡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇhjk ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j¥h³j† h´MRhj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhÞ)�”}”(hŒ**Description**”h]”j‹)�”}”(hj¬ h]”hŒ Description”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjª ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MThj ubhÞ)�”}”(hŒÏThis function removes devices that own apertures within any of **pdev**'s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well.”h]”(hŒ?This function removes devices that own apertures within any of ”…”�”}”(hj h²hh³Nh´Nubj‹)�”}”(hŒ**pdev**”h]”hŒpdev”…”�”}”(hjÊ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhj ubhŒŠâ€™s memory bars. The function assumes that PCI device with shadowed ROM drives a primary display and therefore kicks out vga16fb as well.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MShj ubhÞ)�”}”(hŒ **Return**”h]”j‹)�”}”(hjå h]”hŒReturn”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŠhjã ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MWhj ubhÞ)�”}”(hŒ00 on success, or a negative errno code otherwise”h]”hŒ00 on success, or a negative errno code otherwise”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/aperture:12: ./drivers/video/aperture.c”h´MXhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j€hhÊh²hh³Nh´Nubeh}”(h]”Œ.managing-ownership-of-the-framebuffer-aperture”ah ]”h"]”Œ.managing ownership of the framebuffer aperture”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 sŒ nametypes”}”j ‰sh}”(j hÊj}j†jMjRjjjÊjÏjÍ jÒ uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.