воскресенье, 9 августа 2009 г.

Магия линейного процессора

Кино и немцы: бутаем телефон, проходим хендшейк по gpio, девайс опознается на usb шине, как 0x3006 (драйвер ipc), на одном из интерфейсов которого есть ендпоинты для передачи и получения данных по ipc. Далее слипаю usb девайс (контроллер перестает посылать ему какие-то там периодические сообщения), bp это видит и со своей стороны тоже слипается, слипаю usb порт и ухожу в саспенд ap.

Врубаю обратно, usb не трогаю, вместо этого перевожу bp в флешмод (ставлю ногу flash в 1 и делаю ресет), прохожу хендшейк по gpio. Вот теперь включаю порт и девайс - драйвер usb контроллера замечает, что устройство изменилось во время слипа и опознает новое (0x4003).


[ 20.911537] flash: 0
[ 20.920759] flash: 512
[ 20.927860] reset bp
[ 20.934154] bp handshake entered!
[ 20.941279] ezx-bp: handshake step 1
[ 20.948080] ezx-bp: handshake step 2
[ 21.240547] BP rdy irq
[ 43.045223] usb 1-3: reset full speed USB device using pxa27x-ohci and address 5
[ 43.266384] usb 1-3: device firmware changed
[ 43.271897] usb 1-3: USB disconnect, address 5
[ 43.465206] usb 1-3: new full speed USB device using pxa27x-ohci and address 6
[ 43.697291] usb 1-3: configuration #1 chosen from 1 choice


А тепер без перевода в режим флеша. Бутаем телефон, проходим хендшейк, девайс опознается, саспендим usb девайс, саспендим usb порт, саспендим ap. Просыпаемся, врубаем порт, врубаем девайс - ДЕВАЙС ТУПИТ и не отвечает на контрольные запросы, но при этом моргает ногой (ааа! включите меня!) и потом валится в панику.


[ 25.704865] usb 1-3: reset full speed USB device using pxa27x-ohci and address 5
[ 25.718791] BP rdy irq
[ 25.838537] usb 1-3: USB disconnect, address 5
[ 26.194880] usb 1-3: new full speed USB device using pxa27x-ohci and address 6
[ 35.436193] BP rdy irq
[ 35.441631] BP Lowered WDI line. This is not good :(
[ 41.384807] usb 1-3: device descriptor read/64, error -110
[ 41.684849] usb 1-3: device descriptor read/64, error -62
[ 41.974861] usb 1-3: new full speed USB device using pxa27x-ohci and address 7
[ 42.164846] usb 1-3: device descriptor read/64, error -62
[ 42.454801] usb 1-3: device descriptor read/64, error -62
[ 42.744881] usb 1-3: new full speed USB device using pxa27x-ohci and address 8
[ 43.174716] usb 1-3: device not accepting address 8, error -62
[ 43.364761] usb 1-3: new full speed USB device using pxa27x-ohci and address 9
[ 43.794714] usb 1-3: device not accepting address 9, error -62
[ 43.805893] hub 1-0:1.0: unable to enumerate USB device on port 3


А теперь третий фокус:

Делаем все то же самое, что и в первом случае, но ресет bp делаем без перевода в флешмод - девайс проходит хендшейк, но по usb опять не отвечает.

Рабочая гипотеза - bp не замечает, что надо ресетнуть usb со своей стороны. Чисто теоретически, это должно делаться через single-ended zero - установку двух ног usb в 0 на 10 msec, но это не работает (или я неправильно делаю?), и ничего похожего я в старом ядре не вижу. Зато в старом ядре есть куча непонятной возни вокруг ног 90, 91 и 113 - те пины usb, что идут от хоста к устройству.

Комментариев нет:

Отправить комментарий