Changeset cd3fa47 in mainline for uspace/drv/bus/usb/ehci/ehci_rh.c


Ignore:
Timestamp:
2018-01-21T18:35:09Z (6 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3f02935
Parents:
32b2a6f2
Message:

usb: definition of status bits have changed between USB 2 and 3, remove the confusion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ehci/ehci_rh.c

    r32b2a6f2 rcd3fa47  
    247247
    248248#define BIT_VAL(val, bit)   ((val & bit) ? 1 : 0)
    249 #define EHCI2USB(val, bit, feat)   (BIT_VAL(val, bit) << feat)
     249#define EHCI2USB(val, bit, mask)   (BIT_VAL(val, bit) ? mask : 0)
    250250
    251251/** Port status request handler.
     
    269269        const uint32_t reg = EHCI_RD(hub->registers->portsc[port]);
    270270        const uint32_t status = uint32_host2usb(
    271             EHCI2USB(reg, USB_PORTSC_CONNECT_FLAG, USB_HUB_FEATURE_PORT_CONNECTION) |
    272             EHCI2USB(reg, USB_PORTSC_ENABLED_FLAG, USB_HUB_FEATURE_PORT_ENABLE) |
    273             EHCI2USB(reg, USB_PORTSC_SUSPEND_FLAG, USB_HUB_FEATURE_PORT_SUSPEND) |
    274             EHCI2USB(reg, USB_PORTSC_OC_ACTIVE_FLAG, USB_HUB_FEATURE_PORT_OVER_CURRENT) |
    275             EHCI2USB(reg, USB_PORTSC_PORT_RESET_FLAG, USB_HUB_FEATURE_PORT_RESET) |
    276             EHCI2USB(reg, USB_PORTSC_PORT_POWER_FLAG, USB_HUB_FEATURE_PORT_POWER) |
     271            EHCI2USB(reg, USB_PORTSC_CONNECT_FLAG, USB_HUB_PORT_STATUS_CONNECTION) |
     272            EHCI2USB(reg, USB_PORTSC_ENABLED_FLAG, USB_HUB_PORT_STATUS_ENABLE) |
     273            EHCI2USB(reg, USB_PORTSC_SUSPEND_FLAG, USB2_HUB_PORT_STATUS_SUSPEND) |
     274            EHCI2USB(reg, USB_PORTSC_OC_ACTIVE_FLAG, USB_HUB_PORT_STATUS_OC) |
     275            EHCI2USB(reg, USB_PORTSC_PORT_RESET_FLAG, USB_HUB_PORT_STATUS_RESET) |
     276            EHCI2USB(reg, USB_PORTSC_PORT_POWER_FLAG, USB2_HUB_PORT_STATUS_POWER) |
    277277            (((reg & USB_PORTSC_LINE_STATUS_MASK) == USB_PORTSC_LINE_STATUS_K) ?
    278                 (1 << USB_HUB_FEATURE_PORT_LOW_SPEED) : 0) |
    279             ((reg & USB_PORTSC_PORT_OWNER_FLAG) ? 0 : (1 << USB_HUB_FEATURE_PORT_HIGH_SPEED)) |
    280             EHCI2USB(reg, USB_PORTSC_PORT_TEST_MASK, 11) |
    281             EHCI2USB(reg, USB_PORTSC_INDICATOR_MASK, 12) |
    282             EHCI2USB(reg, USB_PORTSC_CONNECT_CH_FLAG, USB_HUB_FEATURE_C_PORT_CONNECTION) |
    283             EHCI2USB(reg, USB_PORTSC_EN_CHANGE_FLAG, USB_HUB_FEATURE_C_PORT_ENABLE) |
    284             (hub->resume_flag[port] ? (1 << USB_HUB_FEATURE_C_PORT_SUSPEND) : 0) |
    285             EHCI2USB(reg, USB_PORTSC_OC_CHANGE_FLAG, USB_HUB_FEATURE_C_PORT_OVER_CURRENT) |
    286             (hub->reset_flag[port] ? (1 << USB_HUB_FEATURE_C_PORT_RESET): 0)
     278                (USB2_HUB_PORT_STATUS_LOW_SPEED) : 0) |
     279            ((reg & USB_PORTSC_PORT_OWNER_FLAG) ? 0 : USB2_HUB_PORT_STATUS_HIGH_SPEED) |
     280            EHCI2USB(reg, USB_PORTSC_PORT_TEST_MASK, USB2_HUB_PORT_STATUS_TEST) |
     281            EHCI2USB(reg, USB_PORTSC_INDICATOR_MASK, USB2_HUB_PORT_STATUS_INDICATOR) |
     282            EHCI2USB(reg, USB_PORTSC_CONNECT_CH_FLAG, USB_HUB_PORT_STATUS_C_CONNECTION) |
     283            EHCI2USB(reg, USB_PORTSC_EN_CHANGE_FLAG, USB2_HUB_PORT_STATUS_C_ENABLE) |
     284            (hub->resume_flag[port] ? USB2_HUB_PORT_STATUS_C_SUSPEND : 0) |
     285            EHCI2USB(reg, USB_PORTSC_OC_CHANGE_FLAG, USB_HUB_PORT_STATUS_C_OC) |
     286            (hub->reset_flag[port] ? USB_HUB_PORT_STATUS_C_RESET: 0)
    287287        );
    288288        /* Note feature numbers for test and indicator feature do not
     
    385385                return EOK;
    386386
    387         case USB_HUB_FEATURE_PORT_ENABLE:         /*1*/
     387        case USB2_HUB_FEATURE_PORT_ENABLE:         /*1*/
    388388                usb_log_debug2("RH(%p-%u): Clear port enable.", hub, port);
    389389                EHCI_CLR(hub->registers->portsc[port],
     
    391391                return EOK;
    392392
    393         case USB_HUB_FEATURE_PORT_SUSPEND:        /*2*/
     393        case USB2_HUB_FEATURE_PORT_SUSPEND:        /*2*/
    394394                usb_log_debug2("RH(%p-%u): Clear port suspend.", hub, port);
    395395                /* If not in suspend it's noop */
     
    409409                    USB_PORTSC_CONNECT_CH_FLAG);
    410410                return EOK;
    411         case USB_HUB_FEATURE_C_PORT_ENABLE:       /*17*/
     411        case USB2_HUB_FEATURE_C_PORT_ENABLE:       /*17*/
    412412                usb_log_debug2("RH(%p-%u): Clear port enable change.",
    413413                    hub, port);
     
    421421                    USB_PORTSC_OC_CHANGE_FLAG);
    422422                return EOK;
    423         case USB_HUB_FEATURE_C_PORT_SUSPEND:      /*18*/
     423        case USB2_HUB_FEATURE_C_PORT_SUSPEND:      /*18*/
    424424                usb_log_debug2("RH(%p-%u): Clear port suspend change.",
    425425                    hub, port);
     
    456456        const unsigned feature = uint16_usb2host(setup_packet->value);
    457457        switch (feature) {
    458         case USB_HUB_FEATURE_PORT_ENABLE:  /*1*/
     458        case USB2_HUB_FEATURE_PORT_ENABLE:  /*1*/
    459459                usb_log_debug2("RH(%p-%u): Set port enable.", hub, port);
    460460                EHCI_SET(hub->registers->portsc[port],
    461461                    USB_PORTSC_ENABLED_FLAG);
    462462                return EOK;
    463         case USB_HUB_FEATURE_PORT_SUSPEND: /*2*/
     463        case USB2_HUB_FEATURE_PORT_SUSPEND: /*2*/
    464464                usb_log_debug2("RH(%p-%u): Set port suspend.", hub, port);
    465465                EHCI_SET(hub->registers->portsc[port],
Note: See TracChangeset for help on using the changeset viewer.