sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/driver-api/pci/pcimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/pt_BR/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/driver-api/pci/pcimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hPCI Support Libraryh]hPCI Support Library}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci.rsthKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlepci_bus_max_busnr (C function)c.pci_bus_max_busnrhNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h5unsigned char pci_bus_max_busnr (struct pci_bus *bus)h]hdesc_signature_line)}(h4unsigned char pci_bus_max_busnr(struct pci_bus *bus)h](hdesc_sig_keyword_type)}(hunsignedh]hunsigned}(hhhhhNhNubah}(h]h ]ktah"]h$]h&]uh1hhhhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1hhhhhhhhKubh)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhhhhhhhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhhhhhhhKubh desc_name)}(hpci_bus_max_busnrh]h desc_sig_name)}(hpci_bus_max_busnrh]hpci_bus_max_busnr}(hj4hhhNhNubah}(h]h ]nah"]h$]h&]uh1j2hj.ubah}(h]h ](sig-namedescnameeh"]h$]h&] xml:spacepreserveuh1j,hhhhhhhKubhdesc_parameterlist)}(h(struct pci_bus *bus)h]hdesc_parameter)}(hstruct pci_bus *bush](hdesc_sig_keyword)}(hstructh]hstruct}(hj[hhhNhNubah}(h]h ]kah"]h$]h&]uh1jYhjUubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetj}modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj6sbc.pci_bus_max_busnrasbuh1hhjUubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjUubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjOubah}(h]h ]h"]h$]h&]jKjLuh1jMhhhhhhhKubeh}(h]h ]h"]h$]h&]jKjL add_permalinkuh1hsphinx_line_type declaratorhhhhhhhKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhhhKhhhhubh desc_content)}(hhh]h paragraph)}(h5returns maximum PCI bus number of given bus' childrenh]h7returns maximum PCI bus number of given bus’ children}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhhhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(h**Parameters** ``struct pci_bus *bus`` pointer to PCI bus structure to search **Description** Given a PCI bus, returns the highest PCI bus number present in the set including the given PCI bus and its list of child PCI buses.h](j)}(h**Parameters**h]hstrong)}(hj#h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubhdefinition_list)}(hhh]hdefinition_list_item)}(h?``struct pci_bus *bus`` pointer to PCI bus structure to search h](hterm)}(h``struct pci_bus *bus``h]hliteral)}(hjJh]hstruct pci_bus *bus}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjHubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjBubh definition)}(hhh]j)}(h&pointer to PCI bus structure to searchh]h&pointer to PCI bus structure to search}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahKhjdubah}(h]h ]h"]h$]h&]uh1jbhjBubeh}(h]h ]h"]h$]h&]uh1j@hjahKhj=ubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubj)}(hGiven a PCI bus, returns the highest PCI bus number present in the set including the given PCI bus and its list of child PCI buses.h]hGiven a PCI bus, returns the highest PCI bus number present in the set including the given PCI bus and its list of child PCI buses.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،,pci_status_get_and_clear_errors (C function)!c.pci_status_get_and_clear_errorshNtauh1hhhhhhNhNubh)}(hhh](h)}(h:int pci_status_get_and_clear_errors (struct pci_dev *pdev)h]h)}(h9int pci_status_get_and_clear_errors(struct pci_dev *pdev)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj-)}(hpci_status_get_and_clear_errorsh]j3)}(hpci_status_get_and_clear_errorsh]hpci_status_get_and_clear_errors}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j)}jjsb!c.pci_status_get_and_clear_errorsasbuh1hhjubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h)return and clear error bits in PCI_STATUSh]h)return and clear error bits in PCI_STATUS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` the PCI device **Description** Returns error bits set in PCI_STATUS and clears them.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubj<)}(hhh]jA)}(h(``struct pci_dev *pdev`` the PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjh]hstruct pci_dev *pdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubj)}(h5Returns error bits set in PCI_STATUS and clears them.h]h5Returns error bits set in PCI_STATUS and clears them.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_find_capability (C function)c.pci_find_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(h5u8 pci_find_capability (struct pci_dev *dev, int cap)h]h)}(h4u8 pci_find_capability(struct pci_dev *dev, int cap)h](h)}(hhh]j3)}(hu8h]hu8}(hjRhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]j)}jpci_find_capabilitysbc.pci_find_capabilityasbuh1hhjKhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjKhhhjshMubj-)}(hpci_find_capabilityh]j3)}(hjph]hpci_find_capability}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjKhhhjshMubjN)}(h(struct pci_dev *dev, int cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jnc.pci_find_capabilityasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint caph](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hcaph]hcap}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjKhhhjshMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjGhhhjshMubah}(h]jBah ](jjeh"]h$]h&]jj)jhuh1hhjshMhjDhhubj)}(hhh]j)}(hquery for devices' capabilitiesh]h!query for devices’ capabilities}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjThhubah}(h]h ]h"]h$]h&]uh1jhjDhhhjshMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjojjojjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to query ``int cap`` capability code **Description** Tell if a device supports a given PCI capability. Returns the address of the requested capability structure within the device's PCI configuration space or 0 in case the device does not support it. Possible values for **cap** include: ``PCI_CAP_ID_PM`` Power Management ``PCI_CAP_ID_AGP`` Accelerated Graphics Port ``PCI_CAP_ID_VPD`` Vital Product Data ``PCI_CAP_ID_SLOTID`` Slot Identification ``PCI_CAP_ID_MSI`` Message Signalled Interrupts ``PCI_CAP_ID_CHSWP`` CompactPCI HotSwap ``PCI_CAP_ID_PCIX`` PCI-X ``PCI_CAP_ID_EXP`` PCI Expressh](j)}(h**Parameters**h]j&)}(hjyh]h Parameters}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjwubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjsubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h``int cap`` capability code h](jG)}(h ``int cap``h]jM)}(hjh]hint cap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hcapability codeh]hcapability code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjsubj)}(h**Description**h]j&)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjsubj)}(hTell if a device supports a given PCI capability. Returns the address of the requested capability structure within the device's PCI configuration space or 0 in case the device does not support it. Possible values for **cap** include:h](hTell if a device supports a given PCI capability. Returns the address of the requested capability structure within the device’s PCI configuration space or 0 in case the device does not support it. Possible values for }(hj"hhhNhNubj&)}(h**cap**h]hcap}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj"ubh include:}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjsubh block_quote)}(hXs``PCI_CAP_ID_PM`` Power Management ``PCI_CAP_ID_AGP`` Accelerated Graphics Port ``PCI_CAP_ID_VPD`` Vital Product Data ``PCI_CAP_ID_SLOTID`` Slot Identification ``PCI_CAP_ID_MSI`` Message Signalled Interrupts ``PCI_CAP_ID_CHSWP`` CompactPCI HotSwap ``PCI_CAP_ID_PCIX`` PCI-X ``PCI_CAP_ID_EXP`` PCI Expressh]j)}(hXs``PCI_CAP_ID_PM`` Power Management ``PCI_CAP_ID_AGP`` Accelerated Graphics Port ``PCI_CAP_ID_VPD`` Vital Product Data ``PCI_CAP_ID_SLOTID`` Slot Identification ``PCI_CAP_ID_MSI`` Message Signalled Interrupts ``PCI_CAP_ID_CHSWP`` CompactPCI HotSwap ``PCI_CAP_ID_PCIX`` PCI-X ``PCI_CAP_ID_EXP`` PCI Expressh](jM)}(h``PCI_CAP_ID_PM``h]h PCI_CAP_ID_PM}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh Power Management }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_AGP``h]hPCI_CAP_ID_AGP}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh$ Accelerated Graphics Port }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_VPD``h]hPCI_CAP_ID_VPD}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh Vital Product Data }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_SLOTID``h]hPCI_CAP_ID_SLOTID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh Slot Identification }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_MSI``h]hPCI_CAP_ID_MSI}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh' Message Signalled Interrupts }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_CHSWP``h]hPCI_CAP_ID_CHSWP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh CompactPCI HotSwap }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_PCIX``h]hPCI_CAP_ID_PCIX}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh PCI-X }(hjIhhhNhNubjM)}(h``PCI_CAP_ID_EXP``h]hPCI_CAP_ID_EXP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubh PCI Express}(hjIhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjEubah}(h]h ]h"]h$]h&]uh1jChjhMhjsubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_bus_find_capability (C function)c.pci_bus_find_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(hMu8 pci_bus_find_capability (struct pci_bus *bus, unsigned int devfn, int cap)h]h)}(hLu8 pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap)h](h)}(hhh]j3)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_bus_find_capabilitysbc.pci_bus_find_capabilityasbuh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj.hMubj-)}(hpci_bus_find_capabilityh]j3)}(hj+h]hpci_bus_find_capability}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj.hMubjN)}(h2(struct pci_bus *bus, unsigned int devfn, int cap)h](jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hj\hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjXubj)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjzhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]j)c.pci_bus_find_capabilityasbuh1hhjXubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjTubjT)}(hunsigned int devfnh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdevfnh]hdevfn}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjTubjT)}(hint caph](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hcaph]hcap}(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjTubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj.hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj.hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj.hMhjhhubj)}(hhh]j)}(hquery for devices' capabilitiesh]h!query for devices’ capabilities}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj`hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj.hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj{jj{jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_bus *bus`` the PCI bus to query ``unsigned int devfn`` PCI device to query ``int cap`` capability code **Description** Like pci_find_capability() but works for PCI devices that do not have a pci_dev structure set up yet. Returns the address of the requested capability structure within the device's PCI configuration space or 0 in case the device does not support it.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(h-``struct pci_bus *bus`` the PCI bus to query h](jG)}(h``struct pci_bus *bus``h]jM)}(hjh]hstruct pci_bus *bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hthe PCI bus to queryh]hthe PCI bus to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h+``unsigned int devfn`` PCI device to query h](jG)}(h``unsigned int devfn``h]jM)}(hjh]hunsigned int devfn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h``int cap`` capability code h](jG)}(h ``int cap``h]jM)}(hj h]hint cap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubjc)}(hhh]j)}(hcapability codeh]hcapability code}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ hMhj, ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj+ hMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjQ h]h Description}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjO ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(heLike pci_find_capability() but works for PCI devices that do not have a pci_dev structure set up yet.h]heLike pci_find_capability() but works for PCI devices that do not have a pci_dev structure set up yet.}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(hReturns the address of the requested capability structure within the device's PCI configuration space or 0 in case the device does not support it.h]hReturns the address of the requested capability structure within the device’s PCI configuration space or 0 in case the device does not support it.}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،)pci_find_next_ext_capability (C function)c.pci_find_next_ext_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(hJu16 pci_find_next_ext_capability (struct pci_dev *dev, u16 start, int cap)h]h)}(hIu16 pci_find_next_ext_capability(struct pci_dev *dev, u16 start, int cap)h](h)}(hhh]j3)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jpci_find_next_ext_capabilitysbc.pci_find_next_ext_capabilityasbuh1hhj hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hMubj-)}(hpci_find_next_ext_capabilityh]j3)}(hj h]hpci_find_next_ext_capability}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj hhhj hMubjN)}(h)(struct pci_dev *dev, u16 start, int cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.pci_find_next_ext_capabilityasbuh1hhj ubj)}(h h]h }(hj3 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hjA hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hdevh]hdev}(hjN hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(h u16 starth](h)}(hhh]j3)}(hu16h]hu16}(hjj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjg ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjl modnameN classnameNjj)}j]j c.pci_find_next_ext_capabilityasbuh1hhjc ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjc ubj3)}(hstarth]hstart}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjc ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(hint caph](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hcaph]hcap}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj hhhj hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj hhhj hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhj hMhj hhubj)}(hhh]j)}(hFind an extended capabilityh]hFind an extended capability}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to query ``u16 start`` address at which to start looking (0 to start at beginning of list) ``int cap`` capability code **Description** Returns the address of the next matching extended capability structure within the device's PCI configuration space or 0 if the device does not support it. Some capabilities can occur several times, e.g., the vendor-specific capability, and this provides a way to find them all.h](j)}(h**Parameters**h]j&)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hj6 h]hstruct pci_dev *dev}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj4 ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj0 ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK hMhjL ubah}(h]h ]h"]h$]h&]uh1jbhj0 ubeh}(h]h ]h"]h$]h&]uh1j@hjK hMhj- ubjA)}(hR``u16 start`` address at which to start looking (0 to start at beginning of list) h](jG)}(h ``u16 start``h]jM)}(hjo h]h u16 start}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjm ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhji ubjc)}(hhh]j)}(hCaddress at which to start looking (0 to start at beginning of list)h]hCaddress at which to start looking (0 to start at beginning of list)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhji ubeh}(h]h ]h"]h$]h&]uh1j@hj hMhj- ubjA)}(h``int cap`` capability code h](jG)}(h ``int cap``h]jM)}(hj h]hint cap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubjc)}(hhh]j)}(hcapability codeh]hcapability code}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hMhj- ubeh}(h]h ]h"]h$]h&]uh1j;hj ubj)}(h**Description**h]j&)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubj)}(hXReturns the address of the next matching extended capability structure within the device's PCI configuration space or 0 if the device does not support it. Some capabilities can occur several times, e.g., the vendor-specific capability, and this provides a way to find them all.h]hXReturns the address of the next matching extended capability structure within the device’s PCI configuration space or 0 if the device does not support it. Some capabilities can occur several times, e.g., the vendor-specific capability, and this provides a way to find them all.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_find_ext_capability (C function)c.pci_find_ext_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(h:u16 pci_find_ext_capability (struct pci_dev *dev, int cap)h]h)}(h9u16 pci_find_ext_capability(struct pci_dev *dev, int cap)h](h)}(hhh]j3)}(hu16h]hu16}(hj+ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj( ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj- modnameN classnameNjj)}j]j)}jpci_find_ext_capabilitysbc.pci_find_ext_capabilityasbuh1hhj$ hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjM hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ hhhjL hMubj-)}(hpci_find_ext_capabilityh]j3)}(hjI h]hpci_find_ext_capability}(hj_ hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj$ hhhjL hMubjN)}(h(struct pci_dev *dev, int cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjz hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjv ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjv ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jG c.pci_find_ext_capabilityasbuh1hhjv ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjv ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv ubj3)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjv ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjr ubjT)}(hint caph](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hcaph]hcap}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjr ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj$ hhhjL hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj hhhjL hMubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhjL hMhj hhubj)}(hhh]j)}(hFind an extended capabilityh]hFind an extended capability}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj- hhubah}(h]h ]h"]h$]h&]uh1jhj hhhjL hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjH jjH jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to query ``int cap`` capability code **Description** Returns the address of the requested extended capability structure within the device's PCI configuration space or 0 if the device does not support it. Possible values for **cap** include: ``PCI_EXT_CAP_ID_ERR`` Advanced Error Reporting ``PCI_EXT_CAP_ID_VC`` Virtual Channel ``PCI_EXT_CAP_ID_DSN`` Device Serial Number ``PCI_EXT_CAP_ID_PWR`` Power Budgetingh](j)}(h**Parameters**h]j&)}(hjR h]h Parameters}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjP ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjL ubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjq h]hstruct pci_dev *dev}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjo ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjk ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhjk ubeh}(h]h ]h"]h$]h&]uh1j@hj hMhjh ubjA)}(h``int cap`` capability code h](jG)}(h ``int cap``h]jM)}(hj h]hint cap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubjc)}(hhh]j)}(hcapability codeh]hcapability code}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hMhjh ubeh}(h]h ]h"]h$]h&]uh1j;hjL ubj)}(h**Description**h]j&)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjL ubj)}(hReturns the address of the requested extended capability structure within the device's PCI configuration space or 0 if the device does not support it. Possible values for **cap** include:h](hReturns the address of the requested extended capability structure within the device’s PCI configuration space or 0 if the device does not support it. Possible values for }(hj hhhNhNubj&)}(h**cap**h]hcap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubh include:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjL ubjD)}(h``PCI_EXT_CAP_ID_ERR`` Advanced Error Reporting ``PCI_EXT_CAP_ID_VC`` Virtual Channel ``PCI_EXT_CAP_ID_DSN`` Device Serial Number ``PCI_EXT_CAP_ID_PWR`` Power Budgetingh]j)}(h``PCI_EXT_CAP_ID_ERR`` Advanced Error Reporting ``PCI_EXT_CAP_ID_VC`` Virtual Channel ``PCI_EXT_CAP_ID_DSN`` Device Serial Number ``PCI_EXT_CAP_ID_PWR`` Power Budgetingh](jM)}(h``PCI_EXT_CAP_ID_ERR``h]hPCI_EXT_CAP_ID_ERR}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubh" Advanced Error Reporting }(hj hhhNhNubjM)}(h``PCI_EXT_CAP_ID_VC``h]hPCI_EXT_CAP_ID_VC}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubh Virtual Channel }(hj hhhNhNubjM)}(h``PCI_EXT_CAP_ID_DSN``h]hPCI_EXT_CAP_ID_DSN}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubh Device Serial Number }(hj hhhNhNubjM)}(h``PCI_EXT_CAP_ID_PWR``h]hPCI_EXT_CAP_ID_PWR}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubh Power Budgeting}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubah}(h]h ]h"]h$]h&]uh1jChjrhMhjL ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_dsn (C function) c.pci_get_dsnhNtauh1hhhhhhNhNubh)}(hhh](h)}(h%u64 pci_get_dsn (struct pci_dev *dev)h]h)}(h$u64 pci_get_dsn(struct pci_dev *dev)h](h)}(hhh]j3)}(hu64h]hu64}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_get_dsnsb c.pci_get_dsnasbuh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM#ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM#ubj-)}(h pci_get_dsnh]j3)}(hjh]h pci_get_dsn}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM#ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.pci_get_dsnasbuh1hhjubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM#ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM#ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM#hjhhubj)}(hhh]j)}(h/Read and return the 8-byte Device Serial Numberh]h/Read and return the 8-byte Device Serial Number}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM#hjihhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM#ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Looks up the PCI_EXT_CAP_ID_DSN and reads the 8 bytes of the Device Serial Number. Returns the DSN, or zero if the capability does not exist.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM'hjubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM$hjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM$hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM$hjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM&hjubj)}(hRLooks up the PCI_EXT_CAP_ID_DSN and reads the 8 bytes of the Device Serial Number.h]hRLooks up the PCI_EXT_CAP_ID_DSN and reads the 8 bytes of the Device Serial Number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM%hjubj)}(h:Returns the DSN, or zero if the capability does not exist.h]h:Returns the DSN, or zero if the capability does not exist.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM(hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،(pci_find_next_ht_capability (C function)c.pci_find_next_ht_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(hHu8 pci_find_next_ht_capability (struct pci_dev *dev, u8 pos, int ht_cap)h]h)}(hGu8 pci_find_next_ht_capability(struct pci_dev *dev, u8 pos, int ht_cap)h](h)}(hhh]j3)}(hu8h]hu8}(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jpci_find_next_ht_capabilitysbc.pci_find_next_ht_capabilityasbuh1hhj8hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMbubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj8hhhj`hMbubj-)}(hpci_find_next_ht_capabilityh]j3)}(hj]h]hpci_find_next_ht_capability}(hjshhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjoubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj8hhhj`hMbubjN)}(h)(struct pci_dev *dev, u8 pos, int ht_cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j[c.pci_find_next_ht_capabilityasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hu8 posh](h)}(hhh]j3)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j[c.pci_find_next_ht_capabilityasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hposh]hpos}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h int ht_caph](h)}(hinth]hint}(hjFhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjBubj)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjBubj3)}(hht_caph]hht_cap}(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj8hhhj`hMbubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj4hhhj`hMbubah}(h]j/ah ](jjeh"]h$]h&]jj)jhuh1hhj`hMbhj1hhubj)}(hhh]j)}(h,query a device's HyperTransport capabilitiesh]h.query a device’s HyperTransport capabilities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMbhjhhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj`hMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to query ``u8 pos`` Position from which to continue searching ``int ht_cap`` HyperTransport capability code **Description** To be used in conjunction with pci_find_ht_capability() to search for all capabilities matching **ht_cap**. **pos** should always be a value returned from pci_find_ht_capability(). NB. To be 100% safe against broken PCI devices, the caller should take steps to avoid an infinite loop.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMfhjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMchjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMchjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMchjubjA)}(h5``u8 pos`` Position from which to continue searching h](jG)}(h ``u8 pos``h]jM)}(hjh]hu8 pos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMdhjubjc)}(hhh]j)}(h)Position from which to continue searchingh]h)Position from which to continue searching}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMdhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMdhjubjA)}(h.``int ht_cap`` HyperTransport capability code h](jG)}(h``int ht_cap``h]jM)}(hj?h]h int ht_cap}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj=ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMehj9ubjc)}(hhh]j)}(hHyperTransport capability codeh]hHyperTransport capability code}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjThMehjUubah}(h]h ]h"]h$]h&]uh1jbhj9ubeh}(h]h ]h"]h$]h&]uh1j@hjThMehjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjzh]h Description}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjxubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMghjubj)}(hTo be used in conjunction with pci_find_ht_capability() to search for all capabilities matching **ht_cap**. **pos** should always be a value returned from pci_find_ht_capability().h](h`To be used in conjunction with pci_find_ht_capability() to search for all capabilities matching }(hjhhhNhNubj&)}(h **ht_cap**h]hht_cap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh. }(hjhhhNhNubj&)}(h**pos**h]hpos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubhA should always be a value returned from pci_find_ht_capability().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMfhjubj)}(hgNB. To be 100% safe against broken PCI devices, the caller should take steps to avoid an infinite loop.h]hgNB. To be 100% safe against broken PCI devices, the caller should take steps to avoid an infinite loop.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMjhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_find_ht_capability (C function)c.pci_find_ht_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(h;u8 pci_find_ht_capability (struct pci_dev *dev, int ht_cap)h]h)}(h:u8 pci_find_ht_capability(struct pci_dev *dev, int ht_cap)h](h)}(hhh]j3)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_find_ht_capabilitysbc.pci_find_ht_capabilityasbuh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMuubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMuubj-)}(hpci_find_ht_capabilityh]j3)}(hjh]hpci_find_ht_capability}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMuubjN)}(h!(struct pci_dev *dev, int ht_cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjDhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj@ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]jc.pci_find_ht_capabilityasbuh1hhj@ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<ubjT)}(h int ht_caph](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hht_caph]hht_cap}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMuubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMuubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMuhjhhubj)}(hhh]j)}(h,query a device's HyperTransport capabilitiesh]h.query a device’s HyperTransport capabilities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMuhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMuubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to query ``int ht_cap`` HyperTransport capability code **Description** Tell if a device supports a given HyperTransport capability. Returns an address within the device's PCI configuration space or 0 in case the device does not support the request capability. The address points to the PCI capability, of type PCI_CAP_ID_HT, which has a HyperTransport capability matching **ht_cap**.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMyhjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hj;h]hstruct pci_dev *dev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj9ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMvhj5ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPhMvhjQubah}(h]h ]h"]h$]h&]uh1jbhj5ubeh}(h]h ]h"]h$]h&]uh1j@hjPhMvhj2ubjA)}(h.``int ht_cap`` HyperTransport capability code h](jG)}(h``int ht_cap``h]jM)}(hjth]h int ht_cap}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjrubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMwhjnubjc)}(hhh]j)}(hHyperTransport capability codeh]hHyperTransport capability code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMwhjubah}(h]h ]h"]h$]h&]uh1jbhjnubeh}(h]h ]h"]h$]h&]uh1j@hjhMwhj2ubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMyhjubj)}(hX8Tell if a device supports a given HyperTransport capability. Returns an address within the device's PCI configuration space or 0 in case the device does not support the request capability. The address points to the PCI capability, of type PCI_CAP_ID_HT, which has a HyperTransport capability matching **ht_cap**.h](hX/Tell if a device supports a given HyperTransport capability. Returns an address within the device’s PCI configuration space or 0 in case the device does not support the request capability. The address points to the PCI capability, of type PCI_CAP_ID_HT, which has a HyperTransport capability matching }(hjhhhNhNubj&)}(h **ht_cap**h]hht_cap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMxhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pci_find_vsec_capability (C function)c.pci_find_vsec_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(hGu16 pci_find_vsec_capability (struct pci_dev *dev, u16 vendor, int cap)h]h)}(hFu16 pci_find_vsec_capability(struct pci_dev *dev, u16 vendor, int cap)h](h)}(hhh]j3)}(hu16h]hu16}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jpci_find_vsec_capabilitysbc.pci_find_vsec_capabilityasbuh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj*hMubj-)}(hpci_find_vsec_capabilityh]j3)}(hj'h]hpci_find_vsec_capability}(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj*hMubjN)}(h*(struct pci_dev *dev, u16 vendor, int cap)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjXhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjTubj)}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjTubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjvhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j%c.pci_find_vsec_capabilityasbuh1hhjTubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjTubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjPubjT)}(h u16 vendorh](h)}(hhh]j3)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j%c.pci_find_vsec_capabilityasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hvendorh]hvendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjPubjT)}(hint caph](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hcaph]hcap}(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjPubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj*hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj*hMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj*hMhjhhubj)}(hhh]j)}(h*Find a vendor-specific extended capabilityh]h*Find a vendor-specific extended capability}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjShhubah}(h]h ]h"]h$]h&]uh1jhjhhhj*hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjnjjnjjjuh1hhhhhhNhNubj)}(hX\**Parameters** ``struct pci_dev *dev`` PCI device to query ``u16 vendor`` Vendor ID for which capability is defined ``int cap`` Vendor-specific capability ID **Description** If **dev** has Vendor ID **vendor**, search for a VSEC capability with VSEC ID **cap**. If found, return the capability offset in config space; otherwise return 0.h](j)}(h**Parameters**h]j&)}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjvubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h9``u16 vendor`` Vendor ID for which capability is defined h](jG)}(h``u16 vendor``h]jM)}(hjh]h u16 vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(h)Vendor ID for which capability is definedh]h)Vendor ID for which capability is defined}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h*``int cap`` Vendor-specific capability ID h](jG)}(h ``int cap``h]jM)}(hj h]hint cap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hVendor-specific capability IDh]hVendor-specific capability ID}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjrubj)}(h**Description**h]j&)}(hjDh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjBubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(hIf **dev** has Vendor ID **vendor**, search for a VSEC capability with VSEC ID **cap**. If found, return the capability offset in config space; otherwise return 0.h](hIf }(hjZhhhNhNubj&)}(h**dev**h]hdev}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZubh has Vendor ID }(hjZhhhNhNubj&)}(h **vendor**h]hvendor}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZubh,, search for a VSEC capability with VSEC ID }(hjZhhhNhNubj&)}(h**cap**h]hcap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZubhM. If found, return the capability offset in config space; otherwise return 0.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،&pci_find_dvsec_capability (C function)c.pci_find_dvsec_capabilityhNtauh1hhhhhhNhNubh)}(hhh](h)}(hJu16 pci_find_dvsec_capability (struct pci_dev *dev, u16 vendor, u16 dvsec)h]h)}(hIu16 pci_find_dvsec_capability(struct pci_dev *dev, u16 vendor, u16 dvsec)h](h)}(hhh]j3)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_find_dvsec_capabilitysbc.pci_find_dvsec_capabilityasbuh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpci_find_dvsec_capabilityh]j3)}(hjh]hpci_find_dvsec_capability}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h,(struct pci_dev *dev, u16 vendor, u16 dvsec)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]jc.pci_find_dvsec_capabilityasbuh1hhj ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hdevh]hdev}(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(h u16 vendorh](h)}(hhh]j3)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_find_dvsec_capabilityasbuh1hhj}ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}ubj3)}(hvendorh]hvendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(h u16 dvsech](h)}(hhh]j3)}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_find_dvsec_capabilityasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdvsech]hdvsec}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(hFind DVSEC for vendorh]hFind DVSEC for vendor}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:jj:jjjuh1hhhhhhNhNubj)}(hX7**Parameters** ``struct pci_dev *dev`` PCI device to query ``u16 vendor`` Vendor ID to match for the DVSEC ``u16 dvsec`` Designated Vendor-specific capability ID **Description** If DVSEC has Vendor ID **vendor** and DVSEC ID **dvsec** return the capability offset in config space; otherwise return 0.h](j)}(h**Parameters**h]j&)}(hjDh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjBubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj>ubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjch]hstruct pci_dev *dev}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjaubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj]ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxhMhjyubah}(h]h ]h"]h$]h&]uh1jbhj]ubeh}(h]h ]h"]h$]h&]uh1j@hjxhMhjZubjA)}(h0``u16 vendor`` Vendor ID to match for the DVSEC h](jG)}(h``u16 vendor``h]jM)}(hjh]h u16 vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(h Vendor ID to match for the DVSECh]h Vendor ID to match for the DVSEC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjZubjA)}(h7``u16 dvsec`` Designated Vendor-specific capability ID h](jG)}(h ``u16 dvsec``h]jM)}(hjh]h u16 dvsec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(h(Designated Vendor-specific capability IDh]h(Designated Vendor-specific capability ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjZubeh}(h]h ]h"]h$]h&]uh1j;hj>ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj>ubj)}(hzIf DVSEC has Vendor ID **vendor** and DVSEC ID **dvsec** return the capability offset in config space; otherwise return 0.h](hIf DVSEC has Vendor ID }(hj&hhhNhNubj&)}(h **vendor**h]hvendor}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj&ubh and DVSEC ID }(hj&hhhNhNubj&)}(h **dvsec**h]hdvsec}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj&ubhB return the capability offset in config space; otherwise return 0.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pci_find_parent_resource (C function)c.pci_find_parent_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(h\struct resource * pci_find_parent_resource (const struct pci_dev *dev, struct resource *res)h]h)}(hZstruct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res)h](jZ)}(hj]h]hstruct}(hjyhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjuhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuhhhjhMubh)}(hhh]j3)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_find_parent_resourcesbc.pci_find_parent_resourceasbuh1hhjuhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuhhhjhMubj-)}(hpci_find_parent_resourceh]j3)}(hjh]hpci_find_parent_resource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjuhhhjhMubjN)}(h1(const struct pci_dev *dev, struct resource *res)h](jT)}(hconst struct pci_dev *devh](jZ)}(hconsth]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]jc.pci_find_parent_resourceasbuh1hhjubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hstruct resource *resh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubh)}(hhh]j3)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_find_parent_resourceasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj3)}(hresh]hres}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjuhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjqhhhjhMubah}(h]jlah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjnhhubj)}(hhh]j)}(h4return resource region of parent bus of given regionh]h4return resource region of parent bus of given region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjnhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX;**Parameters** ``const struct pci_dev *dev`` PCI device structure contains resources to be searched ``struct resource *res`` child resource record for which parent is sought **Description** For given resource region of given device, return the resource region of parent bus the given region is contained in.h](j)}(h**Parameters**h]j&)}(hj"h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(hU``const struct pci_dev *dev`` PCI device structure contains resources to be searched h](jG)}(h``const struct pci_dev *dev``h]jM)}(hjAh]hconst struct pci_dev *dev}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj?ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj;ubjc)}(hhh]j)}(h6PCI device structure contains resources to be searchedh]h6PCI device structure contains resources to be searched}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVhMhjWubah}(h]h ]h"]h$]h&]uh1jbhj;ubeh}(h]h ]h"]h$]h&]uh1j@hjVhMhj8ubjA)}(hJ``struct resource *res`` child resource record for which parent is sought h](jG)}(h``struct resource *res``h]jM)}(hjzh]hstruct resource *res}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjxubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtubjc)}(hhh]j)}(h0child resource record for which parent is soughth]h0child resource record for which parent is sought}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjtubeh}(h]h ]h"]h$]h&]uh1j@hjhMhj8ubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(huFor given resource region of given device, return the resource region of parent bus the given region is contained in.h]huFor given resource region of given device, return the resource region of parent bus the given region is contained in.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_find_resource (C function)c.pci_find_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(hOstruct resource * pci_find_resource (struct pci_dev *dev, struct resource *res)h]h)}(hMstruct resource *pci_find_resource(struct pci_dev *dev, struct resource *res)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubh)}(hhh]j3)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_find_resourcesbc.pci_find_resourceasbuh1hhjhhhjhMubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj-)}(hpci_find_resourceh]j3)}(hj7h]hpci_find_resource}(hjYhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h+(struct pci_dev *dev, struct resource *res)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjthhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjpubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjpubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j5c.pci_find_resourceasbuh1hhjpubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjpubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjpubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjlubjT)}(hstruct resource *resh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j5c.pci_find_resourceasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hresh]hres}(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjlubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h#Return matching PCI device resourceh]h#Return matching PCI device resource}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjbhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj}jj}jjjuh1hhhhhhNhNubj)}(hX=**Parameters** ``struct pci_dev *dev`` PCI device to query ``struct resource *res`` Resource to look for **Description** Goes over standard PCI resources (BARs) and checks if the given resource is partially or fully contained in any of them. In that case the matching resource is returned, ``NULL`` otherwise.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h.``struct resource *res`` Resource to look for h](jG)}(h``struct resource *res``h]jM)}(hjh]hstruct resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hResource to look forh]hResource to look for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(hGoes over standard PCI resources (BARs) and checks if the given resource is partially or fully contained in any of them. In that case the matching resource is returned, ``NULL`` otherwise.h](hGoes over standard PCI resources (BARs) and checks if the given resource is partially or fully contained in any of them. In that case the matching resource is returned, }(hj0hhhNhNubjM)}(h``NULL``h]hNULL}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj0ubh otherwise.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،*pci_platform_power_transition (C function)c.pci_platform_power_transitionhNtauh1hhhhhhNhNubh)}(hhh](h)}(hJint pci_platform_power_transition (struct pci_dev *dev, pci_power_t state)h]h)}(hIint pci_platform_power_transition(struct pci_dev *dev, pci_power_t state)h](h)}(hinth]hint}(hjqhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjmhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmhhhjhMubj-)}(hpci_platform_power_transitionh]j3)}(hpci_platform_power_transitionh]hpci_platform_power_transition}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjmhhhjhMubjN)}(h((struct pci_dev *dev, pci_power_t state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_platform_power_transitionasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hpci_power_t stateh](h)}(hhh]j3)}(h pci_power_th]h pci_power_t}(hj# hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj% modnameN classnameNjj)}j]jc.pci_platform_power_transitionasbuh1hhj ubj)}(h h]h }(hjA hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hstateh]hstate}(hjO hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjmhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjihhhjhMubah}(h]jdah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjfhhubj)}(hhh]j)}(h)Use platform to change device power stateh]h)Use platform to change device power state}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjv hhubah}(h]h ]h"]h$]h&]uh1jhjfhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(hv**Parameters** ``struct pci_dev *dev`` PCI device to handle. ``pci_power_t state`` State to put the device into.h](j)}(h**Parameters**h]j&)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubj<)}(hhh](jA)}(h.``struct pci_dev *dev`` PCI device to handle. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj h]hstruct pci_dev *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubjc)}(hhh]j)}(hPCI device to handle.h]hPCI device to handle.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hMhj ubjA)}(h3``pci_power_t state`` State to put the device into.h](jG)}(h``pci_power_t state``h]jM)}(hj h]hpci_power_t state}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj ubjc)}(hhh]j)}(hState to put the device into.h]hState to put the device into.}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj !ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj!hMhj ubeh}(h]h ]h"]h$]h&]uh1j;hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_set_power_state (C function)c.pci_set_power_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(h@int pci_set_power_state (struct pci_dev *dev, pci_power_t state)h]h)}(h?int pci_set_power_state(struct pci_dev *dev, pci_power_t state)h](h)}(hinth]hint}(hjM!hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjI!hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM4ubj)}(h h]h }(hj\!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjI!hhhj[!hM4ubj-)}(hpci_set_power_stateh]j3)}(hpci_set_power_stateh]hpci_set_power_state}(hjn!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjj!ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjI!hhhj[!hM4ubjN)}(h((struct pci_dev *dev, pci_power_t state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj!hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jjp!sbc.pci_set_power_stateasbuh1hhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj3)}(hdevh]hdev}(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj!ubjT)}(hpci_power_t stateh](h)}(hhh]j3)}(h pci_power_th]h pci_power_t}(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j!c.pci_set_power_stateasbuh1hhj!ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubj3)}(hstateh]hstate}(hj+"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj!ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjI!hhhj[!hM4ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjE!hhhj[!hM4ubah}(h]j@!ah ](jjeh"]h$]h&]jj)jhuh1hhj[!hM4hjB!hhubj)}(hhh]j)}(h#Set the power state of a PCI deviceh]h#Set the power state of a PCI device}(hjU"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM4hjR"hhubah}(h]h ]h"]h$]h&]uh1jhjB!hhhj[!hM4ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjm"jjm"jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to handle. ``pci_power_t state`` PCI power state (D0, D1, D2, D3hot) to put the device into. **Description** Transition a device to a new power state, using the platform firmware and/or the device's PCI PM registers. RETURN VALUE: -EINVAL if the requested state is invalid. -EIO if device does not support PCI PM or its PM capabilities register has a wrong version, or device doesn't support the requested state. 0 if the transition is to D1 or D2 but D1 and D2 are not supported. 0 if device already is in the requested state. 0 if the transition is to D3 but D3 is not supported. 0 if device's power state has been successfully changed.h](j)}(h**Parameters**h]j&)}(hjw"h]h Parameters}(hjy"hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hju"ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM8hjq"ubj<)}(hhh](jA)}(h.``struct pci_dev *dev`` PCI device to handle. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj"h]hstruct pci_dev *dev}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj"ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM5hj"ubjc)}(hhh]j)}(hPCI device to handle.h]hPCI device to handle.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"hM5hj"ubah}(h]h ]h"]h$]h&]uh1jbhj"ubeh}(h]h ]h"]h$]h&]uh1j@hj"hM5hj"ubjA)}(hR``pci_power_t state`` PCI power state (D0, D1, D2, D3hot) to put the device into. h](jG)}(h``pci_power_t state``h]jM)}(hj"h]hpci_power_t state}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj"ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM6hj"ubjc)}(hhh]j)}(h;PCI power state (D0, D1, D2, D3hot) to put the device into.h]h;PCI power state (D0, D1, D2, D3hot) to put the device into.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"hM6hj"ubah}(h]h ]h"]h$]h&]uh1jbhj"ubeh}(h]h ]h"]h$]h&]uh1j@hj"hM6hj"ubeh}(h]h ]h"]h$]h&]uh1j;hjq"ubj)}(h**Description**h]j&)}(hj #h]h Description}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj#ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM8hjq"ubj)}(hkTransition a device to a new power state, using the platform firmware and/or the device's PCI PM registers.h]hmTransition a device to a new power state, using the platform firmware and/or the device’s PCI PM registers.}(hj #hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM7hjq"ubj)}(hXRETURN VALUE: -EINVAL if the requested state is invalid. -EIO if device does not support PCI PM or its PM capabilities register has a wrong version, or device doesn't support the requested state. 0 if the transition is to D1 or D2 but D1 and D2 are not supported. 0 if device already is in the requested state. 0 if the transition is to D3 but D3 is not supported. 0 if device's power state has been successfully changed.h]hXRETURN VALUE: -EINVAL if the requested state is invalid. -EIO if device does not support PCI PM or its PM capabilities register has a wrong version, or device doesn’t support the requested state. 0 if the transition is to D1 or D2 but D1 and D2 are not supported. 0 if device already is in the requested state. 0 if the transition is to D3 but D3 is not supported. 0 if device’s power state has been successfully changed.}(hj/#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM:hjq"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_save_state (C function)c.pci_save_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(h(int pci_save_state (struct pci_dev *dev)h]h)}(h'int pci_save_state(struct pci_dev *dev)h](h)}(hinth]hint}(hj^#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjZ#hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjm#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjZ#hhhjl#hMubj-)}(hpci_save_stateh]j3)}(hpci_save_stateh]hpci_save_state}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{#ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjZ#hhhjl#hMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj#hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jj#sbc.pci_save_stateasbuh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj3)}(hdevh]hdev}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj#ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjZ#hhhjl#hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjV#hhhjl#hMubah}(h]jQ#ah ](jjeh"]h$]h&]jj)jhuh1hhjl#hMhjS#hhubj)}(hhh]j)}(h>save the PCI configuration space of a device before suspendingh]h>save the PCI configuration space of a device before suspending}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj$hhubah}(h]h ]h"]h$]h&]uh1jhjS#hhhjl#hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj6$jj6$jjjuh1hhhhhhNhNubj)}(hL**Parameters** ``struct pci_dev *dev`` PCI device that we're dealing withh](j)}(h**Parameters**h]j&)}(hj@$h]h Parameters}(hjB$hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj>$ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj:$ubj<)}(hhh]jA)}(h:``struct pci_dev *dev`` PCI device that we're dealing withh](jG)}(h``struct pci_dev *dev``h]jM)}(hj_$h]hstruct pci_dev *dev}(hja$hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj]$ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjY$ubjc)}(hhh]j)}(h"PCI device that we're dealing withh]h$PCI device that we’re dealing with}(hjx$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhju$ubah}(h]h ]h"]h$]h&]uh1jbhjY$ubeh}(h]h ]h"]h$]h&]uh1j@hjt$hMhjV$ubah}(h]h ]h"]h$]h&]uh1j;hj:$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_restore_state (C function)c.pci_restore_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(h,void pci_restore_state (struct pci_dev *dev)h]h)}(h+void pci_restore_state(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hj$hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj$hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$hhhj$hMubj-)}(hpci_restore_stateh]j3)}(hpci_restore_stateh]hpci_restore_state}(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj$hhhj$hMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj$hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj$ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j)}jj$sbc.pci_restore_stateasbuh1hhj$ubj)}(h h]h }(hj4%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$ubj)}(hjh]h*}(hjB%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj3)}(hdevh]hdev}(hjO%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj$ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj$hhhj$hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj$hhhj$hMubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1hhj$hMhj$hhubj)}(hhh]j)}(h'Restore the saved state of a PCI deviceh]h'Restore the saved state of a PCI device}(hjy%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjv%hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj$hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%jj%jjjuh1hhhhhhNhNubj)}(hL**Parameters** ``struct pci_dev *dev`` PCI device that we're dealing withh](j)}(h**Parameters**h]j&)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj%ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM#hj%ubj<)}(hhh]jA)}(h:``struct pci_dev *dev`` PCI device that we're dealing withh](jG)}(h``struct pci_dev *dev``h]jM)}(hj%h]hstruct pci_dev *dev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj%ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM%hj%ubjc)}(hhh]j)}(h"PCI device that we're dealing withh]h$PCI device that we’re dealing with}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj%ubah}(h]h ]h"]h$]h&]uh1jbhj%ubeh}(h]h ]h"]h$]h&]uh1j@hj%hM%hj%ubah}(h]h ]h"]h$]h&]uh1j;hj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،"pci_store_saved_state (C function)c.pci_store_saved_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(hDstruct pci_saved_state * pci_store_saved_state (struct pci_dev *dev)h]h)}(hBstruct pci_saved_state *pci_store_saved_state(struct pci_dev *dev)h](jZ)}(hj]h]hstruct}(hj&hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj&hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMDubj)}(h h]h }(hj"&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&hhhj!&hMDubh)}(hhh]j3)}(hpci_saved_stateh]hpci_saved_state}(hj3&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5&modnameN classnameNjj)}j]j)}jpci_store_saved_statesbc.pci_store_saved_stateasbuh1hhj&hhhj!&hMDubj)}(h h]h }(hjT&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&hhhj!&hMDubj)}(hjh]h*}(hjb&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&hhhj!&hMDubj-)}(hpci_store_saved_stateh]j3)}(hjQ&h]hpci_store_saved_state}(hjs&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjo&ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj&hhhj!&hMDubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj&hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]jO&c.pci_store_saved_stateasbuh1hhj&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj3)}(hdevh]hdev}(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj&ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj&hhhj!&hMDubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj &hhhj!&hMDubah}(h]j&ah ](jjeh"]h$]h&]jj)jhuh1hhj!&hMDhj &hhubj)}(hhh]j)}(hGAllocate and return an opaque struct containing the device saved state.h]hGAllocate and return an opaque struct containing the device saved state.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMDhj 'hhubah}(h]h ]h"]h$]h&]uh1jhj &hhhj!&hMDubeh}(h]h ](jfunctioneh"]h$]h&]jjjj''jj''jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device that we're dealing with **Description** Return NULL if no state or error.h](j)}(h**Parameters**h]j&)}(hj1'h]h Parameters}(hj3'hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/'ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMHhj+'ubj<)}(hhh]jA)}(h;``struct pci_dev *dev`` PCI device that we're dealing with h](jG)}(h``struct pci_dev *dev``h]jM)}(hjP'h]hstruct pci_dev *dev}(hjR'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjN'ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMFhjJ'ubjc)}(hhh]j)}(h"PCI device that we're dealing withh]h$PCI device that we’re dealing with}(hji'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhje'hMFhjf'ubah}(h]h ]h"]h$]h&]uh1jbhjJ'ubeh}(h]h ]h"]h$]h&]uh1j@hje'hMFhjG'ubah}(h]h ]h"]h$]h&]uh1j;hj+'ubj)}(h**Description**h]j&)}(hj'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj'ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMHhj+'ubj)}(h!Return NULL if no state or error.h]h!Return NULL if no state or error.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMGhj+'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،!pci_load_saved_state (C function)c.pci_load_saved_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(hMint pci_load_saved_state (struct pci_dev *dev, struct pci_saved_state *state)h]h)}(hLint pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state)h](h)}(hinth]hint}(hj'hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj'hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMmubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'hhhj'hMmubj-)}(hpci_load_saved_stateh]j3)}(hpci_load_saved_stateh]hpci_load_saved_state}(hj'hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj'hhhj'hMmubjN)}(h4(struct pci_dev *dev, struct pci_saved_state *state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj (hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj (ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj (ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj+(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj((ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-(modnameN classnameNjj)}j]j)}jj'sbc.pci_load_saved_stateasbuh1hhj (ubj)}(h h]h }(hjK(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj (ubj)}(hjh]h*}(hjY(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubj3)}(hdevh]hdev}(hjf(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj (ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj(ubjT)}(hstruct pci_saved_state *stateh](jZ)}(hj]h]hstruct}(hj(hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj{(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{(ubh)}(hhh]j3)}(hpci_saved_stateh]hpci_saved_state}(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]jG(c.pci_load_saved_stateasbuh1hhj{(ubj)}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{(ubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{(ubj3)}(hstateh]hstate}(hj(hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{(ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj(ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj'hhhj'hMmubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj'hhhj'hMmubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1hhj'hMmhj'hhubj)}(hhh]j)}(h3Reload the provided save state into struct pci_dev.h]h3Reload the provided save state into struct pci_dev.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMmhj(hhubah}(h]h ]h"]h$]h&]uh1jhj'hhhj'hMmubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)jj)jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device that we're dealing with ``struct pci_saved_state *state`` Saved state returned from pci_store_saved_state()h](j)}(h**Parameters**h]j&)}(hj")h]h Parameters}(hj$)hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj )ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMqhj)ubj<)}(hhh](jA)}(h;``struct pci_dev *dev`` PCI device that we're dealing with h](jG)}(h``struct pci_dev *dev``h]jM)}(hjA)h]hstruct pci_dev *dev}(hjC)hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj?)ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMnhj;)ubjc)}(hhh]j)}(h"PCI device that we're dealing withh]h$PCI device that we’re dealing with}(hjZ)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV)hMnhjW)ubah}(h]h ]h"]h$]h&]uh1jbhj;)ubeh}(h]h ]h"]h$]h&]uh1j@hjV)hMnhj8)ubjA)}(hS``struct pci_saved_state *state`` Saved state returned from pci_store_saved_state()h](jG)}(h!``struct pci_saved_state *state``h]jM)}(hjz)h]hstruct pci_saved_state *state}(hj|)hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjx)ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMphjt)ubjc)}(hhh]j)}(h1Saved state returned from pci_store_saved_state()h]h1Saved state returned from pci_store_saved_state()}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMohj)ubah}(h]h ]h"]h$]h&]uh1jbhjt)ubeh}(h]h ]h"]h$]h&]uh1j@hj)hMphj8)ubeh}(h]h ]h"]h$]h&]uh1j;hj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،*pci_load_and_free_saved_state (C function)c.pci_load_and_free_saved_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(hWint pci_load_and_free_saved_state (struct pci_dev *dev, struct pci_saved_state **state)h]h)}(hVint pci_load_and_free_saved_state(struct pci_dev *dev, struct pci_saved_state **state)h](h)}(hinth]hint}(hj)hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj)hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)hhhj)hMubj-)}(hpci_load_and_free_saved_stateh]j3)}(hpci_load_and_free_saved_stateh]hpci_load_and_free_saved_state}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj)hhhj)hMubjN)}(h5(struct pci_dev *dev, struct pci_saved_state **state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj*hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj *ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj *ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj/*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1*modnameN classnameNjj)}j]j)}jj)sbc.pci_load_and_free_saved_stateasbuh1hhj *ubj)}(h h]h }(hjO*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj *ubj)}(hjh]h*}(hj]*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj *ubj3)}(hdevh]hdev}(hjj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj *ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj *ubjT)}(hstruct pci_saved_state **stateh](jZ)}(hj]h]hstruct}(hj*hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj*ubh)}(hhh]j3)}(hpci_saved_stateh]hpci_saved_state}(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]jK*c.pci_load_and_free_saved_stateasbuh1hhj*ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj3)}(hstateh]hstate}(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj *ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj)hhhj)hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj)hhhj)hMubah}(h]j)ah ](jjeh"]h$]h&]jj)jhuh1hhj)hMhj)hhubj)}(hhh]j)}(hPReload the save state pointed to by state, and free the memory allocated for it.h]hPReload the save state pointed to by state, and free the memory allocated for it.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj+hhubah}(h]h ]h"]h$]h&]uh1jhj)hhhj)hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)+jj)+jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device that we're dealing with ``struct pci_saved_state **state`` Pointer to saved state returned from pci_store_saved_state()h](j)}(h**Parameters**h]j&)}(hj3+h]h Parameters}(hj5+hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj1+ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj-+ubj<)}(hhh](jA)}(h;``struct pci_dev *dev`` PCI device that we're dealing with h](jG)}(h``struct pci_dev *dev``h]jM)}(hjR+h]hstruct pci_dev *dev}(hjT+hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjP+ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjL+ubjc)}(hhh]j)}(h"PCI device that we're dealing withh]h$PCI device that we’re dealing with}(hjk+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg+hMhjh+ubah}(h]h ]h"]h$]h&]uh1jbhjL+ubeh}(h]h ]h"]h$]h&]uh1j@hjg+hMhjI+ubjA)}(h_``struct pci_saved_state **state`` Pointer to saved state returned from pci_store_saved_state()h](jG)}(h"``struct pci_saved_state **state``h]jM)}(hj+h]hstruct pci_saved_state **state}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj+ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj+ubjc)}(hhh]j)}(h.jj>.jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to be initialized **Description** Initialize device before it's used by a driver. Ask low-level code to enable Memory resources. Wake up the device if it was suspended. Beware, this function can fail.h](j)}(h**Parameters**h]j&)}(hjH.h]h Parameters}(hjJ.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjF.ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM4hjB.ubj<)}(hhh]jA)}(h5``struct pci_dev *dev`` PCI device to be initialized h](jG)}(h``struct pci_dev *dev``h]jM)}(hjg.h]hstruct pci_dev *dev}(hji.hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhje.ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM1hja.ubjc)}(hhh]j)}(hPCI device to be initializedh]hPCI device to be initialized}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|.hM1hj}.ubah}(h]h ]h"]h$]h&]uh1jbhja.ubeh}(h]h ]h"]h$]h&]uh1j@hj|.hM1hj^.ubah}(h]h ]h"]h$]h&]uh1j;hjB.ubj)}(h**Description**h]j&)}(hj.h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj.ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM3hjB.ubj)}(hInitialize device before it's used by a driver. Ask low-level code to enable Memory resources. Wake up the device if it was suspended. Beware, this function can fail.h]hInitialize device before it’s used by a driver. Ask low-level code to enable Memory resources. Wake up the device if it was suspended. Beware, this function can fail.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM2hjB.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_enable_device (C function)c.pci_enable_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h+int pci_enable_device (struct pci_dev *dev)h]h)}(h*int pci_enable_device(struct pci_dev *dev)h](h)}(hinth]hint}(hj.hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj.hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM>ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.hhhj.hM>ubj-)}(hpci_enable_deviceh]j3)}(hpci_enable_deviceh]hpci_enable_device}(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj/ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj.hhhj.hM>ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj$/hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj /ubj)}(h h]h }(hj1/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj /ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjB/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?/ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjD/modnameN classnameNjj)}j]j)}jj /sbc.pci_enable_deviceasbuh1hhj /ubj)}(h h]h }(hjb/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj /ubj)}(hjh]h*}(hjp/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubj3)}(hdevh]hdev}(hj}/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj /ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj/ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj.hhhj.hM>ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj.hhhj.hM>ubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1hhj.hM>hj.hhubj)}(hhh]j)}(h/Initialize device before it's used by a driver.h]h1Initialize device before it’s used by a driver.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM>hj/hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj.hM>ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1hhhhhhNhNubj)}(hXu**Parameters** ``struct pci_dev *dev`` PCI device to be initialized **Description** Initialize device before it's used by a driver. Ask low-level code to enable I/O and memory. Wake up the device if it was suspended. Beware, this function can fail. Note we don't actually enable the device many times if we call this function repeatedly (we just increment the count).h](j)}(h**Parameters**h]j&)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMBhj/ubj<)}(hhh]jA)}(h5``struct pci_dev *dev`` PCI device to be initialized h](jG)}(h``struct pci_dev *dev``h]jM)}(hj/h]hstruct pci_dev *dev}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj/ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM?hj/ubjc)}(hhh]j)}(hPCI device to be initializedh]hPCI device to be initialized}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/hM?hj/ubah}(h]h ]h"]h$]h&]uh1jbhj/ubeh}(h]h ]h"]h$]h&]uh1j@hj/hM?hj/ubah}(h]h ]h"]h$]h&]uh1j;hj/ubj)}(h**Description**h]j&)}(hj#0h]h Description}(hj%0hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!0ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMAhj/ubj)}(hInitialize device before it's used by a driver. Ask low-level code to enable I/O and memory. Wake up the device if it was suspended. Beware, this function can fail.h]hInitialize device before it’s used by a driver. Ask low-level code to enable I/O and memory. Wake up the device if it was suspended. Beware, this function can fail.}(hj90hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM@hj/ubj)}(hvNote we don't actually enable the device many times if we call this function repeatedly (we just increment the count).h]hxNote we don’t actually enable the device many times if we call this function repeatedly (we just increment the count).}(hjH0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMDhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_disable_device (C function)c.pci_disable_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h-void pci_disable_device (struct pci_dev *dev)h]h)}(h,void pci_disable_device(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjw0hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjs0hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjs0hhhj0hMubj-)}(hpci_disable_deviceh]j3)}(hpci_disable_deviceh]hpci_disable_device}(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjs0hhhj0hMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj0hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jj0sbc.pci_disable_deviceasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj3)}(hdevh]hdev}(hj 1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj0ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjs0hhhj0hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjo0hhhj0hMubah}(h]jj0ah ](jjeh"]h$]h&]jj)jhuh1hhj0hMhjl0hhubj)}(hhh]j)}(hDisable PCI device after useh]hDisable PCI device after use}(hj71hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj41hhubah}(h]h ]h"]h$]h&]uh1jhjl0hhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjO1jjO1jjjuh1hhhhhhNhNubj)}(hXU**Parameters** ``struct pci_dev *dev`` PCI device to be disabled **Description** Signal to the system that the PCI device is not in use by the system anymore. This only involves disabling PCI bus-mastering, if active. Note we don't actually disable the device until all callers of pci_enable_device() have called pci_disable_device().h](j)}(h**Parameters**h]j&)}(hjY1h]h Parameters}(hj[1hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjW1ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjS1ubj<)}(hhh]jA)}(h2``struct pci_dev *dev`` PCI device to be disabled h](jG)}(h``struct pci_dev *dev``h]jM)}(hjx1h]hstruct pci_dev *dev}(hjz1hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjv1ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjr1ubjc)}(hhh]j)}(hPCI device to be disabledh]hPCI device to be disabled}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1hMhj1ubah}(h]h ]h"]h$]h&]uh1jbhjr1ubeh}(h]h ]h"]h$]h&]uh1j@hj1hMhjo1ubah}(h]h ]h"]h$]h&]uh1j;hjS1ubj)}(h**Description**h]j&)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj1ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjS1ubj)}(hSignal to the system that the PCI device is not in use by the system anymore. This only involves disabling PCI bus-mastering, if active.h]hSignal to the system that the PCI device is not in use by the system anymore. This only involves disabling PCI bus-mastering, if active.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjS1ubj)}(htNote we don't actually disable the device until all callers of pci_enable_device() have called pci_disable_device().h]hvNote we don’t actually disable the device until all callers of pci_enable_device() have called pci_disable_device().}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjS1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pci_set_pcie_reset_state (C function)c.pci_set_pcie_reset_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(hOint pci_set_pcie_reset_state (struct pci_dev *dev, enum pcie_reset_state state)h]h)}(hNint pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state)h](h)}(hinth]hint}(hj2hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj2hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2hhhj2hMubj-)}(hpci_set_pcie_reset_stateh]j3)}(hpci_set_pcie_reset_stateh]hpci_set_pcie_reset_state}(hj(2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$2ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj2hhhj2hMubjN)}(h2(struct pci_dev *dev, enum pcie_reset_state state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjD2hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj@2ubj)}(h h]h }(hjQ2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@2ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjb2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjd2modnameN classnameNjj)}j]j)}jj*2sbc.pci_set_pcie_reset_stateasbuh1hhj@2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@2ubj3)}(hdevh]hdev}(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@2ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<2ubjT)}(henum pcie_reset_state stateh](jZ)}(henumh]henum}(hj2hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2ubh)}(hhh]j3)}(hpcie_reset_stateh]hpcie_reset_state}(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj2modnameN classnameNjj)}j]j~2c.pci_set_pcie_reset_stateasbuh1hhj2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2ubj3)}(hstateh]hstate}(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<2ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj2hhhj2hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj1hhhj2hMubah}(h]j1ah ](jjeh"]h$]h&]jj)jhuh1hhj2hMhj1hhubj)}(hhh]j)}(hset reset state for device devh]hset reset state for device dev}(hj+3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj(3hhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj2hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjC3jjC3jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCIe device reset ``enum pcie_reset_state state`` Reset state to enter into **Description** Sets the PCI reset state for the device.h](j)}(h**Parameters**h]j&)}(hjM3h]h Parameters}(hjO3hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjK3ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjG3ubj<)}(hhh](jA)}(h.``struct pci_dev *dev`` the PCIe device reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjl3h]hstruct pci_dev *dev}(hjn3hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjj3ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjf3ubjc)}(hhh]j)}(hthe PCIe device reseth]hthe PCIe device reset}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1jbhjf3ubeh}(h]h ]h"]h$]h&]uh1j@hj3hMhjc3ubjA)}(h:``enum pcie_reset_state state`` Reset state to enter into h](jG)}(h``enum pcie_reset_state state``h]jM)}(hj3h]henum pcie_reset_state state}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj3ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj3ubjc)}(hhh]j)}(hReset state to enter intoh]hReset state to enter into}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1jbhj3ubeh}(h]h ]h"]h$]h&]uh1j@hj3hMhjc3ubeh}(h]h ]h"]h$]h&]uh1j;hjG3ubj)}(h**Description**h]j&)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj3ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjG3ubj)}(h(Sets the PCI reset state for the device.h]h(Sets the PCI reset state for the device.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjG3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_pme_capable (C function)c.pci_pme_capablehNtauh1hhhhhhNhNubh)}(hhh](h)}(h=bool pci_pme_capable (struct pci_dev *dev, pci_power_t state)h]h)}(h6hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj:6ubj)}(h h]h }(hjK6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:6ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj\6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjY6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^6modnameN classnameNjj)}j]j)}jj$6sbc.pci_pme_activeasbuh1hhj:6ubj)}(h h]h }(hj|6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:6ubj)}(hjh]h*}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:6ubj3)}(hdevh]hdev}(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:6ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj66ubjT)}(h bool enableh](h)}(hj'4h]hbool}(hj6hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj6ubj3)}(henableh]henable}(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj6ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj66ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj5hhhj6hM| ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj5hhhj6hM| ubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1hhj6hM| hj5hhubj)}(hhh]j)}(h,enable or disable PCI device's PME# functionh]h.enable or disable PCI device’s PME# function}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM| hj6hhubah}(h]h ]h"]h$]h&]uh1jhj5hhhj6hM| ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj 7jj 7jjjuh1hhhhhhNhNubj)}(hX **Parameters** ``struct pci_dev *dev`` PCI device to handle. ``bool enable`` 'true' to enable PME# generation; 'false' to disable it. **Description** The caller must verify that the device is capable of generating PME# before calling this function with **enable** equal to 'true'.h](j)}(h**Parameters**h]j&)}(hj7h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj7ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj7ubj<)}(hhh](jA)}(h.``struct pci_dev *dev`` PCI device to handle. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj67h]hstruct pci_dev *dev}(hj87hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj47ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM} hj07ubjc)}(hhh]j)}(hPCI device to handle.h]hPCI device to handle.}(hjO7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjK7hM} hjL7ubah}(h]h ]h"]h$]h&]uh1jbhj07ubeh}(h]h ]h"]h$]h&]uh1j@hjK7hM} hj-7ubjA)}(hI``bool enable`` 'true' to enable PME# generation; 'false' to disable it. h](jG)}(h``bool enable``h]jM)}(hjo7h]h bool enable}(hjq7hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjm7ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM~ hji7ubjc)}(hhh]j)}(h8'true' to enable PME# generation; 'false' to disable it.h]h@‘true’ to enable PME# generation; ‘false’ to disable it.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7hM~ hj7ubah}(h]h ]h"]h$]h&]uh1jbhji7ubeh}(h]h ]h"]h$]h&]uh1j@hj7hM~ hj-7ubeh}(h]h ]h"]h$]h&]uh1j;hj7ubj)}(h**Description**h]j&)}(hj7h]h Description}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj7ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj7ubj)}(hThe caller must verify that the device is capable of generating PME# before calling this function with **enable** equal to 'true'.h](hgThe caller must verify that the device is capable of generating PME# before calling this function with }(hj7hhhNhNubj&)}(h **enable**h]henable}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj7ubh equal to ‘true’.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj7ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_enable_wake (C function)c.pci_enable_wakehNtauh1hhhhhhNhNubh)}(hhh](h)}(hMint pci_enable_wake (struct pci_dev *pci_dev, pci_power_t state, bool enable)h]h)}(hLint pci_enable_wake(struct pci_dev *pci_dev, pci_power_t state, bool enable)h](h)}(hinth]hint}(hj8hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj7hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj7hhhj8hM ubj-)}(hpci_enable_wakeh]j3)}(hpci_enable_wakeh]hpci_enable_wake}(hj"8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj7hhhj8hM ubjN)}(h9(struct pci_dev *pci_dev, pci_power_t state, bool enable)h](jT)}(hstruct pci_dev *pci_devh](jZ)}(hj]h]hstruct}(hj>8hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj:8ubj)}(h h]h }(hjK8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:8ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj\8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjY8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^8modnameN classnameNjj)}j]j)}jj$8sbc.pci_enable_wakeasbuh1hhj:8ubj)}(h h]h }(hj|8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:8ubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:8ubj3)}(hpci_devh]hpci_dev}(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:8ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj68ubjT)}(hpci_power_t stateh](h)}(hhh]j3)}(h pci_power_th]h pci_power_t}(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj8modnameN classnameNjj)}j]jx8c.pci_enable_wakeasbuh1hhj8ubj)}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj8ubj3)}(hstateh]hstate}(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj68ubjT)}(h bool enableh](h)}(hj'4h]hbool}(hj8hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj8ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj8ubj3)}(henableh]henable}(hj9hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj68ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj7hhhj8hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj7hhhj8hM ubah}(h]j7ah ](jjeh"]h$]h&]jj)jhuh1hhj8hM hj7hhubj)}(hhh]j)}(h'change wakeup settings for a PCI deviceh]h'change wakeup settings for a PCI device}(hj=9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj:9hhubah}(h]h ]h"]h$]h&]uh1jhj7hhhj8hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjU9jjU9jjjuh1hhhhhhNhNubj)}(hXB**Parameters** ``struct pci_dev *pci_dev`` Target device ``pci_power_t state`` PCI state from which device will issue wakeup events ``bool enable`` Whether or not to enable event generation **Description** If **enable** is set, check device_may_wakeup() for the device before calling __pci_enable_wake() for it.h](j)}(h**Parameters**h]j&)}(hj_9h]h Parameters}(hja9hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj]9ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjY9ubj<)}(hhh](jA)}(h*``struct pci_dev *pci_dev`` Target device h](jG)}(h``struct pci_dev *pci_dev``h]jM)}(hj~9h]hstruct pci_dev *pci_dev}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj|9ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjx9ubjc)}(hhh]j)}(h Target deviceh]h Target device}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9hM hj9ubah}(h]h ]h"]h$]h&]uh1jbhjx9ubeh}(h]h ]h"]h$]h&]uh1j@hj9hM hju9ubjA)}(hK``pci_power_t state`` PCI state from which device will issue wakeup events h](jG)}(h``pci_power_t state``h]jM)}(hj9h]hpci_power_t state}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj9ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj9ubjc)}(hhh]j)}(h4PCI state from which device will issue wakeup eventsh]h4PCI state from which device will issue wakeup events}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9hM hj9ubah}(h]h ]h"]h$]h&]uh1jbhj9ubeh}(h]h ]h"]h$]h&]uh1j@hj9hM hju9ubjA)}(h:``bool enable`` Whether or not to enable event generation h](jG)}(h``bool enable``h]jM)}(hj9h]h bool enable}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj9ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj9ubjc)}(hhh]j)}(h)Whether or not to enable event generationh]h)Whether or not to enable event generation}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:hM hj:ubah}(h]h ]h"]h$]h&]uh1jbhj9ubeh}(h]h ]h"]h$]h&]uh1j@hj:hM hju9ubeh}(h]h ]h"]h$]h&]uh1j;hjY9ubj)}(h**Description**h]j&)}(hj+:h]h Description}(hj-:hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj):ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjY9ubj)}(hiIf **enable** is set, check device_may_wakeup() for the device before calling __pci_enable_wake() for it.h](hIf }(hjA:hhhNhNubj&)}(h **enable**h]henable}(hjI:hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjA:ubh\ is set, check device_may_wakeup() for the device before calling __pci_enable_wake() for it.}(hjA:hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjY9ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_wake_from_d3 (C function)c.pci_wake_from_d3hNtauh1hhhhhhNhNubh)}(hhh](h)}(h7int pci_wake_from_d3 (struct pci_dev *dev, bool enable)h]h)}(h6int pci_wake_from_d3(struct pci_dev *dev, bool enable)h](h)}(hinth]hint}(hj:hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj~:hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~:hhhj:hM ubj-)}(hpci_wake_from_d3h]j3)}(hpci_wake_from_d3h]hpci_wake_from_d3}(hj:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj~:hhhj:hM ubjN)}(h"(struct pci_dev *dev, bool enable)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj:hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj:hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j)}jj:sbc.pci_wake_from_d3asbuh1hhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubj)}(hjh]h*}(hj ;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj3)}(hdevh]hdev}(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj:ubjT)}(h bool enableh](h)}(hj'4h]hbool}(hj1;hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj-;ubj)}(h h]h }(hj>;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-;ubj3)}(henableh]henable}(hjL;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-;ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj:ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj~:hhhj:hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjz:hhhj:hM ubah}(h]ju:ah ](jjeh"]h$]h&]jj)jhuh1hhj:hM hjw:hhubj)}(hhh]j)}(h7enable/disable device to wake up from D3_hot or D3_coldh]h7enable/disable device to wake up from D3_hot or D3_cold}(hjv;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjs;hhubah}(h]h ]h"]h$]h&]uh1jhjw:hhhj:hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;jj;jjjuh1hhhhhhNhNubj)}(hXx**Parameters** ``struct pci_dev *dev`` PCI device to prepare ``bool enable`` True to enable wake-up event generation; false to disable **Description** Many drivers want the device to wake up the system from D3_hot or D3_cold and this function allows them to set that up cleanly - pci_enable_wake() should not be called twice in a row to enable wake-up due to PCI PM vs ACPI ordering constraints. This function only returns error code if the device is not allowed to wake up the system from sleep or it is not capable of generating PME# from both D3_hot and D3_cold and the platform is unable to enable wake-up power for it.h](j)}(h**Parameters**h]j&)}(hj;h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj;ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubj<)}(hhh](jA)}(h.``struct pci_dev *dev`` PCI device to prepare h](jG)}(h``struct pci_dev *dev``h]jM)}(hj;h]hstruct pci_dev *dev}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj;ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubjc)}(hhh]j)}(hPCI device to prepareh]hPCI device to prepare}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;hM hj;ubah}(h]h ]h"]h$]h&]uh1jbhj;ubeh}(h]h ]h"]h$]h&]uh1j@hj;hM hj;ubjA)}(hJ``bool enable`` True to enable wake-up event generation; false to disable h](jG)}(h``bool enable``h]jM)}(hj;h]h bool enable}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj;ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubjc)}(hhh]j)}(h9True to enable wake-up event generation; false to disableh]h9True to enable wake-up event generation; false to disable}(hj <hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<hM hj<ubah}(h]h ]h"]h$]h&]uh1jbhj;ubeh}(h]h ]h"]h$]h&]uh1j@hj<hM hj;ubeh}(h]h ]h"]h$]h&]uh1j;hj;ubj)}(h**Description**h]j&)}(hj+<h]h Description}(hj-<hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj)<ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubj)}(hMany drivers want the device to wake up the system from D3_hot or D3_cold and this function allows them to set that up cleanly - pci_enable_wake() should not be called twice in a row to enable wake-up due to PCI PM vs ACPI ordering constraints.h]hMany drivers want the device to wake up the system from D3_hot or D3_cold and this function allows them to set that up cleanly - pci_enable_wake() should not be called twice in a row to enable wake-up due to PCI PM vs ACPI ordering constraints.}(hjA<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubj)}(hThis function only returns error code if the device is not allowed to wake up the system from sleep or it is not capable of generating PME# from both D3_hot and D3_cold and the platform is unable to enable wake-up power for it.h]hThis function only returns error code if the device is not allowed to wake up the system from sleep or it is not capable of generating PME# from both D3_hot and D3_cold and the platform is unable to enable wake-up power for it.}(hjP<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،!pci_prepare_to_sleep (C function)c.pci_prepare_to_sleephNtauh1hhhhhhNhNubh)}(hhh](h)}(h.int pci_prepare_to_sleep (struct pci_dev *dev)h]h)}(h-int pci_prepare_to_sleep(struct pci_dev *dev)h](h)}(hinth]hint}(hj<hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj{<hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMh ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{<hhhj<hMh ubj-)}(hpci_prepare_to_sleeph]j3)}(hpci_prepare_to_sleeph]hpci_prepare_to_sleep}(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj{<hhhj<hMh ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj<hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj<ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<modnameN classnameNjj)}j]j)}jj<sbc.pci_prepare_to_sleepasbuh1hhj<ubj)}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj<ubj)}(hjh]h*}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj3)}(hdevh]hdev}(hj=hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj{<hhhj<hMh ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjw<hhhj<hMh ubah}(h]jr<ah ](jjeh"]h$]h&]jj)jhuh1hhj<hMh hjt<hhubj)}(hhh]j)}(h@prepare PCI device for system-wide transition into a sleep stateh]h@prepare PCI device for system-wide transition into a sleep state}(hj?=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMh hj<=hhubah}(h]h ]h"]h$]h&]uh1jhjt<hhhj<hMh ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjW=jjW=jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` Device to handle. **Description** Choose the power state appropriate for the device depending on whether it can wake up the system and/or is power manageable by the platform (PCI_D3hot is the default) and put the device into that state.h](j)}(h**Parameters**h]j&)}(hja=h]h Parameters}(hjc=hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj_=ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMl hj[=ubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` Device to handle. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj=h]hstruct pci_dev *dev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj~=ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMj hjz=ubjc)}(hhh]j)}(hDevice to handle.h]hDevice to handle.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=hMj hj=ubah}(h]h ]h"]h$]h&]uh1jbhjz=ubeh}(h]h ]h"]h$]h&]uh1j@hj=hMj hjw=ubah}(h]h ]h"]h$]h&]uh1j;hj[=ubj)}(h**Description**h]j&)}(hj=h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj=ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMl hj[=ubj)}(hChoose the power state appropriate for the device depending on whether it can wake up the system and/or is power manageable by the platform (PCI_D3hot is the default) and put the device into that state.h]hChoose the power state appropriate for the device depending on whether it can wake up the system and/or is power manageable by the platform (PCI_D3hot is the default) and put the device into that state.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMk hj[=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_back_from_sleep (C function)c.pci_back_from_sleephNtauh1hhhhhhNhNubh)}(hhh](h)}(h-int pci_back_from_sleep (struct pci_dev *dev)h]h)}(h,int pci_back_from_sleep(struct pci_dev *dev)h](h)}(hinth]hint}(hj>hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj=hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj=hhhj>hM ubj-)}(hpci_back_from_sleeph]j3)}(hpci_back_from_sleeph]hpci_back_from_sleep}(hj!>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj=hhhj>hM ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj=>hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj9>ubj)}(h h]h }(hjJ>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj9>ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj[>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjX>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]>modnameN classnameNjj)}j]j)}jj#>sbc.pci_back_from_sleepasbuh1hhj9>ubj)}(h h]h }(hj{>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj9>ubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9>ubj3)}(hdevh]hdev}(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj9>ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj5>ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj=hhhj>hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj=hhhj>hM ubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1hhj>hM hj=hhubj)}(hhh]j)}(hCturn PCI device on during system-wide transition into working stateh]hCturn PCI device on during system-wide transition into working state}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj>hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj>jj>jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` Device to handle. **Description** Disable device's system wake-up capability and put it into D0.h](j)}(h**Parameters**h]j&)}(hj>h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj>ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj>ubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` Device to handle. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj?h]hstruct pci_dev *dev}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj>ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj>ubjc)}(hhh]j)}(hDevice to handle.h]hDevice to handle.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?hM hj?ubah}(h]h ]h"]h$]h&]uh1jbhj>ubeh}(h]h ]h"]h$]h&]uh1j@hj?hM hj>ubah}(h]h ]h"]h$]h&]uh1j;hj>ubj)}(h**Description**h]j&)}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj:?ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj>ubj)}(h>Disable device's system wake-up capability and put it into D0.h]h@Disable device’s system wake-up capability and put it into D0.}(hjR?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_dev_run_wake (C function)c.pci_dev_run_wakehNtauh1hhhhhhNhNubh)}(hhh](h)}(h+bool pci_dev_run_wake (struct pci_dev *dev)h]h)}(h*bool pci_dev_run_wake(struct pci_dev *dev)h](h)}(hj'4h]hbool}(hj?hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj}?hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}?hhhj?hM ubj-)}(hpci_dev_run_wakeh]j3)}(hpci_dev_run_wakeh]hpci_dev_run_wake}(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj}?hhhj?hM ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj?hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj?hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jj?sbc.pci_dev_run_wakeasbuh1hhj?ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubj)}(hjh]h*}(hj @hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj3)}(hdevh]hdev}(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj?ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj}?hhhj?hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjy?hhhj?hM ubah}(h]jt?ah ](jjeh"]h$]h&]jj)jhuh1hhj?hM hjv?hhubj)}(hhh]j)}(h5Check if device can generate run-time wake-up events.h]h5Check if device can generate run-time wake-up events.}(hj@@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj=@hhubah}(h]h ]h"]h$]h&]uh1jhjv?hhhj?hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjX@jjX@jjjuh1hhhhhhNhNubj)}(hX$**Parameters** ``struct pci_dev *dev`` Device to check. **Description** Return true if the device itself is capable of generating wake-up events (through the platform or using the native PCIe PME) or if the device supports PME and one of its upstream bridges can generate wake-up events.h](j)}(h**Parameters**h]j&)}(hjb@h]h Parameters}(hjd@hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj`@ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj\@ubj<)}(hhh]jA)}(h)``struct pci_dev *dev`` Device to check. h](jG)}(h``struct pci_dev *dev``h]jM)}(hj@h]hstruct pci_dev *dev}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj@ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj{@ubjc)}(hhh]j)}(hDevice to check.h]hDevice to check.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@hM hj@ubah}(h]h ]h"]h$]h&]uh1jbhj{@ubeh}(h]h ]h"]h$]h&]uh1j@hj@hM hjx@ubah}(h]h ]h"]h$]h&]uh1j;hj\@ubj)}(h**Description**h]j&)}(hj@h]h Description}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj@ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj\@ubj)}(hReturn true if the device itself is capable of generating wake-up events (through the platform or using the native PCIe PME) or if the device supports PME and one of its upstream bridges can generate wake-up events.h]hReturn true if the device itself is capable of generating wake-up events (through the platform or using the native PCIe PME) or if the device supports PME and one of its upstream bridges can generate wake-up events.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj\@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_choose_state (C function)c.pci_choose_statehNtauh1hhhhhhNhNubh)}(hhh](h)}(hFpci_power_t pci_choose_state (struct pci_dev *dev, pm_message_t state)h]h)}(hEpci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state)h](h)}(hhh]j3)}(h pci_power_th]h pci_power_t}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j)}jpci_choose_statesbc.pci_choose_stateasbuh1hhj@hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM% ubj)}(h h]h }(hj&AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@hhhj%AhM% ubj-)}(hpci_choose_stateh]j3)}(hj"Ah]hpci_choose_state}(hj8AhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4Aubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj@hhhj%AhM% ubjN)}(h)(struct pci_dev *dev, pm_message_t state)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjSAhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjOAubj)}(h h]h }(hj`AhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOAubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjqAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsAmodnameN classnameNjj)}j]j Ac.pci_choose_stateasbuh1hhjOAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOAubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOAubj3)}(hdevh]hdev}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOAubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjKAubjT)}(hpm_message_t stateh](h)}(hhh]j3)}(h pm_message_th]h pm_message_t}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjAmodnameN classnameNjj)}j]j Ac.pci_choose_stateasbuh1hhjAubj)}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubj3)}(hstateh]hstate}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjKAubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj@hhhj%AhM% ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj@hhhj%AhM% ubah}(h]j@ah ](jjeh"]h$]h&]jj)jhuh1hhj%AhM% hj@hhubj)}(hhh]j)}(h'Choose the power state of a PCI device.h]h'Choose the power state of a PCI device.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM% hjBhhubah}(h]h ]h"]h$]h&]uh1jhj@hhhj%AhM% ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4Bjj4Bjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` Target PCI device. ``pm_message_t state`` Target state for the whole system. **Description** Returns PCI power state suitable for **dev** and **state**.h](j)}(h**Parameters**h]j&)}(hj>Bh]h Parameters}(hj@BhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj:Gubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM@ hj6Gubjc)}(hhh]j)}(hPCI device to handleh]hPCI device to handle}(hjUGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQGhM@ hjRGubah}(h]h ]h"]h$]h&]uh1jbhj6Gubeh}(h]h ]h"]h$]h&]uh1j@hjQGhM@ hj3Gubah}(h]h ]h"]h$]h&]uh1j;hjGubj)}(h**Description**h]j&)}(hjwGh]h Description}(hjyGhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjuGubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMB hjGubj)}(hThis function can be used in drivers to disable D3cold from the device they handle. It also updates upstream PCI bridge PM capabilities accordingly.h]hThis function can be used in drivers to disable D3cold from the device they handle. It also updates upstream PCI bridge PM capabilities accordingly.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMA hjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،*pci_enable_atomic_ops_to_root (C function)c.pci_enable_atomic_ops_to_roothNtauh1hhhhhhNhNubh)}(hhh](h)}(hEint pci_enable_atomic_ops_to_root (struct pci_dev *dev, u32 cap_mask)h]h)}(hDint pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask)h](h)}(hinth]hint}(hjGhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjGhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMoubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGhhhjGhMoubj-)}(hpci_enable_atomic_ops_to_rooth]j3)}(hpci_enable_atomic_ops_to_rooth]hpci_enable_atomic_ops_to_root}(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjGhhhjGhMoubjN)}(h#(struct pci_dev *dev, u32 cap_mask)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjGhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjGubj)}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNjj)}j]j)}jjGsbc.pci_enable_atomic_ops_to_rootasbuh1hhjGubj)}(h h]h }(hj7HhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGubj)}(hjh]h*}(hjEHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj3)}(hdevh]hdev}(hjRHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjGubjT)}(h u32 cap_maskh](h)}(hhh]j3)}(hu32h]hu32}(hjnHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpHmodnameN classnameNjj)}j]j3Hc.pci_enable_atomic_ops_to_rootasbuh1hhjgHubj)}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjgHubj3)}(hcap_maskh]hcap_mask}(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjgHubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjGubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjGhhhjGhMoubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjGhhhjGhMoubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1hhjGhMohjGhhubj)}(hhh]j)}(h%enable AtomicOp requests to root porth]h%enable AtomicOp requests to root port}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMohjHhhubah}(h]h ]h"]h$]h&]uh1jhjGhhhjGhMoubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHjjHjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the PCI device ``u32 cap_mask`` mask of desired AtomicOp sizes, including one or more of: PCI_EXP_DEVCAP2_ATOMIC_COMP32 PCI_EXP_DEVCAP2_ATOMIC_COMP64 PCI_EXP_DEVCAP2_ATOMIC_COMP128 **Description** Return 0 if all upstream bridges support AtomicOp routing, egress blocking is disabled on all upstream ports, and the root port supports the requested completion capabilities (32-bit, 64-bit and/or 128-bit AtomicOp completion), or negative otherwise.h](j)}(h**Parameters**h]j&)}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjHubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMshjHubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjIh]hstruct pci_dev *dev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMphjHubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIhMphjIubah}(h]h ]h"]h$]h&]uh1jbhjHubeh}(h]h ]h"]h$]h&]uh1j@hjIhMphjHubjA)}(h``u32 cap_mask`` mask of desired AtomicOp sizes, including one or more of: PCI_EXP_DEVCAP2_ATOMIC_COMP32 PCI_EXP_DEVCAP2_ATOMIC_COMP64 PCI_EXP_DEVCAP2_ATOMIC_COMP128 h](jG)}(h``u32 cap_mask``h]jM)}(hj>Ih]h u32 cap_mask}(hj@IhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj**Parameters** ``struct pci_dev *pdev`` PCI device whose resources were previously reserved by pci_request_regions() **Description** Releases all PCI I/O and memory resources previously reserved by a successful call to pci_request_regions(). Call this function only after all use of the PCI regions has ceased.h](j)}(h**Parameters**h]j&)}(hjVh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjVubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhhjVubj<)}(hhh]jA)}(hf``struct pci_dev *pdev`` PCI device whose resources were previously reserved by pci_request_regions() h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjVh]hstruct pci_dev *pdev}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMfhjVubjc)}(hhh]j)}(hLPCI device whose resources were previously reserved by pci_request_regions()h]hLPCI device whose resources were previously reserved by pci_request_regions()}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMehjVubah}(h]h ]h"]h$]h&]uh1jbhjVubeh}(h]h ]h"]h$]h&]uh1j@hjVhMfhjVubah}(h]h ]h"]h$]h&]uh1j;hjVubj)}(h**Description**h]j&)}(hjVh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjVubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhhjVubj)}(hReleases all PCI I/O and memory resources previously reserved by a successful call to pci_request_regions(). Call this function only after all use of the PCI regions has ceased.h]hReleases all PCI I/O and memory resources previously reserved by a successful call to pci_request_regions(). Call this function only after all use of the PCI regions has ceased.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMghjVubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_request_regions (C function)c.pci_request_regionshNtauh1hhhhhhNhNubh)}(hhh](h)}(h@int pci_request_regions (struct pci_dev *pdev, const char *name)h]h)}(h?int pci_request_regions(struct pci_dev *pdev, const char *name)h](h)}(hinth]hint}(hj-WhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj)WhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMsubj)}(h h]h }(hj\sbc.pci_remap_iospaceasbuh1hhjT\ubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjT\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjT\ubj3)}(hresh]hres}(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjT\ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjP\ubjT)}(hphys_addr_t phys_addrh](h)}(hhh]j3)}(h phys_addr_th]h phys_addr_t}(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j\c.pci_remap_iospaceasbuh1hhj\ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\ubj3)}(h phys_addrh]h phys_addr}(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjP\ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj\hhhj)\hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj\hhhj)\hMubah}(h]j\ah ](jjeh"]h$]h&]jj)jhuh1hhj)\hMhj\hhubj)}(hhh]j)}(h!Remap the memory mapped I/O spaceh]h!Remap the memory mapped I/O space}(hj>]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj;]hhubah}(h]h ]h"]h$]h&]uh1jhj\hhhj)\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjV]jjV]jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``const struct resource *res`` Resource describing the I/O space ``phys_addr_t phys_addr`` physical address of range to be mapped **Description** Remap the memory mapped I/O space described by the **res** and the CPU physical address **phys_addr** into virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.h](j)}(h**Parameters**h]j&)}(hj`]h]h Parameters}(hjb]hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj^]ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjZ]ubj<)}(hhh](jA)}(hA``const struct resource *res`` Resource describing the I/O space h](jG)}(h``const struct resource *res``h]jM)}(hj]h]hconst struct resource *res}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj}]ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjy]ubjc)}(hhh]j)}(h!Resource describing the I/O spaceh]h!Resource describing the I/O space}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1jbhjy]ubeh}(h]h ]h"]h$]h&]uh1j@hj]hMhjv]ubjA)}(hA``phys_addr_t phys_addr`` physical address of range to be mapped h](jG)}(h``phys_addr_t phys_addr``h]jM)}(hj]h]hphys_addr_t phys_addr}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj]ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj]ubjc)}(hhh]j)}(h&physical address of range to be mappedh]h&physical address of range to be mapped}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]hMhj]ubah}(h]h ]h"]h$]h&]uh1jbhj]ubeh}(h]h ]h"]h$]h&]uh1j@hj]hMhjv]ubeh}(h]h ]h"]h$]h&]uh1j;hjZ]ubj)}(h**Description**h]j&)}(hj]h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj]ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjZ]ubj)}(hXRemap the memory mapped I/O space described by the **res** and the CPU physical address **phys_addr** into virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.h](h3Remap the memory mapped I/O space described by the }(hj ^hhhNhNubj&)}(h**res**h]hres}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ^ubh and the CPU physical address }(hj ^hhhNhNubj&)}(h **phys_addr**h]h phys_addr}(hj#^hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ^ubh into virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.}(hj ^hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjZ]ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_unmap_iospace (C function)c.pci_unmap_iospacehNtauh1hhhhhhNhNubh)}(hhh](h)}(h-void pci_unmap_iospace (struct resource *res)h]h)}(h,void pci_unmap_iospace(struct resource *res)h](h)}(hvoidh]hvoid}(hj\^hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjX^hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjk^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjX^hhhjj^hMubj-)}(hpci_unmap_iospaceh]j3)}(hpci_unmap_iospaceh]hpci_unmap_iospace}(hj}^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjy^ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjX^hhhjj^hMubjN)}(h(struct resource *res)h]jT)}(hstruct resource *resh](jZ)}(hj]h]hstruct}(hj^hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj^ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj^ubh)}(hhh]j3)}(hresourceh]hresource}(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj^sbc.pci_unmap_iospaceasbuh1hhj^ubj)}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj^ubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubj3)}(hresh]hres}(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj^ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjX^hhhjj^hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjT^hhhjj^hMubah}(h]jO^ah ](jjeh"]h$]h&]jj)jhuh1hhjj^hMhjQ^hhubj)}(hhh]j)}(h!Unmap the memory mapped I/O spaceh]h!Unmap the memory mapped I/O space}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj_hhubah}(h]h ]h"]h$]h&]uh1jhjQ^hhhjj^hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4_jj4_jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct resource *res`` resource to be unmapped **Description** Unmap the CPU virtual address **res** from virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.h](j)}(h**Parameters**h]j&)}(hj>_h]h Parameters}(hj@_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj<_ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj8_ubj<)}(hhh]jA)}(h1``struct resource *res`` resource to be unmapped h](jG)}(h``struct resource *res``h]jM)}(hj]_h]hstruct resource *res}(hj__hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj[_ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjW_ubjc)}(hhh]j)}(hresource to be unmappedh]hresource to be unmapped}(hjv_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr_hMhjs_ubah}(h]h ]h"]h$]h&]uh1jbhjW_ubeh}(h]h ]h"]h$]h&]uh1j@hjr_hMhjT_ubah}(h]h ]h"]h$]h&]uh1j;hj8_ubj)}(h**Description**h]j&)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj_ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj8_ubj)}(hUnmap the CPU virtual address **res** from virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.h](hUnmap the CPU virtual address }(hj_hhhNhNubj&)}(h**res**h]hres}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj_ubh from virtual address space. Only architectures that have memory mapped IO functions defined (and the PCI_IOBASE value defined) should call this function.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj8_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_set_master (C function)c.pci_set_masterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h)void pci_set_master (struct pci_dev *dev)h]h)}(h(void pci_set_master(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hj_hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj_hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMFubj)}(h h]h }(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj_hhhj_hMFubj-)}(hpci_set_masterh]j3)}(hpci_set_masterh]hpci_set_master}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj `ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj_hhhj_hMFubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj,`hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj(`ubj)}(h h]h }(hj9`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(`ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjJ`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjG`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjL`modnameN classnameNjj)}j]j)}jj`sbc.pci_set_masterasbuh1hhj(`ubj)}(h h]h }(hjj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj(`ubj)}(hjh]h*}(hjx`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(`ubj3)}(hdevh]hdev}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(`ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj$`ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj_hhhj_hMFubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj_hhhj_hMFubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1hhj_hMFhj_hhubj)}(hhh]j)}(h$enables bus-mastering for device devh]h$enables bus-mastering for device dev}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMFhj`hhubah}(h]h ]h"]h$]h&]uh1jhj_hhhj_hMFubeh}(h]h ](jfunctioneh"]h$]h&]jjjj`jj`jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device to enable **Description** Enables bus-mastering on the device and calls pcibios_set_master() to do the needed arch specific settings.h](j)}(h**Parameters**h]j&)}(hj`h]h Parameters}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj`ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMJhj`ubj<)}(hhh]jA)}(h1``struct pci_dev *dev`` the PCI device to enable h](jG)}(h``struct pci_dev *dev``h]jM)}(hj`h]hstruct pci_dev *dev}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj`ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMGhj`ubjc)}(hhh]j)}(hthe PCI device to enableh]hthe PCI device to enable}(hj ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjahMGhjaubah}(h]h ]h"]h$]h&]uh1jbhj`ubeh}(h]h ]h"]h$]h&]uh1j@hjahMGhj`ubah}(h]h ]h"]h$]h&]uh1j;hj`ubj)}(h**Description**h]j&)}(hj+ah]h Description}(hj-ahhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj)aubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMIhj`ubj)}(hkEnables bus-mastering on the device and calls pcibios_set_master() to do the needed arch specific settings.h]hkEnables bus-mastering on the device and calls pcibios_set_master() to do the needed arch specific settings.}(hjAahhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMHhj`ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_clear_master (C function)c.pci_clear_masterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h+void pci_clear_master (struct pci_dev *dev)h]h)}(h*void pci_clear_master(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjpahhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjlahhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMTubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjlahhhj~ahMTubj-)}(hpci_clear_masterh]j3)}(hpci_clear_masterh]hpci_clear_master}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjlahhhj~ahMTubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjahhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjaubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jjasbc.pci_clear_masterasbuh1hhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjaubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj3)}(hdevh]hdev}(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjaubah}(h]h ]h"]h$]h&]jKjLuh1jMhjlahhhj~ahMTubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhahhhj~ahMTubah}(h]jcaah ](jjeh"]h$]h&]jj)jhuh1hhj~ahMThjeahhubj)}(hhh]j)}(h%disables bus-mastering for device devh]h%disables bus-mastering for device dev}(hj0bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMThj-bhhubah}(h]h ]h"]h$]h&]uh1jhjeahhhj~ahMTubeh}(h]h ](jfunctioneh"]h$]h&]jjjjHbjjHbjjjuh1hhhhhhNhNubj)}(hC**Parameters** ``struct pci_dev *dev`` the PCI device to disableh](j)}(h**Parameters**h]j&)}(hjRbh]h Parameters}(hjTbhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjPbubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMXhjLbubj<)}(hhh]jA)}(h1``struct pci_dev *dev`` the PCI device to disableh](jG)}(h``struct pci_dev *dev``h]jM)}(hjqbh]hstruct pci_dev *dev}(hjsbhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjobubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMZhjkbubjc)}(hhh]j)}(hthe PCI device to disableh]hthe PCI device to disable}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMUhjbubah}(h]h ]h"]h$]h&]uh1jbhjkbubeh}(h]h ]h"]h$]h&]uh1j@hjbhMZhjhbubah}(h]h ]h"]h$]h&]uh1j;hjLbubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_set_cacheline_size (C function)c.pci_set_cacheline_sizehNtauh1hhhhhhNhNubh)}(hhh](h)}(h0int pci_set_cacheline_size (struct pci_dev *dev)h]h)}(h/int pci_set_cacheline_size(struct pci_dev *dev)h](h)}(hinth]hint}(hjbhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjbhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM^ubj)}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjbhhhjbhM^ubj-)}(hpci_set_cacheline_sizeh]j3)}(hpci_set_cacheline_sizeh]hpci_set_cacheline_size}(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjbubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjbhhhjbhM^ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjchhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjcubj)}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjcubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj&chhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#cubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(cmodnameN classnameNjj)}j]j)}jjbsbc.pci_set_cacheline_sizeasbuh1hhjcubj)}(h h]h }(hjFchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjcubj)}(hjh]h*}(hjTchhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjcubj3)}(hdevh]hdev}(hjachhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjcubah}(h]h ]h"]h$]h&]jKjLuh1jMhjbhhhjbhM^ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjbhhhjbhM^ubah}(h]jbah ](jjeh"]h$]h&]jj)jhuh1hhjbhM^hjbhhubj)}(hhh]j)}(h1ensure the CACHE_LINE_SIZE register is programmedh]h1ensure the CACHE_LINE_SIZE register is programmed}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM^hjchhubah}(h]h ]h"]h$]h&]uh1jhjbhhhjbhM^ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjcjjcjjjuh1hhhhhhNhNubj)}(hXG**Parameters** ``struct pci_dev *dev`` the PCI device for which MWI is to be enabled **Description** Helper function for pci_set_mwi. Originally copied from drivers/net/acenic.c. Copyright 1998-2001 by Jes Sorensen, . **Return** An appropriate -ERRNO error value on error, or zero for success.h](j)}(h**Parameters**h]j&)}(hjch]h Parameters}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjcubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMbhjcubj<)}(hhh]jA)}(hF``struct pci_dev *dev`` the PCI device for which MWI is to be enabled h](jG)}(h``struct pci_dev *dev``h]jM)}(hjch]hstruct pci_dev *dev}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjcubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM_hjcubjc)}(hhh]j)}(h-the PCI device for which MWI is to be enabledh]h-the PCI device for which MWI is to be enabled}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjchM_hjcubah}(h]h ]h"]h$]h&]uh1jbhjcubeh}(h]h ]h"]h$]h&]uh1j@hjchM_hjcubah}(h]h ]h"]h$]h&]uh1j;hjcubj)}(h**Description**h]j&)}(hjdh]h Description}(hj dhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjdubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMahjcubj)}(hHelper function for pci_set_mwi. Originally copied from drivers/net/acenic.c. Copyright 1998-2001 by Jes Sorensen, .h]hHelper function for pci_set_mwi. Originally copied from drivers/net/acenic.c. Copyright 1998-2001 by Jes Sorensen, .}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM`hjcubj)}(h **Return**h]j&)}(hj.dh]hReturn}(hj0dhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj,dubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMdhjcubj)}(h@An appropriate -ERRNO error value on error, or zero for success.h]h@An appropriate -ERRNO error value on error, or zero for success.}(hjDdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMehjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_set_mwi (C function) c.pci_set_mwihNtauh1hhhhhhNhNubh)}(hhh](h)}(h%int pci_set_mwi (struct pci_dev *dev)h]h)}(h$int pci_set_mwi(struct pci_dev *dev)h](h)}(hinth]hint}(hjsdhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjodhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjodhhhjdhMubj-)}(h pci_set_mwih]j3)}(h pci_set_mwih]h pci_set_mwi}(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjodhhhjdhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjdhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjdubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]j)}jjdsb c.pci_set_mwiasbuh1hhjdubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjdubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubj3)}(hdevh]hdev}(hj ehhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjdubah}(h]h ]h"]h$]h&]jKjLuh1jMhjodhhhjdhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjkdhhhjdhMubah}(h]jfdah ](jjeh"]h$]h&]jj)jhuh1hhjdhMhjhdhhubj)}(hhh]j)}(h/enables memory-write-invalidate PCI transactionh]h/enables memory-write-invalidate PCI transaction}(hj3ehhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj0ehhubah}(h]h ]h"]h$]h&]uh1jhjhdhhhjdhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKejjKejjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device for which MWI is enabled **Description** Enables the Memory-Write-Invalidate transaction in ``PCI_COMMAND``. **Return** An appropriate -ERRNO error value on error, or zero for success.h](j)}(h**Parameters**h]j&)}(hjUeh]h Parameters}(hjWehhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjSeubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjOeubj<)}(hhh]jA)}(h@``struct pci_dev *dev`` the PCI device for which MWI is enabled h](jG)}(h``struct pci_dev *dev``h]jM)}(hjteh]hstruct pci_dev *dev}(hjvehhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjreubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjneubjc)}(hhh]j)}(h'the PCI device for which MWI is enabledh]h'the PCI device for which MWI is enabled}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjehMhjeubah}(h]h ]h"]h$]h&]uh1jbhjneubeh}(h]h ]h"]h$]h&]uh1j@hjehMhjkeubah}(h]h ]h"]h$]h&]uh1j;hjOeubj)}(h**Description**h]j&)}(hjeh]h Description}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjeubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjOeubj)}(hCEnables the Memory-Write-Invalidate transaction in ``PCI_COMMAND``.h](h3Enables the Memory-Write-Invalidate transaction in }(hjehhhNhNubjM)}(h``PCI_COMMAND``h]h PCI_COMMAND}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjeubh.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjOeubj)}(h **Return**h]j&)}(hjeh]hReturn}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjeubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjOeubj)}(h@An appropriate -ERRNO error value on error, or zero for success.h]h@An appropriate -ERRNO error value on error, or zero for success.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjOeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_try_set_mwi (C function)c.pci_try_set_mwihNtauh1hhhhhhNhNubh)}(hhh](h)}(h)int pci_try_set_mwi (struct pci_dev *dev)h]h)}(h(int pci_try_set_mwi(struct pci_dev *dev)h](h)}(hinth]hint}(hj-fhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj)fhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjDisables PCI Memory-Write-Invalidate transaction on the deviceh]h>Disables PCI Memory-Write-Invalidate transaction on the device}(hj9ihhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_intx (C function) c.pci_intxhNtauh1hhhhhhNhNubh)}(hhh](h)}(h0void pci_intx (struct pci_dev *pdev, int enable)h]h)}(h/void pci_intx(struct pci_dev *pdev, int enable)h](h)}(hvoidh]hvoid}(hjhihhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjdihhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjwihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjdihhhjvihMubj-)}(hpci_intxh]j3)}(hpci_intxh]hpci_intx}(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjdihhhjvihMubjN)}(h"(struct pci_dev *pdev, int enable)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjihhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjiubj)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j)}jjisb c.pci_intxasbuh1hhjiubj)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj3)}(hpdevh]hpdev}(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjiubjT)}(h int enableh](h)}(hinth]hint}(hjjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjjubj)}(h h]h }(hj%jhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjjubj3)}(henableh]henable}(hj3jhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjiubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjdihhhjvihMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj`ihhhjvihMubah}(h]j[iah ](jjeh"]h$]h&]jj)jhuh1hhjvihMhj]ihhubj)}(hhh]j)}(h(enables/disables PCI INTx for device devh]h(enables/disables PCI INTx for device dev}(hj]jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjZjhhubah}(h]h ]h"]h$]h&]uh1jhj]ihhhjvihMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjujjjujjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` the PCI device to operate on ``int enable`` boolean: whether to enable or disable PCI INTx **Description** Enables/disables PCI INTx for device **pdev**h](j)}(h**Parameters**h]j&)}(hjjh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj}jubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyjubj<)}(hhh](jA)}(h6``struct pci_dev *pdev`` the PCI device to operate on h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjjh]hstruct pci_dev *pdev}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjjubjc)}(hhh]j)}(hthe PCI device to operate onh]hthe PCI device to operate on}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hjjhMhjjubjA)}(h>``int enable`` boolean: whether to enable or disable PCI INTx h](jG)}(h``int enable``h]jM)}(hjjh]h int enable}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjjubjc)}(hhh]j)}(h.boolean: whether to enable or disable PCI INTxh]h.boolean: whether to enable or disable PCI INTx}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hjjhMhjjubeh}(h]h ]h"]h$]h&]uh1j;hjyjubj)}(h**Description**h]j&)}(hjkh]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjkubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyjubj)}(h-Enables/disables PCI INTx for device **pdev**h](h%Enables/disables PCI INTx for device }(hj(khhhNhNubj&)}(h**pdev**h]hpdev}(hj0khhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj(kubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،-pci_wait_for_pending_transaction (C function)"c.pci_wait_for_pending_transactionhNtauh1hhhhhhNhNubh)}(hhh](h)}(h:int pci_wait_for_pending_transaction (struct pci_dev *dev)h]h)}(h9int pci_wait_for_pending_transaction(struct pci_dev *dev)h](h)}(hinth]hint}(hjekhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjakhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjtkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjakhhhjskhMubj-)}(h pci_wait_for_pending_transactionh]j3)}(h pci_wait_for_pending_transactionh]h pci_wait_for_pending_transaction}(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjakhhhjskhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjkhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjkubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkmodnameN classnameNjj)}j]j)}jjksb"c.pci_wait_for_pending_transactionasbuh1hhjkubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjkubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkubj3)}(hdevh]hdev}(hjkhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjkubah}(h]h ]h"]h$]h&]jKjLuh1jMhjakhhhjskhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj]khhhjskhMubah}(h]jXkah ](jjeh"]h$]h&]jj)jhuh1hhjskhMhjZkhhubj)}(hhh]j)}(hwait for pending transactionh]hwait for pending transaction}(hj%lhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj"lhhubah}(h]h ]h"]h$]h&]uh1jhjZkhhhjskhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=ljj=ljjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device to operate on **Description** Return 0 if transaction is pending 1 otherwise.h](j)}(h**Parameters**h]j&)}(hjGlh]h Parameters}(hjIlhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjElubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjAlubj<)}(hhh]jA)}(h5``struct pci_dev *dev`` the PCI device to operate on h](jG)}(h``struct pci_dev *dev``h]jM)}(hjflh]hstruct pci_dev *dev}(hjhlhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjdlubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj`lubjc)}(hhh]j)}(hthe PCI device to operate onh]hthe PCI device to operate on}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{lhMhj|lubah}(h]h ]h"]h$]h&]uh1jbhj`lubeh}(h]h ]h"]h$]h&]uh1j@hj{lhMhj]lubah}(h]h ]h"]h$]h&]uh1j;hjAlubj)}(h**Description**h]j&)}(hjlh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjlubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjAlubj)}(h/Return 0 if transaction is pending 1 otherwise.h]h/Return 0 if transaction is pending 1 otherwise.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjAlubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_flr (C function) c.pcie_flrhNtauh1hhhhhhNhNubh)}(hhh](h)}(h"int pcie_flr (struct pci_dev *dev)h]h)}(h!int pcie_flr(struct pci_dev *dev)h](h)}(hinth]hint}(hjlhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjlhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjlhhhjlhMubj-)}(hpcie_flrh]j3)}(hpcie_flrh]hpcie_flr}(hjmhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjlhhhjlhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj#mhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjmubj)}(h h]h }(hj0mhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjAmhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>mubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmmodnameN classnameNjj)}j]j)}jj msb c.pcie_flrasbuh1hhjmubj)}(h h]h }(hjamhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubj)}(hjh]h*}(hjomhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj3)}(hdevh]hdev}(hj|mhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjmubah}(h]h ]h"]h$]h&]jKjLuh1jMhjlhhhjlhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjRhjlhhhjlhMubah}(h]jlah ](jjeh"]h$]h&]jj)jhuh1hhjlhMhjlhhubj)}(hhh]j)}(h$initiate a PCIe function level reseth]h$initiate a PCIe function level reset}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjmhhubah}(h]h ]h"]h$]h&]uh1jhjlhhhjlhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjmjjmjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` device to reset **Description** Initiate a function level reset unconditionally on **dev** without checking any flags and DEVCAPh](j)}(h**Parameters**h]j&)}(hjmh]h Parameters}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjmubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjmubj<)}(hhh]jA)}(h(``struct pci_dev *dev`` device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjmh]hstruct pci_dev *dev}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjmubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjmubjc)}(hhh]j)}(hdevice to reseth]hdevice to reset}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmhMhjmubah}(h]h ]h"]h$]h&]uh1jbhjmubeh}(h]h ]h"]h$]h&]uh1j@hjmhMhjmubah}(h]h ]h"]h$]h&]uh1j;hjmubj)}(h**Description**h]j&)}(hj"nh]h Description}(hj$nhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj nubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjmubj)}(h`Initiate a function level reset unconditionally on **dev** without checking any flags and DEVCAPh](h3Initiate a function level reset unconditionally on }(hj8nhhhNhNubj&)}(h**dev**h]hdev}(hj@nhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj8nubh& without checking any flags and DEVCAP}(hj8nhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjmubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_reset_flr (C function)c.pcie_reset_flrhNtauh1hhhhhhNhNubh)}(hhh](h)}(h4int pcie_reset_flr (struct pci_dev *dev, bool probe)h]h)}(h3int pcie_reset_flr(struct pci_dev *dev, bool probe)h](h)}(hinth]hint}(hjynhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjunhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM,ubj)}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjunhhhjnhM,ubj-)}(hpcie_reset_flrh]j3)}(hpcie_reset_flrh]hpcie_reset_flr}(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjunhhhjnhM,ubjN)}(h!(struct pci_dev *dev, bool probe)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjnhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjnubj)}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjnubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjnmodnameN classnameNjj)}j]j)}jjnsbc.pcie_reset_flrasbuh1hhjnubj)}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjnubj)}(hjh]h*}(hjohhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj3)}(hdevh]hdev}(hjohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjnubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjnubjT)}(h bool probeh](h)}(hj'4h]hbool}(hj(ohhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj$oubj)}(h h]h }(hj5ohhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$oubj3)}(hprobeh]hprobe}(hjCohhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$oubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjnubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjunhhhjnhM,ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjqnhhhjnhM,ubah}(h]jlnah ](jjeh"]h$]h&]jj)jhuh1hhjnhM,hjnnhhubj)}(hhh]j)}(h$initiate a PCIe function level reseth]h$initiate a PCIe function level reset}(hjmohhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM,hjjohhubah}(h]h ]h"]h$]h&]uh1jhjnnhhhjnhM,ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjojjojjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` device to reset ``bool probe`` if true, return 0 if device can be reset this way **Description** Initiate a function level reset on **dev**.h](j)}(h**Parameters**h]j&)}(hjoh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjoubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM0hjoubj<)}(hhh](jA)}(h(``struct pci_dev *dev`` device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjoh]hstruct pci_dev *dev}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjoubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM-hjoubjc)}(hhh]j)}(hdevice to reseth]hdevice to reset}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjohM-hjoubah}(h]h ]h"]h$]h&]uh1jbhjoubeh}(h]h ]h"]h$]h&]uh1j@hjohM-hjoubjA)}(hA``bool probe`` if true, return 0 if device can be reset this way h](jG)}(h``bool probe``h]jM)}(hjoh]h bool probe}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjoubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM.hjoubjc)}(hhh]j)}(h1if true, return 0 if device can be reset this wayh]h1if true, return 0 if device can be reset this way}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjohM.hjoubah}(h]h ]h"]h$]h&]uh1jbhjoubeh}(h]h ]h"]h$]h&]uh1j@hjohM.hjoubeh}(h]h ]h"]h$]h&]uh1j;hjoubj)}(h**Description**h]j&)}(hj"ph]h Description}(hj$phhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj pubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM0hjoubj)}(h+Initiate a function level reset on **dev**.h](h#Initiate a function level reset on }(hj8phhhNhNubj&)}(h**dev**h]hdev}(hj@phhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj8pubh.}(hj8phhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM/hjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،+pci_bridge_secondary_bus_reset (C function) c.pci_bridge_secondary_bus_resethNtauh1hhhhhhNhNubh)}(hhh](h)}(h8int pci_bridge_secondary_bus_reset (struct pci_dev *dev)h]h)}(h7int pci_bridge_secondary_bus_reset(struct pci_dev *dev)h](h)}(hinth]hint}(hjyphhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjuphhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuphhhjphMubj-)}(hpci_bridge_secondary_bus_reseth]j3)}(hpci_bridge_secondary_bus_reseth]hpci_bridge_secondary_bus_reset}(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjpubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjuphhhjphMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjphhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjpubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNjj)}j]j)}jjpsb c.pci_bridge_secondary_bus_resetasbuh1hhjpubj)}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjpubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj3)}(hdevh]hdev}(hjqhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjpubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjpubah}(h]h ]h"]h$]h&]jKjLuh1jMhjuphhhjphMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjqphhhjphMubah}(h]jlpah ](jjeh"]h$]h&]jj)jhuh1hhjphMhjnphhubj)}(hhh]j)}(h(Reset the secondary bus on a PCI bridge.h]h(Reset the secondary bus on a PCI bridge.}(hj9qhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj6qhhubah}(h]h ]h"]h$]h&]uh1jhjnphhhjphMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQqjjQqjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` Bridge device **Description** Use the bridge control register to assert reset on the secondary bus. Devices on the secondary bus are left in power-on state.h](j)}(h**Parameters**h]j&)}(hj[qh]h Parameters}(hj]qhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjYqubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjUqubj<)}(hhh]jA)}(h&``struct pci_dev *dev`` Bridge device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjzqh]hstruct pci_dev *dev}(hj|qhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjxqubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtqubjc)}(hhh]j)}(h Bridge deviceh]h Bridge device}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqhMhjqubah}(h]h ]h"]h$]h&]uh1jbhjtqubeh}(h]h ]h"]h$]h&]uh1j@hjqhMhjqqubah}(h]h ]h"]h$]h&]uh1j;hjUqubj)}(h**Description**h]j&)}(hjqh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjqubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjUqubj)}(h~Use the bridge control register to assert reset on the secondary bus. Devices on the secondary bus are left in power-on state.h]h~Use the bridge control register to assert reset on the secondary bus. Devices on the secondary bus are left in power-on state.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjUqubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،(__pci_reset_function_locked (C function)c.__pci_reset_function_lockedhNtauh1hhhhhhNhNubh)}(hhh](h)}(h5int __pci_reset_function_locked (struct pci_dev *dev)h]h)}(h4int __pci_reset_function_locked(struct pci_dev *dev)h](h)}(hinth]hint}(hjqhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjqhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj rhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjqhhhjrhMubj-)}(h__pci_reset_function_lockedh]j3)}(h__pci_reset_function_lockedh]h__pci_reset_function_locked}(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjqhhhjrhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj7rhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj3rubj)}(h h]h }(hjDrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3rubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjUrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjRrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWrmodnameN classnameNjj)}j]j)}jjrsbc.__pci_reset_function_lockedasbuh1hhj3rubj)}(h h]h }(hjurhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3rubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3rubj3)}(hdevh]hdev}(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3rubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj/rubah}(h]h ]h"]h$]h&]jKjLuh1jMhjqhhhjrhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjqhhhjrhMubah}(h]jqah ](jjeh"]h$]h&]jj)jhuh1hhjrhMhjqhhubj)}(hhh]j)}(hAreset a PCI device function while holding the **dev** mutex lock.h](h.reset a PCI device function while holding the }(hjrhhhNhNubj&)}(h**dev**h]hdev}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjrubh mutex lock.}(hjrhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrhhubah}(h]h ]h"]h$]h&]uh1jhjqhhhjrhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjrjjrjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to reset **Description** Some devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function. The device function is presumed to be unused and the caller is holding the device mutex lock when this function is called. Resetting the device will make the contents of PCI configuration space random, so any caller of this must be prepared to reinitialise the device including MSI, bus mastering, BARs, decoding IO and memory spaces, etc. **Context** The caller must hold the device lock. **Return** 0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h](j)}(h**Parameters**h]j&)}(hjrh]h Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjrubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hj sh]hstruct pci_dev *dev}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj subah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjsubjc)}(hhh]j)}(hPCI device to reseth]hPCI device to reset}(hj&shhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"shMhj#subah}(h]h ]h"]h$]h&]uh1jbhjsubeh}(h]h ]h"]h$]h&]uh1j@hj"shMhjsubah}(h]h ]h"]h$]h&]uh1j;hjrubj)}(h**Description**h]j&)}(hjHsh]h Description}(hjJshhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjFsubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.h]hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.}(hj^shhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(hzThe device function is presumed to be unused and the caller is holding the device mutex lock when this function is called.h]hzThe device function is presumed to be unused and the caller is holding the device mutex lock when this function is called.}(hjmshhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(hResetting the device will make the contents of PCI configuration space random, so any caller of this must be prepared to reinitialise the device including MSI, bus mastering, BARs, decoding IO and memory spaces, etc.h]hResetting the device will make the contents of PCI configuration space random, so any caller of this must be prepared to reinitialise the device including MSI, bus mastering, BARs, decoding IO and memory spaces, etc.}(hj|shhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(h **Context**h]j&)}(hjsh]hContext}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjsubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(h%The caller must hold the device lock.h]h%The caller must hold the device lock.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(h **Return**h]j&)}(hjsh]hReturn}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjsubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubj)}(hv0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h]hx0 if the device function was successfully reset or negative if the device doesn’t support resetting a single function.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_reset_function (C function)c.pci_reset_functionhNtauh1hhhhhhNhNubh)}(hhh](h)}(h,int pci_reset_function (struct pci_dev *dev)h]h)}(h+int pci_reset_function(struct pci_dev *dev)h](h)}(hinth]hint}(hjshhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjshhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMIubj)}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjshhhjthMIubj-)}(hpci_reset_functionh]j3)}(hpci_reset_functionh]hpci_reset_function}(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjshhhjthMIubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj6thhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj2tubj)}(h h]h }(hjCthhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2tubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjTthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVtmodnameN classnameNjj)}j]j)}jjtsbc.pci_reset_functionasbuh1hhj2tubj)}(h h]h }(hjtthhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2tubj)}(hjh]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2tubj3)}(hdevh]hdev}(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2tubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj.tubah}(h]h ]h"]h$]h&]jKjLuh1jMhjshhhjthMIubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjshhhjthMIubah}(h]jsah ](jjeh"]h$]h&]jj)jhuh1hhjthMIhjshhubj)}(hhh]j)}(h'quiesce and reset a PCI device functionh]h'quiesce and reset a PCI device function}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMIhjthhubah}(h]h ]h"]h$]h&]uh1jhjshhhjthMIubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtjjtjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to reset **Description** Some devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function. This function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset and takes the PCI device lock. Returns 0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h](j)}(h**Parameters**h]j&)}(hjth]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjtubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMMhjtubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjth]hstruct pci_dev *dev}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjtubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMJhjtubjc)}(hhh]j)}(hPCI device to reseth]hPCI device to reset}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuhMJhjuubah}(h]h ]h"]h$]h&]uh1jbhjtubeh}(h]h ]h"]h$]h&]uh1j@hjuhMJhjtubah}(h]h ]h"]h$]h&]uh1j;hjtubj)}(h**Description**h]j&)}(hj5uh]h Description}(hj7uhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj3uubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMLhjtubj)}(hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.h]hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.}(hjKuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMKhjtubj)}(hXThis function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset and takes the PCI device lock.h]hXThis function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset and takes the PCI device lock.}(hjZuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMOhjtubj)}(h~Returns 0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h]hReturns 0 if the device function was successfully reset or negative if the device doesn’t support resetting a single function.}(hjiuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMThjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،&pci_reset_function_locked (C function)c.pci_reset_function_lockedhNtauh1hhhhhhNhNubh)}(hhh](h)}(h3int pci_reset_function_locked (struct pci_dev *dev)h]h)}(h2int pci_reset_function_locked(struct pci_dev *dev)h](h)}(hinth]hint}(hjuhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjuhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMxubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuhhhjuhMxubj-)}(hpci_reset_function_lockedh]j3)}(hpci_reset_function_lockedh]hpci_reset_function_locked}(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjuhhhjuhMxubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjuhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjuubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}jjusbc.pci_reset_function_lockedasbuh1hhjuubj)}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuubj)}(hjh]h*}(hj!vhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj3)}(hdevh]hdev}(hj.vhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjuubah}(h]h ]h"]h$]h&]jKjLuh1jMhjuhhhjuhMxubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjuhhhjuhMxubah}(h]juah ](jjeh"]h$]h&]jj)jhuh1hhjuhMxhjuhhubj)}(hhh]j)}(h'quiesce and reset a PCI device functionh]h'quiesce and reset a PCI device function}(hjXvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMxhjUvhhubah}(h]h ]h"]h$]h&]uh1jhjuhhhjuhMxubeh}(h]h ](jfunctioneh"]h$]h&]jjjjpvjjpvjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to reset **Description** Some devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function. This function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset. It also differs from pci_reset_function() in that it requires the PCI device lock to be held. **Context** The caller must hold the device lock. **Return** 0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h](j)}(h**Parameters**h]j&)}(hjzvh]h Parameters}(hj|vhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjxvubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM|hjtvubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjvh]hstruct pci_dev *dev}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjvubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMyhjvubjc)}(hhh]j)}(hPCI device to reseth]hPCI device to reset}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvhMyhjvubah}(h]h ]h"]h$]h&]uh1jbhjvubeh}(h]h ]h"]h$]h&]uh1j@hjvhMyhjvubah}(h]h ]h"]h$]h&]uh1j;hjtvubj)}(h**Description**h]j&)}(hjvh]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjvubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM{hjtvubj)}(hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.h]hSome devices allow an individual function to be reset without affecting other functions in the same device. The PCI device must be responsive to PCI config space in order to use this function.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMzhjtvubj)}(hXGThis function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset. It also differs from pci_reset_function() in that it requires the PCI device lock to be held.h]hXGThis function does not just reset the PCI portion of a device, but clears all the state associated with the device. This function differs from __pci_reset_function_locked() in that it saves and restores device state over the reset. It also differs from pci_reset_function() in that it requires the PCI device lock to be held.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM~hjtvubj)}(h **Context**h]j&)}(hj wh]hContext}(hj whhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjwubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtvubj)}(h%The caller must hold the device lock.h]h%The caller must hold the device lock.}(hj whhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtvubj)}(h **Return**h]j&)}(hj1wh]hReturn}(hj3whhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/wubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtvubj)}(hv0 if the device function was successfully reset or negative if the device doesn't support resetting a single function.h]hx0 if the device function was successfully reset or negative if the device doesn’t support resetting a single function.}(hjGwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjtvubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_try_reset_function (C function)c.pci_try_reset_functionhNtauh1hhhhhhNhNubh)}(hhh](h)}(h0int pci_try_reset_function (struct pci_dev *dev)h]h)}(h/int pci_try_reset_function(struct pci_dev *dev)h](h)}(hinth]hint}(hjvwhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjrwhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjrwhhhjwhMubj-)}(hpci_try_reset_functionh]j3)}(hpci_try_reset_functionh]hpci_try_reset_function}(hjwhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjrwhhhjwhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjwhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjwubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjwubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjwhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]j)}jjwsbc.pci_try_reset_functionasbuh1hhjwubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjwubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj3)}(hdevh]hdev}(hj xhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjwubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjwubah}(h]h ]h"]h$]h&]jKjLuh1jMhjrwhhhjwhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjnwhhhjwhMubah}(h]jiwah ](jjeh"]h$]h&]jj)jhuh1hhjwhMhjkwhhubj)}(hhh]j)}(h'quiesce and reset a PCI device functionh]h'quiesce and reset a PCI device function}(hj6xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj3xhhubah}(h]h ]h"]h$]h&]uh1jhjkwhhhjwhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNxjjNxjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to reset **Description** Same as above, except return -EAGAIN if unable to lock device.h](j)}(h**Parameters**h]j&)}(hjXxh]h Parameters}(hjZxhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjVxubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjRxubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to reset h](jG)}(h``struct pci_dev *dev``h]jM)}(hjwxh]hstruct pci_dev *dev}(hjyxhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjuxubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjqxubjc)}(hhh]j)}(hPCI device to reseth]hPCI device to reset}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxhMhjxubah}(h]h ]h"]h$]h&]uh1jbhjqxubeh}(h]h ]h"]h$]h&]uh1j@hjxhMhjnxubah}(h]h ]h"]h$]h&]uh1j;hjRxubj)}(h**Description**h]j&)}(hjxh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjxubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjRxubj)}(h>Same as above, except return -EAGAIN if unable to lock device.h]h>Same as above, except return -EAGAIN if unable to lock device.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjRxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،!pci_probe_reset_slot (C function)c.pci_probe_reset_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(h0int pci_probe_reset_slot (struct pci_slot *slot)h]h)}(h/int pci_probe_reset_slot(struct pci_slot *slot)h](h)}(hinth]hint}(hjxhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjxhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjxhhhjyhMubj-)}(hpci_probe_reset_sloth]j3)}(hpci_probe_reset_sloth]hpci_probe_reset_slot}(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjxhhhjyhMubjN)}(h(struct pci_slot *slot)h]jT)}(hstruct pci_slot *sloth](jZ)}(hj]h]hstruct}(hj4yhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj0yubj)}(h h]h }(hjAyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0yubh)}(hhh]j3)}(hpci_sloth]hpci_slot}(hjRyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTymodnameN classnameNjj)}j]j)}jjysbc.pci_probe_reset_slotasbuh1hhj0yubj)}(h h]h }(hjryhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0yubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0yubj3)}(hsloth]hslot}(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0yubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj,yubah}(h]h ]h"]h$]h&]jKjLuh1jMhjxhhhjyhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjxhhhjyhMubah}(h]jxah ](jjeh"]h$]h&]jj)jhuh1hhjyhMhjxhhubj)}(hhh]j)}(h%probe whether a PCI slot can be reseth]h%probe whether a PCI slot can be reset}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyhhubah}(h]h ]h"]h$]h&]uh1jhjxhhhjyhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjyjjyjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_slot *slot`` PCI slot to probe **Description** Return 0 if slot can be reset, negative if a slot reset is not supported.h](j)}(h**Parameters**h]j&)}(hjyh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjyubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyubj<)}(hhh]jA)}(h,``struct pci_slot *slot`` PCI slot to probe h](jG)}(h``struct pci_slot *slot``h]jM)}(hjyh]hstruct pci_slot *slot}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjyubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyubjc)}(hhh]j)}(hPCI slot to probeh]hPCI slot to probe}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj zhMhjzubah}(h]h ]h"]h$]h&]uh1jbhjyubeh}(h]h ]h"]h$]h&]uh1j@hj zhMhjyubah}(h]h ]h"]h$]h&]uh1j;hjyubj)}(h**Description**h]j&)}(hj3zh]h Description}(hj5zhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj1zubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyubj)}(hIReturn 0 if slot can be reset, negative if a slot reset is not supported.h]hIReturn 0 if slot can be reset, negative if a slot reset is not supported.}(hjIzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjyubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_probe_reset_bus (C function)c.pci_probe_reset_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h-int pci_probe_reset_bus (struct pci_bus *bus)h]h)}(h,int pci_probe_reset_bus(struct pci_bus *bus)h](h)}(hinth]hint}(hjxzhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjtzhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMAubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjtzhhhjzhMAubj-)}(hpci_probe_reset_bush]j3)}(hpci_probe_reset_bush]hpci_probe_reset_bus}(hjzhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjtzhhhjzhMAubjN)}(h(struct pci_bus *bus)h]jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hjzhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjzhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjzmodnameN classnameNjj)}j]j)}jjzsbc.pci_probe_reset_busasbuh1hhjzubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj3)}(hbush]hbus}(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjzubah}(h]h ]h"]h$]h&]jKjLuh1jMhjtzhhhjzhMAubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjpzhhhjzhMAubah}(h]jkzah ](jjeh"]h$]h&]jj)jhuh1hhjzhMAhjmzhhubj)}(hhh]j)}(h$probe whether a PCI bus can be reseth]h$probe whether a PCI bus can be reset}(hj8{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMAhj5{hhubah}(h]h ]h"]h$]h&]uh1jhjmzhhhjzhMAubeh}(h]h ](jfunctioneh"]h$]h&]jjjjP{jjP{jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_bus *bus`` PCI bus to probe **Description** Return 0 if bus can be reset, negative if a bus reset is not supported.h](j)}(h**Parameters**h]j&)}(hjZ{h]h Parameters}(hj\{hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjX{ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMEhjT{ubj<)}(hhh]jA)}(h)``struct pci_bus *bus`` PCI bus to probe h](jG)}(h``struct pci_bus *bus``h]jM)}(hjy{h]hstruct pci_bus *bus}(hj{{hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjw{ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMBhjs{ubjc)}(hhh]j)}(hPCI bus to probeh]hPCI bus to probe}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{hMBhj{ubah}(h]h ]h"]h$]h&]uh1jbhjs{ubeh}(h]h ]h"]h$]h&]uh1j@hj{hMBhjp{ubah}(h]h ]h"]h$]h&]uh1j;hjT{ubj)}(h**Description**h]j&)}(hj{h]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMDhjT{ubj)}(hGReturn 0 if bus can be reset, negative if a bus reset is not supported.h]hGReturn 0 if bus can be reset, negative if a bus reset is not supported.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMChjT{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_reset_bus (C function)c.pci_reset_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h(int pci_reset_bus (struct pci_dev *pdev)h]h)}(h'int pci_reset_bus(struct pci_dev *pdev)h](h)}(hinth]hint}(hj{hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj{hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMMubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{hhhj|hMMubj-)}(h pci_reset_bush]j3)}(h pci_reset_bush]h pci_reset_bus}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj{hhhj|hMMubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj6|hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj2|ubj)}(h h]h }(hjC|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2|ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjT|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQ|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjV|modnameN classnameNjj)}j]j)}jj|sbc.pci_reset_busasbuh1hhj2|ubj)}(h h]h }(hjt|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2|ubj3)}(hpdevh]hpdev}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2|ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj.|ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj{hhhj|hMMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj{hhhj|hMMubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1hhj|hMMhj{hhubj)}(hhh]j)}(hTry to reset a PCI bush]hTry to reset a PCI bus}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMMhj|hhubah}(h]h ]h"]h$]h&]uh1jhj{hhhj|hMMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|jj|jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` top level PCI device to reset via slot/bus **Description** Same as above except return -EAGAIN if the bus cannot be lockedh](j)}(h**Parameters**h]j&)}(hj|h]h Parameters}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj|ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMQhj|ubj<)}(hhh]jA)}(hD``struct pci_dev *pdev`` top level PCI device to reset via slot/bus h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj|h]hstruct pci_dev *pdev}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj|ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMNhj|ubjc)}(hhh]j)}(h*top level PCI device to reset via slot/bush]h*top level PCI device to reset via slot/bus}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}hMNhj}ubah}(h]h ]h"]h$]h&]uh1jbhj|ubeh}(h]h ]h"]h$]h&]uh1j@hj}hMNhj|ubah}(h]h ]h"]h$]h&]uh1j;hj|ubj)}(h**Description**h]j&)}(hj5}h]h Description}(hj7}hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj3}ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMPhj|ubj)}(h?Same as above except return -EAGAIN if the bus cannot be lockedh]h?Same as above except return -EAGAIN if the bus cannot be locked}(hjK}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMOhj|ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcix_get_max_mmrbc (C function)c.pcix_get_max_mmrbchNtauh1hhhhhhNhNubh)}(hhh](h)}(h,int pcix_get_max_mmrbc (struct pci_dev *dev)h]h)}(h+int pcix_get_max_mmrbc(struct pci_dev *dev)h](h)}(hinth]hint}(hjz}hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjv}hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMZubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjv}hhhj}hMZubj-)}(hpcix_get_max_mmrbch]j3)}(hpcix_get_max_mmrbch]hpcix_get_max_mmrbc}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjv}hhhj}hMZubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj}hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j)}jj}sbc.pcix_get_max_mmrbcasbuh1hhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj3)}(hdevh]hdev}(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj}ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjv}hhhj}hMZubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjr}hhhj}hMZubah}(h]jm}ah ](jjeh"]h$]h&]jj)jhuh1hhj}hMZhjo}hhubj)}(hhh]j)}(h1get PCI-X maximum designed memory read byte counth]h1get PCI-X maximum designed memory read byte count}(hj:~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMZhj7~hhubah}(h]h ]h"]h$]h&]uh1jhjo}hhhj}hMZubeh}(h]h ](jfunctioneh"]h$]h&]jjjjR~jjR~jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Returns mmrbc: maximum designed memory read count in bytes or appropriate error value.h](j)}(h**Parameters**h]j&)}(hj\~h]h Parameters}(hj^~hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZ~ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM^hjV~ubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hj{~h]hstruct pci_dev *dev}(hj}~hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjy~ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM[hju~ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~hM[hj~ubah}(h]h ]h"]h$]h&]uh1jbhju~ubeh}(h]h ]h"]h$]h&]uh1j@hj~hM[hjr~ubah}(h]h ]h"]h$]h&]uh1j;hjV~ubj)}(h**Description**h]j&)}(hj~h]h Description}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj~ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM]hjV~ubj)}(hVReturns mmrbc: maximum designed memory read count in bytes or appropriate error value.h]hVReturns mmrbc: maximum designed memory read count in bytes or appropriate error value.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM\hjV~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcix_get_mmrbc (C function)c.pcix_get_mmrbchNtauh1hhhhhhNhNubh)}(hhh](h)}(h(int pcix_get_mmrbc (struct pci_dev *dev)h]h)}(h'int pcix_get_mmrbc(struct pci_dev *dev)h](h)}(hinth]hint}(hj~hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj~hhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMqubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~hhhj hMqubj-)}(hpcix_get_mmrbch]j3)}(hpcix_get_mmrbch]hpcix_get_mmrbc}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj~hhhj hMqubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj8hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj4ubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjVhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]j)}jjsbc.pcix_get_mmrbcasbuh1hhj4ubj)}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj0ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj~hhhj hMqubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj~hhhj hMqubah}(h]j~ah ](jjeh"]h$]h&]jj)jhuh1hhj hMqhj~hhubj)}(hhh]j)}(h(get PCI-X maximum memory read byte counth]h(get PCI-X maximum memory read byte count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMqhjhhubah}(h]h ]h"]h$]h&]uh1jhj~hhhj hMqubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Returns mmrbc: maximum memory read count in bytes or appropriate error value.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMuhjubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMrhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMrhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMrhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj7h]h Description}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj5ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMthjubj)}(hMReturns mmrbc: maximum memory read count in bytes or appropriate error value.h]hMReturns mmrbc: maximum memory read count in bytes or appropriate error value.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMshjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcix_set_mmrbc (C function)c.pcix_set_mmrbchNtauh1hhhhhhNhNubh)}(hhh](h)}(h3int pcix_set_mmrbc (struct pci_dev *dev, int mmrbc)h]h)}(h2int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)h](h)}(hinth]hint}(hj|hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjxhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjxhhhjhMubj-)}(hpcix_set_mmrbch]j3)}(hpcix_set_mmrbch]hpcix_set_mmrbc}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjxhhhjhMubjN)}(h (struct pci_dev *dev, int mmrbc)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjƀhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj׀hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjԀubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjـmodnameN classnameNjj)}j]j)}jjsbc.pcix_set_mmrbcasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h int mmrbch](h)}(hinth]hint}(hj+hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj'ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'ubj3)}(hmmrbch]hmmrbc}(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjxhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjthhhjhMubah}(h]joah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjqhhubj)}(hhh]j)}(h(set PCI-X maximum memory read byte counth]h(set PCI-X maximum memory read byte count}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjnhhubah}(h]h ]h"]h$]h&]uh1jhjqhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX **Parameters** ``struct pci_dev *dev`` PCI device to query ``int mmrbc`` maximum memory read count in bytes valid values are 512, 1024, 2048, 4096 **Description** If possible sets maximum memory read byte count, some bridges have errata that prevent this.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjˁhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjǁhMhjȁubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjǁhMhjubjA)}(hX``int mmrbc`` maximum memory read count in bytes valid values are 512, 1024, 2048, 4096 h](jG)}(h ``int mmrbc``h]jM)}(hjh]h int mmrbc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hImaximum memory read count in bytes valid values are 512, 1024, 2048, 4096h]hImaximum memory read count in bytes valid values are 512, 1024, 2048, 4096}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj'h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj%ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h\If possible sets maximum memory read byte count, some bridges have errata that prevent this.h]h\If possible sets maximum memory read byte count, some bridges have errata that prevent this.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_get_readrq (C function)c.pcie_get_readrqhNtauh1hhhhhhNhNubh)}(hhh](h)}(h)int pcie_get_readrq (struct pci_dev *dev)h]h)}(h(int pcie_get_readrq(struct pci_dev *dev)h](h)}(hinth]hint}(hjlhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhhjzhMubj-)}(hpcie_get_readrqh]j3)}(hpcie_get_readrqh]hpcie_get_readrq}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhhjzhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjǂhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjĂubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjɂmodnameN classnameNjj)}j]j)}jjsbc.pcie_get_readrqasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhhjzhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjdhhhjzhMubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1hhjzhMhjahhubj)}(hhh]j)}(h!get PCI Express read request sizeh]h!get PCI Express read request size}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj)hhubah}(h]h ]h"]h$]h&]uh1jhjahhhjzhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjDjjDjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Returns maximum memory read request in bytes or appropriate error value.h](j)}(h**Parameters**h]j&)}(hjNh]h Parameters}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjLubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjHubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjmh]hstruct pci_dev *dev}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjkubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjgubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjgubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjdubah}(h]h ]h"]h$]h&]uh1j;hjHubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjHubj)}(hHReturns maximum memory read request in bytes or appropriate error value.h]hHReturns maximum memory read request in bytes or appropriate error value.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_set_readrq (C function)c.pcie_set_readrqhNtauh1hhhhhhNhNubh)}(hhh](h)}(h1int pcie_set_readrq (struct pci_dev *dev, int rq)h]h)}(h0int pcie_set_readrq(struct pci_dev *dev, int rq)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpcie_set_readrqh]j3)}(hpcie_set_readrqh]hpcie_set_readrq}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h(struct pci_dev *dev, int rq)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj*hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj&ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j)}jjsbc.pcie_set_readrqasbuh1hhj&ubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj"ubjT)}(hint rqh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hrqh]hrq}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj"ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h+set PCI Express maximum memory read requesth]h+set PCI Express maximum memory read request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj߄hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query ``int rq`` maximum memory read count in bytes valid values are 128, 256, 512, 1024, 2048, 4096 **Description** If possible sets maximum memory read request in bytesh](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hj#h]hstruct pci_dev *dev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj!ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8hMhj9ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj8hMhjubjA)}(h_``int rq`` maximum memory read count in bytes valid values are 128, 256, 512, 1024, 2048, 4096 h](jG)}(h ``int rq``h]jM)}(hj\h]hint rq}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjZubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjVubjc)}(hhh]j)}(hSmaximum memory read count in bytes valid values are 128, 256, 512, 1024, 2048, 4096h]hSmaximum memory read count in bytes valid values are 128, 256, 512, 1024, 2048, 4096}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjrubah}(h]h ]h"]h$]h&]uh1jbhjVubeh}(h]h ]h"]h$]h&]uh1j@hjqhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h5If possible sets maximum memory read request in bytesh]h5If possible sets maximum memory read request in bytes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_get_mps (C function)c.pcie_get_mpshNtauh1hhhhhhNhNubh)}(hhh](h)}(h&int pcie_get_mps (struct pci_dev *dev)h]h)}(h%int pcie_get_mps(struct pci_dev *dev)h](h)}(hinth]hint}(hj݅hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjمhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjمhhhjhMubj-)}(h pcie_get_mpsh]j3)}(h pcie_get_mpsh]h pcie_get_mps}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjمhhhjhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj8hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j)}jjsbc.pcie_get_mpsasbuh1hhjubj)}(h h]h }(hjXhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjshhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjمhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjՅhhhjhMubah}(h]jЅah ](jjeh"]h$]h&]jj)jhuh1hhjhMhj҅hhubj)}(hhh]j)}(h$get PCI Express maximum payload sizeh]h$get PCI Express maximum payload size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj҅hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hu**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Returns maximum payload size in bytesh](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjކh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj܆ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhj؆ubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhj؆ubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjՆubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h%Returns maximum payload size in bytesh]h%Returns maximum payload size in bytes}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_set_mps (C function)c.pcie_set_mpshNtauh1hhhhhhNhNubh)}(hhh](h)}(h/int pcie_set_mps (struct pci_dev *dev, int mps)h]h)}(h.int pcie_set_mps(struct pci_dev *dev, int mps)h](h)}(hinth]hint}(hj^hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjZhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjZhhhjlhM ubj-)}(h pcie_set_mpsh]j3)}(h pcie_set_mpsh]h pcie_set_mps}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjZhhhjlhM ubjN)}(h(struct pci_dev *dev, int mps)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pcie_set_mpsasbuh1hhjubj)}(h h]h }(hjهhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint mpsh](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hmpsh]hmps}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjZhhhjlhM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjVhhhjlhM ubah}(h]jQah ](jjeh"]h$]h&]jj)jhuh1hhjlhM hjShhubj)}(hhh]j)}(h$set PCI Express maximum payload sizeh]h$set PCI Express maximum payload size}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjPhhubah}(h]h ]h"]h$]h&]uh1jhjShhhjlhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjkjjkjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query ``int mps`` maximum payload size in bytes valid values are 128, 256, 512, 1024, 2048, 4096 **Description** If possible sets maximum payload sizeh](j)}(h**Parameters**h]j&)}(hjuh]h Parameters}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjsubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjoubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM hjubjA)}(h[``int mps`` maximum payload size in bytes valid values are 128, 256, 512, 1024, 2048, 4096 h](jG)}(h ``int mps``h]jM)}(hj͈h]hint mps}(hjψhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjˈubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjLjubjc)}(hhh]j)}(hNmaximum payload size in bytes valid values are 128, 256, 512, 1024, 2048, 4096h]hNmaximum payload size in bytes valid values are 128, 256, 512, 1024, 2048, 4096}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjubah}(h]h ]h"]h$]h&]uh1jbhjLjubeh}(h]h ]h"]h$]h&]uh1j@hjhM hjubeh}(h]h ]h"]h$]h&]uh1j;hjoubj)}(h**Description**h]j&)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjoubj)}(h%If possible sets maximum payload sizeh]h%If possible sets maximum payload size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjoubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pcie_bandwidth_available (C function)c.pcie_bandwidth_availablehNtauh1hhhhhhNhNubh)}(hhh](h)}(hu32 pcie_bandwidth_available (struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width)h]h)}(hu32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width)h](h)}(hhh]j3)}(hu32h]hu32}(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]j)}jpcie_bandwidth_availablesbc.pcie_bandwidth_availableasbuh1hhjJhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM7ubj)}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJhhhjrhM7ubj-)}(hpcie_bandwidth_availableh]j3)}(hjoh]hpcie_bandwidth_available}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjJhhhjrhM7ubjN)}(hl(struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jmc.pcie_bandwidth_availableasbuh1hhjubj)}(h h]h }(hj܉hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hstruct pci_dev **limiting_devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]jmc.pcie_bandwidth_availableasbuh1hhj ubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjghhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(h limiting_devh]h limiting_dev}(hjthhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(henum pci_bus_speed *speedh](jZ)}(hj2h]henum}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(h pci_bus_speedh]h pci_bus_speed}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jmc.pcie_bandwidth_availableasbuh1hhjubj)}(h h]h }(hjɊhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj׊hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hspeedh]hspeed}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(henum pcie_link_width *widthh](jZ)}(hj2h]henum}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpcie_link_widthh]hpcie_link_width}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jmc.pcie_bandwidth_availableasbuh1hhjubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hwidthh]hwidth}(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjJhhhjrhM7ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjFhhhjrhM7ubah}(h]jAah ](jjeh"]h$]h&]jj)jhuh1hhjrhM7hjChhubj)}(hhh]j)}(hMdetermine minimum link settings of a PCIe device and its bandwidth limitationh]hMdetermine minimum link settings of a PCIe device and its bandwidth limitation}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM7hj{hhubah}(h]h ]h"]h$]h&]uh1jhjChhhjrhM7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX^**Parameters** ``struct pci_dev *dev`` PCI device to query ``struct pci_dev **limiting_dev`` storage for device causing the bandwidth limitation ``enum pci_bus_speed *speed`` storage for speed of limiting device ``enum pcie_link_width *width`` storage for width of limiting device **Description** Walk up the PCI device chain and find the point where the minimum bandwidth is available. Return the bandwidth available there and (if limiting_dev, speed, and width pointers are supplied) information about that point. The bandwidth returned is in Mb/s, i.e., megabits/second of raw bandwidth.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM;hjubj<)}(hhh](jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM9hjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj؋hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjԋhM9hjՋubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjԋhM9hjubjA)}(hV``struct pci_dev **limiting_dev`` storage for device causing the bandwidth limitation h](jG)}(h!``struct pci_dev **limiting_dev``h]jM)}(hjh]hstruct pci_dev **limiting_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM:hjubjc)}(hhh]j)}(h3storage for device causing the bandwidth limitationh]h3storage for device causing the bandwidth limitation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hM:hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hM:hjubjA)}(hC``enum pci_bus_speed *speed`` storage for speed of limiting device h](jG)}(h``enum pci_bus_speed *speed``h]jM)}(hj1h]henum pci_bus_speed *speed}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj/ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM;hj+ubjc)}(hhh]j)}(h$storage for speed of limiting deviceh]h$storage for speed of limiting device}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFhM;hjGubah}(h]h ]h"]h$]h&]uh1jbhj+ubeh}(h]h ]h"]h$]h&]uh1j@hjFhM;hjubjA)}(hE``enum pcie_link_width *width`` storage for width of limiting device h](jG)}(h``enum pcie_link_width *width``h]jM)}(hjjh]henum pcie_link_width *width}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjhubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM<hjdubjc)}(hhh]j)}(h$storage for width of limiting deviceh]h$storage for width of limiting device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM<hjubah}(h]h ]h"]h$]h&]uh1jbhjdubeh}(h]h ]h"]h$]h&]uh1j@hjhM<hjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM>hjubj)}(hX'Walk up the PCI device chain and find the point where the minimum bandwidth is available. Return the bandwidth available there and (if limiting_dev, speed, and width pointers are supplied) information about that point. The bandwidth returned is in Mb/s, i.e., megabits/second of raw bandwidth.h]hX'Walk up the PCI device chain and find the point where the minimum bandwidth is available. Return the bandwidth available there and (if limiting_dev, speed, and width pointers are supplied) information about that point. The bandwidth returned is in Mb/s, i.e., megabits/second of raw bandwidth.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM=hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_get_speed_cap (C function)c.pcie_get_speed_caphNtauh1hhhhhhNhNubh)}(hhh](h)}(h;enum pci_bus_speed pcie_get_speed_cap (struct pci_dev *dev)h]h)}(h:enum pci_bus_speed pcie_get_speed_cap(struct pci_dev *dev)h](jZ)}(hj2h]henum}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubh)}(hhh]j3)}(h pci_bus_speedh]h pci_bus_speed}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jpcie_get_speed_capsbc.pcie_get_speed_capasbuh1hhjhhhjhMubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpcie_get_speed_caph]j3)}(hj'h]hpcie_get_speed_cap}(hj<hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjWhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjSubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]j%c.pcie_get_speed_capasbuh1hhjSubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjOubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]j݌ah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjߌhhubj)}(hhh]j)}(h0query for the PCI device's link speed capabilityh]h2query for the PCI device’s link speed capability}(hj؍hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjՍhhubah}(h]h ]h"]h$]h&]uh1jhjߌhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Query the PCI device speed capability. **Return** the maximum link speed supported by the device.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.hMhj/ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj.hMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjTh]h Description}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjRubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h&Query the PCI device speed capability.h]h&Query the PCI device speed capability.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h **Return**h]j&)}(hj{h]hReturn}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjyubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h/the maximum link speed supported by the device.h]h/the maximum link speed supported by the device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_get_width_cap (C function)c.pcie_get_width_caphNtauh1hhhhhhNhNubh)}(hhh](h)}(h=enum pcie_link_width pcie_get_width_cap (struct pci_dev *dev)h]h)}(hint pci_select_bars (struct pci_dev *dev, unsigned long flags)h]h)}(h=int pci_select_bars(struct pci_dev *dev, unsigned long flags)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM ubj-)}(hpci_select_barsh]j3)}(hpci_select_barsh]hpci_select_bars}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM ubjN)}(h*(struct pci_dev *dev, unsigned long flags)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj-hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj)ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]j)}jjsbc.pci_select_barsasbuh1hhj)ubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)ubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj%ubjT)}(hunsigned long flagsh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjɒhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hflagsh]hflags}(hjגhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj%ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM hjhhubj)}(hhh]j)}(h'Make BAR mask from the type of resourceh]h'Make BAR mask from the type of resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device for which BAR mask is made ``unsigned long flags`` resource type mask to be selected **Description** This helper routine makes bar mask from the type of resource.h](j)}(h**Parameters**h]j&)}(hj#h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!ubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj<)}(hhh](jA)}(hB``struct pci_dev *dev`` the PCI device for which BAR mask is made h](jG)}(h``struct pci_dev *dev``h]jM)}(hjBh]hstruct pci_dev *dev}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj@ubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hj<ubjc)}(hhh]j)}(h)the PCI device for which BAR mask is madeh]h)the PCI device for which BAR mask is made}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWhM hjXubah}(h]h ]h"]h$]h&]uh1jbhj<ubeh}(h]h ]h"]h$]h&]uh1j@hjWhM hj9ubjA)}(h:``unsigned long flags`` resource type mask to be selected h](jG)}(h``unsigned long flags``h]jM)}(hj{h]hunsigned long flags}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjyubah}(h]h ]h"]h$]h&]uh1jFhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chM hjuubjc)}(hhh]j)}(h!resource type mask to be selectedh]h!resource type mask to be selected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM hjubah}(h]h ]h"]h$]h&]uh1jbhjuubeh}(h]h ]h"]h$]h&]uh1j@hjhM hj9ubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubj)}(h=This helper routine makes bar mask from the type of resource.h]h=This helper routine makes bar mask from the type of resource.}(hj̓hhhNhNubah}(h]h ]h"]h$]h&]uh1jhS/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:4: ./drivers/pci/pci.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،(pci_bus_find_emul_domain_nr (C function)c.pci_bus_find_emul_domain_nrhNtauh1hhhhhhNhNubh)}(hhh](h)}(hhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long offseth](h)}(hunsignedh]hunsigned}(hjWhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjSubj)}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubh)}(hlongh]hlong}(hjshhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjSubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubj3)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long maxlenh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjėhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjҗhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hmaxlenh]hmaxlen}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjPhhhjbhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjLhhhjbhKubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1hhjbhKhjIhhubj)}(hhh]j)}(h-create a virtual mapping cookie for a PCI BARh]h-create a virtual mapping cookie for a PCI BAR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjbhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"jj"jjjuh1hhhhhhNhNubj)}(hXx**Parameters** ``struct pci_dev *dev`` PCI device that owns the BAR ``int bar`` BAR number ``unsigned long offset`` map memory at the given offset in BAR ``unsigned long maxlen`` max length of the memory to map **Description** Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. **maxlen** specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass ``0`` here.h](j)}(h**Parameters**h]j&)}(hj,h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj*ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj&ubj<)}(hhh](jA)}(h5``struct pci_dev *dev`` PCI device that owns the BAR h](jG)}(h``struct pci_dev *dev``h]jM)}(hjKh]hstruct pci_dev *dev}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjEubjc)}(hhh]j)}(hPCI device that owns the BARh]hPCI device that owns the BAR}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`hKhjaubah}(h]h ]h"]h$]h&]uh1jbhjEubeh}(h]h ]h"]h$]h&]uh1j@hj`hKhjBubjA)}(h``int bar`` BAR number h](jG)}(h ``int bar``h]jM)}(hjh]hint bar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj~ubjc)}(hhh]j)}(h BAR numberh]h BAR number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhj~ubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjBubjA)}(h?``unsigned long offset`` map memory at the given offset in BAR h](jG)}(h``unsigned long offset``h]jM)}(hjh]hunsigned long offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjubjc)}(hhh]j)}(h%map memory at the given offset in BARh]h%map memory at the given offset in BAR}(hj֘hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjҘhKhjӘubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjҘhKhjBubjA)}(h9``unsigned long maxlen`` max length of the memory to map h](jG)}(h``unsigned long maxlen``h]jM)}(hjh]hunsigned long maxlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjubjc)}(hhh]j)}(hmax length of the memory to maph]hmax length of the memory to map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hKhjBubeh}(h]h ]h"]h$]h&]uh1j;hj&ubj)}(h**Description**h]j&)}(hj1h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj&ubj)}(hUsing this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way.h]hUsing this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj&ubj)}(h**maxlen** specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass ``0`` here.h](j&)}(h **maxlen**h]hmaxlen}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjVubhq specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass }(hjVhhhNhNubjM)}(h``0``h]h0}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubh here.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_iomap_wc_range (C function)c.pci_iomap_wc_rangehNtauh1hhhhhhNhNubh)}(hhh](h)}(hlvoid __iomem * pci_iomap_wc_range (struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen)h]h)}(hjvoid __iomem *pci_iomap_wc_range(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chK=ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK=ubh__iomem}(hjhhhNhNubj)}(h h]h }(hjƙhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK=ubj)}(hjh]h*}(hjԙhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK=ubj-)}(hpci_iomap_wc_rangeh]j3)}(hpci_iomap_wc_rangeh]hpci_iomap_wc_range}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhK=ubjN)}(hJ(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jjsbc.pci_iomap_wc_rangeasbuh1hhjubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint barh](h)}(hinth]hint}(hjshhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjoubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjoubj3)}(hbarh]hbar}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjoubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long offseth](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjĚhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjҚhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long maxlenh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hmaxlenh]hmaxlen}(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhK=ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhK=ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhK=hjhhubj)}(hhh]j)}(h0create a virtual WC mapping cookie for a PCI BARh]h0create a virtual WC mapping cookie for a PCI BAR}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chK=hjXhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK=ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjsjjsjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device that owns the BAR ``int bar`` BAR number ``unsigned long offset`` map memory at the given offset in BAR ``unsigned long maxlen`` max length of the memory to map **Description** Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used. **maxlen** specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass ``0`` here.h](j)}(h**Parameters**h]j&)}(hj}h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKAhjwubj<)}(hhh](jA)}(h5``struct pci_dev *dev`` PCI device that owns the BAR h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chK>hjubjc)}(hhh]j)}(hPCI device that owns the BARh]hPCI device that owns the BAR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK>hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK>hjubjA)}(h``int bar`` BAR number h](jG)}(h ``int bar``h]jM)}(hj՛h]hint bar}(hjכhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjӛubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chK?hjϛubjc)}(hhh]j)}(h BAR numberh]h BAR number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK?hjubah}(h]h ]h"]h$]h&]uh1jbhjϛubeh}(h]h ]h"]h$]h&]uh1j@hjhK?hjubjA)}(h?``unsigned long offset`` map memory at the given offset in BAR h](jG)}(h``unsigned long offset``h]jM)}(hjh]hunsigned long offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chK@hjubjc)}(hhh]j)}(h%map memory at the given offset in BARh]h%map memory at the given offset in BAR}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#hK@hj$ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj#hK@hjubjA)}(h9``unsigned long maxlen`` max length of the memory to map h](jG)}(h``unsigned long maxlen``h]jM)}(hjGh]hunsigned long maxlen}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjEubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKAhjAubjc)}(hhh]j)}(hmax length of the memory to maph]hmax length of the memory to map}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\hKAhj]ubah}(h]h ]h"]h$]h&]uh1jbhjAubeh}(h]h ]h"]h$]h&]uh1j@hj\hKAhjubeh}(h]h ]h"]h$]h&]uh1j;hjwubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKChjwubj)}(hX&Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used.h]hX&Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKBhjwubj)}(h**maxlen** specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass ``0`` here.h](j&)}(h **maxlen**h]hmaxlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubhq specifies the maximum length to map. If you want to get access to the complete BAR from offset to the end, pass }(hjhhhNhNubjM)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh here.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKHhjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_iomap (C function) c.pci_iomaphNtauh1hhhhhhNhNubh)}(hhh](h)}(hMvoid __iomem * pci_iomap (struct pci_dev *dev, int bar, unsigned long maxlen)h]h)}(hKvoid __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKnubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKnubh__iomem}(hjhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKnubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKnubj-)}(h pci_iomaph]j3)}(h pci_iomaph]h pci_iomap}(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKnubjN)}(h4(struct pci_dev *dev, int bar, unsigned long maxlen)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjRhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjNubj)}(h h]h }(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNjj)}j]j)}jj8sb c.pci_iomapasbuh1hhjNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjNubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjJubjT)}(hint barh](h)}(hinth]hint}(hjĝhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjҝhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hbarh]hbar}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjJubjT)}(hunsigned long maxlenh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hmaxlenh]hmaxlen}(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjJubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKnubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKnubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKnhjhhubj)}(hhh]j)}(h-create a virtual mapping cookie for a PCI BARh]h-create a virtual mapping cookie for a PCI BAR}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKnhjXhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKnubeh}(h]h ](jfunctioneh"]h$]h&]jjjjsjjsjjjuh1hhhhhhNhNubj)}(hXA**Parameters** ``struct pci_dev *dev`` PCI device that owns the BAR ``int bar`` BAR number ``unsigned long maxlen`` length of the memory to map **Description** Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. **maxlen** specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass ``0`` here.h](j)}(h**Parameters**h]j&)}(hj}h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKrhjwubj<)}(hhh](jA)}(h5``struct pci_dev *dev`` PCI device that owns the BAR h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKohjubjc)}(hhh]j)}(hPCI device that owns the BARh]hPCI device that owns the BAR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKohjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKohjubjA)}(h``int bar`` BAR number h](jG)}(h ``int bar``h]jM)}(hj՞h]hint bar}(hjמhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjӞubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKphjϞubjc)}(hhh]j)}(h BAR numberh]h BAR number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKphjubah}(h]h ]h"]h$]h&]uh1jbhjϞubeh}(h]h ]h"]h$]h&]uh1j@hjhKphjubjA)}(h5``unsigned long maxlen`` length of the memory to map h](jG)}(h``unsigned long maxlen``h]jM)}(hjh]hunsigned long maxlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKqhjubjc)}(hhh]j)}(hlength of the memory to maph]hlength of the memory to map}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#hKqhj$ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj#hKqhjubeh}(h]h ]h"]h$]h&]uh1j;hjwubj)}(h**Description**h]j&)}(hjIh]h Description}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjGubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKshjwubj)}(hUsing this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way.h]hUsing this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKrhjwubj)}(h**maxlen** specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass ``0`` here.h](j&)}(h **maxlen**h]hmaxlen}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjnubh specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass }(hjnhhhNhNubjM)}(h``0``h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjnubh here.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKwhjwubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_iomap_wc (C function)c.pci_iomap_wchNtauh1hhhhhhNhNubh)}(hhh](h)}(hPvoid __iomem * pci_iomap_wc (struct pci_dev *dev, int bar, unsigned long maxlen)h]h)}(hNvoid __iomem *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long maxlen)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKubj)}(h h]h }(hj̟hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj˟hKubh__iomem}(hjhhhNhNubj)}(h h]h }(hjޟhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj˟hKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj˟hKubj-)}(h pci_iomap_wch]j3)}(h pci_iomap_wch]h pci_iomap_wc}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj˟hKubjN)}(h4(struct pci_dev *dev, int bar, unsigned long maxlen)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]j)}jjsbc.pci_iomap_wcasbuh1hhjubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint barh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hbarh]hbar}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long maxlenh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjΠhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjܠhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hmaxlenh]hmaxlen}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj˟hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj˟hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj˟hKhjhhubj)}(hhh]j)}(h0create a virtual WC mapping cookie for a PCI BARh]h0create a virtual WC mapping cookie for a PCI BAR}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj˟hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj:jj:jjjuh1hhhhhhNhNubj)}(hXh**Parameters** ``struct pci_dev *dev`` PCI device that owns the BAR ``int bar`` BAR number ``unsigned long maxlen`` length of the memory to map **Description** Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used. **maxlen** specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass ``0`` here.h](j)}(h**Parameters**h]j&)}(hjDh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjBubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj>ubj<)}(hhh](jA)}(h5``struct pci_dev *dev`` PCI device that owns the BAR h](jG)}(h``struct pci_dev *dev``h]jM)}(hjch]hstruct pci_dev *dev}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjaubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj]ubjc)}(hhh]j)}(hPCI device that owns the BARh]hPCI device that owns the BAR}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxhKhjyubah}(h]h ]h"]h$]h&]uh1jbhj]ubeh}(h]h ]h"]h$]h&]uh1j@hjxhKhjZubjA)}(h``int bar`` BAR number h](jG)}(h ``int bar``h]jM)}(hjh]hint bar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjubjc)}(hhh]j)}(h BAR numberh]h BAR number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjZubjA)}(h5``unsigned long maxlen`` length of the memory to map h](jG)}(h``unsigned long maxlen``h]jM)}(hjաh]hunsigned long maxlen}(hjסhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjӡubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhjϡubjc)}(hhh]j)}(hlength of the memory to maph]hlength of the memory to map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjϡubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjZubeh}(h]h ]h"]h$]h&]uh1j;hj>ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj>ubj)}(hX&Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used.h]hX&Using this function you will get a __iomem address to your device BAR. You can access it using ioread*() and iowrite*(). These functions hide the details if this is a MMIO or PIO address space and will just do what you expect from them in the correct way. When possible write combining is used.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj>ubj)}(h**maxlen** specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass ``0`` here.h](j&)}(h **maxlen**h]hmaxlen}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj5ubh specifies the maximum length to map. If you want to get access to the complete BAR without checking for its length first, pass }(hj5hhhNhNubjM)}(h``0``h]h0}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj5ubh here.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:7: ./drivers/pci/iomap.chKhj>ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#devm_pci_remap_iospace (C function)c.devm_pci_remap_iospacehNtauh1hhhhhhNhNubh)}(hhh](h)}(hbint devm_pci_remap_iospace (struct device *dev, const struct resource *res, phys_addr_t phys_addr)h]h)}(haint devm_pci_remap_iospace(struct device *dev, const struct resource *res, phys_addr_t phys_addr)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj-)}(hdevm_pci_remap_iospaceh]j3)}(hdevm_pci_remap_iospaceh]hdevm_pci_remap_iospace}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(hG(struct device *dev, const struct resource *res, phys_addr_t phys_addr)h](jT)}(hstruct device *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj΢hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hdeviceh]hdevice}(hjߢhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjܢubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.devm_pci_remap_iospaceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hconst struct resource *resh](jZ)}(hjh]hconst}(hj3hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj/ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj/ubjZ)}(hj]h]hstruct}(hjNhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj/ubj)}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj/ubh)}(hhh]j3)}(hresourceh]hresource}(hjlhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjnmodnameN classnameNjj)}j]jc.devm_pci_remap_iospaceasbuh1hhj/ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj/ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj3)}(hresh]hres}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj/ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hphys_addr_t phys_addrh](h)}(hhh]j3)}(h phys_addr_th]h phys_addr_t}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjãmodnameN classnameNjj)}j]jc.devm_pci_remap_iospaceasbuh1hhjubj)}(h h]h }(hjߣhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(h phys_addrh]h phys_addr}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj|hhhjhKubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjyhhubj)}(hhh]j)}(hManaged pci_remap_iospace()h]hManaged pci_remap_iospace()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjyhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1hhhhhhNhNubj)}(hX7**Parameters** ``struct device *dev`` Generic device to remap IO address for ``const struct resource *res`` Resource describing the I/O space ``phys_addr_t phys_addr`` physical address of range to be mapped **Description** Managed pci_remap_iospace(). Map is automatically unmapped on driver detach.h](j)}(h**Parameters**h]j&)}(hj9h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj7ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhj3ubj<)}(hhh](jA)}(h>``struct device *dev`` Generic device to remap IO address for h](jG)}(h``struct device *dev``h]jM)}(hjXh]hstruct device *dev}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjRubjc)}(hhh]j)}(h&Generic device to remap IO address forh]h&Generic device to remap IO address for}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmhKhjnubah}(h]h ]h"]h$]h&]uh1jbhjRubeh}(h]h ]h"]h$]h&]uh1j@hjmhKhjOubjA)}(hA``const struct resource *res`` Resource describing the I/O space h](jG)}(h``const struct resource *res``h]jM)}(hjh]hconst struct resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjubjc)}(hhh]j)}(h!Resource describing the I/O spaceh]h!Resource describing the I/O space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjOubjA)}(hA``phys_addr_t phys_addr`` physical address of range to be mapped h](jG)}(h``phys_addr_t phys_addr``h]jM)}(hjʤh]hphys_addr_t phys_addr}(hj̤hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjȤubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjĤubjc)}(hhh]j)}(h&physical address of range to be mappedh]h&physical address of range to be mapped}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjߤhKhjubah}(h]h ]h"]h$]h&]uh1jbhjĤubeh}(h]h ]h"]h$]h&]uh1j@hjߤhKhjOubeh}(h]h ]h"]h$]h&]uh1j;hj3ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhj3ubj)}(hMManaged pci_remap_iospace(). Map is automatically unmapped on driver detach.h]hMManaged pci_remap_iospace(). Map is automatically unmapped on driver detach.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$devm_pci_remap_cfgspace (C function)c.devm_pci_remap_cfgspacehNtauh1hhhhhhNhNubh)}(hhh](h)}(hivoid __iomem * devm_pci_remap_cfgspace (struct device *dev, resource_size_t offset, resource_size_t size)h]h)}(hgvoid __iomem *devm_pci_remap_cfgspace(struct device *dev, resource_size_t offset, resource_size_t size)h](h)}(hvoidh]hvoid}(hjJhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjFhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjFhhhjXhKubh__iomem}(hjFhhhNhNubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjFhhhjXhKubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhjXhKubj-)}(hdevm_pci_remap_cfgspaceh]j3)}(hdevm_pci_remap_cfgspaceh]hdevm_pci_remap_cfgspace}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjFhhhjXhKubjN)}(hB(struct device *dev, resource_size_t offset, resource_size_t size)h](jT)}(hstruct device *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hdeviceh]hdevice}(hjĥhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjƥmodnameN classnameNjj)}j]j)}jjsbc.devm_pci_remap_cfgspaceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hresource_size_t offseth](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.devm_pci_remap_cfgspaceasbuh1hhjubj)}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hoffseth]hoffset}(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hresource_size_t sizeh](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]jc.devm_pci_remap_cfgspaceasbuh1hhj\ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\ubj3)}(hsizeh]hsize}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjFhhhjXhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjBhhhjXhKubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1hhjXhKhj?hhubj)}(hhh]j)}(hManaged pci_remap_cfgspace()h]hManaged pci_remap_cfgspace()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhj?hhhjXhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjѦjjѦjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct device *dev`` Generic device to remap IO address for ``resource_size_t offset`` Resource address to map ``resource_size_t size`` Size of map **Description** Managed pci_remap_cfgspace(). Map is automatically unmapped on driver detach.h](j)}(h**Parameters**h]j&)}(hjۦh]h Parameters}(hjݦhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj٦ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjզubj<)}(hhh](jA)}(h>``struct device *dev`` Generic device to remap IO address for h](jG)}(h``struct device *dev``h]jM)}(hjh]hstruct device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjubjc)}(hhh]j)}(h&Generic device to remap IO address forh]h&Generic device to remap IO address for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubjA)}(h3``resource_size_t offset`` Resource address to map h](jG)}(h``resource_size_t offset``h]jM)}(hj3h]hresource_size_t offset}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj1ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhj-ubjc)}(hhh]j)}(hResource address to maph]hResource address to map}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHhKhjIubah}(h]h ]h"]h$]h&]uh1jbhj-ubeh}(h]h ]h"]h$]h&]uh1j@hjHhKhjubjA)}(h%``resource_size_t size`` Size of map h](jG)}(h``resource_size_t size``h]jM)}(hjlh]hresource_size_t size}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjfubjc)}(hhh]j)}(h Size of maph]h Size of map}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjfubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubeh}(h]h ]h"]h$]h&]uh1j;hjզubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjզubj)}(hNManaged pci_remap_cfgspace(). Map is automatically unmapped on driver detach.h]hNManaged pci_remap_cfgspace(). Map is automatically unmapped on driver detach.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjզubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،(devm_pci_remap_cfg_resource (C function)c.devm_pci_remap_cfg_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(hUvoid __iomem * devm_pci_remap_cfg_resource (struct device *dev, struct resource *res)h]h)}(hSvoid __iomem *devm_pci_remap_cfg_resource(struct device *dev, struct resource *res)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubh__iomem}(hjhhhNhNubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj-)}(hdevm_pci_remap_cfg_resourceh]j3)}(hdevm_pci_remap_cfg_resourceh]hdevm_pci_remap_cfg_resource}(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj(ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h*(struct device *dev, struct resource *res)h](jT)}(hstruct device *devh](jZ)}(hj]h]hstruct}(hjHhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjDubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubh)}(hhh]j3)}(hdeviceh]hdevice}(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjcubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjhmodnameN classnameNjj)}j]j)}jj.sbc.devm_pci_remap_cfg_resourceasbuh1hhjDubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjDubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj@ubjT)}(hstruct resource *resh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjǨhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hresourceh]hresource}(hjبhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjըubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjڨmodnameN classnameNjj)}j]jc.devm_pci_remap_cfg_resourceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hresh]hres}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj@ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jߧah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h.check, request region and ioremap cfg resourceh]h.check, request region and ioremap cfg resource}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhj8hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjSjjSjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct device *dev`` generic device to handle the resource for ``struct resource *res`` configuration space resource to be handled **Description** Checks that a resource is a valid memory region, requests the memory region and ioremaps with pci_remap_cfgspace() API that ensures the proper PCI configuration space memory attributes are guaranteed. All operations are managed and will be undone on driver detach. Returns a pointer to the remapped memory or an IOMEM_ERR_PTR() encoded error code on failure. Usage example:: res = platform_get_resource(pdev, IORESOURCE_MEM, 0); base = devm_pci_remap_cfg_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base);h](j)}(h**Parameters**h]j&)}(hj]h]h Parameters}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj[ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubj<)}(hhh](jA)}(hA``struct device *dev`` generic device to handle the resource for h](jG)}(h``struct device *dev``h]jM)}(hj|h]hstruct device *dev}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjzubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjvubjc)}(hhh]j)}(h)generic device to handle the resource forh]h)generic device to handle the resource for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjvubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjsubjA)}(hD``struct resource *res`` configuration space resource to be handled h](jG)}(h``struct resource *res``h]jM)}(hjh]hstruct resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjubjc)}(hhh]j)}(h*configuration space resource to be handledh]h*configuration space resource to be handled}(hjΩhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjʩhKhj˩ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjʩhKhjsubeh}(h]h ]h"]h$]h&]uh1j;hjWubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubj)}(hChecks that a resource is a valid memory region, requests the memory region and ioremaps with pci_remap_cfgspace() API that ensures the proper PCI configuration space memory attributes are guaranteed.h]hChecks that a resource is a valid memory region, requests the memory region and ioremaps with pci_remap_cfgspace() API that ensures the proper PCI configuration space memory attributes are guaranteed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubj)}(h?All operations are managed and will be undone on driver detach.h]h?All operations are managed and will be undone on driver detach.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubj)}(hmReturns a pointer to the remapped memory or an IOMEM_ERR_PTR() encoded error code on failure. Usage example::h]hlReturns a pointer to the remapped memory or an IOMEM_ERR_PTR() encoded error code on failure. Usage example:}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubh literal_block)}(hres = platform_get_resource(pdev, IORESOURCE_MEM, 0); base = devm_pci_remap_cfg_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base);h]hres = platform_get_resource(pdev, IORESOURCE_MEM, 0); base = devm_pci_remap_cfg_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base);}hj5sbah}(h]h ]h"]h$]h&]jKjLuh1j3hW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chKhjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_set_mwi (C function)c.pcim_set_mwihNtauh1hhhhhhNhNubh)}(hhh](h)}(h'int pcim_set_mwi (struct pci_dev *pdev)h]h)}(h&int pcim_set_mwi(struct pci_dev *pdev)h](h)}(hinth]hint}(hjdhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj`hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`hhhjrhMubj-)}(h pcim_set_mwih]j3)}(h pcim_set_mwih]h pcim_set_mwi}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj`hhhjrhMubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pcim_set_mwiasbuh1hhjubj)}(h h]h }(hjߪhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhj`hhhjrhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj\hhhjrhMubah}(h]jWah ](jjeh"]h$]h&]jj)jhuh1hhjrhMhjYhhubj)}(hhh]j)}(ha device-managed pci_set_mwi()h]ha device-managed pci_set_mwi()}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj!hhubah}(h]h ]h"]h$]h&]uh1jhjYhhhjrhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj<jj<jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` the PCI device for which MWI is enabled **Description** Managed pci_set_mwi(). **Return** An appropriate -ERRNO error value on error, or zero for success.h](j)}(h**Parameters**h]j&)}(hjFh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjDubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj@ubj<)}(hhh]jA)}(hA``struct pci_dev *pdev`` the PCI device for which MWI is enabled h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjeh]hstruct pci_dev *pdev}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjcubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj_ubjc)}(hhh]j)}(h'the PCI device for which MWI is enabledh]h'the PCI device for which MWI is enabled}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzhMhj{ubah}(h]h ]h"]h$]h&]uh1jbhj_ubeh}(h]h ]h"]h$]h&]uh1j@hjzhMhj\ubah}(h]h ]h"]h$]h&]uh1j;hj@ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj@ubj)}(hManaged pci_set_mwi().h]hManaged pci_set_mwi().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj@ubj)}(h **Return**h]j&)}(hjǫh]hReturn}(hjɫhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjūubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj@ubj)}(h@An appropriate -ERRNO error value on error, or zero for success.h]h@An appropriate -ERRNO error value on error, or zero for success.}(hjݫhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_intx (C function) c.pcim_intxhNtauh1hhhhhhNhNubh)}(hhh](h)}(h0int pcim_intx (struct pci_dev *pdev, int enable)h]h)}(h/int pcim_intx(struct pci_dev *pdev, int enable)h](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM<ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM<ubj-)}(h pcim_intxh]j3)}(h pcim_intxh]h pcim_intx}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM<ubjN)}(h"(struct pci_dev *pdev, int enable)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjIhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjEubj)}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjghhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]j)}jj/sb c.pcim_intxasbuh1hhjEubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj3)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAubjT)}(h int enableh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjɬhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(henableh]henable}(hj׬hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM<ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM<ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM<hjhhubj)}(hhh]j)}(hmanaged pci_intx()h]hmanaged pci_intx()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM<hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM<ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX!**Parameters** ``struct pci_dev *pdev`` the PCI device to operate on ``int enable`` boolean: whether to enable or disable PCI INTx **Return** 0 on success, -ENOMEM on error. **Description** Enable/disable PCI INTx for device **pdev**. Restore the original state on driver detach.h](j)}(h**Parameters**h]j&)}(hj#h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM@hjubj<)}(hhh](jA)}(h6``struct pci_dev *pdev`` the PCI device to operate on h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjBh]hstruct pci_dev *pdev}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj@ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM=hj<ubjc)}(hhh]j)}(hthe PCI device to operate onh]hthe PCI device to operate on}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWhM=hjXubah}(h]h ]h"]h$]h&]uh1jbhj<ubeh}(h]h ]h"]h$]h&]uh1j@hjWhM=hj9ubjA)}(h>``int enable`` boolean: whether to enable or disable PCI INTx h](jG)}(h``int enable``h]jM)}(hj{h]h int enable}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjyubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM>hjuubjc)}(hhh]j)}(h.boolean: whether to enable or disable PCI INTxh]h.boolean: whether to enable or disable PCI INTx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM>hjubah}(h]h ]h"]h$]h&]uh1jbhjuubeh}(h]h ]h"]h$]h&]uh1j@hjhM>hj9ubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM@hjubj)}(h0 on success, -ENOMEM on error.h]h0 on success, -ENOMEM on error.}(hj̭hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM@hjubj)}(h**Description**h]j&)}(hjݭh]h Description}(hj߭hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjۭubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMBhjubj)}(hYEnable/disable PCI INTx for device **pdev**. Restore the original state on driver detach.h](h#Enable/disable PCI INTx for device }(hjhhhNhNubj&)}(h**pdev**h]hpdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh.. Restore the original state on driver detach.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMAhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_enable_device (C function)c.pcim_enable_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h-int pcim_enable_device (struct pci_dev *pdev)h]h)}(h,int pcim_enable_device(struct pci_dev *pdev)h](h)}(hinth]hint}(hj4hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj0hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMjubj)}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0hhhjBhMjubj-)}(hpcim_enable_deviceh]j3)}(hpcim_enable_deviceh]hpcim_enable_device}(hjUhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj0hhhjBhMjubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjqhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjmubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjWsbc.pcim_enable_deviceasbuh1hhjmubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmubj3)}(hpdevh]hpdev}(hjʮhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjiubah}(h]h ]h"]h$]h&]jKjLuh1jMhj0hhhjBhMjubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj,hhhjBhMjubah}(h]j'ah ](jjeh"]h$]h&]jj)jhuh1hhjBhMjhj)hhubj)}(hhh]j)}(hManaged pci_enable_device()h]hManaged pci_enable_device()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMjhjhhubah}(h]h ]h"]h$]h&]uh1jhj)hhhjBhMjubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` PCI device to be initialized **Return** 0 on success, negative error code on failure. **Description** Managed pci_enable_device(). Device will automatically be disabled on driver detach.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMnhjubj<)}(hhh]jA)}(h6``struct pci_dev *pdev`` PCI device to be initialized h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj5h]hstruct pci_dev *pdev}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj3ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMkhj/ubjc)}(hhh]j)}(hPCI device to be initializedh]hPCI device to be initialized}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJhMkhjKubah}(h]h ]h"]h$]h&]uh1jbhj/ubeh}(h]h ]h"]h$]h&]uh1j@hjJhMkhj,ubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h **Return**h]j&)}(hjph]hReturn}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjnubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMmhjubj)}(h-0 on success, negative error code on failure.h]h-0 on success, negative error code on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMmhjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMohjubj)}(hTManaged pci_enable_device(). Device will automatically be disabled on driver detach.h]hTManaged pci_enable_device(). Device will automatically be disabled on driver detach.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMnhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_pin_device (C function)c.pcim_pin_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h+void pcim_pin_device (struct pci_dev *pdev)h]h)}(h*void pcim_pin_device(struct pci_dev *pdev)h](h)}(hvoidh]hvoid}(hjܯhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjدhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjدhhhjhMubj-)}(hpcim_pin_deviceh]j3)}(hpcim_pin_deviceh]hpcim_pin_device}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjدhhhjhMubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj7hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj9modnameN classnameNjj)}j]j)}jjsbc.pcim_pin_deviceasbuh1hhjubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hjrhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjدhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjԯhhhjhMubah}(h]jϯah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjѯhhubj)}(hhh]j)}(hPin managed PCI deviceh]hPin managed PCI device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjѯhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` PCI device to pin **Description** Pin managed PCI device **pdev**. Pinned device won't be disabled on driver detach. **pdev** must have been enabled with pcim_enable_device().h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj<)}(hhh]jA)}(h+``struct pci_dev *pdev`` PCI device to pin h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjݰh]hstruct pci_dev *pdev}(hj߰hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj۰ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjװubjc)}(hhh]j)}(hPCI device to pinh]hPCI device to pin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjװubeh}(h]h ]h"]h$]h&]uh1j@hjhMhj԰ubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hPin managed PCI device **pdev**. Pinned device won't be disabled on driver detach. **pdev** must have been enabled with pcim_enable_device().h](hPin managed PCI device }(hj.hhhNhNubj&)}(h**pdev**h]hpdev}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj.ubh6. Pinned device won’t be disabled on driver detach. }(hj.hhhNhNubj&)}(h**pdev**h]hpdev}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj.ubh2 must have been enabled with pcim_enable_device().}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_iomap_table (C function)c.pcim_iomap_tablehNtauh1hhhhhhNhNubh)}(hhh](h)}(h>void __iomem * const * pcim_iomap_table (struct pci_dev *pdev)h]h)}(h;void __iomem *const *pcim_iomap_table(struct pci_dev *pdev)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj}hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}hhhjhMubh__iomem}(hj}hhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}hhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}hhhjhMubjZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj}hhhjhMubj)}(h h]h }(hjʱhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}hhhjhMubj)}(hjh]h*}(hjرhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}hhhjhMubj-)}(hpcim_iomap_tableh]j3)}(hpcim_iomap_tableh]hpcim_iomap_table}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj}hhhjhMubjN)}(h(struct pci_dev *pdev)h]jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j)}jjsbc.pcim_iomap_tableasbuh1hhjubj)}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhj}hhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjyhhhjhMubah}(h]jtah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjvhhubj)}(hhh]j)}(h*access iomap allocation table (DEPRECATED)h]h*access iomap allocation table (DEPRECATED)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjvhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device to access iomap table for **Return** Const pointer to array of __iomem pointers on success, NULL on failure. **Description** Access iomap allocation table for **dev**. If iomap table doesn't exist and **pdev** is managed, it will be allocated. All iomaps recorded in the iomap table are automatically unmapped on driver detach. This function might sleep when the table is first allocated but can be safely called without context and guaranteed to succeed once allocated. This function is DEPRECATED. Do not use it in new code. Instead, obtain a mapping's address directly from one of the pcim_* mapping functions. For **example** void __iomem \*mappy = pcim_iomap(pdev, bar, length);h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj<)}(hhh]jA)}(h>``struct pci_dev *pdev`` PCI device to access iomap table for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjɲh]hstruct pci_dev *pdev}(hj˲hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjDzubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjòubjc)}(hhh]j)}(h$PCI device to access iomap table forh]h$PCI device to access iomap table for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj޲hMhj߲ubah}(h]h ]h"]h$]h&]uh1jbhjòubeh}(h]h ]h"]h$]h&]uh1j@hj޲hMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hGConst pointer to array of __iomem pointers on success, NULL on failure.h]hGConst pointer to array of __iomem pointers on success, NULL on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h**Description**h]j&)}(hj+h]h Description}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj)ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hAccess iomap allocation table for **dev**. If iomap table doesn't exist and **pdev** is managed, it will be allocated. All iomaps recorded in the iomap table are automatically unmapped on driver detach.h](h"Access iomap allocation table for }(hjAhhhNhNubj&)}(h**dev**h]hdev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjAubh&. If iomap table doesn’t exist and }(hjAhhhNhNubj&)}(h**pdev**h]hpdev}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjAubhw is managed, it will be allocated. All iomaps recorded in the iomap table are automatically unmapped on driver detach.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hThis function might sleep when the table is first allocated but can be safely called without context and guaranteed to succeed once allocated.h]hThis function might sleep when the table is first allocated but can be safely called without context and guaranteed to succeed once allocated.}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hThis function is DEPRECATED. Do not use it in new code. Instead, obtain a mapping's address directly from one of the pcim_* mapping functions. Forh]hThis function is DEPRECATED. Do not use it in new code. Instead, obtain a mapping’s address directly from one of the pcim_* mapping functions. For}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h **example**h]j&)}(hjh]hexample}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h5void __iomem \*mappy = pcim_iomap(pdev, bar, length);h]h5void __iomem *mappy = pcim_iomap(pdev, bar, length);}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_iomap (C function) c.pcim_iomaphNtauh1hhhhhhNhNubh)}(hhh](h)}(hOvoid __iomem * pcim_iomap (struct pci_dev *pdev, int bar, unsigned long maxlen)h]h)}(hMvoid __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen)h](h)}(hvoidh]hvoid}(hjٳhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjճhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjճhhhjhMubh__iomem}(hjճhhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjճhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjճhhhjhMubj-)}(h pcim_iomaph]j3)}(h pcim_iomaph]h pcim_iomap}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjճhhhjhMubjN)}(h5(struct pci_dev *pdev, int bar, unsigned long maxlen)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj5hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj1ubj)}(h h]h }(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj1ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]j)}jjsb c.pcim_iomapasbuh1hhj1ubj)}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj1ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj3)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj-ubjT)}(hint barh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hbarh]hbar}(hjôhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj-ubjT)}(hunsigned long maxlenh](h)}(hunsignedh]hunsigned}(hjܴhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjشubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjشubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjشubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjشubj3)}(hmaxlenh]hmaxlen}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjشubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj-ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjճhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjѳhhhjhMubah}(h]j̳ah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjγhhubj)}(hhh]j)}(hManaged pcim_iomap()h]hManaged pcim_iomap()}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj;hhubah}(h]h ]h"]h$]h&]uh1jhjγhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjVjjVjjjuh1hhhhhhNhNubj)}(hX-**Parameters** ``struct pci_dev *pdev`` PCI device to iomap for ``int bar`` BAR to iomap ``unsigned long maxlen`` Maximum length of iomap **Return** __iomem pointer on success, NULL on failure. **Description** Managed pci_iomap(). Map is automatically unmapped on driver detach. If desired, unmap manually only with pcim_iounmap(). This SHOULD only be used once per BAR. **NOTE** Contrary to the other pcim_* functions, this function does not return an IOMEM_ERR_PTR() on failure, but a simple NULL. This is done for backwards compatibility.h](j)}(h**Parameters**h]j&)}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj^ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjZubj<)}(hhh](jA)}(h1``struct pci_dev *pdev`` PCI device to iomap for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjh]hstruct pci_dev *pdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj}ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjyubjc)}(hhh]j)}(hPCI device to iomap forh]hPCI device to iomap for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjyubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjvubjA)}(h``int bar`` BAR to iomap h](jG)}(h ``int bar``h]jM)}(hjh]hint bar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubjc)}(hhh]j)}(h BAR to iomaph]h BAR to iomap}(hjѵhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj͵hMhjεubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj͵hMhjvubjA)}(h1``unsigned long maxlen`` Maximum length of iomap h](jG)}(h``unsigned long maxlen``h]jM)}(hjh]hunsigned long maxlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjubjc)}(hhh]j)}(hMaximum length of iomaph]hMaximum length of iomap}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM hjvubeh}(h]h ]h"]h$]h&]uh1j;hjZubj)}(h **Return**h]j&)}(hj,h]hReturn}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj*ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjZubj)}(h,__iomem pointer on success, NULL on failure.h]h,__iomem pointer on success, NULL on failure.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjZubj)}(h**Description**h]j&)}(hjSh]h Description}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjQubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjZubj)}(hyManaged pci_iomap(). Map is automatically unmapped on driver detach. If desired, unmap manually only with pcim_iounmap().h]hyManaged pci_iomap(). Map is automatically unmapped on driver detach. If desired, unmap manually only with pcim_iounmap().}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM hjZubj)}(h&This SHOULD only be used once per BAR.h]h&This SHOULD only be used once per BAR.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjZubj)}(h**NOTE**h]j&)}(hjh]hNOTE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjZubj)}(hContrary to the other pcim_* functions, this function does not return an IOMEM_ERR_PTR() on failure, but a simple NULL. This is done for backwards compatibility.h]hContrary to the other pcim_* functions, this function does not return an IOMEM_ERR_PTR() on failure, but a simple NULL. This is done for backwards compatibility.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_iounmap (C function)c.pcim_iounmaphNtauh1hhhhhhNhNubh)}(hhh](h)}(hubah}(h]h ]h"]h$]h&]uh1jbhj"ubeh}(h]h ]h"]h$]h&]uh1j@hj=hMhjubeh}(h]h ]h"]h$]h&]uh1j;hjʼubj)}(h**Description**h]j&)}(hjch]h Description}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjaubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjʼubj)}(hoUnmap a BAR and release its region manually. Only pass BARs that were previously mapped by pcim_iomap_region().h]hoUnmap a BAR and release its region manually. Only pass BARs that were previously mapped by pcim_iomap_region().}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjʼubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_iomap_regions (C function)c.pcim_iomap_regionshNtauh1hhhhhhNhNubh)}(hhh](h)}(hIint pcim_iomap_regions (struct pci_dev *pdev, int mask, const char *name)h]h)}(hHint pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpcim_iomap_regionsh]j3)}(hpcim_iomap_regionsh]hpcim_iomap_regions}(hjɽhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjŽubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h2(struct pci_dev *pdev, int mask, const char *name)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj˽sbc.pcim_iomap_regionsasbuh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjݽubjT)}(hint maskh](h)}(hinth]hint}(hjWhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjSubj)}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubj3)}(hmaskh]hmask}(hjshhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjݽubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjþhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hnameh]hname}(hjоhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjݽubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h'Request and iomap PCI BARs (DEPRECATED)h]h'Request and iomap PCI BARs (DEPRECATED)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device to map IO resources for ``int mask`` Mask of BARs to request and iomap ``const char *name`` Name of the driver requesting the resources **Return** 0 on success, negative error code on failure. **Description** Request and iomap regions specified by **mask**. This function is DEPRECATED. Do not use it in new code. Use pcim_iomap_region() instead.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj<)}(hhh](jA)}(h<``struct pci_dev *pdev`` PCI device to map IO resources for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj;h]hstruct pci_dev *pdev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj9ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj5ubjc)}(hhh]j)}(h"PCI device to map IO resources forh]h"PCI device to map IO resources for}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPhMhjQubah}(h]h ]h"]h$]h&]uh1jbhj5ubeh}(h]h ]h"]h$]h&]uh1j@hjPhMhj2ubjA)}(h/``int mask`` Mask of BARs to request and iomap h](jG)}(h ``int mask``h]jM)}(hjth]hint mask}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjrubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjnubjc)}(hhh]j)}(h!Mask of BARs to request and iomaph]h!Mask of BARs to request and iomap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjnubeh}(h]h ]h"]h$]h&]uh1j@hjhMhj2ubjA)}(hA``const char *name`` Name of the driver requesting the resources h](jG)}(h``const char *name``h]jM)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubjc)}(hhh]j)}(h+Name of the driver requesting the resourcesh]h+Name of the driver requesting the resources}(hjƿhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj¿hMhjÿubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj¿hMhj2ubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h-0 on success, negative error code on failure.h]h-0 on success, negative error code on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h0Request and iomap regions specified by **mask**.h](h'Request and iomap regions specified by }(hj%hhhNhNubj&)}(h**mask**h]hmask}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj%ubh.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hXThis function is DEPRECATED. Do not use it in new code. Use pcim_iomap_region() instead.h]hXThis function is DEPRECATED. Do not use it in new code. Use pcim_iomap_region() instead.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pcim_request_region (C function)c.pcim_request_regionhNtauh1hhhhhhNhNubh)}(hhh](h)}(hIint pcim_request_region (struct pci_dev *pdev, int bar, const char *name)h]h)}(hHint pcim_request_region(struct pci_dev *pdev, int bar, const char *name)h](h)}(hinth]hint}(hjuhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjqhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjqhhhjhMubj-)}(hpcim_request_regionh]j3)}(hpcim_request_regionh]hpcim_request_region}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjqhhhjhMubjN)}(h1(struct pci_dev *pdev, int bar, const char *name)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pcim_request_regionasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint barh](h)}(hinth]hint}(hj$hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hbarh]hbar}(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hjYhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjUubj)}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubh)}(hcharh]hchar}(hjthhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjUubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjUubj3)}(hnameh]hname}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjqhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjmhhhjhMubah}(h]jhah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjjhhubj)}(hhh]j)}(hRequest a PCI BARh]hRequest a PCI BAR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device to request region for ``int bar`` Index of BAR to request ``const char *name`` Name of the driver requesting the resource **Return** 0 on success, a negative error code on failure. **Description** Request region specified by **bar**. The region will automatically be released on driver detach. If desired, release manually only with pcim_release_region().h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj<)}(hhh](jA)}(h:``struct pci_dev *pdev`` PCI device to request region for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjh]hstruct pci_dev *pdev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubjc)}(hhh]j)}(h PCI device to request region forh]h PCI device to request region for}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(h$``int bar`` Index of BAR to request h](jG)}(h ``int bar``h]jM)}(hjAh]hint bar}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj?ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj;ubjc)}(hhh]j)}(hIndex of BAR to requesth]hIndex of BAR to request}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVhMhjWubah}(h]h ]h"]h$]h&]uh1jbhj;ubeh}(h]h ]h"]h$]h&]uh1j@hjVhMhjubjA)}(h@``const char *name`` Name of the driver requesting the resource h](jG)}(h``const char *name``h]jM)}(hjzh]hconst char *name}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjxubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjtubjc)}(hhh]j)}(h*Name of the driver requesting the resourceh]h*Name of the driver requesting the resource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjtubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h/0 on success, a negative error code on failure.h]h/0 on success, a negative error code on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(h$Request region specified by **bar**.h](hRequest region specified by }(hjhhhNhNubj&)}(h**bar**h]hbar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubj)}(hyThe region will automatically be released on driver detach. If desired, release manually only with pcim_release_region().h]hyThe region will automatically be released on driver detach. If desired, release manually only with pcim_release_region().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pcim_request_all_regions (C function)c.pcim_request_all_regionshNtauh1hhhhhhNhNubh)}(hhh](h)}(hEint pcim_request_all_regions (struct pci_dev *pdev, const char *name)h]h)}(hDint pcim_request_all_regions(struct pci_dev *pdev, const char *name)h](h)}(hinth]hint}(hjBhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj>hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>hhhjPhMubj-)}(hpcim_request_all_regionsh]j3)}(hpcim_request_all_regionsh]hpcim_request_all_regions}(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj>hhhjPhMubjN)}(h((struct pci_dev *pdev, const char *name)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjesbc.pcim_request_all_regionsasbuh1hhj{ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj3)}(hpdevh]hpdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjwubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hnameh]hname}(hj5hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjwubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj>hhhjPhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj:hhhjPhMubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1hhjPhMhj7hhubj)}(hhh]j)}(hRequest all regionsh]hRequest all regions}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj\hhubah}(h]h ]h"]h$]h&]uh1jhj7hhhjPhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjwjjwjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device to map IO resources for ``const char *name`` name of the driver requesting the resources **Return** 0 on success, negative error code on failure. **Description** Requested regions will automatically be released at driver detach. If desired, release individual regions with pcim_release_region() or all of them at once with pcim_release_all_regions().h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj{ubj<)}(hhh](jA)}(h<``struct pci_dev *pdev`` PCI device to map IO resources for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjh]hstruct pci_dev *pdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubjc)}(hhh]j)}(h"PCI device to map IO resources forh]h"PCI device to map IO resources for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(hA``const char *name`` name of the driver requesting the resources h](jG)}(h``const char *name``h]jM)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhjubjc)}(hhh]j)}(h+name of the driver requesting the resourcesh]h+name of the driver requesting the resources}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hj{ubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj{ubj)}(h-0 on success, negative error code on failure.h]h-0 on success, negative error code on failure.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj{ubj)}(h**Description**h]j&)}(hj;h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj9ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj{ubj)}(hRequested regions will automatically be released at driver detach. If desired, release individual regions with pcim_release_region() or all of them at once with pcim_release_all_regions().h]hRequested regions will automatically be released at driver detach. If desired, release individual regions with pcim_release_region() or all of them at once with pcim_release_all_regions().}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chMhj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcim_iomap_range (C function)c.pcim_iomap_rangehNtauh1hhhhhhNhNubh)}(hhh](h)}(hhvoid __iomem * pcim_iomap_range (struct pci_dev *pdev, int bar, unsigned long offset, unsigned long len)h]h)}(hfvoid __iomem *pcim_iomap_range(struct pci_dev *pdev, int bar, unsigned long offset, unsigned long len)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj|hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM1ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|hhhjhM1ubh__iomem}(hj|hhhNhNubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|hhhjhM1ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|hhhjhM1ubj-)}(hpcim_iomap_rangeh]j3)}(hpcim_iomap_rangeh]hpcim_iomap_range}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj|hhhjhM1ubjN)}(hH(struct pci_dev *pdev, int bar, unsigned long offset, unsigned long len)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pcim_iomap_rangeasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpdevh]hpdev}(hj5hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hint barh](h)}(hinth]hint}(hjNhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjJubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubj3)}(hbarh]hbar}(hjjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long offseth](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hoffseth]hoffset}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned long lenh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hlenh]hlen}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj|hhhjhM1ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjxhhhjhM1ubah}(h]jsah ](jjeh"]h$]h&]jj)jhuh1hhjhM1hjuhhubj)}(hhh]j)}(h0Create a ranged __iomap mapping within a PCI BARh]h0Create a ranged __iomap mapping within a PCI BAR}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM1hj3hhubah}(h]h ]h"]h$]h&]uh1jhjuhhhjhM1ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjNjjNjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device to map IO resources for ``int bar`` Index of the BAR ``unsigned long offset`` Offset from the begin of the BAR ``unsigned long len`` Length in bytes for the mapping **Return** __iomem pointer on success, an IOMEM_ERR_PTR on failure. **Description** Creates a new IO-Mapping within the specified **bar**, ranging from **offset** to **offset** + **len**. The mapping will automatically get unmapped on driver detach. If desired, release manually only with pcim_iounmap().h](j)}(h**Parameters**h]j&)}(hjXh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjVubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM5hjRubj<)}(hhh](jA)}(h<``struct pci_dev *pdev`` PCI device to map IO resources for h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjwh]hstruct pci_dev *pdev}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjuubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM2hjqubjc)}(hhh]j)}(h"PCI device to map IO resources forh]h"PCI device to map IO resources for}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM2hjubah}(h]h ]h"]h$]h&]uh1jbhjqubeh}(h]h ]h"]h$]h&]uh1j@hjhM2hjnubjA)}(h``int bar`` Index of the BAR h](jG)}(h ``int bar``h]jM)}(hjh]hint bar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM3hjubjc)}(hhh]j)}(hIndex of the BARh]hIndex of the BAR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM3hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM3hjnubjA)}(h:``unsigned long offset`` Offset from the begin of the BAR h](jG)}(h``unsigned long offset``h]jM)}(hjh]hunsigned long offset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM4hjubjc)}(hhh]j)}(h Offset from the begin of the BARh]h Offset from the begin of the BAR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM4hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM4hjnubjA)}(h6``unsigned long len`` Length in bytes for the mapping h](jG)}(h``unsigned long len``h]jM)}(hj"h]hunsigned long len}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM5hjubjc)}(hhh]j)}(hLength in bytes for the mappingh]hLength in bytes for the mapping}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7hM5hj8ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj7hM5hjnubeh}(h]h ]h"]h$]h&]uh1j;hjRubj)}(h **Return**h]j&)}(hj]h]hReturn}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj[ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM7hjRubj)}(h8__iomem pointer on success, an IOMEM_ERR_PTR on failure.h]h8__iomem pointer on success, an IOMEM_ERR_PTR on failure.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM7hjRubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM9hjRubj)}(hgCreates a new IO-Mapping within the specified **bar**, ranging from **offset** to **offset** + **len**.h](h.Creates a new IO-Mapping within the specified }(hjhhhNhNubj&)}(h**bar**h]hbar}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh, ranging from }(hjhhhNhNubj&)}(h **offset**h]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh to }(hjhhhNhNubj&)}(h **offset**h]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh + }(hjhhhNhNubj&)}(h**len**h]hlen}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM8hjRubj)}(htThe mapping will automatically get unmapped on driver detach. If desired, release manually only with pcim_iounmap().h]htThe mapping will automatically get unmapped on driver detach. If desired, release manually only with pcim_iounmap().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:10: ./drivers/pci/devres.chM;hjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_add_dynid (C function)c.pci_add_dynidhNtauh1hhhhhhNhNubh)}(hhh](h)}(hint pci_add_dynid (struct pci_driver *drv, unsigned int vendor, unsigned int device, unsigned int subvendor, unsigned int subdevice, unsigned int class, unsigned int class_mask, unsigned long driver_data)h]h)}(hint pci_add_dynid(struct pci_driver *drv, unsigned int vendor, unsigned int device, unsigned int subvendor, unsigned int subdevice, unsigned int class, unsigned int class_mask, unsigned long driver_data)h](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK!ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj.hK!ubj-)}(h pci_add_dynidh]j3)}(h pci_add_dynidh]h pci_add_dynid}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj.hK!ubjN)}(h(struct pci_driver *drv, unsigned int vendor, unsigned int device, unsigned int subvendor, unsigned int subdevice, unsigned int class, unsigned int class_mask, unsigned long driver_data)h](jT)}(hstruct pci_driver *drvh](jZ)}(hj]h]hstruct}(hj]hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjYubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjYubh)}(hhh]j3)}(h pci_driverh]h pci_driver}(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j)}jjCsbc.pci_add_dynidasbuh1hhjYubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj3)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjYubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int vendorh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hvendorh]hvendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int deviceh](h)}(hunsignedh]hunsigned}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hj<hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdeviceh]hdevice}(hjXhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int subvendorh](h)}(hunsignedh]hunsigned}(hjqhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjmubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjmubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjmubj3)}(h subvendorh]h subvendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjmubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int subdeviceh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(h subdeviceh]h subdevice}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int classh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hj/hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hclassh]hclass}(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned int class_maskh](h)}(hunsignedh]hunsigned}(hjdhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj`ubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`ubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`ubj3)}(h class_maskh]h class_mask}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubjT)}(hunsigned long driver_datah](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(h driver_datah]h driver_data}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjUubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj.hK!ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj.hK!ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj.hK!hjhhubj)}(hhh]j)}(h;add a new PCI device ID to this driver and re-probe devicesh]h;add a new PCI device ID to this driver and re-probe devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK!hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj.hK!ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_driver *drv`` target pci driver ``unsigned int vendor`` PCI vendor ID ``unsigned int device`` PCI device ID ``unsigned int subvendor`` PCI subvendor ID ``unsigned int subdevice`` PCI subdevice ID ``unsigned int class`` PCI class ``unsigned int class_mask`` PCI class mask ``unsigned long driver_data`` private driver data **Description** Adds a new dynamic pci device ID to this driver and causes the driver to probe for all devices again. **drv** must have been registered prior to calling this function. **Context** Does GFP_KERNEL allocation. **Return** 0 on success, -errno on failure.h](j)}(h**Parameters**h]j&)}(hj9h]h Parameters}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj7ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK%hj3ubj<)}(hhh](jA)}(h-``struct pci_driver *drv`` target pci driver h](jG)}(h``struct pci_driver *drv``h]jM)}(hjXh]hstruct pci_driver *drv}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK"hjRubjc)}(hhh]j)}(htarget pci driverh]htarget pci driver}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmhK"hjnubah}(h]h ]h"]h$]h&]uh1jbhjRubeh}(h]h ]h"]h$]h&]uh1j@hjmhK"hjOubjA)}(h&``unsigned int vendor`` PCI vendor ID h](jG)}(h``unsigned int vendor``h]jM)}(hjh]hunsigned int vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK#hjubjc)}(hhh]j)}(h PCI vendor IDh]h PCI vendor ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK#hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK#hjOubjA)}(h&``unsigned int device`` PCI device ID h](jG)}(h``unsigned int device``h]jM)}(hjh]hunsigned int device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK$hjubjc)}(hhh]j)}(h PCI device IDh]h PCI device ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK$hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK$hjOubjA)}(h,``unsigned int subvendor`` PCI subvendor ID h](jG)}(h``unsigned int subvendor``h]jM)}(hjh]hunsigned int subvendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK%hjubjc)}(hhh]j)}(hPCI subvendor IDh]hPCI subvendor ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK%hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK%hjOubjA)}(h,``unsigned int subdevice`` PCI subdevice ID h](jG)}(h``unsigned int subdevice``h]jM)}(hj<h]hunsigned int subdevice}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj:ubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK&hj6ubjc)}(hhh]j)}(hPCI subdevice IDh]hPCI subdevice ID}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQhK&hjRubah}(h]h ]h"]h$]h&]uh1jbhj6ubeh}(h]h ]h"]h$]h&]uh1j@hjQhK&hjOubjA)}(h!``unsigned int class`` PCI class h](jG)}(h``unsigned int class``h]jM)}(hjuh]hunsigned int class}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjsubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK'hjoubjc)}(hhh]j)}(h PCI classh]h PCI class}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK'hjubah}(h]h ]h"]h$]h&]uh1jbhjoubeh}(h]h ]h"]h$]h&]uh1j@hjhK'hjOubjA)}(h+``unsigned int class_mask`` PCI class mask h](jG)}(h``unsigned int class_mask``h]jM)}(hjh]hunsigned int class_mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK(hjubjc)}(hhh]j)}(hPCI class maskh]hPCI class mask}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK(hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK(hjOubjA)}(h2``unsigned long driver_data`` private driver data h](jG)}(h``unsigned long driver_data``h]jM)}(hjh]hunsigned long driver_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK)hjubjc)}(hhh]j)}(hprivate driver datah]hprivate driver data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK)hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK)hjOubeh}(h]h ]h"]h$]h&]uh1j;hj3ubj)}(h**Description**h]j&)}(hj"h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK+hj3ubj)}(hAdds a new dynamic pci device ID to this driver and causes the driver to probe for all devices again. **drv** must have been registered prior to calling this function.h](hgAdds a new dynamic pci device ID to this driver and causes the driver to probe for all devices again. }(hj8hhhNhNubj&)}(h**drv**h]hdrv}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj8ubh: must have been registered prior to calling this function.}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK*hj3ubj)}(h **Context**h]j&)}(hj[h]hContext}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjYubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK.hj3ubj)}(hDoes GFP_KERNEL allocation.h]hDoes GFP_KERNEL allocation.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK/hj3ubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK1hj3ubj)}(h 0 on success, -errno on failure.h]h 0 on success, -errno on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK2hj3ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_match_id (C function)c.pci_match_idhNtauh1hhhhhhNhNubh)}(hhh](h)}(h`const struct pci_device_id * pci_match_id (const struct pci_device_id *ids, struct pci_dev *dev)h]h)}(h^const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, struct pci_dev *dev)h](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK^ubjZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhjhK^ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK^ubh)}(hhh]j3)}(h pci_device_idh]h pci_device_id}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_match_idsbc.pci_match_idasbuh1hhjhhhjhK^ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK^ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK^ubj-)}(h pci_match_idh]j3)}(hjh]h pci_match_id}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhK^ubjN)}(h6(const struct pci_device_id *ids, struct pci_dev *dev)h](jT)}(hconst struct pci_device_id *idsh](jZ)}(hjh]hconst}(hj\hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjXubj)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubjZ)}(hj]h]hstruct}(hjwhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjXubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubh)}(hhh]j3)}(h pci_device_idh]h pci_device_id}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_match_idasbuh1hhjXubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjXubj3)}(hidsh]hids}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjXubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjTubjT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_match_idasbuh1hhjubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjTubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhK^ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhK^ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhK^hjhhubj)}(hhh]j)}(h0See if a PCI device matches a given pci_id tableh]h0See if a PCI device matches a given pci_id table}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK^hjehhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK^ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``const struct pci_device_id *ids`` array of PCI device ID structures to search in ``struct pci_dev *dev`` the PCI device structure to match against. **Description** Used by a driver to check whether a PCI device is in its list of supported devices. Returns the matching pci_device_id structure or ``NULL`` if there is no match. Deprecated; don't use this as it will not catch any dynamic IDs that a driver might want to check for.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chKbhjubj<)}(hhh](jA)}(hS``const struct pci_device_id *ids`` array of PCI device ID structures to search in h](jG)}(h#``const struct pci_device_id *ids``h]jM)}(hjh]hconst struct pci_device_id *ids}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK_hjubjc)}(hhh]j)}(h.array of PCI device ID structures to search inh]h.array of PCI device ID structures to search in}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK_hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK_hjubjA)}(hC``struct pci_dev *dev`` the PCI device structure to match against. h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chK`hjubjc)}(hhh]j)}(h*the PCI device structure to match against.h]h*the PCI device structure to match against.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK`hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK`hjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chKbhjubj)}(hUsed by a driver to check whether a PCI device is in its list of supported devices. Returns the matching pci_device_id structure or ``NULL`` if there is no match.h](hUsed by a driver to check whether a PCI device is in its list of supported devices. Returns the matching pci_device_id structure or }(hj3hhhNhNubjM)}(h``NULL``h]hNULL}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj3ubh if there is no match.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chKahjubj)}(hfDeprecated; don't use this as it will not catch any dynamic IDs that a driver might want to check for.h]hhDeprecated; don’t use this as it will not catch any dynamic IDs that a driver might want to check for.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chKehjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،"__pci_register_driver (C function)c.__pci_register_driverhNtauh1hhhhhhNhNubh)}(hhh](h)}(h^int __pci_register_driver (struct pci_driver *drv, struct module *owner, const char *mod_name)h]h)}(h]int __pci_register_driver(struct pci_driver *drv, struct module *owner, const char *mod_name)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(h__pci_register_driverh]j3)}(h__pci_register_driverh]h__pci_register_driver}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(hD(struct pci_driver *drv, struct module *owner, const char *mod_name)h](jT)}(hstruct pci_driver *drvh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(h pci_driverh]h pci_driver}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__pci_register_driverasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hstruct module *ownerh](jZ)}(hj]h]hstruct}(hj2hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj.ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.ubh)}(hhh]j3)}(hmoduleh]hmodule}(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j]jc.__pci_register_driverasbuh1hhj.ubj)}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj3)}(hownerh]howner}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hconst char *mod_nameh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hmod_nameh]hmod_name}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj{hhhjhMubah}(h]jvah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjxhhubj)}(hhh]j)}(hregister a new pci driverh]hregister a new pci driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhj hhubah}(h]h ]h"]h$]h&]uh1jhjxhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(jj(jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_driver *drv`` the driver structure to register ``struct module *owner`` owner module of drv ``const char *mod_name`` module name string **Description** Adds the driver structure to the list of registered drivers. Returns a negative value on error, otherwise 0. If no error occurred, the driver remains registered even if no device was claimed during registration.h](j)}(h**Parameters**h]j&)}(hj2h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj0ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhj,ubj<)}(hhh](jA)}(h<``struct pci_driver *drv`` the driver structure to register h](jG)}(h``struct pci_driver *drv``h]jM)}(hjQh]hstruct pci_driver *drv}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjOubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjKubjc)}(hhh]j)}(h the driver structure to registerh]h the driver structure to register}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfhMhjgubah}(h]h ]h"]h$]h&]uh1jbhjKubeh}(h]h ]h"]h$]h&]uh1j@hjfhMhjHubjA)}(h-``struct module *owner`` owner module of drv h](jG)}(h``struct module *owner``h]jM)}(hjh]hstruct module *owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubjc)}(hhh]j)}(howner module of drvh]howner module of drv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjHubjA)}(h,``const char *mod_name`` module name string h](jG)}(h``const char *mod_name``h]jM)}(hjh]hconst char *mod_name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubjc)}(hhh]j)}(hmodule name stringh]hmodule name string}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjHubeh}(h]h ]h"]h$]h&]uh1j;hj,ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhj,ubj)}(hAdds the driver structure to the list of registered drivers. Returns a negative value on error, otherwise 0. If no error occurred, the driver remains registered even if no device was claimed during registration.h]hAdds the driver structure to the list of registered drivers. Returns a negative value on error, otherwise 0. If no error occurred, the driver remains registered even if no device was claimed during registration.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،"pci_unregister_driver (C function)c.pci_unregister_driverhNtauh1hhhhhhNhNubh)}(hhh](h)}(h3void pci_unregister_driver (struct pci_driver *drv)h]h)}(h2void pci_unregister_driver(struct pci_driver *drv)h](h)}(hvoidh]hvoid}(hjChhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj?hhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?hhhjQhMubj-)}(hpci_unregister_driverh]j3)}(hpci_unregister_driverh]hpci_unregister_driver}(hjdhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj?hhhjQhMubjN)}(h(struct pci_driver *drv)h]jT)}(hstruct pci_driver *drvh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubh)}(hhh]j3)}(h pci_driverh]h pci_driver}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjfsbc.pci_unregister_driverasbuh1hhj|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj3)}(hdrvh]hdrv}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjxubah}(h]h ]h"]h$]h&]jKjLuh1jMhj?hhhjQhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj;hhhjQhMubah}(h]j6ah ](jjeh"]h$]h&]jj)jhuh1hhjQhMhj8hhubj)}(hhh]j)}(hunregister a pci driverh]hunregister a pci driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj8hhhjQhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX5**Parameters** ``struct pci_driver *drv`` the driver structure to unregister **Description** Deletes the driver structure from the list of registered PCI drivers, gives it a chance to clean up by calling its remove() function for each device it was responsible for, and marks those devices as driverless.h](j)}(h**Parameters**h]j&)}(hj%h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj#ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj<)}(hhh]jA)}(h>``struct pci_driver *drv`` the driver structure to unregister h](jG)}(h``struct pci_driver *drv``h]jM)}(hjDh]hstruct pci_driver *drv}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjBubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhj>ubjc)}(hhh]j)}(h"the driver structure to unregisterh]h"the driver structure to unregister}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYhMhjZubah}(h]h ]h"]h$]h&]uh1jbhj>ubeh}(h]h ]h"]h$]h&]uh1j@hjYhMhj;ubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj}ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj)}(hDeletes the driver structure from the list of registered PCI drivers, gives it a chance to clean up by calling its remove() function for each device it was responsible for, and marks those devices as driverless.h]hDeletes the driver structure from the list of registered PCI drivers, gives it a chance to clean up by calling its remove() function for each device it was responsible for, and marks those devices as driverless.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_dev_driver (C function)c.pci_dev_driverhNtauh1hhhhhhNhNubh)}(hhh](h)}(h>struct pci_driver * pci_dev_driver (const struct pci_dev *dev)h]h)}(hhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj:ubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubjZ)}(hj]h]hstruct}(hjYhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj:ubj)}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjwhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]jc.pci_dev_driverasbuh1hhj:ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj6ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(hget the pci_driver of a deviceh]hget the pci_driver of a device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``const struct pci_dev *dev`` the device to query **Description** Returns the appropriate pci_driver structure or ``NULL`` if there is no registered driver for the device.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj<)}(hhh]jA)}(h2``const struct pci_dev *dev`` the device to query h](jG)}(h``const struct pci_dev *dev``h]jM)}(hjh]hconst struct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubjc)}(hhh]j)}(hthe device to queryh]hthe device to query}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0hMhj1ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj0hMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjVh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjTubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj)}(hiReturns the appropriate pci_driver structure or ``NULL`` if there is no registered driver for the device.h](h0Returns the appropriate pci_driver structure or }(hjlhhhNhNubjM)}(h``NULL``h]hNULL}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjlubh1 if there is no registered driver for the device.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_dev_get (C function) c.pci_dev_gethNtauh1hhhhhhNhNubh)}(hhh](h)}(h2struct pci_dev * pci_dev_get (struct pci_dev *dev)h]h)}(h0struct pci_dev *pci_dev_get(struct pci_dev *dev)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_dev_getsb c.pci_dev_getasbuh1hhjhhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj-)}(h pci_dev_geth]j3)}(hjh]h pci_dev_get}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj'hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj#ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]j c.pci_dev_getasbuh1hhj#ubj)}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj3)}(hdevh]hdev}(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h:increments the reference count of the pci device structureh]h:increments the reference count of the pci device structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the device being referenced **Description** Each live reference to a device should be refcounted. Drivers for PCI devices should normally record such references in their probe() methods, when they bind to a device, and release them by calling pci_dev_put(), in their disconnect() methods. A pointer to the device with the incremented reference counter is returned.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj<)}(hhh]jA)}(h4``struct pci_dev *dev`` the device being referenced h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubjc)}(hhh]j)}(hthe device being referencedh]hthe device being referenced}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj"ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj)}(h5Each live reference to a device should be refcounted.h]h5Each live reference to a device should be refcounted.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj)}(hDrivers for PCI devices should normally record such references in their probe() methods, when they bind to a device, and release them by calling pci_dev_put(), in their disconnect() methods.h]hDrivers for PCI devices should normally record such references in their probe() methods, when they bind to a device, and release them by calling pci_dev_put(), in their disconnect() methods.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubj)}(hKA pointer to the device with the incremented reference counter is returned.h]hKA pointer to the device with the incremented reference counter is returned.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_dev_put (C function) c.pci_dev_puthNtauh1hhhhhhNhNubh)}(hhh](h)}(h&void pci_dev_put (struct pci_dev *dev)h]h)}(h%void pci_dev_put(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM&ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM&ubj-)}(h pci_dev_puth]j3)}(h pci_dev_puth]h pci_dev_put}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM&ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb c.pci_dev_putasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM&ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM&ubah}(h]jzah ](jjeh"]h$]h&]jj)jhuh1hhjhM&hj|hhubj)}(hhh]j)}(h)release a use of the pci device structureh]h)release a use of the pci device structure}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM&hjDhhubah}(h]h ]h"]h$]h&]uh1jhj|hhhjhM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj_jj_jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` device that's been disconnected **Description** Must be called when a user of a device is finished with it. When the last user of the device calls this function, the memory of the device is freed.h](j)}(h**Parameters**h]j&)}(hjih]h Parameters}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjgubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM*hjcubj<)}(hhh]jA)}(h8``struct pci_dev *dev`` device that's been disconnected h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM'hjubjc)}(hhh]j)}(hdevice that's been disconnectedh]h!device that’s been disconnected}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM'hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM'hjubah}(h]h ]h"]h$]h&]uh1j;hjcubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM)hjcubj)}(hMust be called when a user of a device is finished with it. When the last user of the device calls this function, the memory of the device is freed.h]hMust be called when a user of a device is finished with it. When the last user of the device calls this function, the memory of the device is freed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:13: ./drivers/pci/pci-driver.chM(hjcubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(Oh]h ]h"]h$]h&]entries](h،+pci_stop_and_remove_bus_device (C function) c.pci_stop_and_remove_bus_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h9void pci_stop_and_remove_bus_device (struct pci_dev *dev)h]h)}(h8void pci_stop_and_remove_bus_device(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKrubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKrubj-)}(hpci_stop_and_remove_bus_deviceh]j3)}(hpci_stop_and_remove_bus_deviceh]hpci_stop_and_remove_bus_device}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKrubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjEhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjAubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]j)}jj+sb c.pci_stop_and_remove_bus_deviceasbuh1hhjAubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKrubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKrubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKrhjhhubj)}(hhh]j)}(h$remove a PCI device and any childrenh]h$remove a PCI device and any children}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKrhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKrubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the device to remove **Description** Remove a PCI device from the device lists, informing the drivers that the device has been removed. We also remove any subordinate buses and children in a depth-first manner. For each device we remove, delete the device structure from the device lists, remove the /proc entry, and notify userspace (/sbin/hotplug).h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKvhjubj<)}(hhh]jA)}(h-``struct pci_dev *dev`` the device to remove h](jG)}(h``struct pci_dev *dev``h]jM)}(hj h]hstruct pci_dev *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKshjubjc)}(hhh]j)}(hthe device to removeh]hthe device to remove}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKshjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKshjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjDh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjBubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKuhjubj)}(hRemove a PCI device from the device lists, informing the drivers that the device has been removed. We also remove any subordinate buses and children in a depth-first manner.h]hRemove a PCI device from the device lists, informing the drivers that the device has been removed. We also remove any subordinate buses and children in a depth-first manner.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKthjubj)}(hFor each device we remove, delete the device structure from the device lists, remove the /proc entry, and notify userspace (/sbin/hotplug).h]hFor each device we remove, delete the device structure from the device lists, remove the /proc entry, and notify userspace (/sbin/hotplug).}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:16: ./drivers/pci/remove.chKxhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_find_bus (C function)c.pci_find_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h5struct pci_bus * pci_find_bus (int domain, int busnr)h]h)}(h3struct pci_bus *pci_find_bus(int domain, int busnr)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_find_bussbc.pci_find_busasbuh1hhjhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj-)}(h pci_find_bush]j3)}(hjh]h pci_find_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h(int domain, int busnr)h](jT)}(h int domainh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdomainh]hdomain}(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(h int busnrh](h)}(hinth]hint}(hjGhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjCubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjCubj3)}(hbusnrh]hbusnr}(hjchhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjCubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h1locate PCI bus from a given domain and bus numberh]h1locate PCI bus from a given domain and bus number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hXT**Parameters** ``int domain`` number of PCI domain to search ``int busnr`` number of desired PCI bus **Description** Given a PCI bus number and domain number, the desired PCI bus is located in the global list of PCI buses. If the bus is found, a pointer to its data structure is returned. If no bus is found, ``NULL`` is returned.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj<)}(hhh](jA)}(h.``int domain`` number of PCI domain to search h](jG)}(h``int domain``h]jM)}(hjh]h int domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(hnumber of PCI domain to searchh]hnumber of PCI domain to search}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubjA)}(h(``int busnr`` number of desired PCI bus h](jG)}(h ``int busnr``h]jM)}(hjh]h int busnr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(hnumber of desired PCI bush]hnumber of desired PCI bus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjBh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj@ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj)}(hGiven a PCI bus number and domain number, the desired PCI bus is located in the global list of PCI buses. If the bus is found, a pointer to its data structure is returned. If no bus is found, ``NULL`` is returned.h](hGiven a PCI bus number and domain number, the desired PCI bus is located in the global list of PCI buses. If the bus is found, a pointer to its data structure is returned. If no bus is found, }(hjXhhhNhNubjM)}(h``NULL``h]hNULL}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjXubh is returned.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_find_next_bus (C function)c.pci_find_next_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h?struct pci_bus * pci_find_next_bus (const struct pci_bus *from)h]h)}(h=struct pci_bus *pci_find_next_bus(const struct pci_bus *from)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_find_next_bussbc.pci_find_next_busasbuh1hhjhhhjhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj-)}(hpci_find_next_bush]j3)}(hjh]hpci_find_next_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h(const struct pci_bus *from)h]jT)}(hconst struct pci_bus *fromh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjZ)}(hj]h]hstruct}(hj.hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]jc.pci_find_next_busasbuh1hhjubj)}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h)begin or continue searching for a PCI bush]h)begin or continue searching for a PCI bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hXL**Parameters** ``const struct pci_bus *from`` Previous PCI bus found, or ``NULL`` for new search. **Description** Iterates through the list of known PCI buses. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj<)}(hhh]jA)}(hS``const struct pci_bus *from`` Previous PCI bus found, or ``NULL`` for new search. h](jG)}(h``const struct pci_bus *from``h]jM)}(hjh]hconst struct pci_bus *from}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(h3Previous PCI bus found, or ``NULL`` for new search.h](hPrevious PCI bus found, or }(hj hhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubh for new search.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj;ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj)}(hIterates through the list of known PCI buses. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list.h](hTIterates through the list of known PCI buses. A new search is initiated by passing }(hjShhhNhNubjM)}(h``NULL``h]hNULL}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjSubh as the }(hjShhhNhNubj&)}(h**from**h]hfrom}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjSubh argument. Otherwise if }(hjShhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjSubh is not }(hjShhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjSubh8, searches continue from next device on the global list.}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_slot (C function)c.pci_get_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(hGstruct pci_dev * pci_get_slot (struct pci_bus *bus, unsigned int devfn)h]h)}(hEstruct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_get_slotsbc.pci_get_slotasbuh1hhjhhhjhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj-)}(h pci_get_sloth]j3)}(hjh]h pci_get_slot}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h)(struct pci_bus *bus, unsigned int devfn)h](jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hjDhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj@ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjbhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]jc.pci_get_slotasbuh1hhj@ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<ubjT)}(hunsigned int devfnh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdevfnh]hdevfn}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj<ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h&locate PCI device for a given PCI sloth]h&locate PCI device for a given PCI slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj.jj.jjjuh1hhhhhhNhNubj)}(hXl**Parameters** ``struct pci_bus *bus`` PCI bus on which desired PCI device resides ``unsigned int devfn`` encodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices. **Description** Given a PCI bus and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, ``NULL`` is returned.h](j)}(h**Parameters**h]j&)}(hj8h]h Parameters}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj6ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhj2ubj<)}(hhh](jA)}(hD``struct pci_bus *bus`` PCI bus on which desired PCI device resides h](jG)}(h``struct pci_bus *bus``h]jM)}(hjWh]hstruct pci_bus *bus}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjUubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjQubjc)}(hhh]j)}(h+PCI bus on which desired PCI device residesh]h+PCI bus on which desired PCI device resides}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlhKhjmubah}(h]h ]h"]h$]h&]uh1jbhjQubeh}(h]h ]h"]h$]h&]uh1j@hjlhKhjNubjA)}(h``unsigned int devfn`` encodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices. h](jG)}(h``unsigned int devfn``h]jM)}(hjh]hunsigned int devfn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(hencodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices.h]hencodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjNubeh}(h]h ]h"]h$]h&]uh1j;hj2ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhj2ubj)}(hXQGiven a PCI bus and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, ``NULL`` is returned.h](hX<Given a PCI bus and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh is returned.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،(pci_get_domain_bus_and_slot (C function)c.pci_get_domain_bus_and_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(h_struct pci_dev * pci_get_domain_bus_and_slot (int domain, unsigned int bus, unsigned int devfn)h]h)}(h]struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, unsigned int devfn)h](jZ)}(hj]h]hstruct}(hj#hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj0hKubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jpci_get_domain_bus_and_slotsbc.pci_get_domain_bus_and_slotasbuh1hhjhhhj0hKubj)}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj0hKubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj0hKubj-)}(hpci_get_domain_bus_and_sloth]j3)}(hj`h]hpci_get_domain_bus_and_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj0hKubjN)}(h2(int domain, unsigned int bus, unsigned int devfn)h](jT)}(h int domainh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdomainh]hdomain}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned int bush](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hbush]hbus}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned int devfnh](h)}(hunsignedh]hunsigned}(hj#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hj?hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdevfnh]hdevfn}(hj[hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj0hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj0hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj0hKhjhhubj)}(hhh]j)}(hAlocate PCI device for a given PCI domain (segment), bus, and sloth]hAlocate PCI device for a given PCI domain (segment), bus, and slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhj0hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``int domain`` PCI domain/segment on which the PCI device resides. ``unsigned int bus`` PCI bus on which desired PCI device resides ``unsigned int devfn`` encodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices. **Description** Given a PCI domain, bus, and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, ``NULL`` is returned.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj<)}(hhh](jA)}(hC``int domain`` PCI domain/segment on which the PCI device resides. h](jG)}(h``int domain``h]jM)}(hjh]h int domain}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(h3PCI domain/segment on which the PCI device resides.h]h3PCI domain/segment on which the PCI device resides.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubjA)}(hA``unsigned int bus`` PCI bus on which desired PCI device resides h](jG)}(h``unsigned int bus``h]jM)}(hjh]hunsigned int bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubjc)}(hhh]j)}(h+PCI bus on which desired PCI device residesh]h+PCI bus on which desired PCI device resides}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubjA)}(h``unsigned int devfn`` encodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices. h](jG)}(h``unsigned int devfn``h]jM)}(hj8h]hunsigned int devfn}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj6ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhj2ubjc)}(hhh]j)}(hencodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices.h]hencodes number of PCI slot in which the desired PCI device resides and the logical device number within that slot in case of multi-function devices.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjNubah}(h]h ]h"]h$]h&]uh1jbhj2ubeh}(h]h ]h"]h$]h&]uh1j@hjMhKhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjth]h Description}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjrubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubj)}(hX[Given a PCI domain, bus, and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, ``NULL`` is returned.h](hXFGiven a PCI domain, bus, and slot/function number, the desired PCI device is located in the list of PCI devices. If the device is found, its reference count is increased and this function returns a pointer to its data structure. The caller must decrement the reference count by calling pci_dev_put(). If no device is found, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh is returned.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_subsys (C function)c.pci_get_subsyshNtauh1hhhhhhNhNubh)}(hhh](h)}(hstruct pci_dev * pci_get_subsys (unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from)h]h)}(hstruct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMGubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMGubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_get_subsyssbc.pci_get_subsysasbuh1hhjhhhjhMGubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMGubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMGubj-)}(hpci_get_subsysh]j3)}(hjh]hpci_get_subsys}(hj*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMGubjN)}(hp(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from)h](jT)}(hunsigned int vendorh](h)}(hunsignedh]hunsigned}(hjEhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjAubj)}(h h]h }(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubh)}(hinth]hint}(hjahhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjAubj)}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjAubj3)}(hvendorh]hvendor}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubjT)}(hunsigned int deviceh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubjT)}(hunsigned int ss_vendorh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(h ss_vendorh]h ss_vendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubjT)}(hunsigned int ss_deviceh](h)}(hunsignedh]hunsigned}(hj8hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj4ubj)}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4ubh)}(hinth]hint}(hjThhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj4ubj)}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4ubj3)}(h ss_deviceh]h ss_device}(hjphhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubjT)}(hstruct pci_dev *fromh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_get_subsysasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj=ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMGubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMGubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMGhjhhubj)}(hhh]j)}(hTbegin or continue searching for a PCI device by vendor/subvendor/device/subdevice idh]hTbegin or continue searching for a PCI device by vendor/subvendor/device/subdevice id}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMGhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMGubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"jj"jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``unsigned int vendor`` PCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids ``unsigned int device`` PCI device id to match, or ``PCI_ANY_ID`` to match all device ids ``unsigned int ss_vendor`` PCI subsystem vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids ``unsigned int ss_device`` PCI subsystem device id to match, or ``PCI_ANY_ID`` to match all device ids ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. **Description** Iterates through the list of known PCI devices. If a PCI device is found with a matching **vendor**, **device**, **ss_vendor** and **ss_device**, a pointer to its device structure is returned, and the reference count to the device is incremented. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](j)}(h**Parameters**h]j&)}(hj,h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj*ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMKhj&ubj<)}(hhh](jA)}(hZ``unsigned int vendor`` PCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids h](jG)}(h``unsigned int vendor``h]jM)}(hjKh]hunsigned int vendor}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMHhjEubjc)}(hhh]j)}(hAPCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor idsh](hPCI vendor id to match, or }(hjdhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjdubh to match all vendor ids}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj`hMHhjaubah}(h]h ]h"]h$]h&]uh1jbhjEubeh}(h]h ]h"]h$]h&]uh1j@hj`hMHhjBubjA)}(hZ``unsigned int device`` PCI device id to match, or ``PCI_ANY_ID`` to match all device ids h](jG)}(h``unsigned int device``h]jM)}(hjh]hunsigned int device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMIhjubjc)}(hhh]j)}(hAPCI device id to match, or ``PCI_ANY_ID`` to match all device idsh](hPCI device id to match, or }(hjhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh to match all device ids}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhMIhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMIhjBubjA)}(hg``unsigned int ss_vendor`` PCI subsystem vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids h](jG)}(h``unsigned int ss_vendor``h]jM)}(hjh]hunsigned int ss_vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMJhjubjc)}(hhh]j)}(hKPCI subsystem vendor id to match, or ``PCI_ANY_ID`` to match all vendor idsh](h%PCI subsystem vendor id to match, or }(hjhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh to match all vendor ids}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMJhjBubjA)}(hg``unsigned int ss_device`` PCI subsystem device id to match, or ``PCI_ANY_ID`` to match all device ids h](jG)}(h``unsigned int ss_device``h]jM)}(hj,h]hunsigned int ss_device}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj*ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMKhj&ubjc)}(hhh]j)}(hKPCI subsystem device id to match, or ``PCI_ANY_ID`` to match all device idsh](h%PCI subsystem device id to match, or }(hjEhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjEubh to match all device ids}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjAhMKhjBubah}(h]h ]h"]h$]h&]uh1jbhj&ubeh}(h]h ]h"]h$]h&]uh1j@hjAhMKhjBubjA)}(hZ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. h](jG)}(h``struct pci_dev *from``h]jM)}(hjwh]hstruct pci_dev *from}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjuubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMLhjqubjc)}(hhh]j)}(h@Previous PCI device found in search, or ``NULL`` for new search.h](h(Previous PCI device found in search, or }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh for new search.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjubah}(h]h ]h"]h$]h&]uh1jbhjqubeh}(h]h ]h"]h$]h&]uh1j@hjhMLhjBubeh}(h]h ]h"]h$]h&]uh1j;hj&ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMNhj&ubj)}(hXIterates through the list of known PCI devices. If a PCI device is found with a matching **vendor**, **device**, **ss_vendor** and **ss_device**, a pointer to its device structure is returned, and the reference count to the device is incremented. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](hZIterates through the list of known PCI devices. If a PCI device is found with a matching }(hjhhhNhNubj&)}(h **vendor**h]hvendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh, }(hjhhhNhNubj&)}(h **device**h]hdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh, }hjsbj&)}(h **ss_vendor**h]h ss_vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh and }(hjhhhNhNubj&)}(h **ss_device**h]h ss_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubhs, a pointer to its device structure is returned, and the reference count to the device is incremented. Otherwise, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh4 is returned. A new search is initiated by passing }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh as the }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh argument. Otherwise if }(hjhhhNhNubj&)}(h**from**h]hfrom}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubhQ, searches continue from next device on the global list. The reference count for }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh$ is always decremented if it is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMMhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_device (C function)c.pci_get_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h`struct pci_dev * pci_get_device (unsigned int vendor, unsigned int device, struct pci_dev *from)h]h)}(h^struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from)h](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chM`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM`ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_get_devicesbc.pci_get_deviceasbuh1hhjhhhjhM`ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM`ubj-)}(hpci_get_deviceh]j3)}(hj h]hpci_get_device}(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM`ubjN)}(h@(unsigned int vendor, unsigned int device, struct pci_dev *from)h](jT)}(hunsigned int vendorh](h)}(hunsignedh]hunsigned}(hjIhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjEubj)}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubh)}(hinth]hint}(hjehhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjEubj)}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubj3)}(hvendorh]hvendor}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAubjT)}(hunsigned int deviceh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdeviceh]hdevice}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAubjT)}(hstruct pci_dev *fromh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.pci_get_deviceasbuh1hhjubj)}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hfromh]hfrom}(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM`ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM`ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM`hjhhubj)}(hhh]j)}(h@begin or continue searching for a PCI device by vendor/device idh]h@begin or continue searching for a PCI device by vendor/device id}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chM`hjihhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM`ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX(**Parameters** ``unsigned int vendor`` PCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids ``unsigned int device`` PCI device id to match, or ``PCI_ANY_ID`` to match all device ids ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. **Description** Iterates through the list of known PCI devices. If a PCI device is found with a matching **vendor** and **device**, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMdhjubj<)}(hhh](jA)}(hZ``unsigned int vendor`` PCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor ids h](jG)}(h``unsigned int vendor``h]jM)}(hjh]hunsigned int vendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMahjubjc)}(hhh]j)}(hAPCI vendor id to match, or ``PCI_ANY_ID`` to match all vendor idsh](hPCI vendor id to match, or }(hjhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh to match all vendor ids}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhMahjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMahjubjA)}(hZ``unsigned int device`` PCI device id to match, or ``PCI_ANY_ID`` to match all device ids h](jG)}(h``unsigned int device``h]jM)}(hjh]hunsigned int device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMbhjubjc)}(hhh]j)}(hAPCI device id to match, or ``PCI_ANY_ID`` to match all device idsh](hPCI device id to match, or }(hjhhhNhNubjM)}(h``PCI_ANY_ID``h]h PCI_ANY_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh to match all device ids}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj hMbhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hMbhjubjA)}(hZ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. h](jG)}(h``struct pci_dev *from``h]jM)}(hjCh]hstruct pci_dev *from}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjAubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMchj=ubjc)}(hhh]j)}(h@Previous PCI device found in search, or ``NULL`` for new search.h](h(Previous PCI device found in search, or }(hj\hhhNhNubjM)}(h``NULL``h]hNULL}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj\ubh for new search.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjXhMchjYubah}(h]h ]h"]h$]h&]uh1jbhj=ubeh}(h]h ]h"]h$]h&]uh1j@hjXhMchjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMehjubj)}(hXIterates through the list of known PCI devices. If a PCI device is found with a matching **vendor** and **device**, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](hZIterates through the list of known PCI devices. If a PCI device is found with a matching }(hjhhhNhNubj&)}(h **vendor**h]hvendor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh and }(hjhhhNhNubj&)}(h **device**h]hdevice}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubhq, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh4 is returned. A new search is initiated by passing }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh as the }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh argument. Otherwise if }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubhR, searches continue from next device on the global list. The reference count for }(hjhhhNhNubj&)}(h**from**h]hfrom}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh$ is always decremented if it is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMdhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_class (C function)c.pci_get_classhNtauh1hhhhhhNhNubh)}(hhh](h)}(hIstruct pci_dev * pci_get_class (unsigned int class, struct pci_dev *from)h]h)}(hGstruct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from)h](jZ)}(hj]h]hstruct}(hjwhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjshhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjshhhjhMubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j pci_get_classsbc.pci_get_classasbuh1hhjshhhjhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjshhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjshhhjhMubj-)}(h pci_get_classh]j3)}(hjh]h pci_get_class}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjshhhjhMubjN)}(h*(unsigned int class, struct pci_dev *from)h](jT)}(hunsigned int classh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hclassh]hclass}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hstruct pci_dev *fromh](jZ)}(hj]h]hstruct}(hjBhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj>ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]jc.pci_get_classasbuh1hhj>ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj3)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjshhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjohhhjhMubah}(h]jjah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjlhhubj)}(hhh]j)}(h5begin or continue searching for a PCI device by classh]h5begin or continue searching for a PCI device by class}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjlhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``unsigned int class`` search for a PCI device with this class designation ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. **Description** Iterates through the list of known PCI devices. If a PCI device is found with a matching **class**, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj<)}(hhh](jA)}(hK``unsigned int class`` search for a PCI device with this class designation h](jG)}(h``unsigned int class``h]jM)}(hjh]hunsigned int class}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubjc)}(hhh]j)}(h3search for a PCI device with this class designationh]h3search for a PCI device with this class designation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(hZ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. h](jG)}(h``struct pci_dev *from``h]jM)}(hj=h]hstruct pci_dev *from}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj;ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhj7ubjc)}(hhh]j)}(h@Previous PCI device found in search, or ``NULL`` for new search.h](h(Previous PCI device found in search, or }(hjVhhhNhNubjM)}(h``NULL``h]hNULL}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubh for new search.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjRhMhjSubah}(h]h ]h"]h$]h&]uh1jbhj7ubeh}(h]h ]h"]h$]h&]uh1j@hjRhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj)}(hXIterates through the list of known PCI devices. If a PCI device is found with a matching **class**, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, ``NULL`` is returned. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](hZIterates through the list of known PCI devices. If a PCI device is found with a matching }(hjhhhNhNubj&)}(h **class**h]hclass}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubhq, the reference count to the device is incremented and a pointer to its device structure is returned. Otherwise, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh3 is returned. A new search is initiated by passing }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh as the }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh argument. Otherwise if }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubhR, searches continue from next device on the global list. The reference count for }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh$ is always decremented if it is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_get_base_class (C function)c.pci_get_base_classhNtauh1hhhhhhNhNubh)}(hhh](h)}(hNstruct pci_dev * pci_get_base_class (unsigned int class, struct pci_dev *from)h]h)}(hLstruct pci_dev *pci_get_base_class(unsigned int class, struct pci_dev *from)h](jZ)}(hj]h]hstruct}(hj_hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj[hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMubj)}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj[hhhjlhMubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jpci_get_base_classsbc.pci_get_base_classasbuh1hhj[hhhjlhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj[hhhjlhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[hhhjlhMubj-)}(hpci_get_base_classh]j3)}(hjh]hpci_get_base_class}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj[hhhjlhMubjN)}(h*(unsigned int class, struct pci_dev *from)h](jT)}(hunsigned int classh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hclassh]hclass}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hstruct pci_dev *fromh](jZ)}(hj]h]hstruct}(hj*hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj&ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjHhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]jc.pci_get_base_classasbuh1hhj&ubj)}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj&ubj)}(hjh]h*}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj3)}(hfromh]hfrom}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj&ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj[hhhjlhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjWhhhjlhMubah}(h]jRah ](jjeh"]h$]h&]jj)jhuh1hhjlhMhjThhubj)}(hhh]j)}(hGsearching for a PCI device by matching against the base class code onlyh]hGsearching for a PCI device by matching against the base class code only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjThhhjlhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``unsigned int class`` search for a PCI device with this base class code ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. **Description** Iterates through the list of known PCI devices. If a PCI device is found with a matching base class code, the reference count to the device is incremented. See pci_match_one_device() to figure out how does this works. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``. **Return** A pointer to a matched PCI device, ``NULL`` Otherwise.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj<)}(hhh](jA)}(hI``unsigned int class`` search for a PCI device with this base class code h](jG)}(h``unsigned int class``h]jM)}(hjh]hunsigned int class}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubjc)}(hhh]j)}(h1search for a PCI device with this base class codeh]h1search for a PCI device with this base class code}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(hZ``struct pci_dev *from`` Previous PCI device found in search, or ``NULL`` for new search. h](jG)}(h``struct pci_dev *from``h]jM)}(hj%h]hstruct pci_dev *from}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj#ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubjc)}(hhh]j)}(h@Previous PCI device found in search, or ``NULL`` for new search.h](h(Previous PCI device found in search, or }(hj>hhhNhNubjM)}(h``NULL``h]hNULL}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj>ubh for new search.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj:hMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjpubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj)}(hXIterates through the list of known PCI devices. If a PCI device is found with a matching base class code, the reference count to the device is incremented. See pci_match_one_device() to figure out how does this works. A new search is initiated by passing ``NULL`` as the **from** argument. Otherwise if **from** is not ``NULL``, searches continue from next device on the global list. The reference count for **from** is always decremented if it is not ``NULL``.h](hIterates through the list of known PCI devices. If a PCI device is found with a matching base class code, the reference count to the device is incremented. See pci_match_one_device() to figure out how does this works. A new search is initiated by passing }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh as the }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh argument. Otherwise if }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubhQ, searches continue from next device on the global list. The reference count for }(hjhhhNhNubj&)}(h**from**h]hfrom}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh$ is always decremented if it is not }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj)}(h **Return**h]j&)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubj)}(h6A pointer to a matched PCI device, ``NULL`` Otherwise.h](h#A pointer to a matched PCI device, }(hjhhhNhNubjM)}(h``NULL``h]hNULL}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubh Otherwise.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_dev_present (C function)c.pci_dev_presenthNtauh1hhhhhhNhNubh)}(hhh](h)}(h5int pci_dev_present (const struct pci_device_id *ids)h]h)}(h4int pci_dev_present(const struct pci_device_id *ids)h](h)}(hinth]hint}(hj\hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjXhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMubj)}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXhhhjjhMubj-)}(hpci_dev_presenth]j3)}(hpci_dev_presenth]hpci_dev_present}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjXhhhjjhMubjN)}(h!(const struct pci_device_id *ids)h]jT)}(hconst struct pci_device_id *idsh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(h pci_device_idh]h pci_device_id}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_dev_presentasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hidsh]hids}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjXhhhjjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjThhhjjhMubah}(h]jOah ](jjeh"]h$]h&]jj)jhuh1hhjjhMhjQhhubj)}(hhh]j)}(hBReturns 1 if device matching the device list is present, 0 if not.h]hBReturns 1 if device matching the device list is present, 0 if not.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhj4hhubah}(h]h ]h"]h$]h&]uh1jhjQhhhjjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjOjjOjjjuh1hhhhhhNhNubj)}(hXL**Parameters** ``const struct pci_device_id *ids`` A pointer to a null terminated list of struct pci_device_id structures that describe the type of PCI device the caller is trying to find. **Description** Obvious fact: You do not have a reference to any device that might be found by this function, so if that device is removed from the system right after this function is finished, the value will be stale. Use this function to find devices that are usually built into a system, or for a general hint as to if another device happens to be present at this specific moment in time.h](j)}(h**Parameters**h]j&)}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjWubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjSubj<)}(hhh]jA)}(h``const struct pci_device_id *ids`` A pointer to a null terminated list of struct pci_device_id structures that describe the type of PCI device the caller is trying to find. h](jG)}(h#``const struct pci_device_id *ids``h]jM)}(hjxh]hconst struct pci_device_id *ids}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjvubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjrubjc)}(hhh]j)}(hA pointer to a null terminated list of struct pci_device_id structures that describe the type of PCI device the caller is trying to find.h]hA pointer to a null terminated list of struct pci_device_id structures that describe the type of PCI device the caller is trying to find.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjubah}(h]h ]h"]h$]h&]uh1jbhjrubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjoubah}(h]h ]h"]h$]h&]uh1j;hjSubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjSubj)}(hXxObvious fact: You do not have a reference to any device that might be found by this function, so if that device is removed from the system right after this function is finished, the value will be stale. Use this function to find devices that are usually built into a system, or for a general hint as to if another device happens to be present at this specific moment in time.h]hXxObvious fact: You do not have a reference to any device that might be found by this function, so if that device is removed from the system right after this function is finished, the value will be stale. Use this function to find devices that are usually built into a system, or for a general hint as to if another device happens to be present at this specific moment in time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:19: ./drivers/pci/search.chMhjSubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_msi_mask_irq (C function)c.pci_msi_mask_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(h-void pci_msi_mask_irq (struct irq_data *data)h]h)}(h,void pci_msi_mask_irq(struct irq_data *data)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj-)}(hpci_msi_mask_irqh]j3)}(hpci_msi_mask_irqh]hpci_msi_mask_irq}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h(struct irq_data *data)h]jT)}(hstruct irq_data *datah](jZ)}(hj]h]hstruct}(hj6hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj2ubj)}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2ubh)}(hhh]j3)}(hirq_datah]hirq_data}(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j)}jjsbc.pci_msi_mask_irqasbuh1hhj2ubj)}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj3)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj.ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h4Generic IRQ chip callback to mask PCI/MSI interruptsh]h4Generic IRQ chip callback to mask PCI/MSI interrupts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h[**Parameters** ``struct irq_data *data`` pointer to irqdata associated to that interrupth](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjubj<)}(hhh]jA)}(hI``struct irq_data *data`` pointer to irqdata associated to that interrupth](jG)}(h``struct irq_data *data``h]jM)}(hjh]hstruct irq_data *data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjubjc)}(hhh]j)}(h/pointer to irqdata associated to that interrupth]h/pointer to irqdata associated to that interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_msi_unmask_irq (C function)c.pci_msi_unmask_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(h/void pci_msi_unmask_irq (struct irq_data *data)h]h)}(h.void pci_msi_unmask_irq(struct irq_data *data)h](h)}(hvoidh]hvoid}(hjThhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjPhhhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKubj)}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjPhhhjbhKubj-)}(hpci_msi_unmask_irqh]j3)}(hpci_msi_unmask_irqh]hpci_msi_unmask_irq}(hjuhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjqubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjPhhhjbhKubjN)}(h(struct irq_data *data)h]jT)}(hstruct irq_data *datah](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hirq_datah]hirq_data}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjwsbc.pci_msi_unmask_irqasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdatah]hdata}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjPhhhjbhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjLhhhjbhKubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1hhjbhKhjIhhubj)}(hhh]j)}(h6Generic IRQ chip callback to unmask PCI/MSI interruptsh]h6Generic IRQ chip callback to unmask PCI/MSI interrupts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjIhhhjbhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj,jj,jjjuh1hhhhhhNhNubj)}(h[**Parameters** ``struct irq_data *data`` pointer to irqdata associated to that interrupth](j)}(h**Parameters**h]j&)}(hj6h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj4ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhj0ubj<)}(hhh]jA)}(hI``struct irq_data *data`` pointer to irqdata associated to that interrupth](jG)}(h``struct irq_data *data``h]jM)}(hjUh]hstruct irq_data *data}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjSubah}(h]h ]h"]h$]h&]uh1jFhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjOubjc)}(hhh]j)}(h/pointer to irqdata associated to that interrupth]h/pointer to irqdata associated to that interrupt}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chKhjkubah}(h]h ]h"]h$]h&]uh1jbhjOubeh}(h]h ]h"]h$]h&]uh1j@hjjhKhjLubah}(h]h ]h"]h$]h&]uh1j;hj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_msi_vec_count (C function)c.pci_msi_vec_counthNtauh1hhhhhhNhNubh)}(hhh](h)}(h+int pci_msi_vec_count (struct pci_dev *dev)h]h)}(h*int pci_msi_vec_count(struct pci_dev *dev)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpci_msi_vec_counth]j3)}(hpci_msi_vec_counth]hpci_msi_vec_count}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.pci_msi_vec_countasbuh1hhjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h2Return the number of MSI vectors a device can sendh]h2Return the number of MSI vectors a device can send}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMhjlhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` device to report about **Description** This function returns the number of MSI vectors a device requested via Multiple Message Capable register. It returns a negative errno if the device is not capable sending MSI interrupts. Otherwise, the call succeeds and returns a power of two, up to a maximum of 2^5 (32), according to the MSI specification.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMhjubj<)}(hhh]jA)}(h/``struct pci_dev *dev`` device to report about h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMhjubjc)}(hhh]j)}(hdevice to report abouth]hdevice to report about}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMhjubj)}(hX4This function returns the number of MSI vectors a device requested via Multiple Message Capable register. It returns a negative errno if the device is not capable sending MSI interrupts. Otherwise, the call succeeds and returns a power of two, up to a maximum of 2^5 (32), according to the MSI specification.h]hX4This function returns the number of MSI vectors a device requested via Multiple Message Capable register. It returns a negative errno if the device is not capable sending MSI interrupts. Otherwise, the call succeeds and returns a power of two, up to a maximum of 2^5 (32), according to the MSI specification.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:22: ./drivers/pci/msi/msi.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_bus_alloc_resource (C function)c.pci_bus_alloc_resourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(hint pci_bus_alloc_resource (struct pci_bus *bus, struct resource *res, resource_size_t size, resource_size_t align, resource_size_t min, unsigned long type_mask, resource_alignf alignf, void *alignf_data)h]h)}(hint pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, resource_size_t size, resource_size_t align, resource_size_t min, unsigned long type_mask, resource_alignf alignf, void *alignf_data)h](h)}(hinth]hint}(hj0hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj,hhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,hhhj>hKubj-)}(hpci_bus_alloc_resourceh]j3)}(hpci_bus_alloc_resourceh]hpci_bus_alloc_resource}(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjMubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj,hhhj>hKubjN)}(h(struct pci_bus *bus, struct resource *res, resource_size_t size, resource_size_t align, resource_size_t min, unsigned long type_mask, resource_alignf alignf, void *alignf_data)h](jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hjmhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjiubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsbc.pci_bus_alloc_resourceasbuh1hhjiubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hstruct resource *resh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hresourceh]hresource}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_bus_alloc_resourceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hresh]hres}(hj6hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hresource_size_t sizeh](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hjRhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]jc.pci_bus_alloc_resourceasbuh1hhjKubj)}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjKubj3)}(hsizeh]hsize}(hj~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjKubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hresource_size_t alignh](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_bus_alloc_resourceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(halignh]halign}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hresource_size_t minh](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_bus_alloc_resourceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hminh]hmin}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hunsigned long type_maskh](h)}(hunsignedh]hunsigned}(hj'hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hlongh]hlong}(hjChhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj3)}(h type_maskh]h type_mask}(hj_hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hresource_alignf alignfh](h)}(hhh]j3)}(hresource_alignfh]hresource_alignf}(hj{hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]jc.pci_bus_alloc_resourceasbuh1hhjtubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjtubj3)}(halignfh]halignf}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubjT)}(hvoid *alignf_datah](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(h alignf_datah]h alignf_data}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj,hhhj>hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj(hhhj>hKubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1hhj>hKhj%hhubj)}(hhh]j)}(h%allocate a resource from a parent bush]h%allocate a resource from a parent bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj>hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_bus *bus`` PCI bus ``struct resource *res`` resource to allocate ``resource_size_t size`` size of resource to allocate ``resource_size_t align`` alignment of resource to allocate ``resource_size_t min`` minimum /proc/iomem address to allocate ``unsigned long type_mask`` IORESOURCE_* type flags ``resource_alignf alignf`` resource alignment function ``void *alignf_data`` data argument for resource alignment function **Description** Given the PCI bus a device resides on, the size, minimum address, alignment and type, try to find an acceptable resource allocation for a specific device resource.h](j)}(h**Parameters**h]j&)}(hj5h]h Parameters}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj3ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhj/ubj<)}(hhh](jA)}(h ``struct pci_bus *bus`` PCI bus h](jG)}(h``struct pci_bus *bus``h]jM)}(hjTh]hstruct pci_bus *bus}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjRubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhjNubjc)}(hhh]j)}(hPCI bush]hPCI bus}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjihKhjjubah}(h]h ]h"]h$]h&]uh1jbhjNubeh}(h]h ]h"]h$]h&]uh1j@hjihKhjKubjA)}(h.``struct resource *res`` resource to allocate h](jG)}(h``struct resource *res``h]jM)}(hjh]hstruct resource *res}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhjubjc)}(hhh]j)}(hresource to allocateh]hresource to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjKubjA)}(h6``resource_size_t size`` size of resource to allocate h](jG)}(h``resource_size_t size``h]jM)}(hjh]hresource_size_t size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhjubjc)}(hhh]j)}(hsize of resource to allocateh]hsize of resource to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjKubjA)}(h<``resource_size_t align`` alignment of resource to allocate h](jG)}(h``resource_size_t align``h]jM)}(hjh]hresource_size_t align}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhjubjc)}(hhh]j)}(h!alignment of resource to allocateh]h!alignment of resource to allocate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjKubjA)}(h@``resource_size_t min`` minimum /proc/iomem address to allocate h](jG)}(h``resource_size_t min``h]jM)}(hj8h]hresource_size_t min}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj6ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chKhj2ubjc)}(hhh]j)}(h'minimum /proc/iomem address to allocateh]h'minimum /proc/iomem address to allocate}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMhKhjNubah}(h]h ]h"]h$]h&]uh1jbhj2ubeh}(h]h ]h"]h$]h&]uh1j@hjMhKhjKubjA)}(h4``unsigned long type_mask`` IORESOURCE_* type flags h](jG)}(h``unsigned long type_mask``h]jM)}(hjqh]hunsigned long type_mask}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjoubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjkubjc)}(hhh]j)}(hIORESOURCE_* type flagsh]hIORESOURCE_* type flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjkubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjKubjA)}(h7``resource_alignf alignf`` resource alignment function h](jG)}(h``resource_alignf alignf``h]jM)}(hjh]hresource_alignf alignf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubjc)}(hhh]j)}(hresource alignment functionh]hresource alignment function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjKubjA)}(hD``void *alignf_data`` data argument for resource alignment function h](jG)}(h``void *alignf_data``h]jM)}(hjh]hvoid *alignf_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubjc)}(hhh]j)}(h-data argument for resource alignment functionh]h-data argument for resource alignment function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjKubeh}(h]h ]h"]h$]h&]uh1j;hj/ubj)}(h**Description**h]j&)}(hjh]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj/ubj)}(hGiven the PCI bus a device resides on, the size, minimum address, alignment and type, try to find an acceptable resource allocation for a specific device resource.h]hGiven the PCI bus a device resides on, the size, minimum address, alignment and type, try to find an acceptable resource allocation for a specific device resource.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_bus_add_device (C function)c.pci_bus_add_devicehNtauh1hhhhhhNhNubh)}(hhh](h)}(h-void pci_bus_add_device (struct pci_dev *dev)h]h)}(h,void pci_bus_add_device(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjchhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj_hhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMTubj)}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj_hhhjqhMTubj-)}(hpci_bus_add_deviceh]j3)}(hpci_bus_add_deviceh]hpci_bus_add_device}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj_hhhjqhMTubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_bus_add_deviceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhj_hhhjqhMTubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj[hhhjqhMTubah}(h]jVah ](jjeh"]h$]h&]jj)jhuh1hhjqhMThjXhhubj)}(hhh]j)}(h start driver for a single deviceh]h start driver for a single device}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMThj hhubah}(h]h ]h"]h$]h&]uh1jhjXhhhjqhMTubeh}(h]h ](jfunctioneh"]h$]h&]jjjj;jj;jjjuh1hhhhhhNhNubj)}(h~**Parameters** ``struct pci_dev *dev`` device to add **Description** This adds add sysfs entries and start device driversh](j)}(h**Parameters**h]j&)}(hjEh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjCubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMXhj?ubj<)}(hhh]jA)}(h&``struct pci_dev *dev`` device to add h](jG)}(h``struct pci_dev *dev``h]jM)}(hjdh]hstruct pci_dev *dev}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjbubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMUhj^ubjc)}(hhh]j)}(h device to addh]h device to add}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyhMUhjzubah}(h]h ]h"]h$]h&]uh1jbhj^ubeh}(h]h ]h"]h$]h&]uh1j@hjyhMUhj[ubah}(h]h ]h"]h$]h&]uh1j;hj?ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMWhj?ubj)}(h4This adds add sysfs entries and start device driversh]h4This adds add sysfs entries and start device drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMVhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_bus_add_devices (C function)c.pci_bus_add_deviceshNtauh1hhhhhhNhNubh)}(hhh](h)}(h4void pci_bus_add_devices (const struct pci_bus *bus)h]h)}(h3void pci_bus_add_devices(const struct pci_bus *bus)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chM|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM|ubj-)}(hpci_bus_add_devicesh]j3)}(hpci_bus_add_devicesh]hpci_bus_add_devices}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM|ubjN)}(h(const struct pci_bus *bus)h]jT)}(hconst struct pci_bus *bush](jZ)}(hjh]hconst}(hj!hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubjZ)}(hj]h]hstruct}(hj<hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjWubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jjsbc.pci_bus_add_devicesasbuh1hhjubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM|ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM|ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM|hjhhubj)}(hhh]j)}(hstart driver for PCI devicesh]hstart driver for PCI devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chM|hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM|ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``const struct pci_bus *bus`` bus to check for new devices **Description** Start driver for PCI devices and add some sysfs entries.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubj<)}(hhh]jA)}(h;``const struct pci_bus *bus`` bus to check for new devices h](jG)}(h``const struct pci_bus *bus``h]jM)}(hjh]hconst struct pci_bus *bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chM}hjubjc)}(hhh]j)}(hbus to check for new devicesh]hbus to check for new devices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM}hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM}hjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hj;h]h Description}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj9ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubj)}(h8Start driver for PCI devices and add some sysfs entries.h]h8Start driver for PCI devices and add some sysfs entries.}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chM~hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_walk_bus (C function)c.pci_walk_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h\void pci_walk_bus (struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata)h]h)}(hYvoid pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev*, void*), void *userdata)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj|hhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|hhhjhMubj-)}(h pci_walk_bush]j3)}(h pci_walk_bush]h pci_walk_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj|hhhjhMubjN)}(hH(struct pci_bus *top, int (*cb)(struct pci_dev*, void*), void *userdata)h](jT)}(hstruct pci_bus *toph](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_walk_busasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(htoph]htop}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h!int (*cb)(struct pci_dev*, void*)h](h)}(hinth]hint}(hj/hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj+ubj)}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+ubj)}(h(h]h(}(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj3)}(hcbh]hcb}(hjfhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+ubj)}(h)h]h)}(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hjMh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubjZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj+ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.pci_walk_busasbuh1hhj+ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(h,h]h,}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+ubh)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj+ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hjvh]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hvoid *userdatah](h)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubj)}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj3)}(huserdatah]huserdata}(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj|hhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjxhhhjhMubah}(h]jsah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjuhhubj)}(hhh]j)}(h,walk devices on/under bus, calling callback.h]h,walk devices on/under bus, calling callback.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjwhhubah}(h]h ]h"]h$]h&]uh1jhjuhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_bus *top`` bus whose devices should be walked ``int (*cb)(struct pci_dev *, void *)`` callback to be called for each device found ``void *userdata`` arbitrary pointer to be passed to callback **Description** Walk the given bus, including any bridged devices on buses under this bus. Call the provided callback on each device found. We check the return of **cb** each time. If it returns anything other than 0, we break out.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubj<)}(hhh](jA)}(h;``struct pci_bus *top`` bus whose devices should be walked h](jG)}(h``struct pci_bus *top``h]jM)}(hjh]hstruct pci_bus *top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubjc)}(hhh]j)}(h"bus whose devices should be walkedh]h"bus whose devices should be walked}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubjA)}(hT``int (*cb)(struct pci_dev *, void *)`` callback to be called for each device found h](jG)}(h'``int (*cb)(struct pci_dev *, void *)``h]jM)}(hjh]h#int (*cb)(struct pci_dev *, void *)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubjc)}(hhh]j)}(h+callback to be called for each device foundh]h+callback to be called for each device found}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMhj ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hMhjubjA)}(h>``void *userdata`` arbitrary pointer to be passed to callback h](jG)}(h``void *userdata``h]jM)}(hj-h]hvoid *userdata}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj+ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj'ubjc)}(hhh]j)}(h*arbitrary pointer to be passed to callbackh]h*arbitrary pointer to be passed to callback}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBhMhjCubah}(h]h ]h"]h$]h&]uh1jbhj'ubeh}(h]h ]h"]h$]h&]uh1j@hjBhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjfubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubjD)}(hWalk the given bus, including any bridged devices on buses under this bus. Call the provided callback on each device found. We check the return of **cb** each time. If it returns anything other than 0, we break out.h](j)}(h|Walk the given bus, including any bridged devices on buses under this bus. Call the provided callback on each device found.h]h|Walk the given bus, including any bridged devices on buses under this bus. Call the provided callback on each device found.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj~ubj)}(h[We check the return of **cb** each time. If it returns anything other than 0, we break out.h](hWe check the return of }(hjhhhNhNubj&)}(h**cb**h]hcb}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh> each time. If it returns anything other than 0, we break out.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj~ubeh}(h]h ]h"]h$]h&]uh1jChjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،!pci_walk_bus_reverse (C function)c.pci_walk_bus_reversehNtauh1hhhhhhNhNubhݕ0)}(hhh](h)}(hdvoid pci_walk_bus_reverse (struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata)h]h)}(havoid pci_walk_bus_reverse(struct pci_bus *top, int (*cb)(struct pci_dev*, void*), void *userdata)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpci_walk_bus_reverseh]j3)}(hpci_walk_bus_reverseh]hpci_walk_bus_reverse}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(hH(struct pci_bus *top, int (*cb)(struct pci_dev*, void*), void *userdata)h](jT)}(hstruct pci_bus *toph](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j)}jjsbc.pci_walk_bus_reverseasbuh1hhjubj)}(h h]h }(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(htoph]htop}(hjnhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(h!int (*cb)(struct pci_dev*, void*)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjMh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hcbh]hcb}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubj)}(hjvh]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjMh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jOc.pci_walk_bus_reverseasbuh1hhjubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h,}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjvh]h)}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubjT)}(hvoid *userdatah](h)}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjxubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjxubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj3)}(huserdatah]huserdata}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h,walk devices on/under bus, calling callback.h]h,walk devices on/under bus, calling callback.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX<**Parameters** ``struct pci_bus *top`` bus whose devices should be walked ``int (*cb)(struct pci_dev *, void *)`` callback to be called for each device found ``void *userdata`` arbitrary pointer to be passed to callback **Description** Same semantics as pci_walk_bus(), but walks the bus in reverse order.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubj<)}(hhh](jA)}(h;``struct pci_bus *top`` bus whose devices should be walked h](jG)}(h``struct pci_bus *top``h]jM)}(hjh]hstruct pci_bus *top}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj ubjc)}(hhh]j)}(h"bus whose devices should be walkedh]h"bus whose devices should be walked}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%hMhj&ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj%hMhjubjA)}(hT``int (*cb)(struct pci_dev *, void *)`` callback to be called for each device found h](jG)}(h'``int (*cb)(struct pci_dev *, void *)``h]jM)}(hjIh]h#int (*cb)(struct pci_dev *, void *)}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjGubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjCubjc)}(hhh]j)}(h+callback to be called for each device foundh]h+callback to be called for each device found}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^hMhj_ubah}(h]h ]h"]h$]h&]uh1jbhjCubeh}(h]h ]h"]h$]h&]uh1j@hj^hMhjubjA)}(h>``void *userdata`` arbitrary pointer to be passed to callback h](jG)}(h``void *userdata``h]jM)}(hjh]hvoid *userdata}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhj|ubjc)}(hhh]j)}(h*arbitrary pointer to be passed to callbackh]h*arbitrary pointer to be passed to callback}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhj|ubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubeh}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubj)}(hESame semantics as pci_walk_bus(), but walks the bus in reverse order.h]hESame semantics as pci_walk_bus(), but walks the bus in reverse order.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:25: ./drivers/pci/bus.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_bus_set_ops (C function)c.pci_bus_set_opshNtauh1hhhhhhNhNubh)}(hhh](h)}(hKstruct pci_ops * pci_bus_set_ops (struct pci_bus *bus, struct pci_ops *ops)h]h)}(hIstruct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops)h](jZ)}(hj]h]hstruct}(hj hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj hKubh)}(hhh]j3)}(hpci_opsh]hpci_ops}(hj! hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj# modnameN classnameNjj)}j]j)}jpci_bus_set_opssbc.pci_bus_set_opsasbuh1hhjhhhj hKubj)}(h h]h }(hjB hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhj hKubj)}(hjh]h*}(hjP hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj hKubj-)}(hpci_bus_set_opsh]j3)}(hj? h]hpci_bus_set_ops}(hja hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj] ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhj hKubjN)}(h*(struct pci_bus *bus, struct pci_ops *ops)h](jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hj| hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjx ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjx ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j= c.pci_bus_set_opsasbuh1hhjx ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjx ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjx ubj3)}(hbush]hbus}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjx ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjt ubjT)}(hstruct pci_ops *opsh](jZ)}(hj]h]hstruct}(hj hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_opsh]hpci_ops}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j= c.pci_bus_set_opsasbuh1hhj ubj)}(h h]h }(hj( hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj6 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hopsh]hops}(hjC hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjt ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhj hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhj hKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhj hKhjhhubj)}(hhh]j)}(hSet raw operations of pci bush]hSet raw operations of pci bus}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhjj hhubah}(h]h ]h"]h$]h&]uh1jhjhhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_bus *bus`` pci bus struct ``struct pci_ops *ops`` new raw operations **Description** Return previous raw operationsh](j)}(h**Parameters**h]j&)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhj ubj<)}(hhh](jA)}(h'``struct pci_bus *bus`` pci bus struct h](jG)}(h``struct pci_bus *bus``h]jM)}(hj h]hstruct pci_bus *bus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhj ubjc)}(hhh]j)}(hpci bus structh]hpci bus struct}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hKhj ubjA)}(h+``struct pci_ops *ops`` new raw operations h](jG)}(h``struct pci_ops *ops``h]jM)}(hj h]hstruct pci_ops *ops}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhj ubjc)}(hhh]j)}(hnew raw operationsh]hnew raw operations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hKhj ubeh}(h]h ]h"]h$]h&]uh1j;hj ubj)}(h**Description**h]j&)}(hj" h]h Description}(hj$ hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhj ubj)}(hReturn previous raw operationsh]hReturn previous raw operations}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_cfg_access_lock (C function)c.pci_cfg_access_lockhNtauh1hhhhhhNhNubh)}(hhh](h)}(h.void pci_cfg_access_lock (struct pci_dev *dev)h]h)}(h-void pci_cfg_access_lock(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjg hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjc hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMubj)}(h h]h }(hjv hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjc hhhju hMubj-)}(hpci_cfg_access_lockh]j3)}(hpci_cfg_access_lockh]hpci_cfg_access_lock}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjc hhhju hMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.pci_cfg_access_lockasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjc hhhju hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj_ hhhju hMubah}(h]jZ ah ](jjeh"]h$]h&]jj)jhuh1hhju hMhj\ hhubj)}(hhh]j)}(hLock PCI config reads/writesh]hLock PCI config reads/writes}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMhj$ hhubah}(h]h ]h"]h$]h&]uh1jhj\ hhhju hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj? jj? jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` pci device struct **Description** When access is locked, any userspace reads or writes to config space and concurrent lock requests will sleep until access is allowed via pci_cfg_access_unlock() again.h](j)}(h**Parameters**h]j&)}(hjI h]h Parameters}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjG ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMhjC ubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` pci device struct h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh h]hstruct pci_dev *dev}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjf ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMhjb ubjc)}(hhh]j)}(hpci device structh]hpci device struct}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj} hMhj~ ubah}(h]h ]h"]h$]h&]uh1jbhjb ubeh}(h]h ]h"]h$]h&]uh1j@hj} hMhj_ ubah}(h]h ]h"]h$]h&]uh1j;hjC ubj)}(h**Description**h]j&)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMhjC ubj)}(hWhen access is locked, any userspace reads or writes to config space and concurrent lock requests will sleep until access is allowed via pci_cfg_access_unlock() again.h]hWhen access is locked, any userspace reads or writes to config space and concurrent lock requests will sleep until access is allowed via pci_cfg_access_unlock() again.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMhjC ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_cfg_access_trylock (C function)c.pci_cfg_access_trylockhNtauh1hhhhhhNhNubh)}(hhh](h)}(h1bool pci_cfg_access_trylock (struct pci_dev *dev)h]h)}(h0bool pci_cfg_access_trylock(struct pci_dev *dev)h](h)}(hj'4h]hbool}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj hhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM-ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hM-ubj-)}(hpci_cfg_access_trylockh]j3)}(hpci_cfg_access_trylockh]hpci_cfg_access_trylock}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj hhhj hM-ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj$ hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hj1 hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjB hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj? ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjD modnameN classnameNjj)}j]j)}jj sbc.pci_cfg_access_trylockasbuh1hhj ubj)}(h h]h }(hjb hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hjp hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hdevh]hdev}(hj} hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj hhhj hM-ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj hhhj hM-ubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhj hM-hj hhubj)}(hhh]j)}(h#try to lock PCI config reads/writesh]h#try to lock PCI config reads/writes}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM-hj hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hM-ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` pci device struct **Description** Same as pci_cfg_access_lock, but will return 0 if access is already locked, 1 otherwise. This function can be used from atomic contexts.h](j)}(h**Parameters**h]j&)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM1hj ubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` pci device struct h](jG)}(h``struct pci_dev *dev``h]jM)}(hj h]hstruct pci_dev *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM.hj ubjc)}(hhh]j)}(hpci device structh]hpci device struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hM.hj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hM.hj ubah}(h]h ]h"]h$]h&]uh1j;hj ubj)}(h**Description**h]j&)}(hj#h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!ubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM0hj ubj)}(hSame as pci_cfg_access_lock, but will return 0 if access is already locked, 1 otherwise. This function can be used from atomic contexts.h]hSame as pci_cfg_access_lock, but will return 0 if access is already locked, 1 otherwise. This function can be used from atomic contexts.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chM/hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،"pci_cfg_access_unlock (C function)c.pci_cfg_access_unlockhNtauh1hhhhhhNhNubh)}(hhh](h)}(h0void pci_cfg_access_unlock (struct pci_dev *dev)h]h)}(h/void pci_cfg_access_unlock(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hjhhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjdhhhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMEubj)}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjdhhhjvhMEubj-)}(hpci_cfg_access_unlockh]j3)}(hpci_cfg_access_unlockh]hpci_cfg_access_unlock}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjdhhhjvhMEubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_cfg_access_unlockasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjdhhhjvhMEubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj`hhhjvhMEubah}(h]j[ah ](jjeh"]h$]h&]jj)jhuh1hhjvhMEhj]hhubj)}(hhh]j)}(hUnlock PCI config reads/writesh]hUnlock PCI config reads/writes}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMEhj%hhubah}(h]h ]h"]h$]h&]uh1jhj]hhhjvhMEubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` pci device struct **Description** This function allows PCI config accesses to resume.h](j)}(h**Parameters**h]j&)}(hjJh]h Parameters}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjHubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMIhjDubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` pci device struct h](jG)}(h``struct pci_dev *dev``h]jM)}(hjih]hstruct pci_dev *dev}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjgubah}(h]h ]h"]h$]h&]uh1jFhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMFhjcubjc)}(hhh]j)}(hpci device structh]hpci device struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~hMFhjubah}(h]h ]h"]h$]h&]uh1jbhjcubeh}(h]h ]h"]h$]h&]uh1j@hj~hMFhj`ubah}(h]h ]h"]h$]h&]uh1j;hjDubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMHhjDubj)}(h3This function allows PCI config accesses to resume.h]h3This function allows PCI config accesses to resume.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:28: ./drivers/pci/access.chMGhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_request_irq (C function)c.pci_request_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(hint pci_request_irq (struct pci_dev *dev, unsigned int nr, irq_handler_t handler, irq_handler_t thread_fn, void *dev_id, const char *fmt, ...)h]h)}(hint pci_request_irq(struct pci_dev *dev, unsigned int nr, irq_handler_t handler, irq_handler_t thread_fn, void *dev_id, const char *fmt, ...)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj-)}(hpci_request_irqh]j3)}(hpci_request_irqh]hpci_request_irq}(hj hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(hz(struct pci_dev *dev, unsigned int nr, irq_handler_t handler, irq_handler_t thread_fn, void *dev_id, const char *fmt, ...)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj&hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj"ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]j)}jj sbc.pci_request_irqasbuh1hhj"ubj)}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj"ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned int nrh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hnrh]hnr}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hirq_handler_t handlerh](h)}(hhh]j3)}(h irq_handler_th]h irq_handler_t}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.pci_request_irqasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hhandlerh]hhandler}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hirq_handler_t thread_fnh](h)}(hhh]j3)}(h irq_handler_th]h irq_handler_t}(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j`c.pci_request_irqasbuh1hhj-ubj)}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-ubj3)}(h thread_fnh]h thread_fn}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h void *dev_idh](h)}(hvoidh]hvoid}(hjyhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjuubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjuubj3)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjuubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hconst char *fmth](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hfmth]hfmt}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h...h]j)}(h...h]h...}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h+allocate an interrupt line for a PCI deviceh]h+allocate an interrupt line for a PCI device}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj?hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZjjZjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` PCI device to operate on ``unsigned int nr`` device-relative interrupt vector index (0-based). ``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts. If NULL and thread_fn != NULL the default primary handler is installed. ``irq_handler_t thread_fn`` Function called from the IRQ handler thread If NULL, no IRQ thread is created ``void *dev_id`` Cookie passed back to the handler function ``const char *fmt`` Printf-like format string naming the handler ``...`` variable arguments **Description** This call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made **handler** and **thread_fn** may be invoked. All interrupts requested using this function might be shared. **dev_id** must not be NULL and must be globally unique.h](j)}(h**Parameters**h]j&)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjbubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj^ubj<)}(hhh](jA)}(h1``struct pci_dev *dev`` PCI device to operate on h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj}ubjc)}(hhh]j)}(hPCI device to operate onh]hPCI device to operate on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhj}ubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjzubjA)}(hF``unsigned int nr`` device-relative interrupt vector index (0-based). h](jG)}(h``unsigned int nr``h]jM)}(hjh]hunsigned int nr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubjc)}(hhh]j)}(h1device-relative interrupt vector index (0-based).h]h1device-relative interrupt vector index (0-based).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjzubjA)}(h``irq_handler_t handler`` Function to be called when the IRQ occurs. Primary handler for threaded interrupts. If NULL and thread_fn != NULL the default primary handler is installed. h](jG)}(h``irq_handler_t handler``h]jM)}(hjh]hirq_handler_t handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubjc)}(hhh]j)}(hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts. If NULL and thread_fn != NULL the default primary handler is installed.h]hFunction to be called when the IRQ occurs. Primary handler for threaded interrupts. If NULL and thread_fn != NULL the default primary handler is installed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hKhjzubjA)}(hj``irq_handler_t thread_fn`` Function called from the IRQ handler thread If NULL, no IRQ thread is created h](jG)}(h``irq_handler_t thread_fn``h]jM)}(hj/h]hirq_handler_t thread_fn}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj-ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj)ubjc)}(hhh]j)}(hMFunction called from the IRQ handler thread If NULL, no IRQ thread is createdh]hMFunction called from the IRQ handler thread If NULL, no IRQ thread is created}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjEubah}(h]h ]h"]h$]h&]uh1jbhj)ubeh}(h]h ]h"]h$]h&]uh1j@hjDhKhjzubjA)}(h<``void *dev_id`` Cookie passed back to the handler function h](jG)}(h``void *dev_id``h]jM)}(hjih]h void *dev_id}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjgubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjcubjc)}(hhh]j)}(h*Cookie passed back to the handler functionh]h*Cookie passed back to the handler function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~hKhjubah}(h]h ]h"]h$]h&]uh1jbhjcubeh}(h]h ]h"]h$]h&]uh1j@hj~hKhjzubjA)}(hA``const char *fmt`` Printf-like format string naming the handler h](jG)}(h``const char *fmt``h]jM)}(hjh]hconst char *fmt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubjc)}(hhh]j)}(h,Printf-like format string naming the handlerh]h,Printf-like format string naming the handler}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjzubjA)}(h``...`` variable arguments h](jG)}(h``...``h]jM)}(hjh]h...}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubjc)}(hhh]j)}(hvariable argumentsh]hvariable arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjzubeh}(h]h ]h"]h$]h&]uh1j;hj^ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj^ubj)}(hThis call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made **handler** and **thread_fn** may be invoked. All interrupts requested using this function might be shared.h](hzThis call allocates interrupt resources and enables the interrupt line and IRQ handling. From the point this call is made }(hj,hhhNhNubj&)}(h **handler**h]hhandler}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj,ubh and }(hj,hhhNhNubj&)}(h **thread_fn**h]h thread_fn}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj,ubhO may be invoked. All interrupts requested using this function might be shared.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj^ubj)}(h8**dev_id** must not be NULL and must be globally unique.h](j&)}(h **dev_id**h]hdev_id}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj_ubh. must not be NULL and must be globally unique.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK"hj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_free_irq (C function)c.pci_free_irqhNtauh1hhhhhhNhNubh)}(hhh](h)}(hFvoid pci_free_irq (struct pci_dev *dev, unsigned int nr, void *dev_id)h]h)}(hEvoid pci_free_irq(struct pci_dev *dev, unsigned int nr, void *dev_id)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK?ubj-)}(h pci_free_irqh]j3)}(h pci_free_irqh]h pci_free_irq}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhK?ubjN)}(h4(struct pci_dev *dev, unsigned int nr, void *dev_id)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_free_irqasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hj2hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(hunsigned int nrh](h)}(hunsignedh]hunsigned}(hjKhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjGubj)}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGubh)}(hinth]hint}(hjghhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjGubj)}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGubj3)}(hnrh]hnr}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h void *dev_idh](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdev_idh]hdev_id}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhK?ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhK?ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhK?hjhhubj)}(hhh]j)}(h0free an interrupt allocated with pci_request_irqh]h0free an interrupt allocated with pci_request_irq}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK?hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK?ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX:**Parameters** ``struct pci_dev *dev`` PCI device to operate on ``unsigned int nr`` device-relative interrupt vector index (0-based). ``void *dev_id`` Device identity to free **Description** Remove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. The caller must ensure the interrupt is disabled on the device before calling this function. The function does not return until any executing interrupts for this IRQ have completed. This function must not be called from interrupt context.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKChj ubj<)}(hhh](jA)}(h1``struct pci_dev *dev`` PCI device to operate on h](jG)}(h``struct pci_dev *dev``h]jM)}(hj0h]hstruct pci_dev *dev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj.ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK@hj*ubjc)}(hhh]j)}(hPCI device to operate onh]hPCI device to operate on}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEhK@hjFubah}(h]h ]h"]h$]h&]uh1jbhj*ubeh}(h]h ]h"]h$]h&]uh1j@hjEhK@hj'ubjA)}(hF``unsigned int nr`` device-relative interrupt vector index (0-based). h](jG)}(h``unsigned int nr``h]jM)}(hjih]hunsigned int nr}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjgubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKAhjcubjc)}(hhh]j)}(h1device-relative interrupt vector index (0-based).h]h1device-relative interrupt vector index (0-based).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~hKAhjubah}(h]h ]h"]h$]h&]uh1jbhjcubeh}(h]h ]h"]h$]h&]uh1j@hj~hKAhj'ubjA)}(h)``void *dev_id`` Device identity to free h](jG)}(h``void *dev_id``h]jM)}(hjh]h void *dev_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKBhjubjc)}(hhh]j)}(hDevice identity to freeh]hDevice identity to free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKBhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKBhj'ubeh}(h]h ]h"]h$]h&]uh1j;hj ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKDhj ubj)}(hX6Remove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. The caller must ensure the interrupt is disabled on the device before calling this function. The function does not return until any executing interrupts for this IRQ have completed.h]hX6Remove an interrupt handler. The handler is removed and if the interrupt line is no longer in use by any driver it is disabled. The caller must ensure the interrupt is disabled on the device before calling this function. The function does not return until any executing interrupts for this IRQ have completed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKChj ubj)}(h8This function must not be called from interrupt context.h]h8This function must not be called from interrupt context.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKIhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_common_swizzle (C function)c.pci_common_swizzlehNtauh1hhhhhhNhNubh)}(hhh](h)}(h5u8 pci_common_swizzle (struct pci_dev *dev, u8 *pinp)h]h)}(h4u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp)h](h)}(hhh]j3)}(hu8h]hu8}(hj4hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j)}jpci_common_swizzlesbc.pci_common_swizzleasbuh1hhj-hhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKzubj)}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-hhhjUhKzubj-)}(hpci_common_swizzleh]j3)}(hjRh]hpci_common_swizzle}(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjdubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj-hhhjUhKzubjN)}(h(struct pci_dev *dev, u8 *pinp)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jPc.pci_common_swizzleasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj{ubjT)}(hu8 *pinph](h)}(hhh]j3)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jPc.pci_common_swizzleasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hpinph]hpinp}(hj/hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj{ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj-hhhjUhKzubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj)hhhjUhKzubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1hhjUhKzhj&hhubj)}(hhh]j)}(h'swizzle INTx all the way to root bridgeh]h'swizzle INTx all the way to root bridge}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKzhjVhhubah}(h]h ]h"]h$]h&]uh1jhj&hhhjUhKzubeh}(h]h ](jfunctioneh"]h$]h&]jjjjqjjqjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the PCI device ``u8 *pinp`` pointer to the INTx pin value (1=INTA, 2=INTB, 3=INTD, 4=INTD) **Description** Perform INTx swizzling for a device. This traverses through all PCI-to-PCI bridges all the way up to a PCI root bus.h](j)}(h**Parameters**h]j&)}(hj{h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjyubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK~hjuubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK{hjubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK{hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK{hjubjA)}(hL``u8 *pinp`` pointer to the INTx pin value (1=INTA, 2=INTB, 3=INTD, 4=INTD) h](jG)}(h ``u8 *pinp``h]jM)}(hjh]hu8 *pinp}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK|hjubjc)}(hhh]j)}(h>pointer to the INTx pin value (1=INTA, 2=INTB, 3=INTD, 4=INTD)h]h>pointer to the INTx pin value (1=INTA, 2=INTB, 3=INTD, 4=INTD)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK|hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhK|hjubeh}(h]h ]h"]h$]h&]uh1j;hjuubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK~hjuubj)}(huPerform INTx swizzling for a device. This traverses through all PCI-to-PCI bridges all the way up to a PCI root bus.h]huPerform INTx swizzling for a device. This traverses through all PCI-to-PCI bridges all the way up to a PCI root bus.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chK}hjuubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_check_and_mask_intx (C function)c.pci_check_and_mask_intxhNtauh1hhhhhhNhNubh)}(hhh](h)}(h2bool pci_check_and_mask_intx (struct pci_dev *dev)h]h)}(h1bool pci_check_and_mask_intx(struct pci_dev *dev)h](h)}(hj'4h]hbool}(hjShhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjOhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOhhhj`hKubj-)}(hpci_check_and_mask_intxh]j3)}(hpci_check_and_mask_intxh]hpci_check_and_mask_intx}(hjshhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjoubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjOhhhj`hKubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjusbc.pci_check_and_mask_intxasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjOhhhj`hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjKhhhj`hKubah}(h]jFah ](jjeh"]h$]h&]jj)jhuh1hhj`hKhjHhhubj)}(hhh]j)}(hmask INTx on pending interrupth]hmask INTx on pending interrupt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjHhhhj`hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj*jj*jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device to operate on **Description** Check if the device dev has its INTx line asserted, mask it and return true in that case. False is returned if no interrupt was pending.h](j)}(h**Parameters**h]j&)}(hj4h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj2ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj.ubj<)}(hhh]jA)}(h5``struct pci_dev *dev`` the PCI device to operate on h](jG)}(h``struct pci_dev *dev``h]jM)}(hjSh]hstruct pci_dev *dev}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjQubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjMubjc)}(hhh]j)}(hthe PCI device to operate onh]hthe PCI device to operate on}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhhKhjiubah}(h]h ]h"]h$]h&]uh1jbhjMubeh}(h]h ]h"]h$]h&]uh1j@hjhhKhjJubah}(h]h ]h"]h$]h&]uh1j;hj.ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj.ubj)}(hCheck if the device dev has its INTx line asserted, mask it and return true in that case. False is returned if no interrupt was pending.h]hCheck if the device dev has its INTx line asserted, mask it and return true in that case. False is returned if no interrupt was pending.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،&pci_check_and_unmask_intx (C function)c.pci_check_and_unmask_intxhNtauh1hhhhhhNhNubh)}(hhh](h)}(h4bool pci_check_and_unmask_intx (struct pci_dev *dev)h]h)}(h3bool pci_check_and_unmask_intx(struct pci_dev *dev)h](h)}(hj'4h]hbool}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj-)}(hpci_check_and_unmask_intxh]j3)}(hpci_check_and_unmask_intxh]hpci_check_and_unmask_intx}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhKubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]j)}jjsbc.pci_check_and_unmask_intxasbuh1hhj ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj3)}(hdevh]hdev}(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h&unmask INTx if no interrupt is pendingh]h&unmask INTx if no interrupt is pending}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the PCI device to operate on **Description** Check if the device dev has its INTx line asserted, unmask it if not and return true. False is returned and the mask remains active if there was still an interrupt pending.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubj<)}(hhh]jA)}(h5``struct pci_dev *dev`` the PCI device to operate on h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubjc)}(hhh]j)}(hthe PCI device to operate onh]hthe PCI device to operate on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhKhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubj)}(hCheck if the device dev has its INTx line asserted, unmask it if not and return true. False is returned and the mask remains active if there was still an interrupt pending.h]hCheck if the device dev has its INTx line asserted, unmask it if not and return true. False is returned and the mask remains active if there was still an interrupt pending.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:31: ./drivers/pci/irq.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pcie_get_link_speed (C function)c.pcie_get_link_speedhNtauh1hhhhhhNhNubh)}(hhh](h)}(h6unsigned char pcie_get_link_speed (unsigned int speed)h]h)}(h5unsigned char pcie_get_link_speed(unsigned int speed)h](h)}(hunsignedh]hunsigned}(hjShhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjOhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM ubj)}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOhhhjahM ubh)}(hcharh]hchar}(hjphhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjOhhhjahM ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOhhhjahM ubj-)}(hpcie_get_link_speedh]j3)}(hpcie_get_link_speedh]hpcie_get_link_speed}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjOhhhjahM ubjN)}(h(unsigned int speed)h]jT)}(hunsigned int speedh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hspeedh]hspeed}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjOhhhjahM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjKhhhjahM ubah}(h]jFah ](jjeh"]h$]h&]jj)jhuh1hhjahM hjHhhubj)}(hhh]j)}(h+Get speed value from PCIe generation numberh]h+Get speed value from PCIe generation number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj hhubah}(h]h ]h"]h$]h&]uh1jhjHhhhjahM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1hhhhhhNhNubj)}(h**Parameters** ``unsigned int speed`` PCIe speed (1-based: 1 = 2.5GT, 2 = 5GT, ...) **Description** Returns the speed value (e.g., PCIE_SPEED_2_5GT) if **speed** is valid, otherwise returns PCI_SPEED_UNKNOWN.h](j)}(h**Parameters**h]j&)}(hj0h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj.ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj*ubj<)}(hhh]jA)}(hE``unsigned int speed`` PCIe speed (1-based: 1 = 2.5GT, 2 = 5GT, ...) h](jG)}(h``unsigned int speed``h]jM)}(hjOh]hunsigned int speed}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjMubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjIubjc)}(hhh]j)}(h-PCIe speed (1-based: 1 = 2.5GT, 2 = 5GT, ...)h]h-PCIe speed (1-based: 1 = 2.5GT, 2 = 5GT, ...)}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdhM hjeubah}(h]h ]h"]h$]h&]uh1jbhjIubeh}(h]h ]h"]h$]h&]uh1j@hjdhM hjFubah}(h]h ]h"]h$]h&]uh1j;hj*ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj*ubj)}(hlReturns the speed value (e.g., PCIE_SPEED_2_5GT) if **speed** is valid, otherwise returns PCI_SPEED_UNKNOWN.h](h4Returns the speed value (e.g., PCIE_SPEED_2_5GT) if }(hjhhhNhNubj&)}(h **speed**h]hspeed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubh/ is valid, otherwise returns PCI_SPEED_UNKNOWN.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،*pcie_relaxed_ordering_enabled (C function)c.pcie_relaxed_ordering_enabledhNtauh1hhhhhhNhNubh)}(hhh](h)}(h8bool pcie_relaxed_ordering_enabled (struct pci_dev *dev)h]h)}(h7bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)h](h)}(hj'4h]hbool}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhM ubj-)}(hpcie_relaxed_ordering_enabledh]j3)}(hpcie_relaxed_ordering_enabledh]hpcie_relaxed_ordering_enabled}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhM ubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj;hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jjsbc.pcie_relaxed_ordering_enabledasbuh1hhjubj)}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hdevh]hdev}(hjvhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhM ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhM hjhhubj)}(hhh]j)}(h&Probe for PCIe relaxed ordering enableh]h&Probe for PCIe relaxed ordering enable}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` PCI device to query **Description** Returns true if the device has enabled relaxed ordering attribute.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjubj<)}(hhh]jA)}(h,``struct pci_dev *dev`` PCI device to query h](jG)}(h``struct pci_dev *dev``h]jM)}(hjh]hstruct pci_dev *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjubjc)}(hhh]j)}(hPCI device to queryh]hPCI device to query}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhM hjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhM hjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjubj)}(hBReturns true if the device has enabled relaxed ordering attribute.h]hBReturns true if the device has enabled relaxed ordering attribute.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_scan_slot (C function)c.pci_scan_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(h2int pci_scan_slot (struct pci_bus *bus, int devfn)h]h)}(h1int pci_scan_slot(struct pci_bus *bus, int devfn)h](h)}(hinth]hint}(hjahhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj]hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM( ubj)}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]hhhjohM( ubj-)}(h pci_scan_sloth]j3)}(h pci_scan_sloth]h pci_scan_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj]hhhjohM( ubjN)}(h (struct pci_bus *bus, int devfn)h](jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_scan_slotasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubjT)}(h int devfnh](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj3)}(hdevfnh]hdevfn}(hj, hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj]hhhjohM( ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjYhhhjohM( ubah}(h]jTah ](jjeh"]h$]h&]jj)jhuh1hhjohM( hjVhhubj)}(hhh]j)}(h$Scan a PCI slot on a bus for devicesh]h$Scan a PCI slot on a bus for devices}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM( hjS hhubah}(h]h ]h"]h$]h&]uh1jhjVhhhjohM( ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjn jjn jjjuh1hhhhhhNhNubj)}(hXK**Parameters** ``struct pci_bus *bus`` PCI bus to scan ``int devfn`` slot number to scan (must have zero function) **Description** Scan a PCI slot on the specified PCI bus for devices, adding discovered devices to the **bus->devices** list. New devices will not have is_added set. Returns the number of new devices found.h](j)}(h**Parameters**h]j&)}(hjx h]h Parameters}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjv ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM, hjr ubj<)}(hhh](jA)}(h(``struct pci_bus *bus`` PCI bus to scan h](jG)}(h``struct pci_bus *bus``h]jM)}(hj h]hstruct pci_bus *bus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM) hj ubjc)}(hhh]j)}(hPCI bus to scanh]hPCI bus to scan}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hM) hj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hM) hj ubjA)}(h<``int devfn`` slot number to scan (must have zero function) h](jG)}(h ``int devfn``h]jM)}(hj h]h int devfn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM* hj ubjc)}(hhh]j)}(h-slot number to scan (must have zero function)h]h-slot number to scan (must have zero function)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hM* hj ubah}(h]h ]h"]h$]h&]uh1jbhj ubeh}(h]h ]h"]h$]h&]uh1j@hj hM* hj ubeh}(h]h ]h"]h$]h&]uh1j;hjr ubj)}(h**Description**h]j&)}(hj !h]h Description}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj !ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM, hjr ubj)}(hScan a PCI slot on the specified PCI bus for devices, adding discovered devices to the **bus->devices** list. New devices will not have is_added set.h](hWScan a PCI slot on the specified PCI bus for devices, adding discovered devices to the }(hj!!hhhNhNubj&)}(h**bus->devices**h]h bus->devices}(hj)!hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj!!ubh/ list. New devices will not have is_added set.}(hj!!hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM+ hjr ubj)}(h(Returns the number of new devices found.h]h(Returns the number of new devices found.}(hjB!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM/ hjr ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_scan_child_bus (C function)c.pci_scan_child_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h5unsigned int pci_scan_child_bus (struct pci_bus *bus)h]h)}(h4unsigned int pci_scan_child_bus(struct pci_bus *bus)h](h)}(hunsignedh]hunsigned}(hjq!hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjm!hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjm!hhhj!hM ubh)}(hinth]hint}(hj!hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjm!hhhj!hM ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjm!hhhj!hM ubj-)}(hpci_scan_child_bush]j3)}(hpci_scan_child_bush]hpci_scan_child_bus}(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjm!hhhj!hM ubjN)}(h(struct pci_bus *bus)h]jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hj!hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj!hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jj!sbc.pci_scan_child_busasbuh1hhj!ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj3)}(hbush]hbus}(hj#"hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj!ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj!ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjm!hhhj!hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhji!hhhj!hM ubah}(h]jd!ah ](jjeh"]h$]h&]jj)jhuh1hhj!hM hjf!hhubj)}(hhh]j)}(hScan devices below a bush]hScan devices below a bus}(hjM"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hjJ"hhubah}(h]h ]h"]h$]h&]uh1jhjf!hhhj!hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjje"jje"jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_bus *bus`` Bus to scan for devices **Description** Scans devices below **bus** including subordinate buses. Returns new subordinate number including all the found devices.h](j)}(h**Parameters**h]j&)}(hjo"h]h Parameters}(hjq"hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjm"ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hji"ubj<)}(hhh]jA)}(h0``struct pci_bus *bus`` Bus to scan for devices h](jG)}(h``struct pci_bus *bus``h]jM)}(hj"h]hstruct pci_bus *bus}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj"ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj"ubjc)}(hhh]j)}(hBus to scan for devicesh]hBus to scan for devices}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"hM hj"ubah}(h]h ]h"]h$]h&]uh1jbhj"ubeh}(h]h ]h"]h$]h&]uh1j@hj"hM hj"ubah}(h]h ]h"]h$]h&]uh1j;hji"ubj)}(h**Description**h]j&)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj"ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hji"ubj)}(hxScans devices below **bus** including subordinate buses. Returns new subordinate number including all the found devices.h](hScans devices below }(hj"hhhNhNubj&)}(h**bus**h]hbus}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj"ubh] including subordinate buses. Returns new subordinate number including all the found devices.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hji"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_rescan_bus (C function)c.pci_rescan_bushNtauh1hhhhhhNhNubh)}(hhh](h)}(h1unsigned int pci_rescan_bus (struct pci_bus *bus)h]h)}(h0unsigned int pci_rescan_bus(struct pci_bus *bus)h](h)}(hunsignedh]hunsigned}(hj #hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM ubj)}(h h]h }(hj/#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#hhhj.#hM ubh)}(hinth]hint}(hj=#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#hhhj.#hM ubj)}(h h]h }(hjK#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#hhhj.#hM ubj-)}(hpci_rescan_bush]j3)}(hpci_rescan_bush]hpci_rescan_bus}(hj]#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjY#ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj#hhhj.#hM ubjN)}(h(struct pci_bus *bus)h]jT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hjy#hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhju#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhju#ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jj_#sbc.pci_rescan_busasbuh1hhju#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhju#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhju#ubj3)}(hbush]hbus}(hj#hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hju#ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjq#ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj#hhhj.#hM ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj#hhhj.#hM ubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1hhj.#hM hj#hhubj)}(hhh]j)}(hScan a PCI bus for devicesh]hScan a PCI bus for devices}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj#hhubah}(h]h ]h"]h$]h&]uh1jhj#hhhj.#hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj$jj$jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_bus *bus`` PCI bus to scan **Description** Scan a PCI bus and child buses for new devices, add them, and enable them. Returns the max number of subordinate bus discovered.h](j)}(h**Parameters**h]j&)}(hj$h]h Parameters}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj$ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj$ubj<)}(hhh]jA)}(h(``struct pci_bus *bus`` PCI bus to scan h](jG)}(h``struct pci_bus *bus``h]jM)}(hj=$h]hstruct pci_bus *bus}(hj?$hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj;$ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj7$ubjc)}(hhh]j)}(hPCI bus to scanh]hPCI bus to scan}(hjV$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR$hM hjS$ubah}(h]h ]h"]h$]h&]uh1jbhj7$ubeh}(h]h ]h"]h$]h&]uh1j@hjR$hM hj4$ubah}(h]h ]h"]h$]h&]uh1j;hj$ubj)}(h**Description**h]j&)}(hjx$h]h Description}(hjz$hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjv$ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj$ubj)}(hJScan a PCI bus and child buses for new devices, add them, and enable them.h]hJScan a PCI bus and child buses for new devices, add them, and enable them.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj$ubj)}(h5Returns the max number of subordinate bus discovered.h]h5Returns the max number of subordinate bus discovered.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:34: ./drivers/pci/probe.chM hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_create_slot (C function)c.pci_create_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(hwstruct pci_slot * pci_create_slot (struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug)h]h)}(hustruct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug)h](jZ)}(hj]h]hstruct}(hj$hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj$hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKubj)}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$hhhj$hKubh)}(hhh]j3)}(hpci_sloth]hpci_slot}(hj$hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j)}jpci_create_slotsbc.pci_create_slotasbuh1hhj$hhhj$hKubj)}(h h]h }(hj %hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$hhhj$hKubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hKubj-)}(hpci_create_sloth]j3)}(hj %h]hpci_create_slot}(hj+%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'%ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj$hhhj$hKubjN)}(hU(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug)h](jT)}(hstruct pci_bus *parenth](jZ)}(hj]h]hstruct}(hjF%hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjB%ubj)}(h h]h }(hjS%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjB%ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hjd%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hja%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjf%modnameN classnameNjj)}j]j%c.pci_create_slotasbuh1hhjB%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjB%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB%ubj3)}(hparenth]hparent}(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjB%ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>%ubjT)}(h int slot_nrh](h)}(hinth]hint}(hj%hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj%ubj3)}(hslot_nrh]hslot_nr}(hj%hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>%ubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hj%hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj%ubh)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj%ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj%ubj)}(hjh]h*}(hj"&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj3)}(hnameh]hname}(hj/&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj%ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>%ubjT)}(hstruct hotplug_slot *hotplugh](jZ)}(hj]h]hstruct}(hjH&hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjD&ubj)}(h h]h }(hjU&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjD&ubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjf&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjc&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjh&modnameN classnameNjj)}j]j%c.pci_create_slotasbuh1hhjD&ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjD&ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjD&ubj3)}(hhotplugh]hhotplug}(hj&hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjD&ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>%ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj$hhhj$hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj$hhhj$hKubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1hhj$hKhj$hhubj)}(hhh]j)}(h2create or increment refcount for physical PCI sloth]h2create or increment refcount for physical PCI slot}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj$hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj&jj&jjjuh1hhhhhhNhNubj)}(hXA **Parameters** ``struct pci_bus *parent`` struct pci_bus of parent bridge ``int slot_nr`` PCI_SLOT(pci_dev->devfn), -1 for placeholder, or PCI_SLOT_ALL_DEVICES ``const char *name`` user visible string presented in /sys/bus/pci/slots/ ``struct hotplug_slot *hotplug`` set if caller is hotplug driver, NULL otherwise **Description** PCI slots have first class attributes such as address, speed, width, and a :c:type:`struct pci_slot ` is used to manage them. This interface will either return a new :c:type:`struct pci_slot ` to the caller, or if the pci_slot already exists, its refcount will be incremented. Slots are uniquely identified by a **pci_bus**, **slot_nr** tuple. There are known platforms with broken firmware that assign the same name to multiple slots. Workaround these broken platforms by renaming the slots on behalf of the caller. If firmware assigns name N to multiple slots: The first slot is assigned N The second slot is assigned N-1 The third slot is assigned N-2 etc. Placeholder slots: In most cases, **pci_bus**, **slot_nr** will be sufficient to uniquely identify a slot. There is one notable exception - pSeries (rpaphp), where the **slot_nr** cannot be determined until a device is actually inserted into the slot. In this scenario, the caller may pass -1 for **slot_nr**. The following semantics are imposed when the caller passes **slot_nr** == -1. First, we no longer check for an existing ``struct`` pci_slot, as there may be many slots with **slot_nr** of -1. The other change in semantics is user-visible, which is the 'address' parameter presented in sysfs will consist solely of a dddd:bb tuple, where dddd is the PCI domain of the ``struct`` pci_bus and bb is the bus number. In other words, the devfn of the 'placeholder' slot will not be displayed. Bus-wide slots: For PCIe hotplug, the physical slot encompasses the entire secondary bus, not just a single device number. If the device supports ARI and ARI Forwarding is enabled in the upstream bridge, a multi-function device may include functions that appear to have several different device numbers, i.e., PCI_SLOT() values. Pass **slot_nr** == PCI_SLOT_ALL_DEVICES to create a slot that matches all devices on the bus. Unlike placeholder slots, bus-wide slots go through normal slot lookup and reuse existing slots if present.h](j)}(h**Parameters**h]j&)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj&ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj<)}(hhh](jA)}(h;``struct pci_bus *parent`` struct pci_bus of parent bridge h](jG)}(h``struct pci_bus *parent``h]jM)}(hj 'h]hstruct pci_bus *parent}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj'ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj'ubjc)}(hhh]j)}(hstruct pci_bus of parent bridgeh]hstruct pci_bus of parent bridge}(hj#'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'hKhj 'ubah}(h]h ]h"]h$]h&]uh1jbhj'ubeh}(h]h ]h"]h$]h&]uh1j@hj'hKhj'ubjA)}(hV``int slot_nr`` PCI_SLOT(pci_dev->devfn), -1 for placeholder, or PCI_SLOT_ALL_DEVICES h](jG)}(h``int slot_nr``h]jM)}(hjC'h]h int slot_nr}(hjE'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjA'ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj='ubjc)}(hhh]j)}(hEPCI_SLOT(pci_dev->devfn), -1 for placeholder, or PCI_SLOT_ALL_DEVICESh]hEPCI_SLOT(pci_dev->devfn), -1 for placeholder, or PCI_SLOT_ALL_DEVICES}(hj\'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhjY'ubah}(h]h ]h"]h$]h&]uh1jbhj='ubeh}(h]h ]h"]h$]h&]uh1j@hjX'hKhj'ubjA)}(hP``const char *name`` user visible string presented in /sys/bus/pci/slots/ h](jG)}(h``const char *name``h]jM)}(hj}'h]hconst char *name}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj{'ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhjw'ubjc)}(hhh]j)}(h:user visible string presented in /sys/bus/pci/slots/h]h:user visible string presented in /sys/bus/pci/slots/}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jbhjw'ubeh}(h]h ]h"]h$]h&]uh1j@hj'hKhj'ubjA)}(hQ``struct hotplug_slot *hotplug`` set if caller is hotplug driver, NULL otherwise h](jG)}(h ``struct hotplug_slot *hotplug``h]jM)}(hj'h]hstruct hotplug_slot *hotplug}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj'ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj'ubjc)}(hhh]j)}(h/set if caller is hotplug driver, NULL otherwiseh]h/set if caller is hotplug driver, NULL otherwise}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'hKhj'ubah}(h]h ]h"]h$]h&]uh1jbhj'ubeh}(h]h ]h"]h$]h&]uh1j@hj'hKhj'ubeh}(h]h ]h"]h$]h&]uh1j;hj&ubj)}(h**Description**h]j&)}(hj'h]h Description}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj'ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(hX(PCI slots have first class attributes such as address, speed, width, and a :c:type:`struct pci_slot ` is used to manage them. This interface will either return a new :c:type:`struct pci_slot ` to the caller, or if the pci_slot already exists, its refcount will be incremented.h](hKPCI slots have first class attributes such as address, speed, width, and a }(hj(hhhNhNubh)}(h$:c:type:`struct pci_slot `h]jM)}(hj(h]hstruct pci_slot}(hj(hhhNhNubah}(h]h ](xrefjc-typeeh"]h$]h&]uh1jLhj(ubah}(h]h ]h"]h$]h&]refdocdriver-api/pci/pci refdomainjreftypetype refexplicitrefwarnjj)}j]sb reftargetpci_slotuh1hhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj(ubhA is used to manage them. This interface will either return a new }(hj(hhhNhNubh)}(h$:c:type:`struct pci_slot `h]jM)}(hj;(h]hstruct pci_slot}(hj=(hhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhj9(ubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2(pci_slotuh1hhj4(hKhj(ubhT to the caller, or if the pci_slot already exists, its refcount will be incremented.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj4(hKhj&ubj)}(hBSlots are uniquely identified by a **pci_bus**, **slot_nr** tuple.h](h#Slots are uniquely identified by a }(hjb(hhhNhNubj&)}(h **pci_bus**h]hpci_bus}(hjj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjb(ubh, }(hjb(hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj|(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjb(ubh tuple.}(hjb(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(hThere are known platforms with broken firmware that assign the same name to multiple slots. Workaround these broken platforms by renaming the slots on behalf of the caller. If firmware assigns name N to multiple slots:h]hThere are known platforms with broken firmware that assign the same name to multiple slots. Workaround these broken platforms by renaming the slots on behalf of the caller. If firmware assigns name N to multiple slots:}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(h`The first slot is assigned N The second slot is assigned N-1 The third slot is assigned N-2 etc.h]h`The first slot is assigned N The second slot is assigned N-1 The third slot is assigned N-2 etc.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(hX5Placeholder slots: In most cases, **pci_bus**, **slot_nr** will be sufficient to uniquely identify a slot. There is one notable exception - pSeries (rpaphp), where the **slot_nr** cannot be determined until a device is actually inserted into the slot. In this scenario, the caller may pass -1 for **slot_nr**.h](h"Placeholder slots: In most cases, }(hj(hhhNhNubj&)}(h **pci_bus**h]hpci_bus}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj(ubh, }(hj(hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj(ubhn will be sufficient to uniquely identify a slot. There is one notable exception - pSeries (rpaphp), where the }(hj(hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj(ubhv cannot be determined until a device is actually inserted into the slot. In this scenario, the caller may pass -1 for }(hj(hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj(ubh.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(hXThe following semantics are imposed when the caller passes **slot_nr** == -1. First, we no longer check for an existing ``struct`` pci_slot, as there may be many slots with **slot_nr** of -1. The other change in semantics is user-visible, which is the 'address' parameter presented in sysfs will consist solely of a dddd:bb tuple, where dddd is the PCI domain of the ``struct`` pci_bus and bb is the bus number. In other words, the devfn of the 'placeholder' slot will not be displayed.h](h;The following semantics are imposed when the caller passes }(hj )hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj )ubh2 == -1. First, we no longer check for an existing }(hj )hhhNhNubjM)}(h ``struct``h]hstruct}(hj$)hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj )ubh+ pci_slot, as there may be many slots with }(hj )hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hj6)hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj )ubh of -1. The other change in semantics is user-visible, which is the ‘address’ parameter presented in sysfs will consist solely of a dddd:bb tuple, where dddd is the PCI domain of the }(hj )hhhNhNubjM)}(h ``struct``h]hstruct}(hjH)hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj )ubhq pci_bus and bb is the bus number. In other words, the devfn of the ‘placeholder’ slot will not be displayed.}(hj )hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubj)}(hXBus-wide slots: For PCIe hotplug, the physical slot encompasses the entire secondary bus, not just a single device number. If the device supports ARI and ARI Forwarding is enabled in the upstream bridge, a multi-function device may include functions that appear to have several different device numbers, i.e., PCI_SLOT() values. Pass **slot_nr** == PCI_SLOT_ALL_DEVICES to create a slot that matches all devices on the bus. Unlike placeholder slots, bus-wide slots go through normal slot lookup and reuse existing slots if present.h](hXOBus-wide slots: For PCIe hotplug, the physical slot encompasses the entire secondary bus, not just a single device number. If the device supports ARI and ARI Forwarding is enabled in the upstream bridge, a multi-function device may include functions that appear to have several different device numbers, i.e., PCI_SLOT() values. Pass }(hja)hhhNhNubj&)}(h **slot_nr**h]hslot_nr}(hji)hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hja)ubh == PCI_SLOT_ALL_DEVICES to create a slot that matches all devices on the bus. Unlike placeholder slots, bus-wide slots go through normal slot lookup and reuse existing slots if present.}(hja)hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chKhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_destroy_slot (C function)c.pci_destroy_slothNtauh1hhhhhhNhNubh)}(hhh](h)}(h-void pci_destroy_slot (struct pci_slot *slot)h]h)}(h,void pci_destroy_slot(struct pci_slot *slot)h](h)}(hvoidh]hvoid}(hj)hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj)hhhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chMWubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)hhhj)hMWubj-)}(hpci_destroy_sloth]j3)}(hpci_destroy_sloth]hpci_destroy_slot}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj)hhhj)hMWubjN)}(h(struct pci_slot *slot)h]jT)}(hstruct pci_slot *sloth](jZ)}(hj]h]hstruct}(hj)hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj)ubj)}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)ubh)}(hhh]j3)}(hpci_sloth]hpci_slot}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j)}jj)sbc.pci_destroy_slotasbuh1hhj)ubj)}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj)ubj)}(hjh]h*}(hj+*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj3)}(hsloth]hslot}(hj8*hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj)ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj)hhhj)hMWubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj)hhhj)hMWubah}(h]j)ah ](jjeh"]h$]h&]jj)jhuh1hhj)hMWhj)hhubj)}(hhh]j)}(h(decrement refcount for physical PCI sloth]h(decrement refcount for physical PCI slot}(hjb*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chMWhj_*hhubah}(h]h ]h"]h$]h&]uh1jhj)hhhj)hMWubeh}(h]h ](jfunctioneh"]h$]h&]jjjjz*jjz*jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_slot *slot`` struct pci_slot to decrement **Description** ``struct`` pci_slot is refcounted, so destroying them is really easy; we just call kobject_put on its kobj and let our release methods do the rest.h](j)}(h**Parameters**h]j&)}(hj*h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj*ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chM[hj~*ubj<)}(hhh]jA)}(h7``struct pci_slot *slot`` struct pci_slot to decrement h](jG)}(h``struct pci_slot *slot``h]jM)}(hj*h]hstruct pci_slot *slot}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj*ubah}(h]h ]h"]h$]h&]uh1jFhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chMXhj*ubjc)}(hhh]j)}(hstruct pci_slot to decrementh]hstruct pci_slot to decrement}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*hMXhj*ubah}(h]h ]h"]h$]h&]uh1jbhj*ubeh}(h]h ]h"]h$]h&]uh1j@hj*hMXhj*ubah}(h]h ]h"]h$]h&]uh1j;hj~*ubj)}(h**Description**h]j&)}(hj*h]h Description}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj*ubah}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chMZhj~*ubj)}(h``struct`` pci_slot is refcounted, so destroying them is really easy; we just call kobject_put on its kobj and let our release methods do the rest.h](jM)}(h ``struct``h]hstruct}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj*ubh pci_slot is refcounted, so destroying them is really easy; we just call kobject_put on its kobj and let our release methods do the rest.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhU/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:37: ./drivers/pci/slot.chMYhj~*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_rebar_bytes_to_size (C function)c.pci_rebar_bytes_to_sizehNtauh1hhhhhhNhNubh)}(hhh](h)}(h'int pci_rebar_bytes_to_size (u64 bytes)h]h)}(h&int pci_rebar_bytes_to_size(u64 bytes)h](h)}(hinth]hint}(hj1+hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj-+hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKubj)}(h h]h }(hj@+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-+hhhj?+hKubj-)}(hpci_rebar_bytes_to_sizeh]j3)}(hpci_rebar_bytes_to_sizeh]hpci_rebar_bytes_to_size}(hjR+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjN+ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj-+hhhj?+hKubjN)}(h (u64 bytes)h]jT)}(h u64 bytesh](h)}(hhh]j3)}(hu64h]hu64}(hjq+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjn+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjs+modnameN classnameNjj)}j]j)}jjT+sbc.pci_rebar_bytes_to_sizeasbuh1hhjj+ubj)}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjj+ubj3)}(hbytesh]hbytes}(hj+hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjj+ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjf+ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj-+hhhj?+hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj)+hhhj?+hKubah}(h]j$+ah ](jjeh"]h$]h&]jj)jhuh1hhj?+hKhj&+hhubj)}(hhh]j)}(h%Convert size in bytes to PCI BAR Sizeh]h%Convert size in bytes to PCI BAR Size}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+hhubah}(h]h ]h"]h$]h&]uh1jhj&+hhhj?+hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj+jj+jjjuh1hhhhhhNhNubj)}(h**Parameters** ``u64 bytes`` size in bytes **Description** Convert size in bytes to encoded BAR Size in Resizable BAR Capability (PCIe r6.2, sec. 7.8.6.3). **Return** encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)h](j)}(h**Parameters**h]j&)}(hj+h]h Parameters}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj+ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+ubj<)}(hhh]jA)}(h``u64 bytes`` size in bytes h](jG)}(h ``u64 bytes``h]jM)}(hj ,h]h u64 bytes}(hj ,hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj,ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj,ubjc)}(hhh]j)}(h size in bytesh]h size in bytes}(hj#,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,hKhj ,ubah}(h]h ]h"]h$]h&]uh1jbhj,ubeh}(h]h ]h"]h$]h&]uh1j@hj,hKhj,ubah}(h]h ]h"]h$]h&]uh1j;hj+ubj)}(h**Description**h]j&)}(hjE,h]h Description}(hjG,hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjC,ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+ubj)}(h`Convert size in bytes to encoded BAR Size in Resizable BAR Capability (PCIe r6.2, sec. 7.8.6.3).h]h`Convert size in bytes to encoded BAR Size in Resizable BAR Capability (PCIe r6.2, sec. 7.8.6.3).}(hj[,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+ubj)}(h **Return**h]j&)}(hjl,h]hReturn}(hjn,hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjj,ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+ubj)}(h>encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)h]h>encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_rebar_size_to_bytes (C function)c.pci_rebar_size_to_byteshNtauh1hhhhhhNhNubh)}(hhh](h)}(h2resource_size_t pci_rebar_size_to_bytes (int size)h]h)}(h1resource_size_t pci_rebar_size_to_bytes(int size)h](h)}(hhh]j3)}(hresource_size_th]hresource_size_t}(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j)}jpci_rebar_size_to_bytessbc.pci_rebar_size_to_bytesasbuh1hhj,hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK)ubj)}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,hhhj,hK)ubj-)}(hpci_rebar_size_to_bytesh]j3)}(hj,h]hpci_rebar_size_to_bytes}(hj,hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj,hhhj,hK)ubjN)}(h (int size)h]jT)}(hint sizeh](h)}(hinth]hint}(hj-hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj,ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,ubj3)}(hsizeh]hsize}(hj-hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj,ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj,ubah}(h]h ]h"]h$]h&]jKjLuh1jMhj,hhhj,hK)ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj,hhhj,hK)ubah}(h]j,ah ](jjeh"]h$]h&]jj)jhuh1hhj,hK)hj,hhubj)}(hhh]j)}(h)Convert encoded BAR Size to size in bytesh]h)Convert encoded BAR Size to size in bytes}(hjI-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK)hjF-hhubah}(h]h ]h"]h$]h&]uh1jhj,hhhj,hK)ubeh}(h]h ](jfunctioneh"]h$]h&]jjjja-jja-jjjuh1hhhhhhNhNubj)}(h|**Parameters** ``int size`` encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB) **Return** BAR size in bytesh](j)}(h**Parameters**h]j&)}(hjk-h]h Parameters}(hjm-hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hji-ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK-hje-ubj<)}(hhh]jA)}(hL``int size`` encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB) h](jG)}(h ``int size``h]jM)}(hj-h]hint size}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj-ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK*hj-ubjc)}(hhh]j)}(h>encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)h]h>encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-hK*hj-ubah}(h]h ]h"]h$]h&]uh1jbhj-ubeh}(h]h ]h"]h$]h&]uh1j@hj-hK*hj-ubah}(h]h ]h"]h$]h&]uh1j;hje-ubj)}(h **Return**h]j&)}(hj-h]hReturn}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj-ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK,hje-ubj)}(hBAR size in bytesh]hBAR size in bytes}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chK,hje-ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،)pci_rebar_get_possible_sizes (C function)c.pci_rebar_get_possible_sizeshNtauh1hhhhhhNhNubh)}(hhh](h)}(h@u64 pci_rebar_get_possible_sizes (struct pci_dev *pdev, int bar)h]h)}(h?u64 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)h](h)}(hhh]j3)}(hu64h]hu64}(hj .hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj .ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]j)}jpci_rebar_get_possible_sizessbc.pci_rebar_get_possible_sizesasbuh1hhj.hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKcubj)}(h h]h }(hj/.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.hhhj..hKcubj-)}(hpci_rebar_get_possible_sizesh]j3)}(hj+.h]hpci_rebar_get_possible_sizes}(hjA.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=.ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj.hhhj..hKcubjN)}(h(struct pci_dev *pdev, int bar)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj\.hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjX.ubj)}(h h]h }(hji.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjX.ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjz.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjw.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|.modnameN classnameNjj)}j]j).c.pci_rebar_get_possible_sizesasbuh1hhjX.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjX.ubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX.ubj3)}(hpdevh]hpdev}(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjX.ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjT.ubjT)}(hint barh](h)}(hinth]hint}(hj.hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj.ubj)}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.ubj3)}(hbarh]hbar}(hj.hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj.ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjT.ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj.hhhj..hKcubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj.hhhj..hKcubah}(h]j-ah ](jjeh"]h$]h&]jj)jhuh1hhj..hKchj-hhubj)}(hhh]j)}(h$get possible sizes for Resizable BARh]h$get possible sizes for Resizable BAR}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKchj/hhubah}(h]h ]h"]h$]h&]uh1jhj-hhhj..hKcubeh}(h]h ](jfunctioneh"]h$]h&]jjjj*/jj*/jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` PCI device ``int bar`` BAR to query **Description** Get the possible sizes of a resizable BAR as bitmask. **Return** A bitmask of possible sizes (bit 0=1MB, bit 31=128TB), or ``0`` if BAR isn't resizable.h](j)}(h**Parameters**h]j&)}(hj4/h]h Parameters}(hj6/hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj2/ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKghj./ubj<)}(hhh](jA)}(h$``struct pci_dev *pdev`` PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjS/h]hstruct pci_dev *pdev}(hjU/hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjQ/ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKdhjM/ubjc)}(hhh]j)}(h PCI deviceh]h PCI device}(hjl/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh/hKdhji/ubah}(h]h ]h"]h$]h&]uh1jbhjM/ubeh}(h]h ]h"]h$]h&]uh1j@hjh/hKdhjJ/ubjA)}(h``int bar`` BAR to query h](jG)}(h ``int bar``h]jM)}(hj/h]hint bar}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj/ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKehj/ubjc)}(hhh]j)}(h BAR to queryh]h BAR to query}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/hKehj/ubah}(h]h ]h"]h$]h&]uh1jbhj/ubeh}(h]h ]h"]h$]h&]uh1j@hj/hKehjJ/ubeh}(h]h ]h"]h$]h&]uh1j;hj./ubj)}(h**Description**h]j&)}(hj/h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKghj./ubj)}(h5Get the possible sizes of a resizable BAR as bitmask.h]h5Get the possible sizes of a resizable BAR as bitmask.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKfhj./ubj)}(h **Return**h]j&)}(hj/h]hReturn}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj/ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhhj./ubj)}(hWA bitmask of possible sizes (bit 0=1MB, bit 31=128TB), or ``0`` if BAR isn't resizable.h](h:A bitmask of possible sizes (bit 0=1MB, bit 31=128TB), or }(hj0hhhNhNubjM)}(h``0``h]h0}(hj 0hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj0ubh if BAR isn’t resizable.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKihj./ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pci_rebar_size_supported (C function)c.pci_rebar_size_supportedhNtauh1hhhhhhNhNubh)}(hhh](h)}(hGbool pci_rebar_size_supported (struct pci_dev *pdev, int bar, int size)h]h)}(hFbool pci_rebar_size_supported(struct pci_dev *pdev, int bar, int size)h](h)}(hj'4h]hbool}(hjE0hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjA0hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKubj)}(h h]h }(hjS0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjA0hhhjR0hKubj-)}(hpci_rebar_size_supportedh]j3)}(hpci_rebar_size_supportedh]hpci_rebar_size_supported}(hje0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hja0ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjA0hhhjR0hKubjN)}(h)(struct pci_dev *pdev, int bar, int size)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj0hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj}0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}0ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jjg0sbc.pci_rebar_size_supportedasbuh1hhj}0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}0ubj3)}(hpdevh]hpdev}(hj0hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}0ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjy0ubjT)}(hint barh](h)}(hinth]hint}(hj0hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj0ubj)}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj0ubj3)}(hbarh]hbar}(hj1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj0ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjy0ubjT)}(hint sizeh](h)}(hinth]hint}(hj(1hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj$1ubj)}(h h]h }(hj61hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj$1ubj3)}(hsizeh]hsize}(hjD1hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj$1ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjy0ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjA0hhhjR0hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj=0hhhjR0hKubah}(h]j80ah ](jjeh"]h$]h&]jj)jhuh1hhjR0hKhj:0hhubj)}(hhh]j)}(h"check if size is supported for BARh]h"check if size is supported for BAR}(hjn1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhjk1hhubah}(h]h ]h"]h$]h&]uh1jhj:0hhhjR0hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1jj1jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` PCI device ``int bar`` BAR to check ``int size`` encoded size as defined in the PCIe spec (0=1MB, 31=128TB) **Return** ``true`` if **bar** is resizable and **size** is supported, otherwise ``false``.h](j)}(h**Parameters**h]j&)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj1ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj1ubj<)}(hhh](jA)}(h$``struct pci_dev *pdev`` PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj1h]hstruct pci_dev *pdev}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj1ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj1ubjc)}(hhh]j)}(h PCI deviceh]h PCI device}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1hKhj1ubah}(h]h ]h"]h$]h&]uh1jbhj1ubeh}(h]h ]h"]h$]h&]uh1j@hj1hKhj1ubjA)}(h``int bar`` BAR to check h](jG)}(h ``int bar``h]jM)}(hj1h]hint bar}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj1ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj1ubjc)}(hhh]j)}(h BAR to checkh]h BAR to check}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1hKhj1ubah}(h]h ]h"]h$]h&]uh1jbhj1ubeh}(h]h ]h"]h$]h&]uh1j@hj1hKhj1ubjA)}(hH``int size`` encoded size as defined in the PCIe spec (0=1MB, 31=128TB) h](jG)}(h ``int size``h]jM)}(hj!2h]hint size}(hj#2hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj2ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj2ubjc)}(hhh]j)}(h:encoded size as defined in the PCIe spec (0=1MB, 31=128TB)h]h:encoded size as defined in the PCIe spec (0=1MB, 31=128TB)}(hj:2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj62hKhj72ubah}(h]h ]h"]h$]h&]uh1jbhj2ubeh}(h]h ]h"]h$]h&]uh1j@hj62hKhj1ubeh}(h]h ]h"]h$]h&]uh1j;hj1ubj)}(h **Return**h]j&)}(hj\2h]hReturn}(hj^2hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZ2ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj1ubj)}(hP``true`` if **bar** is resizable and **size** is supported, otherwise ``false``.h](jM)}(h``true``h]htrue}(hjv2hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjr2ubh if }(hjr2hhhNhNubj&)}(h**bar**h]hbar}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjr2ubh is resizable and }(hjr2hhhNhNubj&)}(h**size**h]hsize}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjr2ubh is supported, otherwise }(hjr2hhhNhNubjM)}(h ``false``h]hfalse}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjr2ubh.}(hjr2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_rebar_get_max_size (C function)c.pci_rebar_get_max_sizehNtauh1hhhhhhNhNubh)}(hhh](h)}(h:int pci_rebar_get_max_size (struct pci_dev *pdev, int bar)h]h)}(h9int pci_rebar_get_max_size(struct pci_dev *pdev, int bar)h](h)}(hinth]hint}(hj2hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj2hhhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKubj)}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2hhhj2hKubj-)}(hpci_rebar_get_max_sizeh]j3)}(hpci_rebar_get_max_sizeh]hpci_rebar_get_max_size}(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj2hhhj2hKubjN)}(h(struct pci_dev *pdev, int bar)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj"3hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj3ubj)}(h h]h }(hj/3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj@3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=3ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjB3modnameN classnameNjj)}j]j)}jj3sbc.pci_rebar_get_max_sizeasbuh1hhj3ubj)}(h h]h }(hj`3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3ubj)}(hjh]h*}(hjn3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj3)}(hpdevh]hpdev}(hj{3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj3ubjT)}(hint barh](h)}(hinth]hint}(hj3hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj3ubj3)}(hbarh]hbar}(hj3hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj3ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj3ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj2hhhj2hKubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj2hhhj2hKubah}(h]j2ah ](jjeh"]h$]h&]jj)jhuh1hhj2hKhj2hhubj)}(hhh]j)}(h'get the maximum supported size of a BARh]h'get the maximum supported size of a BAR}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj3hhubah}(h]h ]h"]h$]h&]uh1jhj2hhhj2hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj3jj3jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *pdev`` PCI device ``int bar`` BAR to query **Description** Get the largest supported size of a resizable BAR as a size. **Return** the encoded maximum BAR size as defined in the PCIe spec (0=1MB, 31=128TB), or ``-NOENT`` on error.h](j)}(h**Parameters**h]j&)}(hj3h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj3ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj3ubj<)}(hhh](jA)}(h$``struct pci_dev *pdev`` PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj4h]hstruct pci_dev *pdev}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj4ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj4ubjc)}(hhh]j)}(h PCI deviceh]h PCI device}(hj44hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj04hKhj14ubah}(h]h ]h"]h$]h&]uh1jbhj4ubeh}(h]h ]h"]h$]h&]uh1j@hj04hKhj4ubjA)}(h``int bar`` BAR to query h](jG)}(h ``int bar``h]jM)}(hjT4h]hint bar}(hjV4hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjR4ubah}(h]h ]h"]h$]h&]uh1jFhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhjN4ubjc)}(hhh]j)}(h BAR to queryh]h BAR to query}(hjm4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji4hKhjj4ubah}(h]h ]h"]h$]h&]uh1jbhjN4ubeh}(h]h ]h"]h$]h&]uh1j@hji4hKhj4ubeh}(h]h ]h"]h$]h&]uh1j;hj3ubj)}(h**Description**h]j&)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj4ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:40: ./drivers/pci/rebar.chKhj3ubj)}(hhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj=ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj=hhhj=hMubjN)}(h)(struct pci_dev *pdev, void __iomem *rom)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hj>hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj>ubj)}(h h]h }(hj*>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj;>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj8>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=>modnameN classnameNjj)}j]j)}jj>sbc.pci_unmap_romasbuh1hhj>ubj)}(h h]h }(hj[>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubj)}(hjh]h*}(hji>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj3)}(hpdevh]hpdev}(hjv>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>ubjT)}(hvoid __iomem *romh](h)}(hvoidh]hvoid}(hj>hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj>ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubh__iomem}(hj>hhhNhNubj)}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubj)}(hjh]h*}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj3)}(hromh]hrom}(hj>hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj>ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj=hhhj=hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj=hhhj=hMubah}(h]j=ah ](jjeh"]h$]h&]jj)jhuh1hhj=hMhj=hhubj)}(hhh]j)}(hunmap the ROM from kernel spaceh]hunmap the ROM from kernel space}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chMhj>hhubah}(h]h ]h"]h$]h&]uh1jhj=hhhj=hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj ?jj ?jjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *pdev`` pointer to pci device struct ``void __iomem *rom`` virtual address of the previous mapping **Description** Remove a mapping of a previously mapped ROMh](j)}(h**Parameters**h]j&)}(hj?h]h Parameters}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj?ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chM hj?ubj<)}(hhh](jA)}(h6``struct pci_dev *pdev`` pointer to pci device struct h](jG)}(h``struct pci_dev *pdev``h]jM)}(hj5?h]hstruct pci_dev *pdev}(hj7?hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj3?ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chMhj/?ubjc)}(hhh]j)}(hpointer to pci device structh]hpointer to pci device struct}(hjN?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ?hMhjK?ubah}(h]h ]h"]h$]h&]uh1jbhj/?ubeh}(h]h ]h"]h$]h&]uh1j@hjJ?hMhj,?ubjA)}(h>``void __iomem *rom`` virtual address of the previous mapping h](jG)}(h``void __iomem *rom``h]jM)}(hjn?h]hvoid __iomem *rom}(hjp?hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjl?ubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chMhjh?ubjc)}(hhh]j)}(h'virtual address of the previous mappingh]h'virtual address of the previous mapping}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?hMhj?ubah}(h]h ]h"]h$]h&]uh1jbhjh?ubeh}(h]h ]h"]h$]h&]uh1j@hj?hMhj,?ubeh}(h]h ]h"]h$]h&]uh1j;hj?ubj)}(h**Description**h]j&)}(hj?h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj?ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chM hj?ubj)}(h+Remove a mapping of a previously mapped ROMh]h+Remove a mapping of a previously mapped ROM}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:43: ./drivers/pci/rom.chMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_iov_get_pf_drvdata (C function)c.pci_iov_get_pf_drvdatahNtauh1hhhhhhNhNubh)}(hhh](h)}(hQvoid * pci_iov_get_pf_drvdata (struct pci_dev *dev, struct pci_driver *pf_driver)h]h)}(hOvoid *pci_iov_get_pf_drvdata(struct pci_dev *dev, struct pci_driver *pf_driver)h](h)}(hvoidh]hvoid}(hj?hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj?hhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK7ubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?hhhj?hK7ubj)}(hjh]h*}(hj @hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hK7ubj-)}(hpci_iov_get_pf_drvdatah]j3)}(hpci_iov_get_pf_drvdatah]hpci_iov_get_pf_drvdata}(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj?hhhj?hK7ubjN)}(h3(struct pci_dev *dev, struct pci_driver *pf_driver)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hj8@hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj4@ubj)}(h h]h }(hjE@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4@ubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjV@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjS@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjX@modnameN classnameNjj)}j]j)}jj@sbc.pci_iov_get_pf_drvdataasbuh1hhj4@ubj)}(h h]h }(hjv@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj4@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4@ubj3)}(hdevh]hdev}(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj4@ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj0@ubjT)}(hstruct pci_driver *pf_driverh](jZ)}(hj]h]hstruct}(hj@hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubh)}(hhh]j3)}(h pci_driverh]h pci_driver}(hj@hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]jr@c.pci_iov_get_pf_drvdataasbuh1hhj@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj3)}(h pf_driverh]h pf_driver}(hjAhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj@ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj0@ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj?hhhj?hK7ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj?hhhj?hK7ubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1hhj?hK7hj?hhubj)}(hhh]j)}(hReturn the drvdata of a PFh]hReturn the drvdata of a PF}(hj+AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK7hj(Ahhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hK7ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjCAjjCAjjjuh1hhhhhhNhNubj)}(hXJ**Parameters** ``struct pci_dev *dev`` VF pci_dev ``struct pci_driver *pf_driver`` Device driver required to own the PF **Description** This must be called from a context that ensures that a VF driver is attached. The value returned is invalid once the VF driver completes its remove() callback. Locking is achieved by the driver core. A VF driver cannot be probed until pci_enable_sriov() is called and pci_disable_sriov() does not return until all VF drivers have completed their remove(). The PF driver must call pci_disable_sriov() before it begins to destroy the drvdata.h](j)}(h**Parameters**h]j&)}(hjMAh]h Parameters}(hjOAhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjKAubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK;hjGAubj<)}(hhh](jA)}(h#``struct pci_dev *dev`` VF pci_dev h](jG)}(h``struct pci_dev *dev``h]jM)}(hjlAh]hstruct pci_dev *dev}(hjnAhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjAubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK8hjfAubjc)}(hhh]j)}(h VF pci_devh]h VF pci_dev}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAhK8hjAubah}(h]h ]h"]h$]h&]uh1jbhjfAubeh}(h]h ]h"]h$]h&]uh1j@hjAhK8hjcAubjA)}(hF``struct pci_driver *pf_driver`` Device driver required to own the PF h](jG)}(h ``struct pci_driver *pf_driver``h]jM)}(hjAh]hstruct pci_driver *pf_driver}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjAubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK9hjAubjc)}(hhh]j)}(h$Device driver required to own the PFh]h$Device driver required to own the PF}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAhK9hjAubah}(h]h ]h"]h$]h&]uh1jbhjAubeh}(h]h ]h"]h$]h&]uh1j@hjAhK9hjcAubeh}(h]h ]h"]h$]h&]uh1j;hjGAubj)}(h**Description**h]j&)}(hjAh]h Description}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjAubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK;hjGAubj)}(hThis must be called from a context that ensures that a VF driver is attached. The value returned is invalid once the VF driver completes its remove() callback.h]hThis must be called from a context that ensures that a VF driver is attached. The value returned is invalid once the VF driver completes its remove() callback.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK:hjGAubj)}(hLocking is achieved by the driver core. A VF driver cannot be probed until pci_enable_sriov() is called and pci_disable_sriov() does not return until all VF drivers have completed their remove().h]hLocking is achieved by the driver core. A VF driver cannot be probed until pci_enable_sriov() is called and pci_disable_sriov() does not return until all VF drivers have completed their remove().}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chK>hjGAubj)}(hTThe PF driver must call pci_disable_sriov() before it begins to destroy the drvdata.h]hTThe PF driver must call pci_disable_sriov() before it begins to destroy the drvdata.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chKBhjGAubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_enable_sriov (C function)c.pci_enable_sriovhNtauh1hhhhhhNhNubh)}(hhh](h)}(h9int pci_enable_sriov (struct pci_dev *dev, int nr_virtfn)h]h)}(h8int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)h](h)}(hinth]hint}(hjCBhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj?BhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjRBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?BhhhjQBhMubj-)}(hpci_enable_sriovh]j3)}(hpci_enable_sriovh]hpci_enable_sriov}(hjdBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`Bubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj?BhhhjQBhMubjN)}(h$(struct pci_dev *dev, int nr_virtfn)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjBhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj|Bubj)}(h h]h }(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|Bubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]j)}jjfBsbc.pci_enable_sriovasbuh1hhj|Bubj)}(h h]h }(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|Bubj)}(hjh]h*}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|Bubj3)}(hdevh]hdev}(hjBhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|Bubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjxBubjT)}(h int nr_virtfnh](h)}(hinth]hint}(hjBhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjBubj)}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjBubj3)}(h nr_virtfnh]h nr_virtfn}(hjChhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjxBubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj?BhhhjQBhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj;BhhhjQBhMubah}(h]j6Bah ](jjeh"]h$]h&]jj)jhuh1hhjQBhMhj8Bhhubj)}(hhh]j)}(henable the SR-IOV capabilityh]henable the SR-IOV capability}(hj8ChhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj5Chhubah}(h]h ]h"]h$]h&]uh1jhj8BhhhjQBhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjPCjjPCjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device ``int nr_virtfn`` number of virtual functions to enable **Description** Returns 0 on success, or negative on failure.h](j)}(h**Parameters**h]j&)}(hjZCh]h Parameters}(hj\ChhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjXCubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjTCubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjyCh]hstruct pci_dev *dev}(hj{ChhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjwCubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjsCubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjChMhjCubah}(h]h ]h"]h$]h&]uh1jbhjsCubeh}(h]h ]h"]h$]h&]uh1j@hjChMhjpCubjA)}(h8``int nr_virtfn`` number of virtual functions to enable h](jG)}(h``int nr_virtfn``h]jM)}(hjCh]h int nr_virtfn}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjCubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjCubjc)}(hhh]j)}(h%number of virtual functions to enableh]h%number of virtual functions to enable}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjChMhjCubah}(h]h ]h"]h$]h&]uh1jbhjCubeh}(h]h ]h"]h$]h&]uh1j@hjChMhjpCubeh}(h]h ]h"]h$]h&]uh1j;hjTCubj)}(h**Description**h]j&)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjCubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjTCubj)}(h-Returns 0 on success, or negative on failure.h]h-Returns 0 on success, or negative on failure.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjTCubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_disable_sriov (C function)c.pci_disable_sriovhNtauh1hhhhhhNhNubh)}(hhh](h)}(h,void pci_disable_sriov (struct pci_dev *dev)h]h)}(h+void pci_disable_sriov(struct pci_dev *dev)h](h)}(hvoidh]hvoid}(hj2DhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj.DhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjADhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj.Dhhhj@DhMubj-)}(hpci_disable_sriovh]j3)}(hpci_disable_sriovh]hpci_disable_sriov}(hjSDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjODubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj.Dhhhj@DhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjoDhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjkDubj)}(h h]h }(hj|DhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjkDubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jjUDsbc.pci_disable_sriovasbuh1hhjkDubj)}(h h]h }(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjkDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjkDubj3)}(hdevh]hdev}(hjDhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjkDubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjgDubah}(h]h ]h"]h$]h&]jKjLuh1jMhj.Dhhhj@DhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj*Dhhhj@DhMubah}(h]j%Dah ](jjeh"]h$]h&]jj)jhuh1hhj@DhMhj'Dhhubj)}(hhh]j)}(hdisable the SR-IOV capabilityh]hdisable the SR-IOV capability}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjDhhubah}(h]h ]h"]h$]h&]uh1jhj'Dhhhj@DhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj Ejj Ejjjuh1hhhhhhNhNubj)}(h8**Parameters** ``struct pci_dev *dev`` the PCI deviceh](j)}(h**Parameters**h]j&)}(hjEh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjEubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjEubj<)}(hhh]jA)}(h&``struct pci_dev *dev`` the PCI deviceh](jG)}(h``struct pci_dev *dev``h]jM)}(hj3Eh]hstruct pci_dev *dev}(hj5EhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj1Eubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj-Eubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjLEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIEubah}(h]h ]h"]h$]h&]uh1jbhj-Eubeh}(h]h ]h"]h$]h&]uh1j@hjHEhMhj*Eubah}(h]h ]h"]h$]h&]uh1j;hjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_num_vf (C function) c.pci_num_vfhNtauh1hhhhhhNhNubh)}(hhh](h)}(h$int pci_num_vf (struct pci_dev *dev)h]h)}(h#int pci_num_vf(struct pci_dev *dev)h](h)}(hinth]hint}(hjEhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjEhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEhhhjEhMubj-)}(h pci_num_vfh]j3)}(h pci_num_vfh]h pci_num_vf}(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjEhhhjEhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjEhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjEhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j)}jjEsb c.pci_num_vfasbuh1hhjEubj)}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj3)}(hdevh]hdev}(hj#FhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjEubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjEubah}(h]h ]h"]h$]h&]jKjLuh1jMhjEhhhjEhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjEhhhjEhMubah}(h]jEah ](jjeh"]h$]h&]jj)jhuh1hhjEhMhjEhhubj)}(hhh]j)}(h?return number of VFs associated with a PF device_release_driverh]h?return number of VFs associated with a PF device_release_driver}(hjMFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjJFhhubah}(h]h ]h"]h$]h&]uh1jhjEhhhjEhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjeFjjeFjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device **Description** Returns number of VFs, or 0 if SR-IOV is not enabled.h](j)}(h**Parameters**h]j&)}(hjoFh]h Parameters}(hjqFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjmFubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjiFubj<)}(hhh]jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjFh]hstruct pci_dev *dev}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjFubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjFubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFhMhjFubah}(h]h ]h"]h$]h&]uh1jbhjFubeh}(h]h ]h"]h$]h&]uh1j@hjFhMhjFubah}(h]h ]h"]h$]h&]uh1j;hjiFubj)}(h**Description**h]j&)}(hjFh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjFubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjiFubj)}(h5Returns number of VFs, or 0 if SR-IOV is not enabled.h]h5Returns number of VFs, or 0 if SR-IOV is not enabled.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjiFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_vfs_assigned (C function)c.pci_vfs_assignedhNtauh1hhhhhhNhNubh)}(hhh](h)}(h*int pci_vfs_assigned (struct pci_dev *dev)h]h)}(h)int pci_vfs_assigned(struct pci_dev *dev)h](h)}(hinth]hint}(hjGhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj GhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj GhhhjGhMubj-)}(hpci_vfs_assignedh]j3)}(hpci_vfs_assignedh]hpci_vfs_assigned}(hj/GhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+Gubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj GhhhjGhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjKGhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjGGubj)}(h h]h }(hjXGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGGubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjiGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjfGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjkGmodnameN classnameNjj)}j]j)}jj1Gsbc.pci_vfs_assignedasbuh1hhjGGubj)}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGGubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGGubj3)}(hdevh]hdev}(hjGhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjGGubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjCGubah}(h]h ]h"]h$]h&]jKjLuh1jMhj GhhhjGhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjGhhhjGhMubah}(h]jGah ](jjeh"]h$]h&]jj)jhuh1hhjGhMhjGhhubj)}(hhh]j)}(h-returns number of VFs are assigned to a guesth]h-returns number of VFs are assigned to a guest}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjGhhubah}(h]h ]h"]h$]h&]uh1jhjGhhhjGhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjGjjGjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI device **Description** Returns number of VFs belonging to this device that are assigned to a guest. If device is not a physical function returns 0.h](j)}(h**Parameters**h]j&)}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjGubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjGubj<)}(hhh]jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjHh]hstruct pci_dev *dev}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj Hubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj Hubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hj(HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$HhMhj%Hubah}(h]h ]h"]h$]h&]uh1jbhj Hubeh}(h]h ]h"]h$]h&]uh1j@hj$HhMhjHubah}(h]h ]h"]h$]h&]uh1j;hjGubj)}(h**Description**h]j&)}(hjJHh]h Description}(hjLHhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjHHubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjGubj)}(h|Returns number of VFs belonging to this device that are assigned to a guest. If device is not a physical function returns 0.h]h|Returns number of VFs belonging to this device that are assigned to a guest. If device is not a physical function returns 0.}(hj`HhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjGubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_sriov_set_totalvfs (C function)c.pci_sriov_set_totalvfshNtauh1hhhhhhNhNubh)}(hhh](h)}(hIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCImodnameN classnameNjj)}j]jIc.pci_sriov_set_totalvfsasbuh1hhj:Iubj)}(h h]h }(hj_IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:Iubj3)}(hnumvfsh]hnumvfs}(hjmIhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:Iubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjHubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjHhhhjHhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjHhhhjHhMubah}(h]jHah ](jjeh"]h$]h&]jj)jhuh1hhjHhMhjHhhubj)}(hhh]h bullet_list)}(hhh]h list_item)}(hreduce the TotalVFs availableh]j)}(hjIh]hreduce the TotalVFs available}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubah}(h]h ]h"]h$]h&]uh1jIhjIhhhjIhNubah}(h]h ]h"]h$]h&]bullet-uh1jIhjIhMhjIhhubah}(h]h ]h"]h$]h&]uh1jhjHhhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjIjjIjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the PCI PF device ``u16 numvfs`` number that should be used for TotalVFs supported **Description** Should be called from PF driver's probe routine with device's mutex held. Returns 0 if PF is an SRIOV-capable device and value of numvfs valid. If not a PF return -ENOSYS; if numvfs is invalid return -EINVAL; if VFs already enabled, return -EBUSY.h](j)}(h**Parameters**h]j&)}(hjIh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjIubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubj<)}(hhh](jA)}(h*``struct pci_dev *dev`` the PCI PF device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjIh]hstruct pci_dev *dev}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubjc)}(hhh]j)}(hthe PCI PF deviceh]hthe PCI PF device}(hj JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJhMhjJubah}(h]h ]h"]h$]h&]uh1jbhjIubeh}(h]h ]h"]h$]h&]uh1j@hjJhMhjIubjA)}(hA``u16 numvfs`` number that should be used for TotalVFs supported h](jG)}(h``u16 numvfs``h]jM)}(hj)Jh]h u16 numvfs}(hj+JhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj'Jubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj#Jubjc)}(hhh]j)}(h1number that should be used for TotalVFs supportedh]h1number that should be used for TotalVFs supported}(hjBJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>JhMhj?Jubah}(h]h ]h"]h$]h&]uh1jbhj#Jubeh}(h]h ]h"]h$]h&]uh1j@hj>JhMhjIubeh}(h]h ]h"]h$]h&]uh1j;hjIubj)}(h**Description**h]j&)}(hjdJh]h Description}(hjfJhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjbJubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubj)}(hIShould be called from PF driver's probe routine with device's mutex held.h]hMShould be called from PF driver’s probe routine with device’s mutex held.}(hjzJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubj)}(hReturns 0 if PF is an SRIOV-capable device and value of numvfs valid. If not a PF return -ENOSYS; if numvfs is invalid return -EINVAL; if VFs already enabled, return -EBUSY.h]hReturns 0 if PF is an SRIOV-capable device and value of numvfs valid. If not a PF return -ENOSYS; if numvfs is invalid return -EINVAL; if VFs already enabled, return -EBUSY.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjIubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،#pci_sriov_get_totalvfs (C function)c.pci_sriov_get_totalvfshNtauh1hhhhhhNhNubh)}(hhh](h)}(h0int pci_sriov_get_totalvfs (struct pci_dev *dev)h]h)}(h/int pci_sriov_get_totalvfs(struct pci_dev *dev)h](h)}(hinth]hint}(hjJhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjJhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJhhhjJhMubj-)}(hpci_sriov_get_totalvfsh]j3)}(hpci_sriov_get_totalvfsh]hpci_sriov_get_totalvfs}(hjJhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjJhhhjJhMubjN)}(h(struct pci_dev *dev)h]jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjJhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjJubj)}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKmodnameN classnameNjj)}j]j)}jjJsbc.pci_sriov_get_totalvfsasbuh1hhjJubj)}(h h]h }(hj3KhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJubj)}(hjh]h*}(hjAKhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjJubj3)}(hdevh]hdev}(hjNKhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjJubah}(h]h ]h"]h$]h&]jKjLuh1jMhjJhhhjJhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjJhhhjJhMubah}(h]jJah ](jjeh"]h$]h&]jj)jhuh1hhjJhMhjJhhubj)}(hhh]jI)}(hhh]jI)}(h&get total VFs supported on this deviceh]j)}(hj}Kh]h&get total VFs supported on this device}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj{Kubah}(h]h ]h"]h$]h&]uh1jIhjxKhhhjKhNubah}(h]h ]h"]h$]h&]jIjIuh1jIhjKhMhjuKhhubah}(h]h ]h"]h$]h&]uh1jhjJhhhjJhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjKjjKjjjuh1hhhhhhNhNubj)}(h**Parameters** ``struct pci_dev *dev`` the PCI PF device **Description** For a PCIe device with SRIOV support, return the PCIe SRIOV capability value of TotalVFs or the value of driver_max_VFs if the driver reduced it. Otherwise 0.h](j)}(h**Parameters**h]j&)}(hjKh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjKubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjKubj<)}(hhh]jA)}(h*``struct pci_dev *dev`` the PCI PF device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjKh]hstruct pci_dev *dev}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjKubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjKubjc)}(hhh]j)}(hthe PCI PF deviceh]hthe PCI PF device}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKhMhjKubah}(h]h ]h"]h$]h&]uh1jbhjKubeh}(h]h ]h"]h$]h&]uh1j@hjKhMhjKubah}(h]h ]h"]h$]h&]uh1j;hjKubj)}(h**Description**h]j&)}(hjLh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjLubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjKubj)}(hFor a PCIe device with SRIOV support, return the PCIe SRIOV capability value of TotalVFs or the value of driver_max_VFs if the driver reduced it. Otherwise 0.h]hFor a PCIe device with SRIOV support, return the PCIe SRIOV capability value of TotalVFs or the value of driver_max_VFs if the driver reduced it. Otherwise 0.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،'pci_sriov_configure_simple (C function)c.pci_sriov_configure_simplehNtauh1hhhhhhNhNubh)}(hhh](h)}(hCint pci_sriov_configure_simple (struct pci_dev *dev, int nr_virtfn)h]h)}(hBint pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn)h](h)}(hinth]hint}(hjKLhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjGLhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMubj)}(h h]h }(hjZLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjGLhhhjYLhMubj-)}(hpci_sriov_configure_simpleh]j3)}(hpci_sriov_configure_simpleh]hpci_sriov_configure_simple}(hjlLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhLubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjGLhhhjYLhMubjN)}(h$(struct pci_dev *dev, int nr_virtfn)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjLhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjLubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjLmodnameN classnameNjj)}j]j)}jjnLsbc.pci_sriov_configure_simpleasbuh1hhjLubj)}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj3)}(hdevh]hdev}(hjLhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjLubjT)}(h int nr_virtfnh](h)}(hinth]hint}(hjLhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjLubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjLubj3)}(h nr_virtfnh]h nr_virtfn}(hjMhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjLubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjLubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjGLhhhjYLhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjCLhhhjYLhMubah}(h]j>Lah ](jjeh"]h$]h&]jj)jhuh1hhjYLhMhj@Lhhubj)}(hhh]j)}(hhelper to configure SR-IOVh]hhelper to configure SR-IOV}(hj@MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj=Mhhubah}(h]h ]h"]h$]h&]uh1jhj@LhhhjYLhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjXMjjXMjjjuh1hhhhhhNhNubj)}(hX;**Parameters** ``struct pci_dev *dev`` the PCI device ``int nr_virtfn`` number of virtual functions to enable, 0 to disable **Description** Enable or disable SR-IOV for devices that don't require any PF setup before enabling SR-IOV. Return value is negative on error, or number of VFs allocated on success.h](j)}(h**Parameters**h]j&)}(hjbMh]h Parameters}(hjdMhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj`Mubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj\Mubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjMh]hstruct pci_dev *dev}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjMubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj{Mubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMhMhjMubah}(h]h ]h"]h$]h&]uh1jbhj{Mubeh}(h]h ]h"]h$]h&]uh1j@hjMhMhjxMubjA)}(hF``int nr_virtfn`` number of virtual functions to enable, 0 to disable h](jG)}(h``int nr_virtfn``h]jM)}(hjMh]h int nr_virtfn}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjMubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhjMubjc)}(hhh]j)}(h3number of virtual functions to enable, 0 to disableh]h3number of virtual functions to enable, 0 to disable}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMhMhjMubah}(h]h ]h"]h$]h&]uh1jbhjMubeh}(h]h ]h"]h$]h&]uh1j@hjMhMhjxMubeh}(h]h ]h"]h$]h&]uh1j;hj\Mubj)}(h**Description**h]j&)}(hjMh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjMubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj\Mubj)}(hEnable or disable SR-IOV for devices that don't require any PF setup before enabling SR-IOV. Return value is negative on error, or number of VFs allocated on success.h]hEnable or disable SR-IOV for devices that don’t require any PF setup before enabling SR-IOV. Return value is negative on error, or number of VFs allocated on success.}(hj NhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMhj\Mubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،$pci_iov_vf_bar_set_size (C function)c.pci_iov_vf_bar_set_sizehNtauh1hhhhhhNhNubh)}(hhh](h)}(hFint pci_iov_vf_bar_set_size (struct pci_dev *dev, int resno, int size)h]h)}(hEint pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size)h](h)}(hinth]hint}(hj:NhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj6NhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM4ubj)}(h h]h }(hjINhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj6NhhhjHNhM4ubj-)}(hpci_iov_vf_bar_set_sizeh]j3)}(hpci_iov_vf_bar_set_sizeh]hpci_iov_vf_bar_set_size}(hj[NhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjWNubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj6NhhhjHNhM4ubjN)}(h*(struct pci_dev *dev, int resno, int size)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjwNhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjsNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjsNubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjNhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]j)}jj]Nsbc.pci_iov_vf_bar_set_sizeasbuh1hhjsNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjsNubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsNubj3)}(hdevh]hdev}(hjNhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjsNubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjoNubjT)}(h int resnoh](h)}(hinth]hint}(hjNhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjNubj)}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjNubj3)}(hresnoh]hresno}(hjOhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjNubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjoNubjT)}(hint sizeh](h)}(hinth]hint}(hjOhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjOubj)}(h h]h }(hj,OhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjOubj3)}(hsizeh]hsize}(hj:OhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjOubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjoNubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj6NhhhjHNhM4ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj2NhhhjHNhM4ubah}(h]j-Nah ](jjeh"]h$]h&]jj)jhuh1hhjHNhM4hj/Nhhubj)}(hhh]j)}(hset a new size for a VF BARh]hset a new size for a VF BAR}(hjdOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM4hjaOhhubah}(h]h ]h"]h$]h&]uh1jhj/NhhhjHNhM4ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj|Ojj|Ojjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct pci_dev *dev`` the PCI device ``int resno`` the resource number ``int size`` new size as defined in the spec (0=1MB, 31=128TB) **Description** Set the new size of a VF BAR that supports VF resizable BAR capability. Unlike pci_resize_resource(), this does not cause the resource that reserves the MMIO space (originally up to total_VFs) to be resized, which means that following calls to pci_enable_sriov() can fail if the resources no longer fit. **Return** 0 on success, or negative on failure.h](j)}(h**Parameters**h]j&)}(hjOh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjOubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM8hjOubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjOh]hstruct pci_dev *dev}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjOubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM5hjOubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOhM5hjOubah}(h]h ]h"]h$]h&]uh1jbhjOubeh}(h]h ]h"]h$]h&]uh1j@hjOhM5hjOubjA)}(h"``int resno`` the resource number h](jG)}(h ``int resno``h]jM)}(hjOh]h int resno}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjOubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM6hjOubjc)}(hhh]j)}(hthe resource numberh]hthe resource number}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOhM6hjOubah}(h]h ]h"]h$]h&]uh1jbhjOubeh}(h]h ]h"]h$]h&]uh1j@hjOhM6hjOubjA)}(h?``int size`` new size as defined in the spec (0=1MB, 31=128TB) h](jG)}(h ``int size``h]jM)}(hjPh]hint size}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjPubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM7hjPubjc)}(hhh]j)}(h1new size as defined in the spec (0=1MB, 31=128TB)h]h1new size as defined in the spec (0=1MB, 31=128TB)}(hj0PhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,PhM7hj-Pubah}(h]h ]h"]h$]h&]uh1jbhjPubeh}(h]h ]h"]h$]h&]uh1j@hj,PhM7hjOubeh}(h]h ]h"]h$]h&]uh1j;hjOubj)}(h**Description**h]j&)}(hjRPh]h Description}(hjTPhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjPPubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM9hjOubj)}(hX/Set the new size of a VF BAR that supports VF resizable BAR capability. Unlike pci_resize_resource(), this does not cause the resource that reserves the MMIO space (originally up to total_VFs) to be resized, which means that following calls to pci_enable_sriov() can fail if the resources no longer fit.h]hX/Set the new size of a VF BAR that supports VF resizable BAR capability. Unlike pci_resize_resource(), this does not cause the resource that reserves the MMIO space (originally up to total_VFs) to be resized, which means that following calls to pci_enable_sriov() can fail if the resources no longer fit.}(hjhPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM8hjOubj)}(h **Return**h]j&)}(hjyPh]hReturn}(hj{PhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjwPubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM>hjOubj)}(h%0 on success, or negative on failure.h]h%0 on success, or negative on failure.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chM?hjOubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،%pci_iov_vf_bar_get_sizes (C function)c.pci_iov_vf_bar_get_sizeshNtauh1hhhhhhNhNubh)}(hhh](h)}(hJu32 pci_iov_vf_bar_get_sizes (struct pci_dev *dev, int resno, int num_vfs)h]h)}(hIu32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs)h](h)}(hhh]j3)}(hu32h]hu32}(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jpci_iov_vf_bar_get_sizessbc.pci_iov_vf_bar_get_sizesasbuh1hhjPhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMQubj)}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjPhhhjPhMQubj-)}(hpci_iov_vf_bar_get_sizesh]j3)}(hjPh]hpci_iov_vf_bar_get_sizes}(hjPhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjPubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjPhhhjPhMQubjN)}(h-(struct pci_dev *dev, int resno, int num_vfs)h](jT)}(hstruct pci_dev *devh](jZ)}(hj]h]hstruct}(hjQhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj Qubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj Qubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hj.QhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+Qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0QmodnameN classnameNjj)}j]jPc.pci_iov_vf_bar_get_sizesasbuh1hhj Qubj)}(h h]h }(hjLQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj Qubj)}(hjh]h*}(hjZQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj Qubj3)}(hdevh]hdev}(hjgQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj Qubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjQubjT)}(h int resnoh](h)}(hinth]hint}(hjQhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj|Qubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|Qubj3)}(hresnoh]hresno}(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|Qubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjQubjT)}(h int num_vfsh](h)}(hinth]hint}(hjQhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjQubj)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjQubj3)}(hnum_vfsh]hnum_vfs}(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjQubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjQubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjPhhhjPhMQubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjPhhhjPhMQubah}(h]jPah ](jjeh"]h$]h&]jj)jhuh1hhjPhMQhjPhhubj)}(hhh]j)}(h1get VF BAR sizes allowing to create up to num_vfsh]h1get VF BAR sizes allowing to create up to num_vfs}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMQhjQhhubah}(h]h ]h"]h$]h&]uh1jhjPhhhjPhMQubeh}(h]h ](jfunctioneh"]h$]h&]jjjjRjjRjjjuh1hhhhhhNhNubj)}(hXl**Parameters** ``struct pci_dev *dev`` the PCI device ``int resno`` the resource number ``int num_vfs`` number of VFs **Description** Get the sizes of a VF resizable BAR that can accommodate **num_vfs** within the currently assigned size of the resource **resno**. **Return** A bitmask of sizes in format defined in the spec (bit 0=1MB, bit 31=128TB).h](j)}(h**Parameters**h]j&)}(hjRh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjRubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMUhjRubj<)}(hhh](jA)}(h'``struct pci_dev *dev`` the PCI device h](jG)}(h``struct pci_dev *dev``h]jM)}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj:Rubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMRhj6Rubjc)}(hhh]j)}(hthe PCI deviceh]hthe PCI device}(hjURhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQRhMRhjRRubah}(h]h ]h"]h$]h&]uh1jbhj6Rubeh}(h]h ]h"]h$]h&]uh1j@hjQRhMRhj3RubjA)}(h"``int resno`` the resource number h](jG)}(h ``int resno``h]jM)}(hjuRh]h int resno}(hjwRhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjsRubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMShjoRubjc)}(hhh]j)}(hthe resource numberh]hthe resource number}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRhMShjRubah}(h]h ]h"]h$]h&]uh1jbhjoRubeh}(h]h ]h"]h$]h&]uh1j@hjRhMShj3RubjA)}(h``int num_vfs`` number of VFs h](jG)}(h``int num_vfs``h]jM)}(hjRh]h int num_vfs}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjRubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMThjRubjc)}(hhh]j)}(h number of VFsh]h number of VFs}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRhMThjRubah}(h]h ]h"]h$]h&]uh1jbhjRubeh}(h]h ]h"]h$]h&]uh1j@hjRhMThj3Rubeh}(h]h ]h"]h$]h&]uh1j;hjRubj)}(h**Description**h]j&)}(hjRh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjRubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMVhjRubj)}(hGet the sizes of a VF resizable BAR that can accommodate **num_vfs** within the currently assigned size of the resource **resno**.h](h9Get the sizes of a VF resizable BAR that can accommodate }(hjRhhhNhNubj&)}(h **num_vfs**h]hnum_vfs}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjRubh4 within the currently assigned size of the resource }(hjRhhhNhNubj&)}(h **resno**h]hresno}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjRubh.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMUhjRubj)}(h **Return**h]j&)}(hj4Sh]hReturn}(hj6ShhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj2Subah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMXhjRubj)}(hKA bitmask of sizes in format defined in the spec (bit 0=1MB, bit 31=128TB).h]hKA bitmask of sizes in format defined in the spec (bit 0=1MB, bit 31=128TB).}(hjJShhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:46: ./drivers/pci/iov.chMYhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_read_legacy_io (C function)c.pci_read_legacy_iohNtauh1hhhhhhNhNubh)}(hhh](h)}(hssize_t pci_read_legacy_io (struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)h]h)}(hssize_t pci_read_legacy_io(struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)h](h)}(hhh]j3)}(hssize_th]hssize_t}(hj|ShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjySubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~SmodnameN classnameNjj)}j]j)}jpci_read_legacy_iosbc.pci_read_legacy_ioasbuh1hhjuShhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMkubj)}(h h]h }(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjuShhhjShMkubj-)}(hpci_read_legacy_ioh]j3)}(hjSh]hpci_read_legacy_io}(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjuShhhjShMkubjN)}(ht(struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)h](jT)}(hstruct file *filph](jZ)}(hj]h]hstruct}(hjShhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjSubj)}(h h]h }(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubh)}(hhh]j3)}(hfileh]hfile}(hjShhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]jSc.pci_read_legacy_ioasbuh1hhjSubj)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjSubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj3)}(hfilph]hfilp}(hj"ThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjSubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubjT)}(hstruct kobject *kobjh](jZ)}(hj]h]hstruct}(hj;ThhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj7Tubj)}(h h]h }(hjHThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj7Tubh)}(hhh]j3)}(hkobjecth]hkobject}(hjYThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjVTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[TmodnameN classnameNjj)}j]jSc.pci_read_legacy_ioasbuh1hhj7Tubj)}(h h]h }(hjwThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj7Tubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7Tubj3)}(hkobjh]hkobj}(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj7Tubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubjT)}(h$const struct bin_attribute *bin_attrh](jZ)}(hjh]hconst}(hjThhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjTubj)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjTubjZ)}(hj]h]hstruct}(hjThhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjTubj)}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjTubh)}(hhh]j3)}(h bin_attributeh]h bin_attribute}(hjThhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNjj)}j]jSc.pci_read_legacy_ioasbuh1hhjTubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjTubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTubj3)}(hbin_attrh]hbin_attr}(hjUhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjTubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubjT)}(h char *bufh](h)}(hcharh]hchar}(hj6UhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj2Uubj)}(h h]h }(hjDUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2Uubj)}(hjh]h*}(hjRUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2Uubj3)}(hbufh]hbuf}(hj_UhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj2Uubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubjT)}(h loff_t offh](h)}(hhh]j3)}(hloff_th]hloff_t}(hj{UhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}UmodnameN classnameNjj)}j]jSc.pci_read_legacy_ioasbuh1hhjtUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjtUubj3)}(hoffh]hoff}(hjUhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjtUubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubjT)}(h size_t counth](h)}(hhh]j3)}(hsize_th]hsize_t}(hjUhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jSc.pci_read_legacy_ioasbuh1hhjUubj)}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjUubj3)}(hcounth]hcount}(hjUhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjUubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjSubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjuShhhjShMkubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjqShhhjShMkubah}(h]jlSah ](jjeh"]h$]h&]jj)jhuh1hhjShMkhjnShhubj)}(hhh]j)}(h'read byte(s) from legacy I/O port spaceh]h'read byte(s) from legacy I/O port space}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMkhjVhhubah}(h]h ]h"]h$]h&]uh1jhjnShhhjShMkubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1Vjj1Vjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *filp`` open sysfs file ``struct kobject *kobj`` kobject corresponding to file to read from ``const struct bin_attribute *bin_attr`` struct bin_attribute for this file ``char *buf`` buffer to store results ``loff_t off`` offset into legacy I/O port space ``size_t count`` number of bytes to read **Description** Reads 1, 2, or 4 bytes from legacy I/O port space using an arch specific callback routine (pci_legacy_read).h](j)}(h**Parameters**h]j&)}(hj;Vh]h Parameters}(hj=VhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj9Vubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMohj5Vubj<)}(hhh](jA)}(h&``struct file *filp`` open sysfs file h](jG)}(h``struct file *filp``h]jM)}(hjZVh]hstruct file *filp}(hj\VhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjXVubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMlhjTVubjc)}(hhh]j)}(hopen sysfs fileh]hopen sysfs file}(hjsVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoVhMlhjpVubah}(h]h ]h"]h$]h&]uh1jbhjTVubeh}(h]h ]h"]h$]h&]uh1j@hjoVhMlhjQVubjA)}(hD``struct kobject *kobj`` kobject corresponding to file to read from h](jG)}(h``struct kobject *kobj``h]jM)}(hjVh]hstruct kobject *kobj}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMmhjVubjc)}(hhh]j)}(h*kobject corresponding to file to read fromh]h*kobject corresponding to file to read from}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVhMmhjVubah}(h]h ]h"]h$]h&]uh1jbhjVubeh}(h]h ]h"]h$]h&]uh1j@hjVhMmhjQVubjA)}(hL``const struct bin_attribute *bin_attr`` struct bin_attribute for this file h](jG)}(h(``const struct bin_attribute *bin_attr``h]jM)}(hjVh]h$const struct bin_attribute *bin_attr}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjVubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMnhjVubjc)}(hhh]j)}(h"struct bin_attribute for this fileh]h"struct bin_attribute for this file}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVhMnhjVubah}(h]h ]h"]h$]h&]uh1jbhjVubeh}(h]h ]h"]h$]h&]uh1j@hjVhMnhjQVubjA)}(h&``char *buf`` buffer to store results h](jG)}(h ``char *buf``h]jM)}(hjWh]h char *buf}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjWubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMohjVubjc)}(hhh]j)}(hbuffer to store resultsh]hbuffer to store results}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWhMohjWubah}(h]h ]h"]h$]h&]uh1jbhjVubeh}(h]h ]h"]h$]h&]uh1j@hjWhMohjQVubjA)}(h1``loff_t off`` offset into legacy I/O port space h](jG)}(h``loff_t off``h]jM)}(hj>Wh]h loff_t off}(hj@WhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCZmodnameN classnameNjj)}j]jXc.pci_write_legacy_ioasbuh1hhj:Zubj)}(h h]h }(hj_ZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj:Zubj3)}(hcounth]hcount}(hjmZhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:Zubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjAXubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjWhhhjXhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjWhhhjXhMubah}(h]jWah ](jjeh"]h$]h&]jj)jhuh1hhjXhMhjWhhubj)}(hhh]j)}(h&write byte(s) to legacy I/O port spaceh]h&write byte(s) to legacy I/O port space}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjZhhubah}(h]h ]h"]h$]h&]uh1jhjWhhhjXhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZjjZjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *filp`` open sysfs file ``struct kobject *kobj`` kobject corresponding to file to read from ``const struct bin_attribute *bin_attr`` struct bin_attribute for this file ``char *buf`` buffer containing value to be written ``loff_t off`` offset into legacy I/O port space ``size_t count`` number of bytes to write **Description** Writes 1, 2, or 4 bytes from legacy I/O port space using an arch specific callback routine (pci_legacy_write).h](j)}(h**Parameters**h]j&)}(hjZh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjZubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjZubj<)}(hhh](jA)}(h&``struct file *filp`` open sysfs file h](jG)}(h``struct file *filp``h]jM)}(hjZh]hstruct file *filp}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjZubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjZubjc)}(hhh]j)}(hopen sysfs fileh]hopen sysfs file}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZhMhjZubah}(h]h ]h"]h$]h&]uh1jbhjZubeh}(h]h ]h"]h$]h&]uh1j@hjZhMhjZubjA)}(hD``struct kobject *kobj`` kobject corresponding to file to read from h](jG)}(h``struct kobject *kobj``h]jM)}(hj[h]hstruct kobject *kobj}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj[ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj [ubjc)}(hhh]j)}(h*kobject corresponding to file to read fromh]h*kobject corresponding to file to read from}(hj*[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&[hMhj'[ubah}(h]h ]h"]h$]h&]uh1jbhj [ubeh}(h]h ]h"]h$]h&]uh1j@hj&[hMhjZubjA)}(hL``const struct bin_attribute *bin_attr`` struct bin_attribute for this file h](jG)}(h(``const struct bin_attribute *bin_attr``h]jM)}(hjJ[h]h$const struct bin_attribute *bin_attr}(hjL[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjH[ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjD[ubjc)}(hhh]j)}(h"struct bin_attribute for this fileh]h"struct bin_attribute for this file}(hjc[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_[hMhj`[ubah}(h]h ]h"]h$]h&]uh1jbhjD[ubeh}(h]h ]h"]h$]h&]uh1j@hj_[hMhjZubjA)}(h4``char *buf`` buffer containing value to be written h](jG)}(h ``char *buf``h]jM)}(hj[h]h char *buf}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj[ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj}[ubjc)}(hhh]j)}(h%buffer containing value to be writtenh]h%buffer containing value to be written}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jbhj}[ubeh}(h]h ]h"]h$]h&]uh1j@hj[hMhjZubjA)}(h1``loff_t off`` offset into legacy I/O port space h](jG)}(h``loff_t off``h]jM)}(hj[h]h loff_t off}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj[ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj[ubjc)}(hhh]j)}(h!offset into legacy I/O port spaceh]h!offset into legacy I/O port space}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[hMhj[ubah}(h]h ]h"]h$]h&]uh1jbhj[ubeh}(h]h ]h"]h$]h&]uh1j@hj[hMhjZubjA)}(h*``size_t count`` number of bytes to write h](jG)}(h``size_t count``h]jM)}(hj[h]h size_t count}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj[ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj[ubjc)}(hhh]j)}(hnumber of bytes to writeh]hnumber of bytes to write}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj \hMhj \ubah}(h]h ]h"]h$]h&]uh1jbhj[ubeh}(h]h ]h"]h$]h&]uh1j@hj \hMhjZubeh}(h]h ]h"]h$]h&]uh1j;hjZubj)}(h**Description**h]j&)}(hj0\h]h Description}(hj2\hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj.\ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjZubj)}(hnWrites 1, 2, or 4 bytes from legacy I/O port space using an arch specific callback routine (pci_legacy_write).h]hnWrites 1, 2, or 4 bytes from legacy I/O port space using an arch specific callback routine (pci_legacy_write).}(hjF\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjZubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، pci_mmap_legacy_mem (C function)c.pci_mmap_legacy_memhNtauh1hhhhhhNhNubh)}(hhh](h)}(hint pci_mmap_legacy_mem (struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h]h)}(h~int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h](h)}(hinth]hint}(hju\hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjq\hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjq\hhhj\hMubj-)}(hpci_mmap_legacy_memh]j3)}(hpci_mmap_legacy_memh]hpci_mmap_legacy_mem}(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjq\hhhj\hMubjN)}(hg(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h](jT)}(hstruct file *filph](jZ)}(hj]h]hstruct}(hj\hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj\ubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\ubh)}(hhh]j3)}(hfileh]hfile}(hj\hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj\modnameN classnameNjj)}j]j)}jj\sbc.pci_mmap_legacy_memasbuh1hhj\ubj)}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj3)}(hfilph]hfilp}(hj ]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj\ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj\ubjT)}(hstruct kobject *kobjh](jZ)}(hj]h]hstruct}(hj$]hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj ]ubj)}(h h]h }(hj1]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ]ubh)}(hhh]j3)}(hkobjecth]hkobject}(hjB]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjD]modnameN classnameNjj)}j]j\c.pci_mmap_legacy_memasbuh1hhj ]ubj)}(h h]h }(hj`]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ]ubj)}(hjh]h*}(hjn]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ]ubj3)}(hkobjh]hkobj}(hj{]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj ]ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj\ubjT)}(h const struct bin_attribute *attrh](jZ)}(hjh]hconst}(hj]hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]ubjZ)}(hj]h]hstruct}(hj]hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]ubh)}(hhh]j3)}(h bin_attributeh]h bin_attribute}(hj]hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]modnameN classnameNjj)}j]j\c.pci_mmap_legacy_memasbuh1hhj]ubj)}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]ubj)}(hjh]h*}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj]ubj3)}(hattrh]hattr}(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj\ubjT)}(hstruct vm_area_struct *vmah](jZ)}(hj]h]hstruct}(hj^hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj^ubj)}(h h]h }(hj,^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj^ubh)}(hhh]j3)}(hvm_area_structh]hvm_area_struct}(hj=^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj:^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?^modnameN classnameNjj)}j]j\c.pci_mmap_legacy_memasbuh1hhj^ubj)}(h h]h }(hj[^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj^ubj)}(hjh]h*}(hji^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubj3)}(hvmah]hvma}(hjv^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj\ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjq\hhhj\hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjm\hhhj\hMubah}(h]jh\ah ](jjeh"]h$]h&]jj)jhuh1hhj\hMhjj\hhubj)}(hhh]j)}(h,map legacy PCI memory into user memory spaceh]h,map legacy PCI memory into user memory space}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj^hhubah}(h]h ]h"]h$]h&]uh1jhjj\hhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj^jj^jjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *filp`` open sysfs file ``struct kobject *kobj`` kobject corresponding to device to be mapped ``const struct bin_attribute *attr`` struct bin_attribute for this file ``struct vm_area_struct *vma`` struct vm_area_struct passed to mmap **Description** Uses an arch specific callback, pci_mmap_legacy_mem_page_range, to mmap legacy memory space (first meg of bus space) into application virtual memory space.h](j)}(h**Parameters**h]j&)}(hj^h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj^ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj^ubj<)}(hhh](jA)}(h&``struct file *filp`` open sysfs file h](jG)}(h``struct file *filp``h]jM)}(hj^h]hstruct file *filp}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj^ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj^ubjc)}(hhh]j)}(hopen sysfs fileh]hopen sysfs file}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^hMhj^ubah}(h]h ]h"]h$]h&]uh1jbhj^ubeh}(h]h ]h"]h$]h&]uh1j@hj^hMhj^ubjA)}(hF``struct kobject *kobj`` kobject corresponding to device to be mapped h](jG)}(h``struct kobject *kobj``h]jM)}(hj_h]hstruct kobject *kobj}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj_ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj_ubjc)}(hhh]j)}(h,kobject corresponding to device to be mappedh]h,kobject corresponding to device to be mapped}(hj3_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/_hMhj0_ubah}(h]h ]h"]h$]h&]uh1jbhj_ubeh}(h]h ]h"]h$]h&]uh1j@hj/_hMhj^ubjA)}(hH``const struct bin_attribute *attr`` struct bin_attribute for this file h](jG)}(h$``const struct bin_attribute *attr``h]jM)}(hjS_h]h const struct bin_attribute *attr}(hjU_hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjQ_ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjM_ubjc)}(hhh]j)}(h"struct bin_attribute for this fileh]h"struct bin_attribute for this file}(hjl_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh_hMhji_ubah}(h]h ]h"]h$]h&]uh1jbhjM_ubeh}(h]h ]h"]h$]h&]uh1j@hjh_hMhj^ubjA)}(hD``struct vm_area_struct *vma`` struct vm_area_struct passed to mmap h](jG)}(h``struct vm_area_struct *vma``h]jM)}(hj_h]hstruct vm_area_struct *vma}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj_ubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj_ubjc)}(hhh]j)}(h$struct vm_area_struct passed to mmaph]h$struct vm_area_struct passed to mmap}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jbhj_ubeh}(h]h ]h"]h$]h&]uh1j@hj_hMhj^ubeh}(h]h ]h"]h$]h&]uh1j;hj^ubj)}(h**Description**h]j&)}(hj_h]h Description}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj_ubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj^ubj)}(hUses an arch specific callback, pci_mmap_legacy_mem_page_range, to mmap legacy memory space (first meg of bus space) into application virtual memory space.h]hUses an arch specific callback, pci_mmap_legacy_mem_page_range, to mmap legacy memory space (first meg of bus space) into application virtual memory space.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_mmap_legacy_io (C function)c.pci_mmap_legacy_iohNtauh1hhhhhhNhNubh)}(hhh](h)}(h~int pci_mmap_legacy_io (struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h]h)}(h}int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h](h)}(hinth]hint}(hj `hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj`hhhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`hhhj`hMubj-)}(hpci_mmap_legacy_ioh]j3)}(hpci_mmap_legacy_ioh]hpci_mmap_legacy_io}(hj-`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj)`ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj`hhhj`hMubjN)}(hg(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)h](jT)}(hstruct file *filph](jZ)}(hj]h]hstruct}(hjI`hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjE`ubj)}(h h]h }(hjV`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE`ubh)}(hhh]j3)}(hfileh]hfile}(hjg`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjd`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetji`modnameN classnameNjj)}j]j)}jj/`sbc.pci_mmap_legacy_ioasbuh1hhjE`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE`ubj)}(hjh]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjE`ubj3)}(hfilph]hfilp}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjE`ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjA`ubjT)}(hstruct kobject *kobjh](jZ)}(hj]h]hstruct}(hj`hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`ubh)}(hhh]j3)}(hkobjecth]hkobject}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]j`c.pci_mmap_legacy_ioasbuh1hhj`ubj)}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`ubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj3)}(hkobjh]hkobj}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj`ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjA`ubjT)}(h const struct bin_attribute *attrh](jZ)}(hjh]hconst}(hj+ahhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj'aubj)}(h h]h }(hj8ahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'aubjZ)}(hj]h]hstruct}(hjFahhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj'aubj)}(h h]h }(hjSahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'aubh)}(hhh]j3)}(h bin_attributeh]h bin_attribute}(hjdahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfamodnameN classnameNjj)}j]j`c.pci_mmap_legacy_ioasbuh1hhj'aubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj'aubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'aubj3)}(hattrh]hattr}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj'aubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjA`ubjT)}(hstruct vm_area_struct *vmah](jZ)}(hj]h]hstruct}(hjahhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjaubh)}(hhh]j3)}(hvm_area_structh]hvm_area_struct}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j`c.pci_mmap_legacy_ioasbuh1hhjaubj)}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjaubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj3)}(hvmah]hvma}(hj bhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjaubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjA`ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj`hhhj`hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj`hhhj`hMubah}(h]j_ah ](jjeh"]h$]h&]jj)jhuh1hhj`hMhj`hhubj)}(hhh]j)}(h(map legacy PCI IO into user memory spaceh]h(map legacy PCI IO into user memory space}(hj7bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhj4bhhubah}(h]h ]h"]h$]h&]uh1jhj`hhhj`hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjObjjObjjjuh1hhhhhhNhNubj)}(hX**Parameters** ``struct file *filp`` open sysfs file ``struct kobject *kobj`` kobject corresponding to device to be mapped ``const struct bin_attribute *attr`` struct bin_attribute for this file ``struct vm_area_struct *vma`` struct vm_area_struct passed to mmap **Description** Uses an arch specific callback, pci_mmap_legacy_io_page_range, to mmap legacy IO space (first meg of bus space) into application virtual memory space. Returns -ENOSYS if the operation isn't supportedh](j)}(h**Parameters**h]j&)}(hjYbh]h Parameters}(hj[bhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjWbubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjSbubj<)}(hhh](jA)}(h&``struct file *filp`` open sysfs file h](jG)}(h``struct file *filp``h]jM)}(hjxbh]hstruct file *filp}(hjzbhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjvbubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjrbubjc)}(hhh]j)}(hopen sysfs fileh]hopen sysfs file}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jbhjrbubeh}(h]h ]h"]h$]h&]uh1j@hjbhMhjobubjA)}(hF``struct kobject *kobj`` kobject corresponding to device to be mapped h](jG)}(h``struct kobject *kobj``h]jM)}(hjbh]hstruct kobject *kobj}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjbubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjbubjc)}(hhh]j)}(h,kobject corresponding to device to be mappedh]h,kobject corresponding to device to be mapped}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbhMhjbubah}(h]h ]h"]h$]h&]uh1jbhjbubeh}(h]h ]h"]h$]h&]uh1j@hjbhMhjobubjA)}(hH``const struct bin_attribute *attr`` struct bin_attribute for this file h](jG)}(h$``const struct bin_attribute *attr``h]jM)}(hjbh]h const struct bin_attribute *attr}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjbubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjbubjc)}(hhh]j)}(h"struct bin_attribute for this fileh]h"struct bin_attribute for this file}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbhMhjcubah}(h]h ]h"]h$]h&]uh1jbhjbubeh}(h]h ]h"]h$]h&]uh1j@hjbhMhjobubjA)}(hD``struct vm_area_struct *vma`` struct vm_area_struct passed to mmap h](jG)}(h``struct vm_area_struct *vma``h]jM)}(hj#ch]hstruct vm_area_struct *vma}(hj%chhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj!cubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjcubjc)}(hhh]j)}(h$struct vm_area_struct passed to mmaph]h$struct vm_area_struct passed to mmap}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-hubjZ)}(hj]h]hstruct}(hjLhhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj-hubj)}(h h]h }(hjYhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-hubh)}(hhh]j3)}(h bin_attributeh]h bin_attribute}(hjjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjghubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlhmodnameN classnameNjj)}j]jgc.pci_write_romasbuh1hhj-hubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj-hubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-hubj3)}(hbin_attrh]hbin_attr}(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj-hubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjIgubjT)}(h char *bufh](h)}(hcharh]hchar}(hjhhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhubj)}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhubj3)}(hbufh]hbuf}(hjhhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjIgubjT)}(h loff_t offh](h)}(hhh]j3)}(hloff_th]hloff_t}(hjihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNjj)}j]jgc.pci_write_romasbuh1hhjhubj)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhubj3)}(hoffh]hoff}(hj-ihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjhubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjIgubjT)}(h size_t counth](h)}(hhh]j3)}(hsize_th]hsize_t}(hjIihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjFiubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKimodnameN classnameNjj)}j]jgc.pci_write_romasbuh1hhjBiubj)}(h h]h }(hjgihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjBiubj3)}(hcounth]hcount}(hjuihhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjBiubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjIgubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjfhhhj#ghMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjfhhhj#ghMubah}(h]jfah ](jjeh"]h$]h&]jj)jhuh1hhj#ghMhjfhhubj)}(hhh]j)}(h,used to enable access to the PCI ROM displayh]h,used to enable access to the PCI ROM display}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjihhubah}(h]h ]h"]h$]h&]uh1jhjfhhhj#ghMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjijjijjjuh1hhhhhhNhNubj)}(hXg**Parameters** ``struct file *filp`` sysfs file ``struct kobject *kobj`` kernel object handle ``const struct bin_attribute *bin_attr`` struct bin_attribute for this file ``char *buf`` user input ``loff_t off`` file offset ``size_t count`` number of byte in input **Description** Writing a boolean value enables or disables the ROM display.h](j)}(h**Parameters**h]j&)}(hjih]h Parameters}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjiubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjiubj<)}(hhh](jA)}(h!``struct file *filp`` sysfs file h](jG)}(h``struct file *filp``h]jM)}(hjih]hstruct file *filp}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjiubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjiubjc)}(hhh]j)}(h sysfs fileh]h sysfs file}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjihMhjiubah}(h]h ]h"]h$]h&]uh1jbhjiubeh}(h]h ]h"]h$]h&]uh1j@hjihMhjiubjA)}(h.``struct kobject *kobj`` kernel object handle h](jG)}(h``struct kobject *kobj``h]jM)}(hjjh]hstruct kobject *kobj}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjjubjc)}(hhh]j)}(hkernel object handleh]hkernel object handle}(hj2jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.jhMhj/jubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hj.jhMhjiubjA)}(hL``const struct bin_attribute *bin_attr`` struct bin_attribute for this file h](jG)}(h(``const struct bin_attribute *bin_attr``h]jM)}(hjRjh]h$const struct bin_attribute *bin_attr}(hjTjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjPjubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjLjubjc)}(hhh]j)}(h"struct bin_attribute for this fileh]h"struct bin_attribute for this file}(hjkjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgjhMhjhjubah}(h]h ]h"]h$]h&]uh1jbhjLjubeh}(h]h ]h"]h$]h&]uh1j@hjgjhMhjiubjA)}(h``char *buf`` user input h](jG)}(h ``char *buf``h]jM)}(hjjh]h char *buf}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjjubjc)}(hhh]j)}(h user inputh]h user input}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hjjhMhjiubjA)}(h``loff_t off`` file offset h](jG)}(h``loff_t off``h]jM)}(hjjh]h loff_t off}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjjubjc)}(hhh]j)}(h file offseth]h file offset}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hjjhMhjiubjA)}(h)``size_t count`` number of byte in input h](jG)}(h``size_t count``h]jM)}(hjjh]h size_t count}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjjubah}(h]h ]h"]h$]h&]uh1jFhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjjubjc)}(hhh]j)}(hnumber of byte in inputh]hnumber of byte in input}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkhMhjkubah}(h]h ]h"]h$]h&]uh1jbhjjubeh}(h]h ]h"]h$]h&]uh1j@hjkhMhjiubeh}(h]h ]h"]h$]h&]uh1j;hjiubj)}(h**Description**h]j&)}(hj8kh]h Description}(hj:khhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj6kubah}(h]h ]h"]h$]h&]uh1jhZ/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:49: ./drivers/pci/pci-sysfs.chMhjiubj)}(hxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCxmodnameN classnameNjj)}j]j)}jj xsbc.pcie_disable_tphasbuh1hhjxubj)}(h h]h }(hjaxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjxubj)}(hjh]h*}(hjoxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjxubj3)}(hpdevh]hpdev}(hj|xhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjxubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjxubah}(h]h ]h"]h$]h&]jKjLuh1jMhjwhhhjwhM[ubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjwhhhjwhM[ubah}(h]jwah ](jjeh"]h$]h&]jj)jhuh1hhjwhM[hjwhhubj)}(hhh]j)}(hTurn off TPH support for deviceh]hTurn off TPH support for device}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM[hjxhhubah}(h]h ]h"]h$]h&]uh1jhjwhhhjwhM[ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjxjjxjjjuh1hhhhhhNhNubj)}(hG**Parameters** ``struct pci_dev *pdev`` PCI device **Return** noneh](j)}(h**Parameters**h]j&)}(hjxh]h Parameters}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjxubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM_hjxubj<)}(hhh]jA)}(h$``struct pci_dev *pdev`` PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjxh]hstruct pci_dev *pdev}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjxubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM\hjxubjc)}(hhh]j)}(h PCI deviceh]h PCI device}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxhM\hjxubah}(h]h ]h"]h$]h&]uh1jbhjxubeh}(h]h ]h"]h$]h&]uh1j@hjxhM\hjxubah}(h]h ]h"]h$]h&]uh1j;hjxubj)}(h **Return**h]j&)}(hj"yh]hReturn}(hj$yhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj yubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM^hjxubj)}(hnoneh]hnone}(hj8yhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM^hjxubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pcie_enable_tph (C function)c.pcie_enable_tphhNtauh1hhhhhhNhNubh)}(hhh](h)}(h4int pcie_enable_tph (struct pci_dev *pdev, int mode)h]h)}(h3int pcie_enable_tph(struct pci_dev *pdev, int mode)h](h)}(hinth]hint}(hjgyhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjcyhhhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMqubj)}(h h]h }(hjvyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjcyhhhjuyhMqubj-)}(hpcie_enable_tphh]j3)}(hpcie_enable_tphh]hpcie_enable_tph}(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjcyhhhjuyhMqubjN)}(h (struct pci_dev *pdev, int mode)h](jT)}(hstruct pci_dev *pdevh](jZ)}(hj]h]hstruct}(hjyhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjyubh)}(hhh]j3)}(hpci_devh]hpci_dev}(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]j)}jjysbc.pcie_enable_tphasbuh1hhjyubj)}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjyubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj3)}(hpdevh]hpdev}(hjyhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjyubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjyubjT)}(hint modeh](h)}(hinth]hint}(hjzhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjzubj)}(h h]h }(hj$zhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubj3)}(hmodeh]hmode}(hj2zhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjzubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjyubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjcyhhhjuyhMqubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj_yhhhjuyhMqubah}(h]jZyah ](jjeh"]h$]h&]jj)jhuh1hhjuyhMqhj\yhhubj)}(hhh]j)}(h6Enable TPH support for device using a specific ST modeh]h6Enable TPH support for device using a specific ST mode}(hj\zhhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMqhjYzhhubah}(h]h ]h"]h$]h&]uh1jhj\yhhhjuyhMqubeh}(h]h ](jfunctioneh"]h$]h&]jjjjtzjjtzjjjuh1hhhhhhNhNubj)}(hX^**Parameters** ``struct pci_dev *pdev`` PCI device ``int mode`` ST mode to enable. Current supported modes include: **Description** - PCI_TPH_ST_NS_MODE: NO ST Mode - PCI_TPH_ST_IV_MODE: Interrupt Vector Mode - PCI_TPH_ST_DS_MODE: Device Specific Mode Check whether the mode is actually supported by the device before enabling and return an error if not. Additionally determine what types of requests, TPH or extended TPH, can be issued by the device based on its TPH requester capability and the Root Port's completer capability. **Return** 0 on success, otherwise negative value (-errno)h](j)}(h**Parameters**h]j&)}(hj~zh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj|zubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMuhjxzubj<)}(hhh](jA)}(h$``struct pci_dev *pdev`` PCI device h](jG)}(h``struct pci_dev *pdev``h]jM)}(hjzh]hstruct pci_dev *pdev}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjzubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMrhjzubjc)}(hhh]j)}(h PCI deviceh]h PCI device}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzhMrhjzubah}(h]h ]h"]h$]h&]uh1jbhjzubeh}(h]h ]h"]h$]h&]uh1j@hjzhMrhjzubjA)}(hA``int mode`` ST mode to enable. Current supported modes include: h](jG)}(h ``int mode``h]jM)}(hjzh]hint mode}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjzubah}(h]h ]h"]h$]h&]uh1jFhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMshjzubjc)}(hhh]j)}(h3ST mode to enable. Current supported modes include:h]h3ST mode to enable. Current supported modes include:}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzhMshjzubah}(h]h ]h"]h$]h&]uh1jbhjzubeh}(h]h ]h"]h$]h&]uh1j@hjzhMshjzubeh}(h]h ]h"]h$]h&]uh1j;hjxzubj)}(h**Description**h]j&)}(hj{h]h Description}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMuhjxzubjD)}(hx- PCI_TPH_ST_NS_MODE: NO ST Mode - PCI_TPH_ST_IV_MODE: Interrupt Vector Mode - PCI_TPH_ST_DS_MODE: Device Specific Mode h]jI)}(hhh](jI)}(hPCI_TPH_ST_NS_MODE: NO ST Modeh]j)}(hj0{h]hPCI_TPH_ST_NS_MODE: NO ST Mode}(hj2{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMthj.{ubah}(h]h ]h"]h$]h&]uh1jIhj+{ubjI)}(h)PCI_TPH_ST_IV_MODE: Interrupt Vector Modeh]j)}(hjH{h]h)PCI_TPH_ST_IV_MODE: Interrupt Vector Mode}(hjJ{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMuhjF{ubah}(h]h ]h"]h$]h&]uh1jIhj+{ubjI)}(h)PCI_TPH_ST_DS_MODE: Device Specific Mode h]j)}(h(PCI_TPH_ST_DS_MODE: Device Specific Modeh]h(PCI_TPH_ST_DS_MODE: Device Specific Mode}(hjb{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMvhj^{ubah}(h]h ]h"]h$]h&]uh1jIhj+{ubeh}(h]h ]h"]h$]h&]jIjIuh1jIhj?{hMthj'{ubah}(h]h ]h"]h$]h&]uh1jChj?{hMthjxzubj)}(hXCheck whether the mode is actually supported by the device before enabling and return an error if not. Additionally determine what types of requests, TPH or extended TPH, can be issued by the device based on its TPH requester capability and the Root Port's completer capability.h]hXCheck whether the mode is actually supported by the device before enabling and return an error if not. Additionally determine what types of requests, TPH or extended TPH, can be issued by the device based on its TPH requester capability and the Root Port’s completer capability.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chMxhjxzubj)}(h **Return**h]j&)}(hj{h]hReturn}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM}hjxzubj)}(h/0 on success, otherwise negative value (-errno)h]h/0 on success, otherwise negative value (-errno)}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhT/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:52: ./drivers/pci/tph.chM~hjxzubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]pci-support-libraryah ]h"]pci support libraryah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPCI Hotplug Support Libraryh]hPCI Hotplug Support Library}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hhhhhK8ubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،__pci_hp_register (C function)c.__pci_hp_registerhNtauh1hhj{hhhNhNubh)}(hhh](h)}(hint __pci_hp_register (struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h]h)}(hint __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h](h)}(hinth]hint}(hj{hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj{hhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMQubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{hhhj|hMQubj-)}(h__pci_hp_registerh]j3)}(h__pci_hp_registerh]h__pci_hp_register}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj{hhhj|hMQubjN)}(hy(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h](jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hj/|hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj+|ubj)}(h h]h }(hj<|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+|ubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjM|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjJ|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjO|modnameN classnameNjj)}j]j)}jj|sbc.__pci_hp_registerasbuh1hhj+|ubj)}(h h]h }(hjm|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+|ubj)}(hjh]h*}(hj{|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+|ubj3)}(hsloth]hslot}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj+|ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubjT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hj|hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj|modnameN classnameNjj)}j]ji|c.__pci_hp_registerasbuh1hhj|ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj3)}(hbush]hbus}(hj|hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj|ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubjT)}(h int devnrh](h)}(hinth]hint}(hj}hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj }ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj }ubj3)}(hdevnrh]hdevnr}(hj-}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj }ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hjF}hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjB}ubj)}(h h]h }(hjS}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjB}ubh)}(hcharh]hchar}(hja}hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjB}ubj)}(h h]h }(hjo}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjB}ubj)}(hjh]h*}(hj}}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB}ubj3)}(hnameh]hname}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjB}ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubjT)}(hstruct module *ownerh](jZ)}(hj]h]hstruct}(hj}hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}ubh)}(hhh]j3)}(hmoduleh]hmodule}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]ji|c.__pci_hp_registerasbuh1hhj}ubj)}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj}ubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj3)}(hownerh]howner}(hj}hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubjT)}(hconst char *mod_nameh](jZ)}(hjh]hconst}(hj~hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj~ubj)}(h h]h }(hj ~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~ubh)}(hcharh]hchar}(hj.~hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj~ubj)}(h h]h }(hj<~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj~ubj)}(hjh]h*}(hjJ~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubj3)}(hmod_nameh]hmod_name}(hjW~hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj~ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj'|ubeh}(h]h ]h"]h$]h&]jKjLuh1jMhj{hhhj|hMQubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj{hhhj|hMQubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1hhj|hMQhj{hhubj)}(hhh]j)}(h6register a hotplug_slot with the PCI hotplug subsystemh]h6register a hotplug_slot with the PCI hotplug subsystem}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMQhj~~hhubah}(h]h ]h"]h$]h&]uh1jhj{hhhj|hMQubeh}(h]h ](jfunctioneh"]h$]h&]jjjj~jj~jjjuh1hhhhj{hNhNubj)}(hXv**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to register ``struct pci_bus *bus`` bus this slot is on ``int devnr`` device number ``const char *name`` name registered with kobject core ``struct module *owner`` caller module owner ``const char *mod_name`` caller module name **Description** Prepares a hotplug slot for in-kernel use and immediately publishes it to user space in one go. Drivers may alternatively carry out the two steps separately by invoking pci_hp_initialize() and pci_hp_add(). Returns 0 if successful, anything else for an error.h](j)}(h**Parameters**h]j&)}(hj~h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj~ubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMUhj~ubj<)}(hhh](jA)}(hf``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to register h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hj~h]hstruct hotplug_slot *slot}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj~ubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMRhj~ubjc)}(hhh]j)}(hGpointer to the :c:type:`struct hotplug_slot ` to registerh](hpointer to the }(hj~hhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hj~h]hstruct hotplug_slot}(hj~hhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhj~ubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhj~hMRhj~ubh to register}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj~hMRhj~ubah}(h]h ]h"]h$]h&]uh1jbhj~ubeh}(h]h ]h"]h$]h&]uh1j@hj~hMRhj~ubjA)}(h,``struct pci_bus *bus`` bus this slot is on h](jG)}(h``struct pci_bus *bus``h]jM)}(hjh]hstruct pci_bus *bus}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMShjubjc)}(hhh]j)}(hbus this slot is onh]hbus this slot is on}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3hMShj4ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj3hMShj~ubjA)}(h``int devnr`` device number h](jG)}(h ``int devnr``h]jM)}(hjWh]h int devnr}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjUubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMThjQubjc)}(hhh]j)}(h device numberh]h device number}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlhMThjmubah}(h]h ]h"]h$]h&]uh1jbhjQubeh}(h]h ]h"]h$]h&]uh1j@hjlhMThj~ubjA)}(h7``const char *name`` name registered with kobject core h](jG)}(h``const char *name``h]jM)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMUhjubjc)}(hhh]j)}(h!name registered with kobject coreh]h!name registered with kobject core}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMUhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMUhj~ubjA)}(h-``struct module *owner`` caller module owner h](jG)}(h``struct module *owner``h]jM)}(hjh]hstruct module *owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMVhjubjc)}(hhh]j)}(hcaller module ownerh]hcaller module owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMVhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMVhj~ubjA)}(h,``const char *mod_name`` caller module name h](jG)}(h``const char *mod_name``h]jM)}(hjh]hconst char *mod_name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMWhjubjc)}(hhh]j)}(hcaller module nameh]hcaller module name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMWhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMWhj~ubeh}(h]h ]h"]h$]h&]uh1j;hj~ubj)}(h**Description**h]j&)}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj;ubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMYhj~ubj)}(hPrepares a hotplug slot for in-kernel use and immediately publishes it to user space in one go. Drivers may alternatively carry out the two steps separately by invoking pci_hp_initialize() and pci_hp_add().h]hPrepares a hotplug slot for in-kernel use and immediately publishes it to user space in one go. Drivers may alternatively carry out the two steps separately by invoking pci_hp_initialize() and pci_hp_add().}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMXhj~ubj)}(h4Returns 0 if successful, anything else for an error.h]h4Returns 0 if successful, anything else for an error.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chM\hj~ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h، __pci_hp_initialize (C function)c.__pci_hp_initializehNtauh1hhj{hhhNhNubh)}(hhh](h)}(hint __pci_hp_initialize (struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h]h)}(hint __pci_hp_initialize(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMrubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMrubj-)}(h__pci_hp_initializeh]j3)}(h__pci_hp_initializeh]h__pci_hp_initialize}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMrubjN)}(hy(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)h](jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hj΀hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjʀubj)}(h h]h }(hjۀhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjʀubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__pci_hp_initializeasbuh1hhjʀubj)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjʀubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjʀubj3)}(hsloth]hslot}(hj'hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjʀubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubjT)}(hstruct pci_bus *bush](jZ)}(hj]h]hstruct}(hj@hhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj<ubj)}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj<ubh)}(hhh]j3)}(hpci_bush]hpci_bus}(hj^hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj`modnameN classnameNjj)}j]jc.__pci_hp_initializeasbuh1hhj<ubj)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj<ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubj3)}(hbush]hbus}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj<ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubjT)}(h int devnrh](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj3)}(hdevnrh]hdevnr}(hj́hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubjT)}(hconst char *nameh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hnameh]hname}(hj)hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubjT)}(hstruct module *ownerh](jZ)}(hj]h]hstruct}(hjBhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj>ubj)}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubh)}(hhh]j3)}(hmoduleh]hmodule}(hj`hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj]ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjbmodnameN classnameNjj)}j]jc.__pci_hp_initializeasbuh1hhj>ubj)}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj3)}(hownerh]howner}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj>ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubjT)}(hconst char *mod_nameh](jZ)}(hjh]hconst}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hcharh]hchar}(hj͂hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubj)}(h h]h }(hjۂhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hmod_nameh]hmod_name}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjƀubeh}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMrubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMrubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMrhjhhubj)}(hhh]j)}(h&prepare hotplug slot for in-kernel useh]h&prepare hotplug slot for in-kernel use}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMrhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMrubeh}(h]h ](jfunctioneh"]h$]h&]jjjj8jj8jjjuh1hhhhj{hNhNubj)}(hX**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to initialize ``struct pci_bus *bus`` bus this slot is on ``int devnr`` slot number ``const char *name`` name registered with kobject core ``struct module *owner`` caller module owner ``const char *mod_name`` caller module name **Description** Allocate and fill in a PCI slot for use by a hotplug driver. Once this has been called, the driver may invoke hotplug_slot_name() to get the slot's unique name. The driver must be prepared to handle a ->reset_slot callback from this point on. Returns 0 on success or a negative int on error.h](j)}(h**Parameters**h]j&)}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj@ubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMvhj<ubj<)}(hhh](jA)}(hh``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to initialize h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hjah]hstruct hotplug_slot *slot}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj_ubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMshj[ubjc)}(hhh]j)}(hIpointer to the :c:type:`struct hotplug_slot ` to initializeh](hpointer to the }(hjzhhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hjh]hstruct hotplug_slot}(hjhhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhjvhMshjzubh to initialize}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjvhMshjwubah}(h]h ]h"]h$]h&]uh1jbhj[ubeh}(h]h ]h"]h$]h&]uh1j@hjvhMshjXubjA)}(h,``struct pci_bus *bus`` bus this slot is on h](jG)}(h``struct pci_bus *bus``h]jM)}(hjh]hstruct pci_bus *bus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMthjubjc)}(hhh]j)}(hbus this slot is onh]hbus this slot is on}(hjփhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj҃hMthjӃubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj҃hMthjXubjA)}(h``int devnr`` slot number h](jG)}(h ``int devnr``h]jM)}(hjh]h int devnr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMuhjubjc)}(hhh]j)}(h slot numberh]h slot number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hMuhj ubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj hMuhjXubjA)}(h7``const char *name`` name registered with kobject core h](jG)}(h``const char *name``h]jM)}(hj/h]hconst char *name}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj-ubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMvhj)ubjc)}(hhh]j)}(h!name registered with kobject coreh]h!name registered with kobject core}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDhMvhjEubah}(h]h ]h"]h$]h&]uh1jbhj)ubeh}(h]h ]h"]h$]h&]uh1j@hjDhMvhjXubjA)}(h-``struct module *owner`` caller module owner h](jG)}(h``struct module *owner``h]jM)}(hjhh]hstruct module *owner}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjfubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMwhjbubjc)}(hhh]j)}(hcaller module ownerh]hcaller module owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}hMwhj~ubah}(h]h ]h"]h$]h&]uh1jbhjbubeh}(h]h ]h"]h$]h&]uh1j@hj}hMwhjXubjA)}(h,``const char *mod_name`` caller module name h](jG)}(h``const char *mod_name``h]jM)}(hjh]hconst char *mod_name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMxhjubjc)}(hhh]j)}(hcaller module nameh]hcaller module name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMxhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMxhjXubeh}(h]h ]h"]h$]h&]uh1j;hj<ubj)}(h**Description**h]j&)}(hj܄h]h Description}(hjބhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjڄubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMzhj<ubj)}(hAllocate and fill in a PCI slot for use by a hotplug driver. Once this has been called, the driver may invoke hotplug_slot_name() to get the slot's unique name. The driver must be prepared to handle a ->reset_slot callback from this point on.h]hAllocate and fill in a PCI slot for use by a hotplug driver. Once this has been called, the driver may invoke hotplug_slot_name() to get the slot’s unique name. The driver must be prepared to handle a ->reset_slot callback from this point on.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMyhj<ubj)}(h0Returns 0 on success or a negative int on error.h]h0Returns 0 on success or a negative int on error.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chM~hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_hp_add (C function) c.pci_hp_addhNtauh1hhj{hhhNhNubh)}(hhh](h)}(h*int pci_hp_add (struct hotplug_slot *slot)h]h)}(h)int pci_hp_add(struct hotplug_slot *slot)h](h)}(hinth]hint}(hj0hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj,hhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMubj)}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj,hhhj>hMubj-)}(h pci_hp_addh]j3)}(h pci_hp_addh]h pci_hp_add}(hjQhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjMubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj,hhhj>hMubjN)}(h(struct hotplug_slot *slot)h]jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hjmhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjiubj)}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjSsb c.pci_hp_addasbuh1hhjiubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj3)}(hsloth]hslot}(hjƅhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjiubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjeubah}(h]h ]h"]h$]h&]jKjLuh1jMhj,hhhj>hMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhj(hhhj>hMubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1hhj>hMhj%hhubj)}(hhh]j)}(h"publish hotplug slot to user spaceh]h"publish hotplug slot to user space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhj%hhhj>hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhj{hNhNubj)}(hX**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to publish **Description** Make a hotplug slot's sysfs interface available and inform user space of its addition by sending a uevent. The hotplug driver must be prepared to handle all :c:type:`struct hotplug_slot_ops ` callbacks from this point on. Returns 0 on success or a negative int on error.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj ubj<)}(hhh]jA)}(he``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to publish h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hj1h]hstruct hotplug_slot *slot}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj/ubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj+ubjc)}(hhh]j)}(hFpointer to the :c:type:`struct hotplug_slot ` to publishh](hpointer to the }(hjJhhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hjTh]hstruct hotplug_slot}(hjVhhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhjRubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhjFhMhjJubh to publish}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjFhMhjGubah}(h]h ]h"]h$]h&]uh1jbhj+ubeh}(h]h ]h"]h$]h&]uh1j@hjFhMhj(ubah}(h]h ]h"]h$]h&]uh1j;hj ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj ubj)}(hMake a hotplug slot's sysfs interface available and inform user space of its addition by sending a uevent. The hotplug driver must be prepared to handle all :c:type:`struct hotplug_slot_ops ` callbacks from this point on.h](hMake a hotplug slot’s sysfs interface available and inform user space of its addition by sending a uevent. The hotplug driver must be prepared to handle all }(hjhhhNhNubh)}(h4:c:type:`struct hotplug_slot_ops `h]jM)}(hjh]hstruct hotplug_slot_ops}(hjhhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2(hotplug_slot_opsuh1hhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubh callbacks from this point on.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj̆hMhj ubj)}(h0Returns 0 on success or a negative int on error.h]h0Returns 0 on success or a negative int on error.}(hj׆hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_hp_deregister (C function)c.pci_hp_deregisterhNtauh1hhj{hhhNhNubh)}(hhh](h)}(h2void pci_hp_deregister (struct hotplug_slot *slot)h]h)}(h1void pci_hp_deregister(struct hotplug_slot *slot)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj-)}(hpci_hp_deregisterh]j3)}(hpci_hp_deregisterh]hpci_hp_deregister}(hj'hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj#ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjhMubjN)}(h(struct hotplug_slot *slot)h]jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hjChhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhj?ubj)}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjahhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jj)sbc.pci_hp_deregisterasbuh1hhj?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj?ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj3)}(hsloth]hslot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj?ubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShj;ubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhMhjhhubj)}(hhh]j)}(h8deregister a hotplug_slot with the PCI hotplug subsystemh]h8deregister a hotplug_slot with the PCI hotplug subsystem}(hjƇhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjÇhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjއjjއjjjuh1hhhhj{hNhNubj)}(h**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to deregister **Description** The **slot** must have been registered with the pci hotplug subsystem previously with a call to pci_hp_register().h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubj<)}(hhh]jA)}(hh``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to deregister h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hjh]hstruct hotplug_slot *slot}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubjc)}(hhh]j)}(hIpointer to the :c:type:`struct hotplug_slot ` to deregisterh](hpointer to the }(hj hhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hj*h]hstruct hotplug_slot}(hj,hhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhj(ubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhjhMhj ubh to deregister}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hjhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjeh]h Description}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjcubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubj)}(hrThe **slot** must have been registered with the pci hotplug subsystem previously with a call to pci_hp_register().h](hThe }(hj{hhhNhNubj&)}(h**slot**h]hslot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj{ubhf must have been registered with the pci hotplug subsystem previously with a call to pci_hp_register().}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_hp_del (C function) c.pci_hp_delhNtauh1hhj{hhhNhNubh)}(hhh](h)}(h+void pci_hp_del (struct hotplug_slot *slot)h]h)}(h*void pci_hp_del(struct hotplug_slot *slot)h](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMubj)}(h h]h }(hjˈhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjʈhMubj-)}(h pci_hp_delh]j3)}(h pci_hp_delh]h pci_hp_del}(hj݈hhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjوubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hjhhhjʈhMubjN)}(h(struct hotplug_slot *slot)h]jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj߈sb c.pci_hp_delasbuh1hhjubj)}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hsloth]hslot}(hjRhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhjhhhjʈhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjhhhjʈhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjʈhMhjhhubj)}(hhh]j)}(h&unpublish hotplug slot from user spaceh]h&unpublish hotplug slot from user space}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjyhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjʈhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhj{hNhNubj)}(h**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to unpublish **Description** Remove a hotplug slot's sysfs interface.h](j)}(h**Parameters**h]j&)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubj<)}(hhh]jA)}(hg``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to unpublish h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hjh]hstruct hotplug_slot *slot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubjc)}(hhh]j)}(hHpointer to the :c:type:`struct hotplug_slot ` to unpublishh](hpointer to the }(hj։hhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hjh]hstruct hotplug_slot}(hjhhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhjމubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhj҉hMhj։ubh to unpublish}(hj։hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhj҉hMhjӉubah}(h]h ]h"]h$]h&]uh1jbhjubeh}(h]h ]h"]h$]h&]uh1j@hj҉hMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubj)}(h(Remove a hotplug slot's sysfs interface.h]h*Remove a hotplug slot’s sysfs interface.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h،pci_hp_destroy (C function)c.pci_hp_destroyhNtauh1hhj{hhhNhNubh)}(hhh](h)}(h/void pci_hp_destroy (struct hotplug_slot *slot)h]h)}(h.void pci_hp_destroy(struct hotplug_slot *slot)h](h)}(hvoidh]hvoid}(hj`hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj\hhhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMubj)}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj\hhhjnhMubj-)}(hpci_hp_destroyh]j3)}(hpci_hp_destroyh]hpci_hp_destroy}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hj}ubah}(h]h ](jFjGeh"]h$]h&]jKjLuh1j,hj\hhhjnhMubjN)}(h(struct hotplug_slot *slot)h]jT)}(hstruct hotplug_slot *sloth](jZ)}(hj]h]hstruct}(hjhhhNhNubah}(h]h ]jfah"]h$]h&]uh1jYhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j3)}(h hotplug_sloth]h hotplug_slot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.pci_hp_destroyasbuh1hhjubj)}(h h]h }(hjۊhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj3)}(hsloth]hslot}(hjhhhNhNubah}(h]h ]j?ah"]h$]h&]uh1j2hjubeh}(h]h ]h"]h$]h&]noemphjKjLuh1jShjubah}(h]h ]h"]h$]h&]jKjLuh1jMhj\hhhjnhMubeh}(h]h ]h"]h$]h&]jKjLjuh1hjjhjXhhhjnhMubah}(h]jSah ](jjeh"]h$]h&]jj)jhuh1hhjnhMhjUhhubj)}(hhh]j)}(h&remove hotplug slot from in-kernel useh]h&remove hotplug slot from in-kernel use}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhjhhubah}(h]h ]h"]h$]h&]uh1jhjUhhhjnhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj8jj8jjjuh1hhhhj{hNhNubj)}(hXv**Parameters** ``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to destroy **Description** Destroy a PCI slot used by a hotplug driver. Once this has been called, the driver may no longer invoke hotplug_slot_name() to get the slot's unique name. The driver no longer needs to handle a ->reset_slot callback from this point on.0h](j)}(h**Parameters**h]j&)}(hjBh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hj@ubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj<ubj<)}(hhh]jA)}(he``struct hotplug_slot *slot`` pointer to the :c:type:`struct hotplug_slot ` to destroy h](jG)}(h``struct hotplug_slot *slot``h]jM)}(hjah]hstruct hotplug_slot *slot}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj_ubah}(h]h ]h"]h$]h&]uh1jFhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj[ubjc)}(hhh]j)}(hFpointer to the :c:type:`struct hotplug_slot ` to destroyh](hpointer to the }(hjzhhhNhNubh)}(h,:c:type:`struct hotplug_slot `h]jM)}(hjh]hstruct hotplug_slot}(hjhhhNhNubah}(h]h ](j(jc-typeeh"]h$]h&]uh1jLhjubah}(h]h ]h"]h$]h&]refdocj)( refdomainjreftypetype refexplicitrefwarnjj/(j2( hotplug_slotuh1hhjvhMhjzubh to destroy}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjvhMhjwubah}(h]h ]h"]h$]h&]uh1jbhj[ubeh}(h]h ]h"]h$]h&]uh1j@hjvhMhjXubah}(h]h ]h"]h$]h&]uh1j;hj<ubj)}(h**Description**h]j&)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j%hjubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj<ubj)}(hDestroy a PCI slot used by a hotplug driver. Once this has been called, the driver may no longer invoke hotplug_slot_name() to get the slot's unique name. The driver no longer needs to handle a ->reset_slot callback from this point on.h]hDestroy a PCI slot used by a hotplug driver. Once this has been called, the driver may no longer invoke hotplug_slot_name() to get the slot’s unique name. The driver no longer needs to handle a ->reset_slot callback from this point on.}(hjՋhhhNhNubah}(h]h ]h"]h$]h&]uh1jhi/var/lib/git/docbuild/linux/Documentation/driver-api/pci/pci:58: ./drivers/pci/hotplug/pci_hotplug_core.chMhj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj{hhhNhNubeh}(h]pci-hotplug-support-libraryah ]h"]pci hotplug support libraryah$]h&]uh1hhhhhhhhK8ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehʌ _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j{j{jju nametypes}(j{juh}(j{hhhjjjBjGjjj j j j jjj/j4jjjjjjjljqjjjdjij@!jE!jQ#jV#j$j$j&j &j'j'j)j)j+j+jY-j^-j.j.jj0jo0j1j1j4j4j5j5j7j7ju:jz:jr<jw<j=j=jt?jy?j@j@j-Cj2CjDjDj.Fj3FjGjGjIjIjKjKjNjNjPjPjSjSjUjUj Wj%Wj|YjYj\j\jO^jT^j_j_jcajhajbjbjfdjkdj fj%fjgjgj[ij`ijXkj]kjljljlnjqnjlpjqpjqjqjsjsjujujiwjnwjxjxjkzjpzj{j{jm}jr}j~j~jojtj_jdjjjЅjՅjQjVjAjFj݌jjjjbjgjjjjjGjLjjjjjjjwj|j=jBjߧjjWj\jjj'j,jϯjԯjtjyj̳jѳjjƶjjjjjjjhjmj5j:jsjxjjjjjvj{j6j;jjjjjzjjjjjjjjjjjjjjjjjjojRjWjOjTjjjGjLjjj#j(jVj[jjjsjxjjjjjZ j_ j j j[j`jjjjj$j)jFjKjjjFjKjjjTjYjd!ji!j#j#j$j$j)j)j$+j)+j,j,j-j.j80j=0j2j2j5j5jj8jo8j9j:j~;j;j=j=j?j?j6Bj;Bj%Dj*DjEjEjGjGjHjHjJjJj>LjCLj-Nj2NjPjPjlSjqSjWjWjh\jm\j_j`jcjcjfjfjpkjukj6pj;pjqjqj&uj+ujwjwjZyj_yjj{j{j{jjj#j(jjjjjSjXu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.