1

Почему с этим контекстом команда Address Device срабатывает без ошибок на портах USB 2.0, а на портах 3.0 возникает ошибка Parameter Error (Asserted by a command if a Context parameter is invalid)?

uptr in_ctx_base;
uptr in_ctx = xhci_alloc_page(&in_ctx_base);
((struct xhci_in_ctrl_ctx *)in_ctx)->add_ctx_flags = 0b11;
in_ctx += dev->ctx_sz;
((struct xhci_slot_ctx *)in_ctx)->root_port_num = port_id;
((struct xhci_slot_ctx *)in_ctx)->context_entries = 1;
((struct xhci_slot_ctx *)in_ctx)->speed = (port->portsc >> 10) & 0b1111;
in_ctx += dev->ctx_sz;
((struct xhci_ep_ctx *)in_ctx)->dword[1] = (4 << 3) | (8 << 16) | (3 << 1);
((struct xhci_ep_ctx *)in_ctx)->dword[2] = (VIRT2PHYS(tr.base) & 0xffffffff) | 1;
((struct xhci_ep_ctx *)in_ctx)->dword[3] = VIRT2PHYS(tr.base) >> 32;
uptr out_ctx = xhci_alloc_page(&dev->dcba_array[slot]);
if ((xhci_address_device(dev, slot, in_ctx_base, 1) >> 24) != 1) {
 print("Address Device with BSR = 1 error!\n");
 return;
}

xhci spec

задан 4 июл. 2024 в 19:52

0

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.