Changes in / [3746bfe:eedac04] in mainline


Ignore:
Location:
uspace/drv/uhci-hcd
Files:
1 deleted
3 edited

Legend:

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

    r3746bfe reedac04  
    6969            || (pid == USB_PID_OUT));
    7070
     71        const uint32_t next_pa = addr_to_phys(next);
     72        assert((next_pa & LINK_POINTER_ADDRESS_MASK) == next_pa);
     73
    7174        instance->next = 0
    7275            | LINK_POINTER_VERTICAL_FLAG
    73             | ((next != NULL) ? addr_to_phys(next) : LINK_POINTER_TERMINATE_FLAG);
     76            | (next_pa ? next_pa : LINK_POINTER_TERMINATE_FLAG);
    7477
    7578        instance->status = 0
     
    9093            | ((pid & TD_DEVICE_PID_MASK) << TD_DEVICE_PID_POS);
    9194
    92         instance->buffer_ptr = 0;
    93 
    94         if (size) {
    95                 instance->buffer_ptr = (uintptr_t)addr_to_phys(buffer);
    96         }
     95        instance->buffer_ptr = addr_to_phys(buffer);
    9796
    9897        usb_log_debug2("Created TD(%p): %X:%X:%X:%X(%p).\n",
  • uspace/drv/uhci-hcd/utils/device_keeper.c

    r3746bfe reedac04  
    179179        } else {
    180180                if (toggle) {
    181                         instance->devices[target.address].toggle_status |= (1 << target.endpoint);
     181                        instance->devices[target.address].toggle_status |=
     182                            (1 << target.endpoint);
    182183                } else {
    183                         instance->devices[target.address].toggle_status &= ~(1 << target.endpoint);
     184                        instance->devices[target.address].toggle_status &=
     185                            ~(1 << target.endpoint);
    184186                }
    185187                ret = EOK;
     
    201203        fibril_mutex_lock(&instance->guard);
    202204
    203         usb_address_t new_address = instance->last_address + 1;
    204         while (instance->devices[new_address].occupied) {
     205        usb_address_t new_address = instance->last_address;
     206        do {
     207                ++new_address;
     208                if (new_address > USB11_ADDRESS_MAX)
     209                        new_address = 1;
    205210                if (new_address == instance->last_address) {
    206211                        fibril_mutex_unlock(&instance->guard);
    207212                        return ENOSPC;
    208213                }
    209                 if (new_address == USB11_ADDRESS_MAX)
    210                         new_address = 1;
    211                 ++new_address;
    212         }
     214        } while (instance->devices[new_address].occupied);
    213215
    214216        assert(new_address != USB_ADDRESS_DEFAULT);
  • uspace/drv/uhci-hcd/utils/malloc32.h

    r3746bfe reedac04  
    5050static inline uintptr_t addr_to_phys(void *addr)
    5151{
     52        if (addr == NULL)
     53                return 0;
     54
    5255        uintptr_t result;
    5356        int ret = as_get_physical_mapping(addr, &result);
Note: See TracChangeset for help on using the changeset viewer.