Changeset 8148ee3a in mainline


Ignore:
Timestamp:
2011-04-12T10:52:05Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a81736d5
Parents:
f324635
Message:

Root hub does not need ddf device pointer

Use endpoint manager registration wrapper

Location:
uspace/drv/ohci
Files:
3 edited

Legend:

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

    rf324635 r8148ee3a  
    5555        assert(hub_fun);
    5656
     57        int ret;
     58
    5759        usb_address_t hub_address =
    5860            device_keeper_get_free_address(&instance->manager, USB_SPEED_FULL);
     61        if (hub_address <= 0) {
     62                usb_log_error("Failed to get OHCI root hub address.\n");
     63                return hub_address;
     64        }
    5965        instance->rh.address = hub_address;
    6066        usb_device_keeper_bind(
    6167            &instance->manager, hub_address, hub_fun->handle);
    6268
    63         endpoint_t *ep = malloc(sizeof(endpoint_t));
    64         assert(ep);
    65         int ret = endpoint_init(ep, hub_address, 0, USB_DIRECTION_BOTH,
    66             USB_TRANSFER_CONTROL, USB_SPEED_FULL, 64);
    67         assert(ret == EOK);
    68         ret = usb_endpoint_manager_register_ep(&instance->ep_manager, ep, 0);
    69         assert(ret == EOK);
     69        ret = usb_endpoint_manager_add_ep(&instance->ep_manager,
     70            hub_address, 0, USB_DIRECTION_BOTH, USB_TRANSFER_CONTROL,
     71            USB_SPEED_FULL, 64, 0);
     72        if (ret != EOK) {
     73                usb_log_error("Failed to add OHCI rh endpoint 0.\n");
     74                usb_device_keeper_release(&instance->manager, hub_address);
     75                return ret;
     76        }
    7077
    7178        char *match_str = NULL;
     79        /* DDF needs heap allocated string */
    7280        ret = asprintf(&match_str, "usb&class=hub");
    73 //      ret = (match_str == NULL) ? ret : EOK;
    7481        if (ret < 0) {
    7582                usb_log_error(
    7683                    "Failed(%d) to create root hub match-id string.\n", ret);
     84                usb_device_keeper_release(&instance->manager, hub_address);
    7785                return ret;
    7886        }
     
    8088        ret = ddf_fun_add_match_id(hub_fun, match_str, 100);
    8189        if (ret != EOK) {
    82                 usb_log_error("Failed add create root hub match-id.\n");
     90                usb_log_error("Failed add root hub match-id.\n");
    8391        }
    8492        return ret;
     
    115123        fibril_mutex_initialize(&instance->guard);
    116124
    117         rh_init(&instance->rh, dev, instance->registers);
     125        rh_init(&instance->rh, instance->registers);
    118126
    119127        if (!interrupts) {
  • uspace/drv/ohci/root_hub.c

    rf324635 r8148ee3a  
    205205 * @return Error code.
    206206 */
    207 int rh_init(rh_t *instance, ddf_dev_t *dev, ohci_regs_t *regs) {
     207int rh_init(rh_t *instance, ohci_regs_t *regs) {
    208208        assert(instance);
    209         //instance->address = -1;
    210209        instance->registers = regs;
    211         instance->device = dev;
    212210        instance->port_count =
    213211            (instance->registers->rh_desc_a >> RHDA_NDS_SHIFT) & RHDA_NDS_MASK;
    214212        rh_init_descriptors(instance);
    215213        // set port power mode to no-power-switching
    216         instance->registers->rh_desc_a =
    217                 instance->registers->rh_desc_a | (1<<9);
     214        instance->registers->rh_desc_a |= RHDA_NPS_FLAG;
    218215
    219216        usb_log_info("OHCI root hub with %d ports.\n", instance->port_count);
    220 
    221         //start generic usb hub driver
    222 
    223         /* TODO: implement */
    224217        return EOK;
    225218}
  • uspace/drv/ohci/root_hub.h

    rf324635 r8148ee3a  
    5050        /** usb address of the root hub */
    5151        usb_address_t address;
    52         /** ddf device information */
    53         ddf_dev_t *device;
    5452        /** hub port count */
    5553        int port_count;
     
    5856} rh_t;
    5957
    60 int rh_init(rh_t *instance, ddf_dev_t *dev, ohci_regs_t *regs);
     58int rh_init(rh_t *instance, ohci_regs_t *regs);
    6159
    6260int rh_request(rh_t *instance, usb_transfer_batch_t *request);
Note: See TracChangeset for help on using the changeset viewer.