HTE 核心提供者驅動程式

描述

Nvidia Tegra HTE 提供者,也稱為 GTE(通用時間戳引擎)驅動程式,實現了兩個 GTE 例項:1) GPIO GTE 和 2) LIC(傳統中斷控制器)IRQ GTE。這兩個 GTE 例項都從系統計數器 TSC 獲取時間戳,TSC 的時鐘頻率為 31.25MHz,驅動程式在將其儲存為時間戳值之前,會將時鐘週期轉換為納秒。

GPIO GTE

此 GTE 例項即時為 GPIO 新增時間戳。為此,GPIO 需要配置為輸入。只有始終開啟 (AON) 的 GPIO 控制器例項支援即時為 GPIO 新增時間戳,因為它與 GPIO GTE 緊密耦合。為了支援這一點,GPIOLIB 添加了如下所述的兩個可選 API。GPIO GTE 程式碼支援核心和使用者空間消費者。核心空間消費者可以直接與 HTE 子系統通訊,而使用者空間消費者的時間戳請求則透過 GPIOLIB CDEV 框架到達 HTE 子系統。`Documentation/devicetree/bindings/timestamp` 中描述的 HTE 裝置樹繫結提供了消費者如何請求 GPIO 線路的示例。

請參閱 gpiod_enable_hw_timestamp_ns()gpiod_disable_hw_timestamp_ns()

對於使用者空間消費者,在 IOCTL 呼叫期間必須指定 `GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE` 標誌。請參考 `tools/gpio/gpio-event-mon.c`,它以納秒為單位返回時間戳。

LIC(傳統中斷控制器)IRQ GTE

此 GTE 例項即時為 LIC IRQ 線路新增時間戳。`Documentation/devicetree/bindings/timestamp` 中描述的 HTE 裝置樹繫結提供了消費者如何請求 IRQ 線路的示例。由於它與 IRQ GTE 提供者是一一對映的,因此消費者只需指定他們感興趣的 IRQ 號即可。HTE 框架中沒有針對此 GTE 例項的使用者空間消費者支援。

IRQ 和 GPIO GTE 例項的提供者原始碼位於 `drivers/hte/hte-tegra194.c`。測試驅動程式 `drivers/hte/hte-tegra194-test.c` 展示了 IRQ 和 GPIO GTE 的 HTE API 用法。