高通耳機hal及識別有關記錄

2021-09-25 16:30:11 字數 1964 閱讀 5626

1. audio hal層檔案所在目錄如下藍色部分,audio使用的配置檔案是sdm450auto.conf,怎麼知道是這個檔案呢?看了編譯規則相當複雜,最簡單直接的辦法是看提交記錄,如果不幸是第乙個到這裡的人,那就只能列印log追蹤編譯規則了,這裡提供乙個在make檔案中列印log的方法:

輸出變數mtk_hall_support的值並停止在該行(echologlog)

$(error errorlog***xlog:$(strip $(mtk_hall_support)))

輸出變數mtk_hall_support的值繼續編譯

知道這個配置檔案的目的是了解正在除錯的專案都開啟和配置了那些相關巨集,方便從整體上了解audio hal 層的配置情況。

2. 當然對我們耳機檢查來說不是主要的,耳機檢查主要是以下狀態的檢測。

enum wcd_mbhc_plug_type ;

耳機插入列印出的kernel log中搜尋如下顯示

wcd_mbhc_find_plug_and_report: enter current_plug(0) new_plug(1) // 1代表了四段耳機插入

下面截圖是源**部分(wcd-hbhc-v2.c中的函式wcd_mbhc_find_plug_and_report)。

wcd_mbhc_find_plug_and_report()完成以下功能

發現什麼裝置插入;

向上層匯報input event事件,比如四段耳機插入了。

在耳機識別過程中,有以下引數可以微微除錯,可以把檢測時間調整的短一點,這樣會測量快,但誤差概率會上公升,比如四段耳機識別為三段耳機,所以是乙個權衡值。以下兩處可以只修改一處,也可以兩處都修改。

wcd-mbhc-v2.h (la.um.7.6.2\linux\android\vendor\qcom\opensource\audio-kernel\asoc\codecs)

修改一處的辦法,把迴圈次數降低一半,這樣檢查到的耳機速度比原來快一倍。

#define special_hs_detect_time_ms (2 * 1000)

#define mbhc_button_press_threshold_min 250

-#define gnd_mic_swap_threshold 4

+#define gnd_mic_swap_threshold 2  // 由4變為2

修改兩處的辦法,迴圈次數減半,檢測時間減去三分之一。

--#define gnd_mic_swap_threshold 4

++#define gnd_mic_swap_threshold 2 //判斷歐美標用

--#define hs_detect_plug_time_ms (3 * 1000)

++#define

hs_detect_plug_time_ms

(2* 1000) //識別時間用

static void wcd_correct_swch_plug(struct work_struct *work)

可以看到應用hs_detect_plug_time_ms的地方起了乙個定時器jiffes,先以當前jiffes為基礎,再增加乙個hs_detect_plug_time_ms的延時,當延時到了後跳出while迴圈。

此函式wcd_correct_swch_plug裡面決定是否開啟美標耳機和歐標耳機,如log

pr_debug("%s: us_eu gpio present,flip switch\n" , __func__);

如果列印出此log,說明要進行歐美標切換。

高通 低通濾波

一 關於影象高頻和低頻 1.1 對影象高頻訊號和低頻訊號的理解 影象中的低頻訊號和高頻訊號也叫做低頻分量和高頻分量。簡單一點說,影象中的高頻分量,指的是影象強度 亮度 灰度 變化劇烈的地方,也就是 我們常說的邊緣 輪廓 影象中的低頻分量,指的是影象強度 亮度 灰度 變換平緩的地方,也就是大片色塊的地...

高通編譯命令

開啟終端輸入下面命令 1.source build envsetup.sh 2.lunch 選擇相應的序號或輸入要編譯的專案名稱,一般都是eng或userdebug軟體。如果要編譯user版本,就不需要輸入lunch,輸入如下命令之前請先把工程clean再輸入如下命令,否則會出錯 make devi...

高通平台Bring up

3.2.amss 部分編譯 主要由以下部分構成 adsp,boot,debug,modem,rpm,trustzone,wcnss,分別根據高通的說明編譯這些模組,不過其中有些模組我們不會改,直接用release的binary檔案就行,比如 debug,rpm,trustzone,wcnss。3.3...