触摸屏驱动问题导致omap i2c timeout

           Ten4上使用了新的触摸屏novatek,中文名字叫做联咏科技吧。但是从一开始研发就有个问题,就是开机后,触摸屏无法使用,只有重启才行。

           本来以为是手焊板子的问题。可是后来小批也有此问题。看来不得不解决了。

            起初,怀疑触摸屏驱动有问题,但是对照其他触摸屏驱动,i2c操作部分没有什么区别。但就是一直报omap i2c timeout 。

网上搜了一下,TI的平台确实有这个问题,但是最新的上游代码,应该已经修复了这个问题。我加了一个上游提交被驳回的patch,还是会出现,概率为重启十几次就会出现一次。

触摸屏接在i2c 4上面,速率为400K,难道是速率太快?改为100K,还是会出问题。没有找到问题的根本。

           再次考虑驱动的问题,暂时不能考虑硬件问题。

           对比其他驱动,发现一个很大的问题。

在probe的时候

   //Read and Print ChipID and test IC;
    chipid = novatek_ts_ChipID(ts->client);
    if(chipid < 0)
    {
        goto err_init_panel_fail;
    }
    else


       
    client->irq = pdata->irq;
    pdata->irq_init();
    pdata->rst();

在没有reset设备的情况下,进行了i2c读写操作(novatek_ts_ChipID())。这个风险是很大的,不能假定开机后触摸屏已经处于准备好的状态,如果该设备没有准备好i2c发送和接收,则必然会timeout。

将下列代码移到novatek_ts_ChipID()前面

    if (pdata->irq_init)
    {
        pdata->irq_init();
    }
    if (pdata->rst)
    {
        pdata->rst();
    }

再测试了几十次,果然没有发现timeout的问题了。

你可能感兴趣的:(c,测试,平台,patch)