2.23. V4L2 fwnode kAPI¶
-
struct v4l2_fwnode_endpoint¶
端點資料結構
定義:
struct v4l2_fwnode_endpoint {
struct fwnode_endpoint base;
enum v4l2_mbus_type bus_type;
struct {
struct v4l2_mbus_config_parallel parallel;
struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
struct v4l2_mbus_config_mipi_csi2 mipi_csi2;
} bus;
u64 *link_frequencies;
unsigned int nr_of_link_frequencies;
};
成員
basev4l2_fwnode 的 fwnode 端點
bus_type匯流排型別
bus匯流排配置資料結構
bus.parallel嵌入式
struct v4l2_mbus_config_parallel。如果匯流排是並行匯流排,則使用此結構。bus.mipi_csi1嵌入式
struct v4l2_mbus_config_mipi_csi1。如果匯流排是 MIPI Alliance 的 Camera Serial Interface version 1 (MIPI CSI1) 或 Standard Mobile Imaging Architecture 的 Compact Camera Port 2 (SMIA CCP2),則使用此結構。bus.mipi_csi2嵌入式
struct v4l2_mbus_config_mipi_csi2。如果匯流排是 MIPI Alliance 的 Camera Serial Interface version 2 (MIPI CSI2),則使用此結構。link_frequencies支援的鏈路頻率陣列
nr_of_link_frequencieslink_frequenccies 陣列中的元素數量
-
V4L2_FWNODE_PROPERTY_UNSET¶
V4L2_FWNODE_PROPERTY_UNSET
-
enum v4l2_fwnode_orientation¶
可能的裝置方向
常量
V4L2_FWNODE_ORIENTATION_FRONT裝置安裝在正面
V4L2_FWNODE_ORIENTATION_BACK裝置安裝在背面
V4L2_FWNODE_ORIENTATION_EXTERNAL裝置位於外部
-
struct v4l2_fwnode_device_properties¶
fwnode 裝置屬性
定義:
struct v4l2_fwnode_device_properties {
enum v4l2_fwnode_orientation orientation;
unsigned int rotation;
};
成員
orientation裝置方向。請參閱
enum v4l2_fwnode_orientationrotation裝置旋轉
-
struct v4l2_fwnode_link¶
兩個端點之間的連結
定義:
struct v4l2_fwnode_link {
struct fwnode_handle *local_node;
unsigned int local_port;
unsigned int local_id;
struct fwnode_handle *remote_node;
unsigned int remote_port;
unsigned int remote_id;
};
成員
local_node指向此端點的 device_node 的指標
local_port此端點所屬埠的識別符號
local_id此端點所屬 id 的識別符號
remote_node指向遠端端點的 device_node 的指標
remote_port遠端端點所屬埠的識別符號
remote_id遠端端點所屬 id 的識別符號
-
enum v4l2_connector_type¶
聯結器型別
常量
V4L2_CONN_UNKNOWN未知的聯結器型別,沒有 V4L2 聯結器配置
V4L2_CONN_COMPOSITE模擬複合聯結器
V4L2_CONN_SVIDEO模擬 svideo 聯結器
-
struct v4l2_connector_link¶
聯結器連結資料結構
定義:
struct v4l2_connector_link {
struct list_head head;
struct v4l2_fwnode_link fwnode_link;
};
成員
head用於將連結新增到
struct v4l2_fwnode_connector的結構fwnode_linkstruct v4l2_fwnode_link聯結器與聯結器所屬裝置之間的連結。
-
struct v4l2_fwnode_connector_analog¶
模擬聯結器資料結構
定義:
struct v4l2_fwnode_connector_analog {
v4l2_std_id sdtv_stds;
};
成員
sdtv_stds此聯結器支援的 sdtv 標準,如果沒有指定限制,則設定為 V4L2_STD_ALL。
-
struct v4l2_fwnode_connector¶
聯結器資料結構
定義:
struct v4l2_fwnode_connector {
const char *name;
const char *label;
enum v4l2_connector_type type;
struct list_head links;
unsigned int nr_of_links;
union {
struct v4l2_fwnode_connector_analog analog;
} connector;
};
成員
name聯結器裝置名稱
label可選的聯結器標籤
type聯結器型別
links所有聯結器
struct v4l2_connector_link連結的列表nr_of_links連結總數
connector聯結器配置
connector.analog
-
enum v4l2_fwnode_bus_type¶
韌體屬性定義的影片匯流排型別
常量
V4L2_FWNODE_BUS_TYPE_GUESS如果沒有 bus-type fwnode 屬性,則為預設值
V4L2_FWNODE_BUS_TYPE_CSI2_CPHYMIPI CSI-2 匯流排,C-PHY 物理層
V4L2_FWNODE_BUS_TYPE_CSI1MIPI CSI-1 匯流排
V4L2_FWNODE_BUS_TYPE_CCP2SMIA Compact Camera Port 2 匯流排
V4L2_FWNODE_BUS_TYPE_CSI2_DPHYMIPI CSI-2 匯流排,D-PHY 物理層
V4L2_FWNODE_BUS_TYPE_PARALLEL相機並行介面匯流排
V4L2_FWNODE_BUS_TYPE_BT656BT.656 影片格式匯流排型別
V4L2_FWNODE_BUS_TYPE_DPI影片並行介面匯流排
NR_OF_V4L2_FWNODE_BUS_TYPE匯流排型別數量
-
int v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep)¶
解析所有 fwnode 節點屬性
引數
struct fwnode_handle *fwnode指向端點的 fwnode 控制代碼的指標
struct v4l2_fwnode_endpoint *vep指向 V4L2 fwnode 資料結構的指標
描述
此函式從韌體解析 V4L2 fwnode 端點特定的引數。有兩種方法可以使用此函式,一種是讓它獲取匯流排的型別(透過將 vep.bus_type 欄位設定為 V4L2_MBUS_UNKNOWN),另一種是將匯流排型別明確指定為 enum v4l2_mbus_type 型別之一。
當 vep.bus_type 為 V4L2_MBUS_UNKNOWN 時,如果“bus-type”屬性可用,該函式將使用該屬性來確定型別。呼叫者負責驗證呼叫返回後 vep.bus_type 欄位的內容。
作為一種已棄用的功能,用於支援舊的 DT 繫結,這些繫結沒有支援多種型別的裝置的“bus-type”屬性,如果“bus-type”屬性不存在,該函式將嘗試根據可用的端點屬性來猜測型別。永遠不要在新驅動程式或繫結中依賴猜測匯流排型別。
也可以將 vep.bus_type 設定為對應於實際匯流排的型別。在這種情況下,該函式將僅嘗試解析與此匯流排相關的屬性,並且如果“bus-type”屬性的值對應於不同的匯流排,它將返回一個錯誤。
呼叫者需要初始化 vep 的所有欄位,無論是顯式值還是將其置零。
如果函式失敗,則不會更改 V4L2 fwnode 端點狀態。
注意
此函式不解析“link-frequencies”屬性,因為其大小事先未知。如果需要可變大小的屬性,請使用 v4l2_fwnode_endpoint_alloc_parse()。
返回值
- 成功時返回
0,失敗時返回負錯誤程式碼 記憶體分配失敗時返回
-ENOMEM,解析失敗時返回-EINVAL,匯流排型別不匹配時返回-ENXIO
-
void v4l2_fwnode_endpoint_free(struct v4l2_fwnode_endpoint *vep)¶
釋放
v4l2_fwnode_endpoint_alloc_parse()獲取的 V4L2 fwnode
引數
struct v4l2_fwnode_endpoint *vep要釋放資源的 V4L2 fwnode
描述
使用 NULL 引數或解析失敗的 V4L2 fwnode 呼叫此函式是安全的。
-
int v4l2_fwnode_endpoint_alloc_parse(struct fwnode_handle *fwnode, struct v4l2_fwnode_endpoint *vep)¶
解析所有 fwnode 節點屬性
引數
struct fwnode_handle *fwnode指向端點的 fwnode 控制代碼的指標
struct v4l2_fwnode_endpoint *vep指向 V4L2 fwnode 資料結構的指標
描述
此函式從韌體解析 V4L2 fwnode 端點特定的引數。有兩種方法可以使用此函式,一種是讓它獲取匯流排的型別(透過將 vep.bus_type 欄位設定為 V4L2_MBUS_UNKNOWN),另一種是將匯流排型別明確指定為 enum v4l2_mbus_type 型別之一。
當 vep.bus_type 為 V4L2_MBUS_UNKNOWN 時,如果“bus-type”屬性可用,該函式將使用該屬性來確定型別。呼叫者負責驗證呼叫返回後 vep.bus_type 欄位的內容。
作為一種已棄用的功能,用於支援舊的 DT 繫結,這些繫結沒有支援多種型別的裝置的“bus-type”屬性,如果“bus-type”屬性不存在,該函式將嘗試根據可用的端點屬性來猜測型別。永遠不要在新驅動程式或繫結中依賴猜測匯流排型別。
也可以將 vep.bus_type 設定為對應於實際匯流排的型別。在這種情況下,該函式將僅嘗試解析與此匯流排相關的屬性,並且如果“bus-type”屬性的值對應於不同的匯流排,它將返回一個錯誤。
呼叫者需要初始化 vep 的所有欄位,無論是顯式值還是將其置零。
如果函式失敗,則不會更改 V4L2 fwnode 端點狀態。
v4l2_fwnode_endpoint_alloc_parse() 與 v4l2_fwnode_endpoint_parse() 有兩個重要的區別
它還可以解析可變大小的資料。
它已分配用於儲存可變大小資料的記憶體必須在使用完畢後使用
v4l2_fwnode_endpoint_free()釋放。
返回值
- 成功時返回
0,失敗時返回負錯誤程式碼 記憶體分配失敗時返回
-ENOMEM,解析失敗時返回-EINVAL,匯流排型別不匹配時返回-ENXIO
-
int v4l2_fwnode_parse_link(struct fwnode_handle *fwnode, struct v4l2_fwnode_link *link)¶
解析兩個端點之間的連結
引數
struct fwnode_handle *fwnode指向連結本地端點 fwnode 的指標
struct v4l2_fwnode_link *link指向 V4L2 fwnode 連結資料結構的指標
描述
用本地和遠端節點以及埠號填充連結結構。local_node 和 remote_node 欄位設定為分別指向本地和遠端埠的父節點(如果該節點不是“ports”節點,則埠父節點是埠節點的父節點,否則是埠節點的祖父節點)。
將獲取對本地節點和遠端節點的引用,呼叫者必須使用 v4l2_fwnode_put_link() 在完成連結後釋放引用。
返回值
成功時返回 0,如果找不到遠端端點 fwnode,則返回 -ENOLINK。
-
void v4l2_fwnode_put_link(struct v4l2_fwnode_link *link)¶
釋放連結中節點的引用
引數
struct v4l2_fwnode_link *link指向 V4L2 fwnode 連結資料結構的指標
描述
釋放連結中本地節點和遠端節點的引用。必須對使用 v4l2_fwnode_parse_link() 解析的每個連結呼叫此函式。
-
void v4l2_fwnode_connector_free(struct v4l2_fwnode_connector *connector)¶
釋放 V4L2 聯結器獲取的記憶體
引數
struct v4l2_fwnode_connector *connector要釋放資源的 V4L2 聯結器
描述
釋放所有分配的記憶體,並釋放由 v4l2_fwnode_connector_parse() 和 v4l2_fwnode_connector_add_link() 獲取的所有連結。
使用 NULL 引數或解析失敗的 V4L2 聯結器呼叫此函式是安全的。
-
int v4l2_fwnode_connector_parse(struct fwnode_handle *fwnode, struct v4l2_fwnode_connector *connector)¶
引數
struct fwnode_handle *fwnode指向子裝置端點的 fwnode 控制代碼的指標,聯結器連線到該控制代碼,或聯結器端點 fwnode 控制代碼。
struct v4l2_fwnode_connector *connector指向 V4L2 fwnode 聯結器資料結構的指標
描述
使用聯結器型別、標籤和所有 enum v4l2_connector_type 特定聯結器資料填充 struct v4l2_fwnode_connector。標籤是可選的,因此如果沒有找到標籤,則將其設定為 NULL。該函式將連結初始化為零。呼叫 v4l2_fwnode_connector_add_link() 完成向聯結器新增連結。
不再需要標籤時,必須釋放為標籤分配的記憶體。釋放記憶體是透過 v4l2_fwnode_connector_free() 完成的。
返回值
成功時返回
0,失敗時返回負錯誤程式碼如果 fwnode 無效,則返回
-EINVAL如果聯結器型別未知或找不到聯結器裝置,則返回
-ENOTCONN
-
int v4l2_fwnode_connector_add_link(struct fwnode_handle *fwnode, struct v4l2_fwnode_connector *connector)¶
在聯結器節點和 v4l2-subdev 節點之間新增連結。
引數
struct fwnode_handle *fwnode指向子裝置端點的 fwnode 控制代碼的指標,聯結器連線到該控制代碼
struct v4l2_fwnode_connector *connector指向 V4L2 fwnode 聯結器資料結構的指標
描述
將新的 struct v4l2_connector_link 連結新增到 struct v4l2_fwnode_connector 聯結器連結列表。連結 local_node 指向聯結器節點,remote_node 指向主機 v4l2(子)裝置。
必須在使用完畢後釋放對 remote_node 和 local_node 的引用,並且必須釋放分配的記憶體。兩者都是透過呼叫 v4l2_fwnode_connector_free() 完成的。
返回值
成功時返回
0,失敗時返回負錯誤程式碼如果 fwnode 或 connector 無效,或者 connector 型別未知,則返回
-EINVAL連結記憶體分配失敗時返回
-ENOMEM如果找不到遠端聯結器裝置,則返回
-ENOTCONN如果 v4l2(子)裝置和聯結器之間的連結解析失敗,則返回
-ENOLINK
-
int v4l2_fwnode_device_parse(struct device *dev, struct v4l2_fwnode_device_properties *props)¶
解析 fwnode 裝置屬性
引數
struct device *dev指向
struct device的指標struct v4l2_fwnode_device_properties *props指向
struct v4l2_fwnode_device_properties的指標,用於儲存已解析的屬性值
描述
此函式從韌體介面解析並驗證 V4L2 fwnode 裝置屬性,並填充呼叫者提供的 struct v4l2_fwnode_device_properties。
返回值
成功時返回 % 0,如果已解析的屬性值無效,則返回
-EINVAL