16. V663/V669/V662耳機半插,圖標不消失問題

V663/V669/V662耳機半插,圖標不消失問題測試

 

 

問題反饋——What線程

1.2017.11.29號 V663 K29客戶在組裝廠組裝發現耳機存在屢次插拔後,圖標不消失的問題rest

2.2017.11.30號 V669 Z1因V663小星客戶報有插耳機圖標不消失的,因此此項目在公司內部進行的驗證,發現也有此問題three

3. 2017.11.30號 在發現V663和V669都有此耳機圖標不消失的狀況,因此對V662的項目也進行驗證,也發現有此問題get

4.後又發現v663耳機音量加功能爲減,減鍵無功能cmd

 

緣由——Whyit

分析方向:io

  1. v662 查看原理圖和對應bom表,發現v622硬件上貼了ACC MODE,而軟件配置了DCC,跟硬件確認,v618以後的項目硬件改爲了ACC MODE
  2. v663 查看原理圖發現耳機檢測部分僅靠mic端,無中斷腳,半插實際爲accet腳短地,實際測量accdet腳短地後,電平一直爲0,且沒法自動恢復,音量加減鍵不正常,實測電壓後發現R1123電阻多貼

 

WHO (負責人)thread

何謙,薛鬆基礎

 

解決措施

  1. v662 硬件原理配置爲ACC MODE便可

代碼修改部分:

(1)   在v662 mk文件中配置KST_USING_ACCDET_EINT=yes

(2)   dts中加入

&accdet {

accdet-mic-vol = <7>;

headset-mode-setting = <0x500 0x200 1 0x1F0 0x800 0x800 0x20>;

accdet-plugout-debounce = <20>;

/*1:ACC mode, 2:low cost without in bias, 6:low cost with in bias*/

accdet-mic-mode = <1>;

/*0--MD_MAX--UP_MAX--DW_MAX*/

headset-three-key-threshold = <0 80 285 500>;

/*0--MD_MAX--VOICE_MAX--UP_MAX--DW_MAX*/

headset-four-key-threshold = <0 60 126 201 450>;

/* ACCDET GPIO standardization ACC mode use */

pinctrl-names = "default", "state_eint_as_int";

pinctrl-0 = <&ACCDET_pins_default>;

pinctrl-1 = <&ACCDET_pins_eint_as_int>;

status = "okay";

};

&pio {

ACCDET_pins_default: eint0default {

};

ACCDET_pins_eint_as_int: eint@0 {

     pins_cmd_dat {

         pins = <PINMUX_GPIO0__FUNC_ GPIO6>;

         slew-rate = <0>;

         bias-disable;

     };

};

};

(3)   將Z:\37_n_base\v618_v662\alps\kernel-3.18\drivers\misc\mediatek\accdet\mt6735\accdet.c

中原來DCC的代碼用CONFIG_ACCDET_EINT_IRQ包起來

CONFIG_ACCDET_EINT_IRQ

pmic_register_interrupt_callback(13, accdet_eint_int_handler);

#endif

 

 

#ifdef CONFIG_ACCDET_EINT_IRQ

void accdet_eint_int_handler(void)

{

    int ret = 0;

 

    ACCDET_DEBUG("[accdet_eint_int_handler]....\n");

    ret = accdet_irq_handler();

    if (0 == ret)

        ACCDET_DEBUG("[accdet_int_handler] don't finished\n");

}

#enfif

  1. v663

因爲ACCDET接地後偏置電壓被拉爲0,因此考慮不斷去打開偏置電壓,由於不知道半插拔出時機,因此要建立一盒內核線程不停的去打開MICBIAS1偏置電壓

 

 

查看mt6328芯片手冊,

 

 

0xD00寄存器的第四位爲控制MICBIAS1的寄存器

代碼修改部分以下:具體可對比Z:\37_n_base\v618_v662\update\alps\kst\drv\headset_typec_general\accdet.c

在accdet.c裏添加以下代碼

 

int  get_interrupt_pin_status(void);

 

static int accdet_detect_thread(void *data) 

    

    do { 

        //printk(KERN_INFO "accdet_detect_thread: running"); 

        //read accdet gpio to detect accdet

       get_interrupt_pin_status();

        msleep(1000); 

    }while(!kthread_should_stop() ); 

    return 0; 

//#endif

//add by hqian end

 

 

int  get_interrupt_pin_status(void)

{

 

static int ret = 0;

//volatile int curstatus;

//static int prestatus = 1;

//int temp1 = 0;

int temp2 = 0;

int temp3 = 0;

 

 

         temp3=pmic_pwrap_read(0x0D00);

//  printk("temp3=%x\n",temp3);

    

 

//if(cable_type==HEADSET_NO_MIC)

{

//accdet_init();

//enable_accdet(ACCDET_SWCTRL_EN);

 

     temp2=temp3|0x0010;

     pmic_pwrap_write(0x0D00, temp2);

     //printk("temp2=%d\n",temp2);

}

//ret=Accdet_PMIC_IMM_GetOneChannelValue(1);

 

return ret;

}

TPPEC的項目只需在mk裏配置KST_HEADSET_TYPEC_GENERAL=y,腳本會把update\alps\kst\drv\headset_typec_general\accdet.c拷貝到基礎代碼

 

防範措施:

  1. V663 v669 圖標不消失爲bug,因測試時是一體式耳機,無插拔動做,沒法預知,耳機加鍵爲減,減無功能,因客戶提供耳機只有一個播放暫停鍵,後面建議用標準三鍵線控耳機測試,貼錯料的,之後硬件應增強原理及bom審覈
  2. V662建議硬件修改相關硬件原理模式,gpio口時時能給出提醒,增強與驅動溝通
相關文章
相關標籤/搜索