Changeset cabda7f in mainline for uspace/drv/uhci-hcd/uhci.c


Ignore:
Timestamp:
2011-02-25T20:48:30Z (14 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0fde1d5
Parents:
2d33eb5
Message:

Minor fixes

initialize stack variables
use fixed size 32B address space
get rid of USE_INTERRUPTS macro
comment interrupt enabling code
reset hc before taking control

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/uhci.c

    r2d33eb5 rcabda7f  
    141141
    142142        instance->cleaner = fibril_create(uhci_interrupt_emulator, instance);
    143 #ifndef USE_INTERRUTPS
    144143        fibril_add_ready(instance->cleaner);
    145 #endif
    146144
    147145        instance->debug_checker = fibril_create(uhci_debug_checker, instance);
     
    153151void uhci_init_hw(uhci_t *instance)
    154152{
     153        /* reset hc, who knows what touched it before us */
     154        pio_write_16(&instance->registers->usbcmd, UHCI_CMD_GLOBAL_RESET);
     155        async_usleep(10000); /* 10ms according to USB spec */
     156        pio_write_16(&instance->registers->usbcmd, 0);
    155157
    156158        /* set framelist pointer */
     
    159161
    160162        /* enable all interrupts, but resume interrupt */
    161         pio_write_16(&instance->registers->usbintr,
    162                   UHCI_INTR_CRC | UHCI_INTR_COMPLETE | UHCI_INTR_SHORT_PACKET);
     163//      pio_write_16(&instance->registers->usbintr,
     164//                UHCI_INTR_CRC | UHCI_INTR_COMPLETE | UHCI_INTR_SHORT_PACKET);
    163165
    164166        /* Start the hc with large(64B) packet FSBR */
     
    295297        while(1) {
    296298                uint16_t status = pio_read_16(&instance->registers->usbsts);
     299                usb_log_debug("UHCI status: %x.\n", status);
     300                status |= 1;
    297301                uhci_interrupt(instance, status);
    298302                pio_write_16(&instance->registers->usbsts, 0x1f);
    299                 async_usleep(UHCI_CLEANER_TIMEOUT);
     303                async_usleep(UHCI_CLEANER_TIMEOUT * 1000);
    300304        }
    301305        return EOK;
     
    313317                    cmd, sts, intr);
    314318
    315                 uintptr_t frame_list = pio_read_32(&instance->registers->flbaseadd);
     319                uintptr_t frame_list =
     320                    pio_read_32(&instance->registers->flbaseadd) & ~0xfff;
    316321                if (frame_list != addr_to_phys(instance->frame_list)) {
    317322                        usb_log_debug("Framelist address: %p vs. %p.\n",
Note: See TracChangeset for help on using the changeset viewer.