Changeset deece2f in mainline for uspace/drv/vhc


Ignore:
Timestamp:
2011-02-21T22:25:58Z (15 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
233e68d
Parents:
fb78ae72 (diff), dbe25f1 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Development branch merge

Location:
uspace/drv/vhc
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/conn.h

    rfb78ae72 rdeece2f  
    3838#include <usb/usb.h>
    3939#include <usbhc_iface.h>
     40#include <usb_iface.h>
    4041#include "vhcd.h"
    4142#include "devices.h"
     
    4344void connection_handler_host(sysarg_t);
    4445
    45 usbhc_iface_t vhc_iface;
     46extern usbhc_iface_t vhc_iface;
     47extern usb_iface_t vhc_usb_iface;
    4648
    4749void address_init(void);
  • uspace/drv/vhc/connhost.c

    rfb78ae72 rdeece2f  
    3737#include <usb/usb.h>
    3838#include <usb/addrkeep.h>
     39#include <usb/ddfiface.h>
    3940
    4041#include "vhcd.h"
     
    313314static usb_address_keeping_t addresses;
    314315
     316static int tell_address(device_t *dev, devman_handle_t handle,
     317    usb_address_t *address)
     318{
     319        usb_address_t addr = usb_address_keeping_find(&addresses, handle);
     320        if (addr < 0) {
     321                return addr;
     322        }
     323
     324        *address = addr;
     325        return EOK;
     326}
    315327
    316328static int reserve_default_address(device_t *dev, usb_speed_t ignored)
     
    350362}
    351363
    352 static int tell_address(device_t *dev, devman_handle_t handle,
    353     usb_address_t *address)
    354 {
    355         usb_address_t addr = usb_address_keeping_find(&addresses, handle);
    356         if (addr < 0) {
    357                 return addr;
    358         }
    359 
    360         *address = addr;
    361         return EOK;
    362 }
    363 
    364364void address_init(void)
    365365{
     
    368368
    369369usbhc_iface_t vhc_iface = {
    370         .tell_address = tell_address,
    371 
    372370        .reserve_default_address = reserve_default_address,
    373371        .release_default_address = release_default_address,
     
    383381};
    384382
     383usb_iface_t vhc_usb_iface = {
     384        .get_hc_handle = usb_iface_get_hc_handle_hc_impl,
     385        .get_address = tell_address
     386};
     387
     388
    385389/**
    386390 * @}
  • uspace/drv/vhc/hcd.c

    rfb78ae72 rdeece2f  
    4545
    4646#include <usb/usb.h>
     47#include <usb/ddfiface.h>
    4748#include <usb_iface.h>
    4849#include "vhcd.h"
     
    5253#include "conn.h"
    5354
    54 static int usb_iface_get_hc_handle(device_t *dev, devman_handle_t *handle)
    55 {
    56         /* This shall be called only for VHC device. */
    57         assert(dev->parent == NULL);
    58 
    59         *handle = dev->handle;
    60         return EOK;
    61 }
    62 
    63 static usb_iface_t hc_usb_iface = {
    64         .get_hc_handle = usb_iface_get_hc_handle
    65 };
    66 
    6755static device_ops_t vhc_ops = {
    6856        .interfaces[USBHC_DEV_IFACE] = &vhc_iface,
    69         .interfaces[USB_DEV_IFACE] = &hc_usb_iface,
     57        .interfaces[USB_DEV_IFACE] = &vhc_usb_iface,
    7058        .close = on_client_close,
    7159        .default_handler = default_connection_handler
  • uspace/drv/vhc/hub.c

    rfb78ae72 rdeece2f  
    4040#include <stdlib.h>
    4141#include <driver.h>
    42 #include <usb/usbdrv.h>
     42#include <usb/hub.h>
    4343#include <usb/recognise.h>
    4444
     
    7171}
    7272
     73static int pretend_port_rest(int unused, void *unused2)
     74{
     75        return EOK;
     76}
     77
    7378/** Register root hub in devman.
    7479 *
     
    8085        device_t *hc_dev = (device_t *) arg;
    8186
    82         int hc;
     87        /*
     88         * Wait until parent device is properly initialized.
     89         */
     90        int phone;
    8391        do {
    84                 hc = usb_drv_hc_connect(hc_dev, hc_dev->handle,
    85                     IPC_FLAG_BLOCKING);
    86         } while (hc < 0);
     92                phone = devman_device_connect(hc_dev->handle, 0);
     93        } while (phone < 0);
     94        async_hangup(phone);
    8795
    88         usb_drv_reserve_default_address(hc);
     96        usb_hc_connection_t hc_conn;
     97        usb_hc_connection_initialize(&hc_conn, hc_dev->handle);
    8998
    90         usb_address_t hub_address = usb_drv_request_address(hc);
    91         usb_drv_req_set_address(hc, USB_ADDRESS_DEFAULT, hub_address);
     99        usb_hc_connection_open(&hc_conn);
    92100
    93         usb_drv_release_default_address(hc);
     101        int rc = usb_hc_new_device_wrapper(hc_dev, &hc_conn, USB_SPEED_FULL,
     102            pretend_port_rest, 0, NULL,
     103            NULL, NULL);
     104        if (rc != EOK) {
     105                usb_log_fatal("Failed to create root hub: %s.\n",
     106                    str_error(rc));
     107        }
    94108
    95         devman_handle_t hub_handle;
    96         usb_device_register_child_in_devman(hub_address, hc_dev->handle,
    97             hc_dev, &hub_handle);
    98         //usb_drv_register_child_in_devman(hc, hc_dev, hub_address, &hub_handle);
    99         usb_drv_bind_address(hc, hub_address, hub_handle);
     109        usb_hc_connection_close(&hc_conn);
    100110
    101         return EOK;
     111        return 0;
    102112}
    103113       
  • uspace/drv/vhc/hub/hub.c

    rfb78ae72 rdeece2f  
    4040#include <stdlib.h>
    4141#include <driver.h>
    42 #include <usb/usbdrv.h>
    4342
    4443#include "hub.h"
  • uspace/drv/vhc/hub/virthub.c

    rfb78ae72 rdeece2f  
    4141#include <stdlib.h>
    4242#include <driver.h>
    43 #include <usb/usbdrv.h>
    4443
    4544#include "virthub.h"
Note: See TracChangeset for help on using the changeset viewer.