四、Driver - Misc



1.關於MTK平臺支持的耳機:

一般手機(包括Nokia、三星等)是:L、R、MIC、GND。

小米、iPhone、HTC等是:L、R、GND、MIC。

MTK 平臺目前支持第一種:L、R、MIC、GND。 (對於一般3線制耳機MTK也支持)。

2.DCT配置GPIO的設置/初 始化:

1)當配置GPIO時,有的有勾選M0~M7中的兩個,甚至有的還需要勾選勾選多個?最後GPIO配置成了 哪個功能呢? 

(1) GPIO在系統初始化後的mode是由Def.Mode這一欄決定的。 

(2) 如果勾選了M0-M7中的某些項,則會生成類似  #define GPIO_UART_UTXD4_PIN_M_GPIO GPIO_MODE_00 

這樣的宏定義,在code中可以直接使用。

(3) 但是系統初始化後的mode還是以Def.Mode這一欄的選擇爲準。

2)當配置成NC的gpio實際開機後是個什麼狀態?

通常是Mode 0,GPIO Mode,輸入模式,使能內部下拉。

3) 修改了DCT中的GPIO Setting後,怎樣編譯? 

./mk [Project_Name] new preloader

./mk [Project_Name] new uboot/lk

./mk [Project_Name] new kernel

./mk [Project_Name] bootimage

4)MT6589的dct配置的參數是在代碼的哪個地方生效? 

LK中生效, 具體位置如下:mediatek/platform/mt6589/lk/mt_gpio_init.c 函數爲void platform_early_init(void)-->    mt_gpio_set_default();

3. 讀取和修改GPIO配置參數的 ADB命令

4.耳機檢測

82以及之後的平臺,請一定要用EINT+ACCDET方式進行耳機檢測。

5.Headset accdet常用宏:

在accdet.c和accdet_custome.h爲了實現一些功能有用到很多宏開關,把目前相應的宏開關介紹如下 : 

1: ACCDET_EINT

是否啓用了外部中斷來偵測是否有耳機插入和拔出

2: ACCDET_MULTI_KEY_FEATURE

是否支持使用A/D來偵測key,這裏要注意的是即使耳機只有一個key若是在89的平臺也需打開此宏 開關 

3: ACCDET_LOW_POWER

當插入三段耳機6s後自動關閉micbias,達到省電的目的

以上三個宏可以看成一個宏

4: ACCDET_28v_MODE

在我們內部有一個switch是針對外部耳機是用2.8還是1.9V的切換開關,美標的是2.8V, 國標的是 1.9V 

5: ACCDET_PIN_RECOGNIZATION

美標的插孔識別國標的耳機,國標的耳機識別美標的插孔,目前這個功能還沒有實現,此宏不能打開

6:  ACCDET_SHORT_PLUGOUT_DEBOUNCE

ACCDET_SHORT_PLUGOUT_DEBOUNCE_CN   25

拔出耳機後有時候圖標會再彈出後在消失, 主要解決類似bug

7: ACCDET_PIN_SWAP

美標的插孔識別國標的耳機,這個時候需要藉助accdet的一個上拉電阻,當有這種情形的時候AB一 直爲0,達到檢測到的目的,當然也有誤判的時候, 4段耳機按住按鍵插入後會有誤判

6.如何配置PMIC 上的RST_KEY

alps/mediatek/custom/$PRJ/kernel/kpd/kpd/mtk_kpd.h

配成 vol- :

#define KPD_PMIC_RSTKEY_MAP KEY_VOLUMEDOWN

配成 home key:

#define KPD_PMIC_RSTKEY_MAP KEY_HOME

7.怎樣添加一個自定義的LED燈

1. 修改如下兩個文件:

alps/mediatek/custom/common/kernel/leds/inc/cust_leds.h

enum mt65xx_led_type 

{

MT65XX_LED_TYPE_RED = 0,

... ...

MT65XX_LED_TYPE_LCD,

MT65XX_LED_TYPE_ABC, // Add a new LED type

MT65XX_LED_TYPE_TOTAL,

};

alps/mediatek/custom/YOUR_PRJ/kernel/leds/mt65xx/cust_leds.c

static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = { 

{"red",               MT65XX_LED_MODE_NONE, -1,{0}},

{"lcd-backlight",     MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight,{0}},

// Set LED params, Please refer to <Driver all in One>

{"abc-backlight", MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight_abc,{0}},

};

8.BB端PWM FIFO mode配置參數說 明

9.如何配置UART1/UART4爲Log輸 出端口? 

mediatek\source\external\mhal\src\custom\common\preloader\inc\cust_bldr.h

#define CFG_LOG_BAUDRATE 921600

#define CFG_UART_LOG (UART1)

可以修改如下宏定義切換log輸出口:

mediatek/custom/project_name/preloader/inc/cust_bldr.h:  CFG_UART_LOG  定義爲 1 or 4

如何修改UART輸出數據的波特率

有以下3個地方分別控制不同的部分的波特率

1.  設置  preloader  波特率,這裏不會設置到uboot和kernel

文件爲mediatek/custom/proj/preloader/inc/cus_bldr.h

#define CFG_LOG_BAUDRATE (115200)

2.   修改uboot 波特率

mediatek/custom/proj/uboot/inc/configs/ubconfigs.h

#define CFG_LOG_BAUDRATE (115200)

3.  修改kernel 波特率

mediatek/config/mt6575/autoconfig/kconfig/platform

CONFIG_CMDLINE="console=ttyMt3, 115200"

10.如何通過adb shell命令 調試Vibrator

下面的命令是用於調試,請試着用它找出你想要的時間和震動強度。 1000毫秒 = 1秒

adb shell "echo 1000 > /sys/devices/virtual/timed_output/vibrator/enable"

11.ACCDET模塊耳機檢測的原理

ACCDET內部有兩個比較器,會根據傳入的電壓判斷併產生中斷。ACCDET的輸入電壓即耳機 MIC PIN

的電壓,內部比較器的輸出分別對應A/B兩個寄存器。

ACCDET內部兩個比較器的Vref分別是1.77V和0.4V(硬件決定的,不能修改),所以,對應的電壓有 3個範圍: 

1.77V-1.9V: 未插入耳機的狀態(AB=B11)

0.4V-1.77V: 插入4段式(有Mic)耳機時的狀態(AB = B01)

0-0.4V : 插入3段式耳機時的狀態,或者4段式按鍵按下時的狀態(AB = B00)

耳機的狀態會保存到ACCDET的寄存器中,當電壓在任意2個範圍間切換時,狀態發生變化,ACCDET產生

中斷,中斷處理中讀取狀態寄存器的值,並根據狀態的變化做相應的處理.

12.如何調整不同sensor驅動的 加載順序

在mt6575_devs.c /mt6577_devs.c 文件內  mt6577_board_init函數,修改不同設備的 註冊順序。 

platform_device_register(&sensor_alsps);

platform_device_register(&sensor_gsensor);

調整上述的註冊順序,即可調整驅動中probe的加載順序。

13.SIM1和SIM2兩個卡槽交換:

修改modem的相關代碼, 請做如下修改, 即可交換SIM1 SIM2 Modem:

icc_switchControl_al.c(MOLY\driver\storage\sim\src)

kal_bool sim_physicalSlotChanged = KAL_TRUE;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章