问题现象:xhci的板子通过USB接iphone设备,进行数据OUT和IN,有一些芯片对于OUT,IN都能正常,有一些芯片对于OUT正常,对于IN总是出现babble error. 有时还不能进入事件中断。整体来说就是数据OUT没问题,数据IN对于一些芯片正常,一些芯片不正常,还有一个特殊的芯片是快速开关电源就会正常。
查看xhci对于babble error的描述如下:
意思就是有三种情况下会产生babble error。1:当device 发送的数据 > TD transfer size时,2.当一个包夸帧时,3. 当一个>MaxPacketSize时。
开始我们把log打印出来排除了1,和3,就把原因定位在了2,通过调时钟,调xhci中EOF的time point值,调内核电压等等各种方式都是试了,都没有效果。
下图是打印的各个端点的output_context种的ep_context的内容,是没有问题的,因为iphone发送的数据包是20个byte,不会超过512的maxPacketSize.
因为IN端点用的是EP10,所以就感觉是这个端点的问题,就用芯片自己模仿了iphone设备,通过改端点号来查找问题