Changeset cabda7f in mainline


Ignore:
Timestamp:
2011-02-25T20:48:30Z (13 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

Location:
uspace/drv/uhci-hcd
Files:
3 edited

Legend:

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

    r2d33eb5 rcabda7f  
    6161};
    6262/*----------------------------------------------------------------------------*/
    63 #ifdef USE_INTERRUPTS
    6463static void irq_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)
    6564{
     
    7069        uhci_interrupt(hc, status);
    7170}
    72 #endif
    7371/*----------------------------------------------------------------------------*/
    7472#define CHECK_RET_RETURN(ret, message...) \
     
    8583
    8684
    87         uintptr_t io_reg_base;
    88         size_t io_reg_size;
    89         int irq;
     85        uintptr_t io_reg_base = 0;
     86        size_t io_reg_size = 0;
     87        int irq = 0;
    9088
    9189        int ret =
    9290            pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq);
    93         io_reg_size = sizeof(regs_t);
    9491
    9592        CHECK_RET_RETURN(ret,
     
    9794        usb_log_info("I/O regs at 0x%X (size %zu), IRQ %d.\n",
    9895            io_reg_base, io_reg_size, irq);
     96        io_reg_size = 32;
    9997
    100 #ifdef USE_INTERRUPTS
    101         ret = pci_enable_interrupts(device);
    102         CHECK_RET_RETURN(ret, "Failed(%d) to get enable interrupts:\n", ret);
    103 #endif
     98//      ret = pci_enable_interrupts(device);
     99//      CHECK_RET_RETURN(ret, "Failed(%d) to get enable interrupts:\n", ret);
    104100
    105101        uhci_t *uhci_hc = malloc(sizeof(uhci_t));
     
    119115         */
    120116        device->driver_data = uhci_hc;
    121 #ifdef USE_INTERRUPTS
    122117        ret = register_interrupt_handler(device, irq, irq_handler,
    123118            &uhci_hc->interrupt_code);
     
    128123                return ret;
    129124        }
    130 #endif
    131125
    132126        ddf_fun_t *rh;
     
    155149{
    156150        sleep(3);
    157         usb_log_enable(USB_LOG_LEVEL_INFO, NAME);
     151        usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
    158152
    159153        return ddf_driver_main(&uhci_driver);
  • 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",
  • uspace/drv/uhci-hcd/uhci_struct/transfer_descriptor.c

    r2d33eb5 rcabda7f  
    6969                instance->next, instance->status, instance->device,
    7070          instance->buffer_ptr, buffer);
    71 #if 0
    72         if (size) {
    73                 unsigned char * buff = buffer;
    74                 uhci_print_verbose("TD Buffer dump(%p-%dB): ", buffer, size);
    75                 unsigned i = 0;
    76                 /* TODO: Verbose? */
    77                 for (; i < size; ++i) {
    78                         printf((i & 1) ? "%x " : "%x", buff[i]);
    79                 }
    80                 printf("\n");
    81         }
    82 #endif
    8371}
    8472/*----------------------------------------------------------------------------*/
Note: See TracChangeset for help on using the changeset viewer.