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;