Changeset ffcc5776 in mainline for uspace/drv/bus/usb/ohci/hc.c


Ignore:
Timestamp:
2012-02-23T06:00:07Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bfc5c9dd
Parents:
70922c2
Message:

ohci: Consider endian difference when accessing OHCI registers.

HC initialization works.
Root hub works.

Turn off work queues until memory structure endian is fixed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ohci/hc.c

    r70922c2 rffcc5776  
    5050{
    5151        { .cmd = CMD_MEM_READ_32, .dstarg = 1, .addr = NULL /*filled later*/ },
    52         { .cmd = CMD_BTEST, .srcarg = 1, .dstarg = 2, .value = OHCI_USED_INTERRUPTS },
     52        { .cmd = CMD_BTEST, .srcarg = 1, .dstarg = 2, .value = 0 /*filled later*/},
    5353        { .cmd = CMD_PREDICATE, .srcarg = 2, .value = 2 },
    5454        { .cmd = CMD_MEM_WRITE_A_32, .srcarg = 1, .addr = NULL /*filled later*/ },
     
    112112        void *address = (void*)&registers->interrupt_status;
    113113        cmds[0].addr = address;
     114        cmds[1].value = OHCI_USED_INTERRUPTS;
    114115        cmds[3].addr = address;
    115116        return EOK;
     
    308309        /* Check for root hub communication */
    309310        if (batch->ep->address == instance->rh.address) {
     311                usb_log_debug("OHCI root hub request.\n");
    310312                rh_request(&instance->rh, batch);
    311313                return EOK;
     
    511513
    512514        /* Enable queues */
    513         instance->registers->control |= (C_PLE | C_IE | C_CLE | C_BLE);
    514         usb_log_debug2("All queues enabled(%x).\n",
    515             instance->registers->control);
     515//      instance->registers->control |= (C_PLE | C_IE | C_CLE | C_BLE);
     516//      usb_log_debug2("All queues enabled(%x).\n",
     517//          instance->registers->control);
    516518
    517519        /* Enable interrupts */
     
    522524
    523525        /* Set periodic start to 90% */
    524         uint32_t frame_length = ((fm_interval >> FMI_FI_SHIFT) & FMI_FI_MASK);
    525         instance->registers->periodic_start = (frame_length / 10) * 9;
     526        const uint32_t frame_length = FMI_FL_GET(fm_interval);
     527        PS_SET(instance->registers->periodic_start, (frame_length / 10) * 9);
    526528        usb_log_debug2("All periodic start set to: %x(%u - 90%% of %d).\n",
    527             instance->registers->periodic_start,
    528             instance->registers->periodic_start, frame_length);
     529            PS_GET(instance->registers->periodic_start),
     530            PS_GET(instance->registers->periodic_start), frame_length);
    529531
    530532        C_HCFS_SET(instance->registers->control, C_HCFS_OPERATIONAL);
Note: See TracChangeset for help on using the changeset viewer.