OSDev

для всех
Текущее время: 29 апр 2024, 15:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: USB ehci
СообщениеДобавлено: 07 апр 2012, 16:13 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Определился с алгоритмом инициализации.
Конироллер EHCI нужно отключить от биоса, в пространстве PCI по смещению (EECP) - биты 15:8 в EHCI Extended Capabilities Pointer 4байтный регистр USBLEGSUP, в нём установим 24 бит и подождём обнуления 16 бита там же. Останавливаем контроллер. Для этого пишем 0 в USBCMD (BASE+CAPLENGTH+0) 0 и дожидаемся, пока бит 12 (HCHalted) в USBSTS (BASE+CAPLENGTH+4) не выставится в 1. Делаем ресет (пишем 1 в 1-й бит USBCMD) и дожидаемся, пока контроллер не сбросит этот бит в 0. Дальше можно изменять регистры и включить контроллер, после чего нужно сделать паузу на несколько милискунд. Потом делаем цикл по портам BASE+CAPLENGTH+44h+i*4, регистр портов только 1, но там всё. В нём должно быть включено питпние и если нулевой бит включен, то в нём устройство, проверить ест ли в нём устройство high-speed с которым работает EHCI можно только через его ресет, после чего в нём добавится бит ENABLE. Если этот бит не появится, то его отдадим компаньёну установкой 12бита, если устройство не full-speed а low-speed то его не проверяем а отдаём сразу компаньёну и у них отключается нулевой бит присутствия, а при изменении в портах контроллер ставит 1 в первом бите и мы его должны обнулять. Ну а устройство high-speed будем пронумеровывать пакетом типа SETUP и потом можно получить с него инфу и качать сектора. Проверку того что оно не ушло можно первым битом изменения порта.
Если у биоса не отнять контроллер то он будет обнулять этот бит и пакастить всячески. Для отправки пакетов нужно забить его адрес после ресета и перед включением контроллера, и по этому адресу работать.

Кстати при ресете пота бит 8 не обнуляется, а мы сами его должны обнулить после паузы, когда контроллер определяет, что это устройство high-speed. После отправки к компаньёну тоже нужна пауза и это неудобно, может быть есть какойто бит для проверки, но я ещё не в курсе.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB