Changeset 78d4e1f in mainline


Ignore:
Timestamp:
2011-04-10T21:03:36Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eaf1e3d
Parents:
0ede0c3
Message:

Init ED queue registers AFTER device reset

Disable and enabled control queue when adding an ED
More debug output
OHCI lives and responds with STALL.

Location:
uspace/drv/ohci
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/ohci/batch.c

    r0ede0c3 r78d4e1f  
    134134        assert(data);
    135135        size_t tds = data->td_count - 1;
    136         usb_log_debug2("Batch(%p) checking %d td(s) for completion.\n",
     136        usb_log_debug("Batch(%p) checking %d td(s) for completion.\n",
    137137            instance, tds);
     138        usb_log_debug("ED: %x:%x:%x:%x.\n",
     139            data->ed->status, data->ed->td_head, data->ed->td_tail,
     140            data->ed->next);
    138141        size_t i = 0;
    139142        for (; i < tds; ++i) {
     143                usb_log_debug("TD %d: %x:%x:%x:%x.\n", i,
     144                    data->tds[i].status, data->tds[i].cbp, data->tds[i].next,
     145                    data->tds[i].be);
    140146                if (!td_is_finished(&data->tds[i]))
    141147                        return false;
  • uspace/drv/ohci/hc.c

    r0ede0c3 r78d4e1f  
    135135        }
    136136
    137         transfer_list_add_batch(
    138             instance->transfers[batch->transfer_type], batch);
    139 
    140137        switch (batch->transfer_type) {
    141138        case USB_TRANSFER_CONTROL:
    142139                instance->registers->control &= ~C_CLE;
     140                transfer_list_add_batch(
     141                    instance->transfers[batch->transfer_type], batch);
    143142                instance->registers->command_status |= CS_CLF;
    144                 usb_log_debug2("Set control transfer filled: %x.\n",
     143                usb_log_debug2("Set CS control transfer filled: %x.\n",
    145144                        instance->registers->command_status);
     145                instance->registers->control_current = 0;
    146146                instance->registers->control |= C_CLE;
    147147                break;
     
    160160{
    161161        assert(instance);
    162         if ((status & ~IS_SF) == 0) /* ignore sof status */
    163                 return;
     162//      if ((status & ~IS_SF) == 0) /* ignore sof status */
     163//              return;
    164164        if (status & IS_RHSC)
    165165                rh_interrupt(&instance->rh);
    166166
    167         usb_log_info("OHCI interrupt: %x.\n", status);
     167        usb_log_fatal("OHCI interrupt: %x.\n", status);
    168168
    169169
     
    191191                instance->registers->interrupt_status = status;
    192192                hc_interrupt(instance, status);
    193                 async_usleep(1000);
     193                async_usleep(2000000);
    194194        }
    195195        return EOK;
     
    267267            instance->registers->control);
    268268
     269        /* Use HCCA */
     270        instance->registers->hcca = addr_to_phys(instance->hcca);
     271
     272        /* Use queues */
     273        instance->registers->bulk_head = instance->transfers_bulk.list_head_pa;
     274        usb_log_debug2("Bulk HEAD set to: %p(%p).\n",
     275            instance->transfers_bulk.list_head,
     276            instance->transfers_bulk.list_head_pa);
     277
     278        instance->registers->control_head =
     279            instance->transfers_control.list_head_pa;
     280        usb_log_debug2("Control HEAD set to: %p(%p).\n",
     281            instance->transfers_control.list_head,
     282            instance->transfers_control.list_head_pa);
     283
    269284        /* Enable queues */
    270285        instance->registers->control |= (C_PLE | C_IE | C_CLE | C_BLE);
     
    342357                return ENOMEM;
    343358        bzero(instance->hcca, sizeof(hcca_t));
    344         instance->registers->hcca = addr_to_phys(instance->hcca);
    345         usb_log_debug2("OHCI HCCA initialized at %p(%p).\n",
    346             instance->hcca, instance->registers->hcca);
    347 
    348         /* Use queues */
    349         instance->registers->bulk_head = instance->transfers_bulk.list_head_pa;
    350         usb_log_debug2("Bulk HEAD set to: %p(%p).\n",
    351             instance->transfers_bulk.list_head,
    352             instance->transfers_bulk.list_head_pa);
    353 
    354         instance->registers->control_head =
    355             instance->transfers_control.list_head_pa;
    356         usb_log_debug2("Control HEAD set to: %p(%p).\n",
    357             instance->transfers_control.list_head,
    358             instance->transfers_control.list_head_pa);
     359        usb_log_debug2("OHCI HCCA initialized at %p.\n", instance->hcca);
    359360
    360361        unsigned i = 0;
  • uspace/drv/ohci/main.c

    r0ede0c3 r78d4e1f  
    9292int main(int argc, char *argv[])
    9393{
    94         usb_log_enable(USB_LOG_LEVEL_DEFAULT, NAME);
     94        usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
    9595        sleep(5);
    9696        return ddf_driver_main(&ohci_driver);
  • uspace/drv/ohci/transfer_list.c

    r0ede0c3 r78d4e1f  
    143143
    144144        fibril_mutex_lock(&instance->guard);
     145        usb_log_debug2("Checking list %s for completed batches(%d).\n",
     146            instance->name, list_count(&instance->batch_list));
    145147        link_t *current = instance->batch_list.next;
    146148        while (current != &instance->batch_list) {
Note: See TracChangeset for help on using the changeset viewer.