ASoC插孔檢測

2021-08-30 11:26:38 字數 941 閱讀 8241

alsa有乙個標準api,用於向使用者空間表示物理插孔,其核心端可以在include / sound / jack.h中看到。asoc提供此api的乙個版本,增加了兩個附加功能:

這是通過將插孔分成三個一起工作來實現的:插孔本身由struct snd_soc_jack表示,snd_soc_jack_pins表示要更新的dapm端點,以及**塊提供插孔報告機制。

例如,系統可以具有帶有兩個報告機制的立體聲耳機插孔,乙個用於耳機,乙個用於麥克風。有些系統在連線耳機時將無法使用揚聲器輸出,因此在耳機插孔狀態發生變化時,需要確保更新揚聲器和耳機。

這表示系統上的物理插孔,是使用者空間可見的。千斤頂本身是完全被動的,它由機器驅動器設定並通過千斤頂檢測方法更新。

傑克是由機器驅動程式呼叫snd_soc_jack_new()建立的。

這些代表dapm引腳,根據插孔支援的某些狀態位進行更新。每個snd_soc_jack都有零個或多個自動更新。它們由機器驅動程式建立,並使用snd_soc_jack_add_pins()與jack相關聯。如果需要,端點的狀態可以被配置為與插孔狀態相反(例如,如果沒有通過插孔連線麥克風則啟用內建麥克風)。

實際插孔檢測由**完成,該**能夠監視系統的一些輸入並通過呼叫snd_soc_jack_report()來更新插孔,指定要更新的位子集。插孔檢測**應由機器驅動程式設定,配置千斤頂更新以及連線插孔時要報告的事物集。

通常這是基於gpio的狀態完成的 - 這個處理程式由snd_soc_jack_add_gpio()函式提供。其他方法也是可用的,例如整合到codec中。可以在wm8350驅動程式中看到codec整合插孔檢測的乙個示例。

每個插孔可能有多個報告機制,但至少需要乙個才有用。

這些都由機器驅動程式連線在一起,具體取決於系統硬體。機器驅動程式將設定snd_soc_jack和要更新的引腳列表,然後設定乙個或多個插孔檢測機制,以根據其當前狀態更新該插孔。

hdu 1205吃糖果(插孔)

題目 1146 吃糖果 時間限制 1 sec 記憶體限制 128 mb 提交 4004 解決 1795 提交 狀態 討論版 命題人 admin 題目描述 hoho,終於從speakless手上贏走了所有的糖果,是gardon吃糖果時有個特殊的癖好,就是不喜歡連續兩次吃一樣的糖果,喜歡先吃一顆a種類的...

poj 2828 線段樹插孔處理

給你乙個數列出現的先後順序num i 和對應數值 輸出最後排好序的對應數值,如 4 0 77 1 51 1 33 2 69第一步 77 第二部 77 51 第三步 77 33 51 第四部77 33 69 51 後面先出現的位置是固定的 所以從後往前處理。線段樹每個節點存當前區間還有多少個空位 in...

ASOC子框架 賞析 移植 bug記錄

machine是怎麼樣將這幾部分關聯起來的 asoc把不同的裝置分成了三部分 1 machine 2 codec 3 platform 各個部分可以分別進行驅動開發,最終是通過machine將這幾個部分關聯成系統。那麼,產生了下面兩個問題 1 machine是怎麼樣將這幾部分關聯起來的。2 每乙個部...