PCI 支援庫¶
-
unsigned char pci_bus_max_busnr(struct pci_bus *bus)¶
返回給定匯流排的子匯流排的最大 PCI 匯流排號
引數
struct pci_bus *bus指向要搜尋的 PCI 匯流排結構的指標
描述
給定一個 PCI 匯流排,返回集合中最高的 PCI 匯流排號,包括給定的 PCI 匯流排及其子 PCI 匯流排列表。
-
int pci_status_get_and_clear_errors(struct pci_dev *pdev)¶
返回並清除 PCI_STATUS 中的錯誤位
引數
struct pci_dev *pdevPCI 裝置
描述
返回 PCI_STATUS 中設定的錯誤位並清除它們。
-
u8 pci_find_capability(struct pci_dev *dev, int cap)¶
查詢裝置的功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
int cap功能程式碼
描述
判斷裝置是否支援給定的 PCI 功能。返回裝置 PCI 配置空間中請求的功能結構的地址,如果裝置不支援該功能,則返回 0。cap 的可能值包括
PCI_CAP_ID_PM電源管理PCI_CAP_ID_AGP加速圖形埠PCI_CAP_ID_VPD重要產品資料PCI_CAP_ID_SLOTID插槽識別PCI_CAP_ID_MSI訊息訊號中斷PCI_CAP_ID_CHSWPCompactPCI 熱插拔PCI_CAP_ID_PCIXPCI-XPCI_CAP_ID_EXPPCI Express
-
u8 pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap)¶
查詢裝置的功能
引數
struct pci_bus *bus要查詢的 PCI 匯流排
unsigned int devfn要查詢的 PCI 裝置
int cap功能程式碼
描述
與 pci_find_capability() 類似,但適用於尚未設定 pci_dev 結構的 PCI 裝置。
返回裝置 PCI 配置空間中請求的功能結構的地址,如果裝置不支援該功能,則返回 0。
-
u16 pci_find_next_ext_capability(struct pci_dev *dev, u16 start, int cap)¶
查詢擴充套件功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
u16 start開始查詢的地址(0 表示從列表開頭開始)
int cap功能程式碼
描述
返回裝置 PCI 配置空間中下一個匹配的擴充套件功能結構的地址,如果裝置不支援該功能,則返回 0。某些功能可能會出現多次,例如,供應商特定的功能,這提供了一種查詢所有功能的方法。
-
u16 pci_find_ext_capability(struct pci_dev *dev, int cap)¶
查詢擴充套件功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
int cap功能程式碼
描述
返回裝置 PCI 配置空間中請求的擴充套件功能結構的地址,如果裝置不支援該功能,則返回 0。cap 的可能值包括
PCI_EXT_CAP_ID_ERR高階錯誤報告PCI_EXT_CAP_ID_VC虛擬通道PCI_EXT_CAP_ID_DSN裝置序列號PCI_EXT_CAP_ID_PWR功率預算
-
u64 pci_get_dsn(struct pci_dev *dev)¶
讀取並返回 8 位元組裝置序列號
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
查詢 PCI_EXT_CAP_ID_DSN 並讀取 8 位元組的裝置序列號。
返回 DSN,如果該功能不存在,則返回零。
-
u8 pci_find_next_ht_capability(struct pci_dev *dev, u8 pos, int ht_cap)¶
查詢裝置的 HyperTransport 功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
u8 pos繼續搜尋的位置
int ht_capHyperTransport 功能程式碼
描述
與 pci_find_ht_capability() 結合使用,以搜尋與 ht_cap 匹配的所有功能。pos 應該始終是從 pci_find_ht_capability() 返回的值。
注意:為了 100% 避免損壞的 PCI 裝置,呼叫者應採取措施避免無限迴圈。
-
u8 pci_find_ht_capability(struct pci_dev *dev, int ht_cap)¶
查詢裝置的 HyperTransport 功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
int ht_capHyperTransport 功能程式碼
描述
判斷裝置是否支援給定的 HyperTransport 功能。返回裝置 PCI 配置空間中的地址,如果裝置不支援請求的功能,則返回 0。該地址指向 PCI 功能,型別為 PCI_CAP_ID_HT,它具有與 ht_cap 匹配的 HyperTransport 功能。
-
u16 pci_find_vsec_capability(struct pci_dev *dev, u16 vendor, int cap)¶
查詢供應商特定的擴充套件功能
引數
struct pci_dev *dev要查詢的 PCI 裝置
u16 vendor定義功能的供應商 ID
int cap供應商特定的功能 ID
描述
如果 dev 具有供應商 ID vendor,則搜尋 VSEC ID 為 cap 的 VSEC 功能。如果找到,則返回配置空間中的功能偏移量;否則返回 0。
-
u16 pci_find_dvsec_capability(struct pci_dev *dev, u16 vendor, u16 dvsec)¶
查詢供應商的 DVSEC
引數
struct pci_dev *dev要查詢的 PCI 裝置
u16 vendor要匹配 DVSEC 的供應商 ID
u16 dvsec指定的供應商特定功能 ID
描述
如果 DVSEC 具有供應商 ID vendor 和 DVSEC ID dvsec,則返回配置空間中的功能偏移量;否則返回 0。
-
struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res)¶
返回給定區域的父匯流排的資源區域
引數
const struct pci_dev *dev包含要搜尋的資源的 PCI 裝置結構
struct resource *res正在尋找父資源的子資源記錄
描述
對於給定裝置的給定資源區域,返回父匯流排的資源區域,該給定區域包含在該區域中。
-
struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res)¶
返回匹配的 PCI 裝置資源
引數
struct pci_dev *dev要查詢的 PCI 裝置
struct resource *res要查詢的資源
描述
遍歷標準 PCI 資源 (BAR),並檢查給定的資源是否部分或完全包含在其中任何一個資源中。在這種情況下,將返回匹配的資源,否則返回 NULL。
-
int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state)¶
使用平臺更改裝置電源狀態
引數
struct pci_dev *dev要處理的 PCI 裝置。
pci_power_t state要將裝置置於的狀態。
-
int pci_set_power_state(struct pci_dev *dev, pci_power_t state)¶
設定 PCI 裝置的電源狀態
引數
struct pci_dev *dev要處理的 PCI 裝置。
pci_power_t state要將裝置置於的 PCI 電源狀態(D0、D1、D2、D3hot)。
描述
使用平臺韌體和/或裝置的 PCI PM 暫存器將裝置轉換為新的電源狀態。
返回值: 如果請求的狀態無效,則返回 -EINVAL。 如果裝置不支援 PCI PM 或者其 PM 功能暫存器的版本錯誤,或者裝置不支援請求的狀態,則返回 -EIO。 如果轉換為 D1 或 D2 但不支援 D1 和 D2,則返回 0。 如果裝置已處於請求的狀態,則返回 0。 如果轉換為 D3 但不支援 D3,則返回 0。 如果裝置的電源狀態已成功更改,則返回 0。
-
int pci_save_state(struct pci_dev *dev)¶
在掛起之前儲存裝置的 PCI 配置空間
引數
struct pci_dev *dev我們要處理的 PCI 裝置
-
void pci_restore_state(struct pci_dev *dev)¶
恢復 PCI 裝置的已儲存狀態
引數
struct pci_dev *dev我們要處理的 PCI 裝置
-
struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev)¶
分配並返回一個不透明結構,其中包含裝置已儲存狀態。
引數
struct pci_dev *dev我們要處理的 PCI 裝置
描述
如果沒有狀態或錯誤,則返回 NULL。
-
int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state)¶
將提供的已儲存狀態重新載入到 struct pci_dev 中。
引數
struct pci_dev *dev我們要處理的 PCI 裝置
struct pci_saved_state *state從
pci_store_saved_state()返回的已儲存狀態
-
int pci_load_and_free_saved_state(struct pci_dev *dev, struct pci_saved_state **state)¶
重新載入 state 指向的儲存狀態,並釋放為其分配的記憶體。
引數
struct pci_dev *dev我們要處理的 PCI 裝置
struct pci_saved_state **state指向從
pci_store_saved_state()返回的儲存狀態的指標
-
int pci_reenable_device(struct pci_dev *dev)¶
恢復已放棄的裝置
引數
struct pci_dev *dev要恢復的 PCI 裝置
注意
此函式是 pci_default_resume() 的後端,不應由普通程式碼呼叫,請編寫正確的恢復處理程式並改用它。
-
int pci_enable_device_mem(struct pci_dev *dev)¶
初始化裝置以用於記憶體空間
引數
struct pci_dev *dev要初始化的 PCI 裝置
描述
在驅動程式使用裝置之前初始化裝置。請求底層程式碼啟用記憶體資源。喚醒已掛起的裝置。注意,此函式可能會失敗。
-
int pci_enable_device(struct pci_dev *dev)¶
在驅動程式使用裝置之前初始化裝置。
引數
struct pci_dev *dev要初始化的 PCI 裝置
描述
在驅動程式使用裝置之前初始化裝置。請求底層程式碼啟用 I/O 和記憶體。喚醒已掛起的裝置。注意,此函式可能會失敗。
注意,如果我們重複呼叫此函式,實際上不會多次啟用裝置(我們只會增加計數)。
-
void pci_disable_device(struct pci_dev *dev)¶
在使用後停用 PCI 裝置
引數
struct pci_dev *dev要停用的 PCI 裝置
描述
向系統發出訊號,表明系統不再使用 PCI 裝置。這僅涉及停用 PCI 匯流排主控,如果已啟用。
注意,在所有 pci_enable_device() 的呼叫者都呼叫 pci_disable_device() 之前,我們實際上不會停用該裝置。
-
int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state)¶
設定裝置 dev 的重置狀態
引數
struct pci_dev *devPCIe 裝置重置
enum pcie_reset_state state要進入的重置狀態
描述
設定裝置的 PCI 重置狀態。
-
bool pci_pme_capable(struct pci_dev *dev, pci_power_t state)¶
檢查 PCI 裝置生成 PME# 的能力
引數
struct pci_dev *dev要處理的 PCI 裝置。
pci_power_t state裝置將從中發出 PME# 的 PCI 狀態。
-
void pci_pme_active(struct pci_dev *dev, bool enable)¶
啟用或停用 PCI 裝置的 PME# 功能
引數
struct pci_dev *dev要處理的 PCI 裝置。
bool enable“true”表示啟用 PME# 生成;“false”表示停用它。
描述
呼叫者必須先驗證裝置是否能夠生成 PME#,然後才能使用等於“true”的 enable 呼叫此函式。
引數
struct pci_dev *pci_dev目標裝置
pci_power_t state裝置將從中發出喚醒事件的 PCI 狀態
bool enable是否啟用事件生成
描述
如果設定了 enable,請在為裝置呼叫 __pci_enable_wake() 之前,檢查該裝置的 device_may_wakeup()。
-
int pci_wake_from_d3(struct pci_dev *dev, bool enable)¶
啟用/停用裝置從 D3_hot 或 D3_cold 喚醒
引數
struct pci_dev *dev要準備的 PCI 裝置
bool enableTrue 表示啟用喚醒事件生成;false 表示停用
描述
許多驅動程式希望裝置從 D3_hot 或 D3_cold 喚醒系統,此函式允許它們乾淨地進行設定 - 由於 PCI PM 與 ACPI 排序約束,不應連續兩次呼叫 pci_enable_wake() 以啟用喚醒。
僅當裝置不允許從睡眠狀態喚醒系統,或者它無法從 D3_hot 和 D3_cold 生成 PME#,並且平臺無法為其啟用喚醒電源時,此函式才會返回錯誤程式碼。
-
int pci_prepare_to_sleep(struct pci_dev *dev)¶
準備 PCI 裝置以進行全系統轉換到睡眠狀態
引數
struct pci_dev *dev要處理的裝置。
描述
根據裝置是否可以喚醒系統和/或是否可以由平臺進行電源管理(PCI_D3hot 是預設值)來選擇適合裝置的電源狀態,並將裝置置於該狀態。
-
int pci_back_from_sleep(struct pci_dev *dev)¶
在全系統轉換到工作狀態期間開啟 PCI 裝置
引數
struct pci_dev *dev要處理的裝置。
描述
停用裝置的系統喚醒功能,並將其置於 D0。
-
bool pci_dev_run_wake(struct pci_dev *dev)¶
檢查裝置是否可以生成執行時喚醒事件。
引數
struct pci_dev *dev要檢查的裝置。
描述
如果裝置本身能夠生成喚醒事件(透過平臺或使用本機 PCIe PME),或者裝置支援 PME 並且其上游網橋之一可以生成喚醒事件,則返回 true。
-
pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state)¶
選擇 PCI 裝置的電源狀態。
引數
struct pci_dev *dev目標 PCI 裝置。
pm_message_t state整個系統的目標狀態。
描述
返回適用於 dev 和 state 的 PCI 電源狀態。
-
void pci_d3cold_enable(struct pci_dev *dev)¶
為裝置啟用 D3cold
引數
struct pci_dev *dev要處理的 PCI 裝置
描述
驅動程式可以使用此函式來啟用其處理的裝置的 D3cold。它還會相應地更新上游 PCI 網橋 PM 功能。
-
void pci_d3cold_disable(struct pci_dev *dev)¶
為裝置停用 D3cold
引數
struct pci_dev *dev要處理的 PCI 裝置
描述
驅動程式可以使用此函式來停用其處理的裝置的 D3cold。它還會相應地更新上游 PCI 網橋 PM 功能。
-
u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)¶
獲取 BAR 的可能大小
引數
struct pci_dev *pdevPCI 裝置
int bar要查詢的 BAR
描述
以規範中定義的位掩碼形式獲取可調整大小的 BAR 的可能大小(位 0=1MB,位 31=128TB)。如果 BAR 不可調整大小,則返回 0。
-
int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask)¶
啟用到根埠的 AtomicOp 請求
引數
struct pci_dev *devPCI 裝置
u32 cap_mask所需 AtomicOp 大小的掩碼,包括以下一項或多項:PCI_EXP_DEVCAP2_ATOMIC_COMP32 PCI_EXP_DEVCAP2_ATOMIC_COMP64 PCI_EXP_DEVCAP2_ATOMIC_COMP128
描述
如果所有上游網橋都支援 AtomicOp 路由,所有上游埠都停用了出口阻止,並且根埠支援請求的完成能力(32 位、64 位和/或 128 位 AtomicOp 完成),則返回 0,否則返回負值。
-
void pci_release_region(struct pci_dev *pdev, int bar)¶
釋放 PCI BAR
引數
struct pci_dev *pdev其資源先前由
pci_request_region()保留的 PCI 裝置int bar要釋放的 BAR
描述
釋放先前透過成功呼叫 pci_request_region() 保留的 PCI I/O 和記憶體資源。僅在 PCI 區域的所有使用都已停止後才呼叫此函式。
-
int pci_request_region(struct pci_dev *pdev, int bar, const char *name)¶
保留 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev要保留其資源的 PCI 裝置
int bar要保留的 BAR
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
描述
將與 PCI 裝置 pdev BAR bar 關聯的 PCI 區域標記為由所有者 name 保留。除非此呼叫成功返回,否則不要訪問 PCI 區域內的任何地址。
成功時返回 0,或錯誤時返回 EBUSY。失敗時還會列印警告訊息。
-
void pci_release_selected_regions(struct pci_dev *pdev, int bars)¶
釋放選定的 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev其資源先前已保留的 PCI 裝置
int bars要釋放的 BAR 的位掩碼
描述
釋放先前保留的選定 PCI I/O 和記憶體資源。僅在 PCI 區域的所有使用都已停止後才呼叫此函式。
-
int pci_request_selected_regions(struct pci_dev *pdev, int bars, const char *name)¶
保留選定的 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev要保留其資源的 PCI 裝置
int bars要請求的 BAR 的位掩碼
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
-
int pci_request_selected_regions_exclusive(struct pci_dev *pdev, int bars, const char *name)¶
獨佔地請求區域
引數
struct pci_dev *pdev從中請求區域的 PCI 裝置
int bars要請求的 BAR 的位掩碼
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
-
void pci_release_regions(struct pci_dev *pdev)¶
釋放保留的 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev其資源先前由
pci_request_regions()保留的 PCI 裝置
描述
釋放之前透過成功呼叫 pci_request_regions() 保留的所有 PCI I/O 和記憶體資源。 只有在所有 PCI 區域的使用都已停止後,才呼叫此函式。
-
int pci_request_regions(struct pci_dev *pdev, const char *name)¶
保留 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev要保留其資源的 PCI 裝置
const char *name請求資源的驅動程式的名稱
描述
將與 PCI 裝置 pdev 相關的所有 PCI 區域標記為由所有者 name 保留。 除非此呼叫成功返回,否則不要訪問 PCI 區域內的任何地址。
成功時返回 0,或錯誤時返回 EBUSY。失敗時還會列印警告訊息。
-
int pci_request_regions_exclusive(struct pci_dev *pdev, const char *name)¶
保留 PCI I/O 和記憶體資源
引數
struct pci_dev *pdev要保留其資源的 PCI 裝置
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
描述
將與 PCI 裝置 pdev 相關的所有 PCI 區域標記為由所有者 name 保留。 除非此呼叫成功返回,否則不要訪問 PCI 區域內的任何地址。
pci_request_regions_exclusive() 將標記該區域,以便不允許 /dev/mem 和 sysfs MMIO 訪問。
成功時返回 0,或錯誤時返回 EBUSY。失敗時還會列印警告訊息。
-
int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr)¶
重新對映記憶體對映的 I/O 空間
引數
const struct resource *res描述 I/O 空間的資源
phys_addr_t phys_addr要對映的範圍的物理地址
描述
將由 res 描述的記憶體對映 I/O 空間和 CPU 物理地址 phys_addr 重新對映到虛擬地址空間中。 只有定義了記憶體對映 IO 函式(並定義了 PCI_IOBASE 值)的架構才應呼叫此函式。
-
void pci_unmap_iospace(struct resource *res)¶
取消對映記憶體對映的 I/O 空間
引數
struct resource *res要取消對映的資源
描述
從虛擬地址空間取消對映 CPU 虛擬地址 res。 只有定義了記憶體對映 IO 函式(並定義了 PCI_IOBASE 值)的架構才應呼叫此函式。
-
void pci_set_master(struct pci_dev *dev)¶
為裝置 dev 啟用匯流排主控
引數
struct pci_dev *dev要啟用的 PCI 裝置
描述
啟用裝置上的匯流排主控,並呼叫 pcibios_set_master() 來執行所需的特定於架構的設定。
-
void pci_clear_master(struct pci_dev *dev)¶
停用裝置 dev 的匯流排主控
引數
struct pci_dev *dev要停用的 PCI 裝置
-
int pci_set_cacheline_size(struct pci_dev *dev)¶
確保已程式設計 CACHE_LINE_SIZE 暫存器
引數
struct pci_dev *dev要為其啟用 MWI 的 PCI 裝置
描述
pci_set_mwi 的幫助函式。 最初從 drivers/net/acenic.c 複製。 Copyright 1998-2001 by Jes Sorensen, <jes**trained**-monkey.org>。
返回
錯誤時為適當的 -ERRNO 錯誤值,成功時為零。
-
int pci_set_mwi(struct pci_dev *dev)¶
啟用記憶體寫入無效 PCI 事務
引數
struct pci_dev *dev為其啟用 MWI 的 PCI 裝置
描述
在 PCI_COMMAND 中啟用記憶體寫入無效事務。
返回
錯誤時為適當的 -ERRNO 錯誤值,成功時為零。
-
int pci_try_set_mwi(struct pci_dev *dev)¶
啟用記憶體寫入無效 PCI 事務
引數
struct pci_dev *dev為其啟用 MWI 的 PCI 裝置
描述
在 PCI_COMMAND 中啟用記憶體寫入無效事務。 呼叫者不需要檢查返回值。
返回
錯誤時為適當的 -ERRNO 錯誤值,成功時為零。
-
void pci_clear_mwi(struct pci_dev *dev)¶
停用裝置 dev 的記憶體寫入無效
引數
struct pci_dev *dev要停用的 PCI 裝置
描述
停用裝置上的 PCI 記憶體寫入無效事務
-
void pci_intx(struct pci_dev *pdev, int enable)¶
為裝置 dev 啟用/停用 PCI INTx
引數
struct pci_dev *pdev要操作的 PCI 裝置
int enable布林值:是否啟用或停用 PCI INTx
描述
為裝置 pdev 啟用/停用 PCI INTx
-
int pci_wait_for_pending_transaction(struct pci_dev *dev)¶
等待掛起的事務
引數
struct pci_dev *dev要操作的 PCI 裝置
描述
如果事務掛起則返回 0,否則返回 1。
-
int pcie_flr(struct pci_dev *dev)¶
啟動 PCIe 功能級別重置
引數
struct pci_dev *dev要重置的裝置
描述
在 dev 上無條件啟動功能級別重置,而不檢查任何標誌和 DEVCAP
-
int pcie_reset_flr(struct pci_dev *dev, bool probe)¶
啟動 PCIe 功能級別重置
引數
struct pci_dev *dev要重置的裝置
bool probe如果為 true,如果裝置可以透過這種方式重置,則返回 0
描述
在 dev 上啟動功能級別重置。
-
int pci_bridge_secondary_bus_reset(struct pci_dev *dev)¶
重置 PCI 橋上的輔助匯流排。
引數
struct pci_dev *dev橋裝置
描述
使用橋控制暫存器在輔助總線上斷言重置。 輔助總線上的裝置保持在通電狀態。
-
int __pci_reset_function_locked(struct pci_dev *dev)¶
在保持 dev 互斥鎖時重置 PCI 裝置功能。
引數
struct pci_dev *dev要重置的 PCI 裝置
描述
某些裝置允許重置單個功能,而不會影響同一裝置中的其他功能。 PCI 裝置必須響應 PCI 配置空間才能使用此功能。
假定裝置功能未使用,並且在呼叫此函式時呼叫者持有裝置互斥鎖。
重置裝置將使 PCI 配置空間的內容隨機化,因此任何呼叫者都必須準備好重新初始化裝置,包括 MSI、匯流排主控、BAR、解碼 IO 和記憶體空間等。
如果裝置功能已成功重置,則返回 0;如果裝置不支援重置單個功能,則返回負數。
-
int pci_reset_function(struct pci_dev *dev)¶
停止並重置 PCI 裝置功能
引數
struct pci_dev *dev要重置的 PCI 裝置
描述
某些裝置允許重置單個功能,而不會影響同一裝置中的其他功能。 PCI 裝置必須響應 PCI 配置空間才能使用此功能。
此函式不僅重置裝置的 PCI 部分,還清除與該裝置關聯的所有狀態。 此函式與 __pci_reset_function_locked() 的不同之處在於,它在重置時儲存和恢復裝置狀態,並獲取 PCI 裝置鎖。
如果裝置功能已成功重置,則返回 0;如果裝置不支援重置單個功能,則返回負數。
-
int pci_reset_function_locked(struct pci_dev *dev)¶
停止並重置 PCI 裝置功能
引數
struct pci_dev *dev要重置的 PCI 裝置
描述
某些裝置允許重置單個功能,而不會影響同一裝置中的其他功能。 PCI 裝置必須響應 PCI 配置空間才能使用此功能。
此函式不僅重置裝置的 PCI 部分,還清除與該裝置關聯的所有狀態。 此函式與 __pci_reset_function_locked() 的不同之處在於,它在重置時儲存和恢復裝置狀態。 它也與 pci_reset_function() 的不同之處在於,它要求持有 PCI 裝置鎖。
如果裝置功能已成功重置,則返回 0;如果裝置不支援重置單個功能,則返回負數。
-
int pci_try_reset_function(struct pci_dev *dev)¶
停止並重置 PCI 裝置功能
引數
struct pci_dev *dev要重置的 PCI 裝置
描述
與上述相同,如果無法鎖定裝置,則返回 -EAGAIN。
-
int pci_probe_reset_slot(struct pci_slot *slot)¶
探測是否可以重置 PCI 插槽
引數
struct pci_slot *slot要探測的 PCI 插槽
描述
如果可以重置插槽,則返回 0;如果不支援插槽重置,則返回負數。
-
int pci_probe_reset_bus(struct pci_bus *bus)¶
探測是否可以重置 PCI 匯流排
引數
struct pci_bus *bus要探測的 PCI 匯流排
描述
如果可以重置匯流排,則返回 0;如果不支援匯流排重置,則返回負數。
-
int pci_reset_bus(struct pci_dev *pdev)¶
嘗試重置 PCI 匯流排
引數
struct pci_dev *pdev要透過插槽/匯流排重置的頂層 PCI 裝置
描述
與上述相同,如果無法鎖定匯流排,則返回 -EAGAIN
-
int pcix_get_max_mmrbc(struct pci_dev *dev)¶
獲取 PCI-X 最大設計記憶體讀取位元組計數
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
返回 mmrbc:最大設計記憶體讀取計數(以位元組為單位)或適當的錯誤值。
-
int pcix_get_mmrbc(struct pci_dev *dev)¶
獲取 PCI-X 最大記憶體讀取位元組計數
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
返回 mmrbc:最大記憶體讀取計數(以位元組為單位)或適當的錯誤值。
-
int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)¶
設定 PCI-X 最大記憶體讀取位元組計數
引數
struct pci_dev *dev要查詢的 PCI 裝置
int mmrbc最大記憶體讀取計數(以位元組為單位),有效值為 512、1024、2048、4096
描述
如果可能,則設定最大記憶體讀取位元組計數,某些橋接器具有阻止此操作的勘誤。
-
int pcie_get_readrq(struct pci_dev *dev)¶
獲取 PCI Express 讀取請求大小
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
以位元組為單位返回最大記憶體讀取請求或適當的錯誤值。
-
int pcie_set_readrq(struct pci_dev *dev, int rq)¶
設定 PCI Express 最大記憶體讀取請求
引數
struct pci_dev *dev要查詢的 PCI 裝置
int rq最大記憶體讀取計數(以位元組為單位),有效值為 128、256、512、1024、2048、4096
描述
如果可能,則以位元組為單位設定最大記憶體讀取請求
-
int pcie_get_mps(struct pci_dev *dev)¶
獲取 PCI Express 最大有效負載大小
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
以位元組為單位返回最大有效負載大小
-
int pcie_set_mps(struct pci_dev *dev, int mps)¶
設定 PCI Express 最大有效載荷大小
引數
struct pci_dev *dev要查詢的 PCI 裝置
int mps最大有效載荷大小,以位元組為單位。有效值為 128、256、512、1024、2048、4096
描述
如果可能,則設定最大有效載荷大小
-
u32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width)¶
確定 PCIe 裝置的最小鏈路設定及其頻寬限制
引數
struct pci_dev *dev要查詢的 PCI 裝置
struct pci_dev **limiting_dev導致頻寬限制的裝置的儲存位置
enum pci_bus_speed *speed限制裝置的速度的儲存位置
enum pcie_link_width *width限制裝置的寬度的儲存位置
描述
向上遍歷 PCI 裝置鏈,找到可用最小頻寬的點。返回該處可用的頻寬,並(如果提供了 limiting_dev、speed 和 width 指標)返回有關該點的資訊。返回的頻寬以 Mb/s 為單位,即原始頻寬的兆位元/秒。
-
enum pci_bus_speed pcie_get_speed_cap(struct pci_dev *dev)¶
查詢 PCI 裝置的鏈路速度能力
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
查詢 PCI 裝置速度能力。
返回
裝置支援的最大鏈路速度。
-
enum pcie_link_width pcie_get_width_cap(struct pci_dev *dev)¶
查詢 PCI 裝置的鏈路寬度能力
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
查詢 PCI 裝置寬度能力。返回裝置支援的最大鏈路寬度。
-
void pcie_print_link_status(struct pci_dev *dev)¶
報告 PCI 裝置的鏈路速度和寬度
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
報告裝置上的可用頻寬。
-
int pci_select_bars(struct pci_dev *dev, unsigned long flags)¶
根據資源型別建立 BAR 掩碼
引數
struct pci_dev *dev為其建立 BAR 掩碼的 PCI 裝置
unsigned long flags要選擇的資源型別掩碼
描述
此輔助例程根據資源型別建立 bar 掩碼。
-
void __iomem *pci_iomap_range(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen)¶
為 PCI BAR 建立虛擬對映 cookie
引數
struct pci_dev *dev擁有 BAR 的 PCI 裝置
int barBAR 編號
unsigned long offset在 BAR 中的給定偏移量處對映記憶體
unsigned long maxlen要對映的記憶體的最大長度
描述
使用此函式,你將獲得裝置 BAR 的 __iomem 地址。你可以使用 ioread*() 和 iowrite*() 訪問它。這些函式隱藏了這是 MMIO 還是 PIO 地址空間的詳細資訊,並且將以正確的方式執行你期望它們執行的操作。
maxlen 指定要對映的最大長度。如果要從偏移量到結尾訪問完整的 BAR,請在此處傳遞 0。
-
void __iomem *pci_iomap_wc_range(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen)¶
為 PCI BAR 建立虛擬 WC 對映 cookie
引數
struct pci_dev *dev擁有 BAR 的 PCI 裝置
int barBAR 編號
unsigned long offset在 BAR 中的給定偏移量處對映記憶體
unsigned long maxlen要對映的記憶體的最大長度
描述
使用此函式,你將獲得裝置 BAR 的 __iomem 地址。你可以使用 ioread*() 和 iowrite*() 訪問它。這些函式隱藏了這是 MMIO 還是 PIO 地址空間的詳細資訊,並且將以正確的方式執行你期望它們執行的操作。如果可能,將使用寫入組合。
maxlen 指定要對映的最大長度。如果要從偏移量到結尾訪問完整的 BAR,請在此處傳遞 0。
-
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)¶
為 PCI BAR 建立虛擬對映 cookie
引數
struct pci_dev *dev擁有 BAR 的 PCI 裝置
int barBAR 編號
unsigned long maxlen要對映的記憶體的長度
描述
使用此函式,你將獲得裝置 BAR 的 __iomem 地址。你可以使用 ioread*() 和 iowrite*() 訪問它。這些函式隱藏了這是 MMIO 還是 PIO 地址空間的詳細資訊,並且將以正確的方式執行你期望它們執行的操作。
maxlen 指定要對映的最大長度。如果要訪問完整的 BAR 而無需先檢查其長度,請在此處傳遞 0。
-
void __iomem *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long maxlen)¶
為 PCI BAR 建立虛擬 WC 對映 cookie
引數
struct pci_dev *dev擁有 BAR 的 PCI 裝置
int barBAR 編號
unsigned long maxlen要對映的記憶體的長度
描述
使用此函式,你將獲得裝置 BAR 的 __iomem 地址。你可以使用 ioread*() 和 iowrite*() 訪問它。這些函式隱藏了這是 MMIO 還是 PIO 地址空間的詳細資訊,並且將以正確的方式執行你期望它們執行的操作。如果可能,將使用寫入組合。
maxlen 指定要對映的最大長度。如果要訪問完整的 BAR 而無需先檢查其長度,請在此處傳遞 0。
引數
struct device *dev用於重新對映 IO 地址的通用裝置
const struct resource *res描述 I/O 空間的資源
phys_addr_t phys_addr要對映的範圍的物理地址
描述
託管的 pci_remap_iospace()。對映在驅動程式分離時自動取消對映。
-
void __iomem *devm_pci_remap_cfgspace(struct device *dev, resource_size_t offset, resource_size_t size)¶
託管的 pci_remap_cfgspace()
引數
struct device *dev用於重新對映 IO 地址的通用裝置
resource_size_t offset要對映的資源地址
resource_size_t size對映大小
描述
託管的 pci_remap_cfgspace()。對映在驅動程式分離時自動取消對映。
-
void __iomem *devm_pci_remap_cfg_resource(struct device *dev, struct resource *res)¶
檢查、請求區域和 ioremap cfg 資源
引數
struct device *dev用於處理資源的通用裝置
struct resource *res要處理的配置空間資源
描述
檢查資源是否為有效的記憶體區域,請求記憶體區域並使用 pci_remap_cfgspace() API 進行 ioremap,以確保保證正確的 PCI 配置空間記憶體屬性。
所有操作都是託管的,並且將在驅動程式分離時撤消。
返回指向重新對映的記憶體的指標,或者在失敗時返回 IOMEM_ERR_PTR() 編碼的錯誤程式碼。用法示例
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);
-
int pcim_set_mwi(struct pci_dev *pdev)¶
裝置託管的
pci_set_mwi()
-
int pcim_intx(struct pci_dev *pdev, int enable)¶
託管的
pci_intx()
引數
struct pci_dev *pdev要操作的 PCI 裝置
int enable布林值:是否啟用或停用 PCI INTx
返回
成功時為 0,出錯時為 -ENOMEM。
描述
為裝置 pdev 啟用/停用 PCI INTx。在驅動程式分離時恢復原始狀態。
-
int pcim_enable_device(struct pci_dev *pdev)¶
引數
struct pci_dev *pdev要初始化的 PCI 裝置
返回
成功時返回 0,失敗時返回負錯誤程式碼。
描述
託管的 pci_enable_device()。裝置將在驅動程式分離時自動停用。
-
void pcim_pin_device(struct pci_dev *pdev)¶
固定託管的 PCI 裝置
引數
struct pci_dev *pdev要固定的 PCI 裝置
描述
固定託管的 PCI 裝置 pdev。固定的裝置在驅動程式分離時不會被停用。pdev 必須已使用 pcim_enable_device() 啟用。
-
void __iomem *const *pcim_iomap_table(struct pci_dev *pdev)¶
訪問 iomap 分配表(已棄用)
引數
struct pci_dev *pdev要訪問 iomap 表的 PCI 裝置
返回
成功時為指向 __iomem 指標陣列的常量指標,失敗時為 NULL。
描述
訪問 dev 的 iomap 分配表。如果 iomap 表不存在並且 pdev 是託管的,則將對其進行分配。記錄在 iomap 表中的所有 iomap 都會在驅動程式分離時自動取消對映。
首次分配表時,此函式可能會休眠,但可以在沒有上下文的情況下安全地呼叫,並且保證在分配後成功。
此函式已棄用。不要在新程式碼中使用它。相反,直接從 pcim_* 對映函式之一獲取對映的地址。對於
示例
void __iomem *mappy = pcim_iomap(pdev, bar, length);
-
void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen)¶
託管的
pcim_iomap()
引數
struct pci_dev *pdev要 iomap 的 PCI 裝置
int bar要 iomap 的 BAR
unsigned long maxleniomap 的最大長度
返回
成功時為 __iomem 指標,失敗時為 NULL。
描述
託管的 pci_iomap()。對映在驅動程式分離時自動取消對映。如果需要,只能使用 pcim_iounmap() 手動取消對映。
每個 BAR 應該只使用一次。
注意
與其他 pcim_* 函式相反,此函式在失敗時不會返回 IOMEM_ERR_PTR(),而是返回一個簡單的 NULL。這樣做是為了向後相容。
-
void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr)¶
已管理的 pci_iounmap()
引數
struct pci_dev *pdev要執行 iounmap 的 PCI 裝置
void __iomem *addr要取消對映的地址
描述
已管理的 pci_iounmap()。addr 必須已使用 pcim_* 對映函式進行對映。
-
void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar, const char *name)¶
請求並 iomap 一個 PCI BAR
引數
struct pci_dev *pdev要對映 IO 資源的 PCI 裝置
int bar要對映的 BAR 的索引
const char *name請求資源的驅動程式的名稱
返回
成功時返回 __iomem 指標,失敗時返回 IOMEM_ERR_PTR。
描述
對映和區域將在驅動程式分離時自動釋放。如果需要,只能使用 pcim_iounmap_region() 手動釋放。
-
void pcim_iounmap_region(struct pci_dev *pdev, int bar)¶
取消對映並釋放 PCI BAR
引數
struct pci_dev *pdev要操作的 PCI 裝置
int bar要取消對映和釋放的 BAR 的索引
描述
手動取消對映 BAR 並釋放其區域。只能傳遞先前由 pcim_iomap_region() 對映的 BAR。
-
int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name)¶
請求和 iomap PCI BAR (已棄用)
引數
struct pci_dev *pdev要對映 IO 資源的 PCI 裝置
int mask要請求和 iomap 的 BAR 的掩碼
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
描述
請求並 iomap 由 mask 指定的區域。
此函式已棄用。請勿在新程式碼中使用它。請改用 pcim_iomap_region()。
-
int pcim_request_region(struct pci_dev *pdev, int bar, const char *name)¶
請求 PCI BAR
引數
struct pci_dev *pdev要請求區域的 PCI 裝置
int bar要請求的 BAR 的索引
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負的錯誤程式碼。
描述
請求由 bar 指定的區域。
該區域將在驅動程式分離時自動釋放。如果需要,只能使用 pcim_release_region() 手動釋放。
-
int pcim_request_all_regions(struct pci_dev *pdev, const char *name)¶
請求所有區域
引數
struct pci_dev *pdev要對映 IO 資源的 PCI 裝置
const char *name請求資源的驅動程式的名稱
返回
成功時返回 0,失敗時返回負錯誤程式碼。
描述
請求的區域將在驅動程式分離時自動釋放。如果需要,可以使用 pcim_release_region() 釋放單個區域,或者使用 pcim_release_all_regions() 一次性釋放所有區域。
-
void __iomem *pcim_iomap_range(struct pci_dev *pdev, int bar, unsigned long offset, unsigned long len)¶
在 PCI BAR 內建立範圍化的 __iomap 對映
引數
struct pci_dev *pdev要對映 IO 資源的 PCI 裝置
int barBAR 的索引
unsigned long offset從 BAR 的開始處的偏移量
unsigned long len對映的位元組長度
返回
成功時返回 __iomem 指標,失敗時返回 IOMEM_ERR_PTR。
描述
在指定的 bar 中建立一個新的 IO-Mapping,範圍從 offset 到 offset + len。
對映將在驅動程式分離時自動取消對映。如果需要,只能使用 pcim_iounmap() 手動釋放。
-
int 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)¶
向此驅動程式新增新的 PCI 裝置 ID 並重新探測裝置
引數
struct pci_driver *drv目標 pci 驅動程式
unsigned int vendorPCI 供應商 ID
unsigned int devicePCI 裝置 ID
unsigned int subvendorPCI 子供應商 ID
unsigned int subdevicePCI 子裝置 ID
unsigned int classPCI 類
unsigned int class_maskPCI 類掩碼
unsigned long driver_data私有驅動程式資料
描述
向此驅動程式新增新的動態 pci 裝置 ID,並導致驅動程式再次探測所有裝置。必須在呼叫此函式之前註冊 drv。
上下文
執行 GFP_KERNEL 分配。
返回
成功時返回 0,失敗時返回 -errno。
-
const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, struct pci_dev *dev)¶
檢視 PCI 裝置是否與給定的 pci_id 表匹配
引數
const struct pci_device_id *ids要在其中搜索的 PCI 裝置 ID 結構陣列
struct pci_dev *dev要匹配的 PCI 裝置結構。
描述
驅動程式使用它來檢查 PCI 裝置是否在其支援的裝置列表中。返回匹配的 pci_device_id 結構,如果沒有匹配項,則返回 NULL。
已棄用;請勿使用此方法,因為它不會捕獲驅動程式可能要檢查的任何動態 ID。
-
int __pci_register_driver(struct pci_driver *drv, struct module *owner, const char *mod_name)¶
註冊新的 pci 驅動程式
引數
struct pci_driver *drv要註冊的驅動程式結構
struct module *ownerdrv 的所有者模組
const char *mod_name模組名稱字串
描述
將驅動程式結構新增到已註冊驅動程式的列表中。錯誤時返回負值,否則返回 0。如果沒有發生錯誤,即使在註冊期間沒有宣告任何裝置,驅動程式仍保持註冊狀態。
-
void pci_unregister_driver(struct pci_driver *drv)¶
登出 pci 驅動程式
引數
struct pci_driver *drv要登出的驅動程式結構
描述
從已註冊 PCI 驅動程式的列表中刪除驅動程式結構,使其有機會透過為其負責的每個裝置呼叫其 remove() 函式來清理,並將這些裝置標記為無驅動程式。
-
struct pci_driver *pci_dev_driver(const struct pci_dev *dev)¶
獲取裝置的 pci_driver
引數
const struct pci_dev *dev要查詢的裝置
描述
返回相應的 pci_driver 結構,如果沒有該裝置的已註冊驅動程式,則返回 NULL。
-
struct pci_dev *pci_dev_get(struct pci_dev *dev)¶
遞增 pci 裝置結構的引用計數
引數
struct pci_dev *dev正在引用的裝置
描述
對裝置的每個即時引用都應進行引用計數。
PCI 裝置的驅動程式通常應在其 probe() 方法(在繫結到裝置時)中記錄此類引用,並透過在其 disconnect() 方法中呼叫 pci_dev_put() 來釋放它們。
返回指向具有遞增的引用計數的裝置的指標。
-
void pci_dev_put(struct pci_dev *dev)¶
釋放 pci 裝置結構的使用
引數
struct pci_dev *dev已斷開連線的裝置
描述
當裝置的使用者完成使用裝置時,必須呼叫此函式。當裝置的最後一個使用者呼叫此函式時,將釋放裝置的記憶體。
-
void pci_stop_and_remove_bus_device(struct pci_dev *dev)¶
刪除 PCI 裝置和任何子裝置
引數
struct pci_dev *dev要刪除的裝置
描述
從裝置列表中刪除 PCI 裝置,通知驅動程式該裝置已被刪除。我們還以深度優先的方式刪除任何從屬匯流排和子裝置。
對於我們要刪除的每個裝置,從裝置列表中刪除裝置結構,刪除 /proc 條目,並通知使用者空間 (/sbin/hotplug)。
-
struct pci_bus *pci_find_bus(int domain, int busnr)¶
從給定的域和匯流排號定位 PCI 匯流排
引數
int domain要搜尋的 PCI 域的編號
int busnr所需 PCI 匯流排的編號
描述
給定 PCI 匯流排號和域號,所需的 PCI 匯流排位於 PCI 匯流排的全域性列表中。如果找到匯流排,則返回指向其資料結構的指標。如果未找到匯流排,則返回 NULL。
-
struct pci_bus *pci_find_next_bus(const struct pci_bus *from)¶
開始或繼續搜尋 PCI 匯流排
引數
const struct pci_bus *from先前找到的 PCI 匯流排,或
NULL用於新搜尋。
描述
遍歷已知 PCI 匯流排的列表。透過傳遞 NULL 作為 from 引數來啟動新的搜尋。否則,如果 from 不為 NULL,則從全域性列表中的下一個裝置繼續搜尋。
-
struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn)¶
定位給定 PCI 插槽的 PCI 裝置
引數
struct pci_bus *bus所需 PCI 裝置所在的 PCI 匯流排
unsigned int devfn編碼所需 PCI 裝置所在的 PCI 插槽的編號以及該插槽中多功能裝置的邏輯裝置編號。
描述
給定 PCI 匯流排和插槽/功能號,所需的 PCI 裝置位於 PCI 裝置的列表中。如果找到該裝置,則其引用計數將增加,並且此函式返回指向其資料結構的指標。呼叫方必須透過呼叫 pci_dev_put() 來遞減引用計數。如果未找到裝置,則返回 NULL。
-
struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, unsigned int devfn)¶
為給定的 PCI 域(段)、匯流排和槽位查詢 PCI 裝置
引數
int domainPCI 裝置所在的 PCI 域/段。
unsigned int bus所需 PCI 裝置所在的 PCI 匯流排
unsigned int devfn編碼所需 PCI 裝置所在的 PCI 插槽的編號以及該插槽中多功能裝置的邏輯裝置編號。
描述
給定 PCI 域、匯流排和槽位/功能號,將在 PCI 裝置列表中查詢所需的 PCI 裝置。如果找到該裝置,其引用計數將增加,並且此函式返回指向其資料結構的指標。呼叫者必須透過呼叫 pci_dev_put() 來減少引用計數。如果未找到裝置,則返回 NULL。
-
struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from)¶
開始或繼續按 vendor/subvendor/device/subdevice id 搜尋 PCI 裝置
引數
unsigned int vendor要匹配的 PCI vendor id,或
PCI_ANY_ID以匹配所有 vendor idunsigned int device要匹配的 PCI device id,或
PCI_ANY_ID以匹配所有 device idunsigned int ss_vendor要匹配的 PCI 子系統 vendor id,或
PCI_ANY_ID以匹配所有 vendor idunsigned int ss_device要匹配的 PCI 子系統 device id,或
PCI_ANY_ID以匹配所有 device idstruct pci_dev *from搜尋中找到的上一個 PCI 裝置,或
NULL用於新的搜尋。
描述
遍歷已知 PCI 裝置列表。如果找到一個 PCI 裝置,其 **vendor**、**device**、**ss_vendor** 和 **ss_device** 匹配,則返回指向其裝置結構的指標,並且裝置的引用計數會增加。否則,返回 NULL。透過傳遞 NULL 作為 **from** 引數來啟動新的搜尋。否則,如果 **from** 不為 NULL,則從全域性列表中的下一個裝置繼續搜尋。如果 **from** 不為 NULL,則始終會減少 **from** 的引用計數。
-
struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from)¶
開始或繼續按 vendor/device id 搜尋 PCI 裝置
引數
unsigned int vendor要匹配的 PCI vendor id,或
PCI_ANY_ID以匹配所有 vendor idunsigned int device要匹配的 PCI device id,或
PCI_ANY_ID以匹配所有 device idstruct pci_dev *from搜尋中找到的上一個 PCI 裝置,或
NULL用於新的搜尋。
描述
遍歷已知 PCI 裝置列表。如果找到一個 PCI 裝置,其 **vendor** 和 **device** 匹配,則裝置的引用計數會增加,並且返回指向其裝置結構的指標。否則,返回 NULL。透過傳遞 NULL 作為 **from** 引數來啟動新的搜尋。否則,如果 **from** 不為 NULL,則從全域性列表中的下一個裝置繼續搜尋。如果 **from** 不為 NULL,則始終會減少 **from** 的引用計數。
-
struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from)¶
開始或繼續按 class 搜尋 PCI 裝置
引數
unsigned int class搜尋具有此類別的 PCI 裝置
struct pci_dev *from搜尋中找到的上一個 PCI 裝置,或
NULL用於新的搜尋。
描述
遍歷已知 PCI 裝置列表。如果找到一個 PCI 裝置,其 **class** 匹配,則裝置的引用計數會增加,並且返回指向其裝置結構的指標。否則,返回 NULL。透過傳遞 NULL 作為 **from** 引數來啟動新的搜尋。否則,如果 **from** 不為 NULL,則從全域性列表中的下一個裝置繼續搜尋。如果 **from** 不為 NULL,則始終會減少 **from** 的引用計數。
-
struct pci_dev *pci_get_base_class(unsigned int class, struct pci_dev *from)¶
僅透過匹配基類程式碼來搜尋 PCI 裝置
引數
unsigned int class搜尋具有此基類程式碼的 PCI 裝置
struct pci_dev *from搜尋中找到的上一個 PCI 裝置,或
NULL用於新的搜尋。
描述
遍歷已知 PCI 裝置列表。如果找到一個 PCI 裝置,其基類程式碼匹配,則裝置的引用計數會增加。請參閱 pci_match_one_device() 以瞭解其工作原理。透過傳遞 NULL 作為 **from** 引數來啟動新的搜尋。否則,如果 **from** 不為 NULL,則從全域性列表中的下一個裝置繼續搜尋。如果 **from** 不為 NULL,則始終會減少 **from** 的引用計數。
返回
指向匹配的 PCI 裝置的指標,否則為 NULL。
-
int pci_dev_present(const struct pci_device_id *ids)¶
如果存在與裝置列表匹配的裝置,則返回 1,否則返回 0。
引數
const struct pci_device_id *ids指向以 NULL 結尾的
struct pci_device_id結構體列表的指標,這些結構體描述了呼叫者嘗試查詢的 PCI 裝置的型別。
描述
顯而易見的事實:您沒有對可能被此函式找到的任何裝置的引用,因此如果該裝置在此函式完成後立即從系統中刪除,則該值將失效。使用此函式查詢通常內建到系統中的裝置,或者作為關於另一裝置是否恰好在此時存在的通用提示。
引數
struct irq_data *data指向與該中斷關聯的 irqdata 的指標
引數
struct irq_data *data指向與該中斷關聯的 irqdata 的指標
-
int pci_msi_vec_count(struct pci_dev *dev)¶
返回裝置可以傳送的 MSI 向量的數量
引數
struct pci_dev *dev要報告的裝置
描述
此函式返回裝置透過“多訊息能力”暫存器請求的 MSI 向量的數量。如果裝置無法傳送 MSI 中斷,則返回一個負的 errno。否則,呼叫成功並返回 2 的冪,最大值為 2^5 (32),根據 MSI 規範。
-
int 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)¶
從父匯流排分配資源
引數
struct pci_bus *busPCI 匯流排
struct resource *res要分配的資源
resource_size_t size要分配的資源的大小
resource_size_t align要分配的資源的對齊方式
resource_size_t min要分配的最小 /proc/iomem 地址
unsigned long type_maskIORESOURCE_* 型別標誌
resource_alignf alignf資源對齊函式
void *alignf_data資源對齊函式的資料引數
描述
給定裝置所在的 PCI 匯流排、大小、最小地址、對齊方式和型別,嘗試為特定裝置資源找到可接受的資源分配。
-
void pci_bus_add_device(struct pci_dev *dev)¶
為單個裝置啟動驅動程式
引數
struct pci_dev *dev要新增的裝置
描述
這會新增 sysfs 條目並啟動裝置驅動程式
-
void pci_bus_add_devices(const struct pci_bus *bus)¶
為 PCI 裝置啟動驅動程式
引數
const struct pci_bus *bus要檢查新裝置的匯流排
描述
為 PCI 裝置啟動驅動程式並新增一些 sysfs 條目。
-
void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev*, void*), void *userdata)¶
遍歷總線上/下的裝置,呼叫回撥。
引數
struct pci_bus *top應該遍歷其裝置的匯流排
int (*cb)(struct pci_dev *, void *)為找到的每個裝置呼叫的回撥
void *userdata要傳遞給回撥的任意指標
遍歷給定的匯流排,包括此匯流排下任何總線上的任何橋接裝置。在找到的每個裝置上呼叫提供的回撥。
我們每次都檢查 **cb** 的返回值。如果它返回除 0 之外的任何內容,我們將退出。
-
struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops)¶
設定 pci 匯流排的原始操作
引數
struct pci_bus *buspci 匯流排結構
struct pci_ops *ops新的原始操作
描述
返回之前的原始操作
-
void pci_cfg_access_lock(struct pci_dev *dev)¶
鎖定 PCI 配置讀取/寫入
引數
struct pci_dev *devpci 裝置結構
描述
當訪問被鎖定時,任何使用者空間讀取或寫入配置空間以及併發鎖請求都將休眠,直到透過 pci_cfg_access_unlock() 再次允許訪問。
-
bool pci_cfg_access_trylock(struct pci_dev *dev)¶
嘗試鎖定 PCI 配置讀取/寫入
引數
struct pci_dev *devpci 裝置結構
描述
與 pci_cfg_access_lock 相同,但如果訪問已被鎖定,則返回 0,否則返回 1。此函式可以從原子上下文中使用。
-
void pci_cfg_access_unlock(struct pci_dev *dev)¶
解鎖 PCI 配置讀取/寫入
引數
struct pci_dev *devpci 裝置結構
描述
此函式允許 PCI 配置訪問恢復。
-
int 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, ...)¶
為 PCI 裝置分配中斷線
引數
struct pci_dev *dev要操作的 PCI 裝置
unsigned int nr裝置相關的中斷向量索引(從 0 開始)。
irq_handler_t handler發生 IRQ 時要呼叫的函式。執行緒中斷的主要處理程式。 如果為 NULL 且 thread_fn != NULL,則安裝預設的主要處理程式。
irq_handler_t thread_fn從 IRQ 處理程式執行緒呼叫的函式。如果為 NULL,則不建立 IRQ 執行緒
void *dev_id傳遞迴處理程式的 Cookie
const char *fmtPrintf 型別的格式字串,用於命名處理程式
...可變引數
描述
此呼叫會分配中斷資源並啟用中斷線和 IRQ 處理。 從進行此呼叫的那一刻起,可能會呼叫 **handler** 和 **thread_fn**。 使用此函式請求的所有中斷都可以共享。
**dev_id** 不得為 NULL,並且必須是全域性唯一的。
-
void pci_free_irq(struct pci_dev *dev, unsigned int nr, void *dev_id)¶
釋放使用 pci_request_irq 分配的中斷
引數
struct pci_dev *dev要操作的 PCI 裝置
unsigned int nr裝置相關的中斷向量索引(從 0 開始)。
void *dev_id要釋放的裝置標識
描述
刪除中斷處理程式。 刪除處理程式,如果中斷線不再被任何驅動程式使用,則將其停用。 呼叫者必須確保在呼叫此函式之前裝置上的中斷已停用。 該函式只有在此 IRQ 的任何正在執行的中斷完成後才會返回。
不得從中斷上下文中呼叫此函式。
-
u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp)¶
一直將 INTx 混雜到根橋
引數
struct pci_dev *devPCI 裝置
u8 *pinp指向 INTx 引腳值的指標 (1=INTA, 2=INTB, 3=INTD, 4=INTD)
描述
為裝置執行 INTx 混雜。 這會遍歷所有 PCI 到 PCI 橋,一直到 PCI 根匯流排。
-
bool pci_check_and_mask_intx(struct pci_dev *dev)¶
遮蔽掛起中斷上的 INTx
引數
struct pci_dev *dev要操作的 PCI 裝置
描述
檢查裝置 dev 是否已宣告其 INTx 線,如果已宣告,則將其遮蔽並返回 true。 如果沒有掛起的中斷,則返回 False。
-
bool pci_check_and_unmask_intx(struct pci_dev *dev)¶
如果沒有掛起的中斷,則取消遮蔽 INTx
引數
struct pci_dev *dev要操作的 PCI 裝置
描述
檢查裝置 dev 是否已宣告其 INTx 線,如果未宣告,則取消遮蔽它並返回 true。 如果仍然有掛起的中斷,則返回 False,並且遮蔽保持活動狀態。
-
bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)¶
探測 PCIe 放鬆排序使能
引數
struct pci_dev *dev要查詢的 PCI 裝置
描述
如果裝置啟用了放鬆排序屬性,則返回 true。
-
int pci_scan_slot(struct pci_bus *bus, int devfn)¶
在總線上掃描 PCI 插槽以查詢裝置
引數
struct pci_bus *bus要掃描的 PCI 匯流排
int devfn要掃描的插槽號(必須具有零功能)
描述
在指定的 PCI 總線上掃描 PCI 插槽以查詢裝置,並將發現的裝置新增到 **bus->devices** 列表中。 新裝置將沒有設定 is_added。
返回找到的新裝置的數量。
-
unsigned int pci_scan_child_bus(struct pci_bus *bus)¶
掃描匯流排下的裝置
引數
struct pci_bus *bus要掃描裝置的匯流排
描述
掃描 **bus** 下的裝置,包括從屬匯流排。 返回新的從屬號碼,包括所有找到的裝置。
-
unsigned int pci_rescan_bus(struct pci_bus *bus)¶
掃描 PCI 匯流排以查詢裝置
引數
struct pci_bus *bus要掃描的 PCI 匯流排
描述
掃描 PCI 匯流排和子匯流排以查詢新裝置,新增它們並啟用它們。
返回發現的從屬匯流排的最大數量。
-
struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug)¶
建立或增加物理 PCI 插槽的引用計數
引數
struct pci_bus *parent父橋的 struct pci_bus
int slot_nrPCI_SLOT(pci_dev->devfn) 或佔位符的 -1
const char *name使用者可見的字串,顯示在 /sys/bus/pci/slots/<name> 中
struct hotplug_slot *hotplug如果呼叫者是熱插拔驅動程式,則設定;否則為 NULL
描述
PCI 插槽具有諸如地址、速度、寬度之類的一流屬性,並且 struct pci_slot 用於管理它們。 此介面將向呼叫者返回一個新的 struct pci_slot,或者,如果 pci_slot 已經存在,則其引用計數將遞增。
插槽由 **pci_bus**、**slot_nr** 元組唯一標識。
已知某些平臺的韌體存在缺陷,會將相同的名稱分配給多個插槽。 透過代表呼叫者重新命名插槽來解決這些存在缺陷的平臺。 如果韌體將名稱 N 分配給多個插槽
第一個插槽分配給 N 第二個插槽分配給 N-1 第三個插槽分配給 N-2 等。
佔位符插槽:在大多數情況下,**pci_bus**、**slot_nr** 足以唯一標識一個插槽。 有一個值得注意的例外 - pSeries (rpaphp),在該平臺上,在實際將裝置插入插槽之前無法確定 **slot_nr**。 在這種情況下,呼叫者可以為 **slot_nr** 傳遞 -1。
當呼叫者傳遞 **slot_nr** == -1 時,會強制執行以下語義。 首先,我們不再檢查現有的 struct pci_slot,因為可能有很多 **slot_nr** 為 -1 的插槽。 語義的另一個變化是使用者可見的,即 sysfs 中顯示的“address”引數將僅包含一個 dddd:bb 元組,其中 dddd 是 struct pci_bus 的 PCI 域,bb 是匯流排號。 換句話說,不會顯示“佔位符”插槽的 devfn。
-
void pci_destroy_slot(struct pci_slot *slot)¶
減少物理 PCI 插槽的引用計數
引數
struct pci_slot *slot要減少的 struct pci_slot
描述
struct pci_slot 經過引用計數,因此銷燬它們非常容易; 我們只需在其 kobj 上呼叫 kobject_put,然後讓我們的釋放方法完成其餘工作。
-
int pci_enable_rom(struct pci_dev *pdev)¶
為 PCI 裝置啟用 ROM 解碼
引數
struct pci_dev *pdev要啟用的 PCI 裝置
描述
在 **dev** 上啟用 ROM 解碼。 這僅僅涉及開啟 PCI ROM BAR 的最後一位。 請注意,某些卡可能會在 ROM 和其他資源之間共享地址解碼器,因此啟用它可能會停用對 MMIO 暫存器或其他卡記憶體的訪問。
-
void pci_disable_rom(struct pci_dev *pdev)¶
停用 PCI 裝置的 ROM 解碼
引數
struct pci_dev *pdev要停用的 PCI 裝置
描述
透過關閉 ROM BAR 中的最後一位來停用 PCI 裝置上的 ROM 解碼。
-
void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size)¶
將 PCI ROM 對映到核心空間
引數
struct pci_dev *pdev指向 pci 裝置結構體的指標
size_t *size指向接收 ROM 上 pci 視窗大小的指標
返回
指向 ROM 映像的核心虛擬指標
描述
將 PCI ROM 對映到核心空間。 如果 ROM 是啟動影片 ROM,則將返回影子 BIOS 副本而不是實際的 ROM。
-
void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom)¶
從核心空間取消對映 ROM
引數
struct pci_dev *pdev指向 pci 裝置結構體的指標
void __iomem *rom先前對映的虛擬地址
描述
刪除先前對映的 ROM 的對映
-
void *pci_iov_get_pf_drvdata(struct pci_dev *dev, struct pci_driver *pf_driver)¶
返回 PF 的 drvdata
引數
struct pci_dev *devVF pci_dev
struct pci_driver *pf_driver擁有 PF 所需的裝置驅動程式
描述
必須從確保附加 VF 驅動程式的上下文中呼叫此函式。 VF 驅動程式完成其 remove() 回撥後,返回的值將無效。
驅動程式核心實現鎖定。 在呼叫 pci_enable_sriov() 之前,VF 驅動程式無法被探測,並且 pci_disable_sriov() 在所有 VF 驅動程式完成其 remove() 之前不會返回。
PF 驅動程式必須在開始銷燬 drvdata 之前呼叫 pci_disable_sriov()。
-
int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn)¶
啟用 SR-IOV 功能
引數
struct pci_dev *devPCI 裝置
int nr_virtfn要啟用的虛擬功能的數量
描述
成功時返回 0,失敗時返回負值。
-
void pci_disable_sriov(struct pci_dev *dev)¶
停用 SR-IOV 功能
引數
struct pci_dev *devPCI 裝置
-
int pci_num_vf(struct pci_dev *dev)¶
返回與 PF device_release_driver 關聯的 VF 的數量
引數
struct pci_dev *devPCI 裝置
描述
返回 VF 的數量,如果未啟用 SR-IOV,則返回 0。
-
int pci_vfs_assigned(struct pci_dev *dev)¶
返回分配給訪客的 VF 的數量
引數
struct pci_dev *devPCI 裝置
描述
返回屬於此裝置的分配給訪客的 VF 的數量。 如果裝置不是物理功能,則返回 0。
-
int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs)¶
減少 TotalVFs 的可用數量
引數
struct pci_dev *devPCI PF 裝置
u16 numvfs應用於支援的 TotalVFs 的編號
描述
應從 PF 驅動程式的探測例程中呼叫,並持有裝置的互斥鎖。
如果 PF 是支援 SRIOV 的裝置並且 numvfs 的值有效,則返回 0。 如果不是 PF,則返回 -ENOSYS;如果 numvfs 無效,則返回 -EINVAL;如果已啟用 VF,則返回 -EBUSY。
-
int pci_sriov_get_totalvfs(struct pci_dev *dev)¶
獲取此裝置支援的VF總數
引數
struct pci_dev *devPCI PF 裝置
描述
對於支援SRIOV的PCIe裝置,返回PCIe SRIOV capability中的TotalVFs值,或者如果驅動減少了VF數量,則返回driver_max_VFs的值。否則返回0。
-
int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn)¶
用於配置SR-IOV的輔助函式
引數
struct pci_dev *devPCI 裝置
int nr_virtfn要啟用的虛擬函式數量,0表示停用
描述
為在啟用SR-IOV之前不需要任何PF設定的裝置啟用或停用SR-IOV。 錯誤時返回值是負數,成功時返回值是分配的VF數量。
-
ssize_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)¶
從傳統的I/O埠空間讀取位元組
引數
struct file *filp開啟的sysfs檔案
struct kobject *kobj要讀取的檔案對應的kobject
const struct bin_attribute *bin_attr此檔案的struct bin_attribute
char *buf儲存結果的緩衝區
loff_t off傳統的I/O埠空間中的偏移量
size_t count要讀取的位元組數
描述
使用特定於架構的回撥例程(pci_legacy_read)從傳統的I/O埠空間讀取1、2或4個位元組。
-
ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)¶
將位元組寫入傳統的I/O埠空間
引數
struct file *filp開啟的sysfs檔案
struct kobject *kobj要讀取的檔案對應的kobject
const struct bin_attribute *bin_attr此檔案的struct bin_attribute
char *buf包含要寫入的值的緩衝區
loff_t off傳統的I/O埠空間中的偏移量
size_t count要寫入的位元組數
描述
使用特定於架構的回撥例程(pci_legacy_write)將1、2或4個位元組寫入傳統的I/O埠空間。
-
int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)¶
將傳統的PCI記憶體對映到使用者記憶體空間
引數
struct file *filp開啟的sysfs檔案
struct kobject *kobj要對映的裝置對應的kobject
const struct bin_attribute *attr此檔案的struct bin_attribute
struct vm_area_struct *vma傳遞給mmap的struct vm_area_struct
描述
使用特定於架構的回撥pci_mmap_legacy_mem_page_range,將傳統的記憶體空間(匯流排空間的前1MB)對映到應用程式虛擬記憶體空間。
-
int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma)¶
將傳統的PCI IO對映到使用者記憶體空間
引數
struct file *filp開啟的sysfs檔案
struct kobject *kobj要對映的裝置對應的kobject
const struct bin_attribute *attr此檔案的struct bin_attribute
struct vm_area_struct *vma傳遞給mmap的struct vm_area_struct
描述
使用特定於架構的回撥pci_mmap_legacy_io_page_range,將傳統的IO空間(匯流排空間的前1MB)對映到應用程式虛擬記憶體空間。 如果不支援該操作,則返回-ENOSYS
-
void pci_adjust_legacy_attr(struct pci_bus *b, enum pci_mmap_state mmap_type)¶
調整傳統的file屬性
引數
struct pci_bus *b要在其下建立檔案的匯流排
enum pci_mmap_state mmap_typeI/O埠或記憶體
描述
存根實現。 如果必要,可以被架構覆蓋。
-
void pci_create_legacy_files(struct pci_bus *b)¶
建立傳統的I/O埠和記憶體檔案
引數
struct pci_bus *b要在其下建立檔案的匯流排
描述
某些平臺允許在每個總線上訪問傳統的I/O埠和ISA記憶體空間。 此例程建立檔案,並將它們與pci-sysfs.c中相關的讀取、寫入和mmap檔案相關聯。
如果發生錯誤,則進行回退,但不要將錯誤傳播給呼叫方,因為在沒有這些檔案的情況下設定PCI匯流排是可以的。
-
int pci_mmap_resource(struct kobject *kobj, const struct bin_attribute *attr, struct vm_area_struct *vma, int write_combine)¶
將PCI資源對映到使用者記憶體空間
引數
struct kobject *kobj用於對映的kobject
const struct bin_attribute *attr正在對映的檔案的struct bin_attribute
struct vm_area_struct *vma傳遞給mmap的struct vm_area_struct
int write_combine1表示write_combine對映
描述
使用常規的PCI對映例程將PCI資源對映到使用者空間。
-
void pci_remove_resource_files(struct pci_dev *pdev)¶
清理資原始檔
引數
struct pci_dev *pdev要清理的裝置
描述
如果我們為pdev建立了資原始檔,則從sysfs中刪除它們並釋放它們的資源。
-
int pci_create_resource_files(struct pci_dev *pdev)¶
在sysfs中為dev建立資原始檔
引數
struct pci_dev *pdev有問題的裝置
描述
遍歷pdev中的資源,為每個可用的資源建立檔案。
-
ssize_t pci_write_rom(struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)¶
用於啟用對PCI ROM顯示的訪問
引數
struct file *filpsysfs檔案
struct kobject *kobj核心物件控制代碼
const struct bin_attribute *bin_attr此檔案的struct bin_attribute
char *buf使用者輸入
loff_t off檔案偏移量
size_t count輸入中的位元組數
描述
寫入除0以外的任何內容都會啟用它
-
ssize_t pci_read_rom(struct file *filp, struct kobject *kobj, const struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)¶
讀取PCI ROM
引數
struct file *filpsysfs檔案
struct kobject *kobj核心物件控制代碼
const struct bin_attribute *bin_attr此檔案的struct bin_attribute
char *buf將從ROM讀取的資料放入何處
loff_t off檔案偏移量
size_t count要讀取的位元組數
描述
將與kobj對應的PCI裝置中的ROM中從off開始的count個位元組放入buf中。
-
void pci_remove_sysfs_dev_files(struct pci_dev *pdev)¶
清理PCI特定的sysfs檔案
引數
struct pci_dev *pdev應該釋放其條目的裝置
描述
當從sysfs中刪除pdev時進行清理。
-
int pcie_tph_get_cpu_st(struct pci_dev *pdev, enum tph_mem_type mem_type, unsigned int cpu_uid, u16 *tag)¶
檢索與特定CPU關聯的目標記憶體的導向標籤
引數
struct pci_dev *pdevPCI 裝置
enum tph_mem_type mem_type目標記憶體型別(易失性或永續性RAM)
unsigned int cpu_uid關聯的CPU ID
u16 *tag要返回的導向標籤
描述
返回與特定CPU(由cpu_uid指示)關聯的目標記憶體的導向標籤。
返回
成功時返回0,否則返回負值(-errno)
-
int pcie_tph_set_st_entry(struct pci_dev *pdev, unsigned int index, u16 tag)¶
在ST表條目中設定導向標籤
引數
struct pci_dev *pdevPCI 裝置
unsigned int indexST表條目索引
u16 tag要寫入的導向標籤
描述
找出ST表的正確位置,無論是在MSI-X表中還是在TPH擴充套件Capability空間中,並將導向標籤寫入由索引指向的ST條目中。
返回
成功時返回0,否則返回負值(-errno)
-
void pcie_disable_tph(struct pci_dev *pdev)¶
關閉裝置的TPH支援
引數
struct pci_dev *pdevPCI 裝置
返回
無
-
int pcie_enable_tph(struct pci_dev *pdev, int mode)¶
使用特定的ST模式啟用裝置的TPH支援
引數
struct pci_dev *pdevPCI 裝置
int mode要啟用的ST模式。 當前支援的模式包括
PCI_TPH_ST_NS_MODE: NO ST模式
PCI_TPH_ST_IV_MODE: 中斷向量模式
PCI_TPH_ST_DS_MODE: 裝置特定模式
描述
在啟用之前檢查裝置是否實際支援該模式,如果不支援則返回錯誤。 此外,根據裝置的TPH請求者能力和根埠的完成者能力,確定裝置可以發出哪些型別的請求,TPH或擴充套件TPH。
返回
成功時返回0,否則返回負值(-errno)
PCI熱插拔支援庫¶
-
int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)¶
向PCI熱插拔子系統註冊一個hotplug_slot
引數
struct hotplug_slot *slot指向要註冊的
struct hotplug_slot的指標struct pci_bus *bus此插槽所在的匯流排
int devnr裝置號
const char *name在kobject核心中註冊的名稱
struct module *owner呼叫者模組的所有者
const char *mod_name呼叫者模組的名稱
描述
準備一個熱插拔插槽以供核心使用,並立即將其釋出到使用者空間。驅動程式也可以選擇透過呼叫 pci_hp_initialize() 和 pci_hp_add() 分別執行這兩個步驟。
成功返回 0,出錯返回其他值。
-
int __pci_hp_initialize(struct hotplug_slot *slot, struct pci_bus *bus, int devnr, const char *name, struct module *owner, const char *mod_name)¶
準備熱插拔插槽以供核心使用
引數
struct hotplug_slot *slot指向要初始化的
struct hotplug_slot的指標struct pci_bus *bus此插槽所在的匯流排
int devnr插槽號
const char *name在kobject核心中註冊的名稱
struct module *owner呼叫者模組的所有者
const char *mod_name呼叫者模組的名稱
描述
分配並填充一個 PCI 插槽,供熱插拔驅動程式使用。 一旦呼叫此函式,驅動程式可以呼叫 hotplug_slot_name() 來獲取插槽的唯一名稱。 從那時起,驅動程式必須準備好處理 ->reset_slot 回撥。
成功返回 0,出錯返回負整數。
-
int pci_hp_add(struct hotplug_slot *slot)¶
將熱插拔插槽釋出到使用者空間
引數
struct hotplug_slot *slot指向要釋出的
struct hotplug_slot的指標
描述
使熱插拔插槽的 sysfs 介面可用,並透過傳送 uevent 通知使用者空間已新增該插槽。 從那時起,熱插拔驅動程式必須準備好處理所有 struct hotplug_slot_ops 回撥。
成功返回 0,出錯返回負整數。
-
void pci_hp_deregister(struct hotplug_slot *slot)¶
從PCI熱插拔子系統登出一個hotplug_slot
引數
struct hotplug_slot *slot指向要登出的
struct hotplug_slot的指標
描述
在先前呼叫 pci_hp_register() 時,slot 必須已在 pci 熱插拔子系統中註冊。
-
void pci_hp_del(struct hotplug_slot *slot)¶
從使用者空間取消釋出熱插拔插槽
引數
struct hotplug_slot *slot指向要取消釋出的
struct hotplug_slot的指標
描述
刪除熱插拔插槽的 sysfs 介面。
-
void pci_hp_destroy(struct hotplug_slot *slot)¶
從核心使用中刪除熱插拔插槽
引數
struct hotplug_slot *slot指向要銷燬的
struct hotplug_slot的指標
描述
銷燬熱插拔驅動程式使用的 PCI 插槽。 一旦呼叫此函式,驅動程式將不再能夠呼叫 hotplug_slot_name() 來獲取插槽的唯一名稱。 從那時起,驅動程式不再需要處理 ->reset_slot 回撥。