高通平台在modem側讀取和設定GPIO狀態

2021-10-19 03:42:19 字數 3309 閱讀 2505

高通msm8953平台有乙個需求:需要在modem側讀取和設定gpio狀態,這樣就可以識別不同的硬體版本,從而載入不同的射頻nv檔案。

使用gpio134和gpio62來檢測不同硬體的上下拉來識別,如下圖:

**修改

//begin: stone added for gpio-in

/* dal apis */

#include

"dditlmm.h"

#include

"daldevice.h"

#include

"daldeviceid.h"

//end: stone added for gpio-in

再定義使用的gpio:

//begin: stone added for gpio-in

#define rf_gpio_num1 134

#define rf_gpio_num2 62

#define rf_config_gpio1 \

dal_gpio_cfg(rf_gpio_num1, 0, (uint32)dal_gpio_input, (uint32)dal_gpio_pull_up, (uint32)dal_gpio_2ma)

#define rf_config_gpio2 \

dal_gpio_cfg(rf_gpio_num2, 0, (uint32)dal_gpio_input, (uint32)dal_gpio_pull_up, (uint32)dal_gpio_2ma)

//end: stone added for gpio-in

如果需要使用gpio輸出,還可以新增:

//測試輸出

#define test_gpio_num 0

#define test_config_gpio \

dal_gpio_cfg(test_gpio_num, 0, (uint32)dal_gpio_output, (uint32)dal_gpio_pull_up, (uint32)dal_gpio_2ma)

函式定義:

//begin: stone added for gpio-in

static daldevicehandle *tlmm_dal_handle =

null

;dalresult gpio_init_dal_handle

(void

)return dal_status;

}int

rfc_common_get_gpio

(void

)//daltlmm_selectgpioidmode(tlmm_dal_handle, uim_tlmm_gpio_inst_index, &settings);

//config gpio function

(void

)daltlmm_configgpio

(tlmm_dal_handle,

(dalgpiosignaltype)rf_config_gpio1,

dal_tlmm_gpio_enable);(

void

)daltlmm_configgpio

(tlmm_dal_handle,

(dalgpiosignaltype)rf_config_gpio2,

dal_tlmm_gpio_enable)

; nresult =

daltlmm_gpioin

(tlmm_dal_handle,

(dalgpiosignaltype)rf_config_gpio1,

&evalue);if

((dal_success == nresult)&&(

(dal_gpio_low_value == evalue)

||(dal_gpio_high_value == evalue)))

else

return-1

; nresult =

daltlmm_gpioin

(tlmm_dal_handle,

(dalgpiosignaltype)rf_config_gpio2,

&evalue);if

((dal_success == nresult)&&(

(dal_gpio_low_value == evalue)

||(dal_gpio_high_value == evalue)))

else

return-1

; ret_status =

((ret_status_134 <<1)

| ret_status_62)

;msg_1

(msg_ssid_ds, msg_legacy_fatal,

"dbg::ret_status = %d"

, ret_status)

;return ret_status;

}//end: stone added for gpio-in

//測試輸出gpio狀態

(void

)daltlmm_configgpio

(tlmm_dal_handle,

(dalgpiosignaltype)test_config_gpio,

dal_tlmm_gpio_enable);(

void

)daltlmm_gpioidout

(tlmm_dal_handle,

(dalgpiosignaltype)test_config_gpio,

dal_gpio_high_value)

;

上述完成後,在需要檢測gpio狀態的地方呼叫rfc_common_get_gpio即可:

void

caller_func

(void){

…… int gpio_value =0;

gpio_value =

rfc_common_get_gpio()

;msg_1

(msg_ssid_ds, msg_legacy_fatal,

"dbg::gpio_value********* = %d"

, gpio_value)

; ……

高通modem側新增AT命令

modem側新增at命令 filename description dsat.h atcop外部模組使用的定義,函式和資料結構 dsat.h atcop外部模組使用的定義,函式和資料結構 dsati.h atcop內部使用的定義,函式和資料結構 dsatprep.c 接收自串列埠裝置的資料的預處理 ...

在高通平台如何新增沒有定義的按鍵

1.在對應的檔案裡新增裝置樹 如 2.在對應的pinctrl裡修改重複gpio 3.如果在 device google atv generic.kl裡沒有按鍵定義 就在device qcom msm8953 64 gpio keys.kl裡先對映 補充 在 device google atv gen...

MTK和高通展訊他們平台的主要區別是什麼

高通 美國的晶元廠商,世界頂級智慧型手機cpu廠商。mtk 台灣的晶元廠商,中文名 聯發科,2009才推出智慧型手機晶元,中國山寨手機的晶元就是出自於它,稱 山寨手機之父 展訊 中國大陸的晶元廠商,不怎麼樣。論效能,最出色的是高通的晶元,主要是中高階市場,質量很過關。然後是mtk,但是mtk發展很快...