Changeset 78d4e1f in mainline for uspace/drv/ohci/hc.c


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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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;
Note: See TracChangeset for help on using the changeset viewer.