GPIO_GET_LINEHANDLE_IOCTL

警告

此ioctl是GPIO字元裝置使用者空間API (v1)的一部分,已被GPIO_V2_GET_LINE_IOCTL取代。

名稱

GPIO_GET_LINEHANDLE_IOCTL - 從核心請求一個或多個線路。

概要

GPIO_GET_LINEHANDLE_IOCTL

int ioctl(int chip_fd, GPIO_GET_LINEHANDLE_IOCTL, struct gpiohandle_request *request)

引數

chip_fd

open()返回的GPIO字元裝置的檔案描述符。

request

指定要請求的線路及其配置的handle_request

描述

從核心請求一個或多個線路。

雖然可以請求多個線路,但相同的配置適用於請求中的所有線路。

成功後,請求程序將被授予對線路值的獨佔訪問權和對線路配置的寫入許可權。

線路的狀態,包括輸出線路的值,保證保持請求的狀態,直到返回的檔案描述符關閉。一旦檔案描述符關閉,從使用者空間的角度來看,線路的狀態變得不受控制,並且可能恢復到其預設狀態。

請求已使用的線路是一個錯誤 (EBUSY)。

關閉chip_fd對現有線路控制代碼沒有影響。

配置規則

以下配置規則適用

方向標誌,GPIOHANDLE_REQUEST_INPUTGPIOHANDLE_REQUEST_OUTPUT,不能組合。如果兩者都沒有設定,則唯一可以設定的另一個標誌是 GPIOHANDLE_REQUEST_ACTIVE_LOW,並且線路被請求為“原樣”,以便在不改變電氣配置的情況下讀取線路值。

驅動標誌,GPIOHANDLE_REQUEST_OPEN_xxx,要求設定 GPIOHANDLE_REQUEST_OUTPUT。只能設定一個驅動標誌。如果未設定任何驅動標誌,則假定該線路為推輓。

只能設定一個偏置標誌,GPIOHANDLE_REQUEST_BIAS_xxx,並且它需要同時設定一個方向標誌。如果未設定任何偏置標誌,則偏置配置不會更改。

請求無效配置是一個錯誤 (EINVAL)。

配置支援

如果底層硬體和驅動程式不直接支援請求的配置,則核心應用以下方法之一

  • 拒絕請求

  • 在軟體中模擬該功能

  • 將該功能視為盡力而為

應用的方法取決於該功能是否可以在軟體中合理地模擬,以及如果不支援該功能,對硬體和使用者空間的影響。每個功能應用的方法如下

功能

方法

偏置

盡力而為

方向

拒絕

驅動

模擬

偏置被視為盡力而為,以允許使用者空間為支援內部偏置的平臺應用與需要外部偏置的平臺相同的配置。最壞的情況下,線路浮動,而不是按預期進行偏置。

驅動是透過線上路不應被驅動時將其切換到輸入來模擬的。

在所有情況下,GPIO_GET_LINEINFO_IOCTL 報告的配置是請求的配置,而不是最終的硬體配置。使用者空間無法確定該功能是否在硬體中受支援、是否被模擬或是否盡力而為。

返回值

成功時返回 0,並且 request.fd 包含請求的檔案描述符。

出錯時返回 -1,並且 errno 變數被適當地設定。常見的錯誤程式碼在GPIO 錯誤程式碼中描述。