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口时时能给出提醒,增强与驱动沟通
相关文章
相关标签/搜索