Changeset e1dbcbc in mainline for uspace/drv/uhci-hcd/uhci.c


Ignore:
Timestamp:
2011-04-29T13:43:01Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a81a1d09
Parents:
380e0364 (diff), f19f1b7 (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:

Merge development/ changes

File:
1 edited

Legend:

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

    r380e0364 re1dbcbc  
    4444#include "pci.h"
    4545
    46 /** IRQ handling callback, identifies device
     46/** IRQ handling callback, forward status from call to diver structure.
    4747 *
    4848 * @param[in] dev DDF instance of the device to use.
    4949 * @param[in] iid (Unused).
    50  * @param[in] call Pointer to the call that represents interrupt.
     50 * @param[in] call Pointer to the call from kernel.
    5151 */
    5252static void irq_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)
     
    6161/** Get address of the device identified by handle.
    6262 *
    63  * @param[in] dev DDF instance of the device to use.
    64  * @param[in] iid (Unused).
    65  * @param[in] call Pointer to the call that represents interrupt.
     63 * @param[in] fun DDF instance of the function to use.
     64 * @param[in] handle DDF handle of the driver seeking its USB address.
     65 * @param[out] address Found address.
    6666 */
    6767static int usb_iface_get_address(
     
    6969{
    7070        assert(fun);
    71         usb_device_keeper_t *manager = &((uhci_t*)fun->dev->driver_data)->hc.manager;
     71        usb_device_keeper_t *manager =
     72            &((uhci_t*)fun->dev->driver_data)->hc.manager;
    7273
    7374        usb_address_t addr = usb_device_keeper_find(manager, handle);
     
    8384}
    8485/*----------------------------------------------------------------------------*/
    85 /** Gets handle of the respective hc (this or parent device).
    86  *
    87  * @param[in] root_hub_fun Root hub function seeking hc handle.
    88  * @param[out] handle Place to write the handle.
     86/** Gets handle of the respective hc.
     87 *
     88 * @param[in] fun DDF function of uhci device.
     89 * @param[out] handle Host cotnroller handle.
    8990 * @return Error code.
    9091 */
     
    100101}
    101102/*----------------------------------------------------------------------------*/
    102 /** This iface is generic for both RH and HC. */
     103/** USB interface implementation used by RH */
    103104static usb_iface_t usb_iface = {
    104105        .get_hc_handle = usb_iface_get_hc_handle,
     
    106107};
    107108/*----------------------------------------------------------------------------*/
     109/** Operations supported by the HC driver */
    108110static ddf_dev_ops_t hc_ops = {
    109 //      .interfaces[USB_DEV_IFACE] = &usb_iface,
    110111        .interfaces[USBHC_DEV_IFACE] = &hc_iface, /* see iface.h/c */
    111112};
     
    122123}
    123124/*----------------------------------------------------------------------------*/
     125/** Interface to provide the root hub driver with hw info */
    124126static hw_res_ops_t hw_res_iface = {
    125127        .get_resource_list = get_resource_list,
     
    127129};
    128130/*----------------------------------------------------------------------------*/
     131/** RH function support for uhci-rhd */
    129132static ddf_dev_ops_t rh_ops = {
    130133        .interfaces[USB_DEV_IFACE] = &usb_iface,
     
    132135};
    133136/*----------------------------------------------------------------------------*/
    134 /** Initialize hc and rh ddf structures and their respective drivers.
     137/** Initialize hc and rh DDF structures and their respective drivers.
    135138 *
    136139 * @param[in] instance UHCI structure to use.
     
    138141 *
    139142 * This function does all the preparatory work for hc and rh drivers:
    140  *  - gets device hw resources
    141  *  - disables UHCI legacy support
     143 *  - gets device's hw resources
     144 *  - disables UHCI legacy support (PCI config space)
    142145 *  - asks for interrupt
    143146 *  - registers interrupt handler
     
    165168            pci_get_my_registers(device, &io_reg_base, &io_reg_size, &irq);
    166169        CHECK_RET_DEST_FUN_RETURN(ret,
    167             "Failed(%d) to get I/O addresses:.\n", ret, device->handle);
    168         usb_log_debug("I/O regs at 0x%X (size %zu), IRQ %d.\n",
    169             io_reg_base, io_reg_size, irq);
     170            "Failed to get I/O addresses for %" PRIun ": %s.\n",
     171            device->handle, str_error(ret));
     172        usb_log_debug("I/O regs at 0x%p (size %zu), IRQ %d.\n",
     173            (void *) io_reg_base, io_reg_size, irq);
    170174
    171175        ret = pci_disable_legacy(device);
     
    193197        ret = (instance->hc_fun == NULL) ? ENOMEM : EOK;
    194198        CHECK_RET_DEST_FUN_RETURN(ret,
    195             "Failed(%d) to create HC function.\n", ret);
     199            "Failed(%d) to create HC function: %s.\n", ret, str_error(ret));
    196200
    197201        ret = hc_init(&instance->hc, instance->hc_fun,
    198202            (void*)io_reg_base, io_reg_size, interrupts);
    199         CHECK_RET_DEST_FUN_RETURN(ret, "Failed(%d) to init uhci-hcd.\n", ret);
     203        CHECK_RET_DEST_FUN_RETURN(ret,
     204            "Failed(%d) to init uhci-hcd: %s.\n", ret, str_error(ret));
     205
    200206        instance->hc_fun->ops = &hc_ops;
    201207        instance->hc_fun->driver_data = &instance->hc;
     
    221227            &instance->hc.interrupt_code);
    222228        CHECK_RET_FINI_RETURN(ret,
    223             "Failed(%d) to register interrupt handler.\n", ret);
     229            "Failed(%d) to register interrupt handler: %s.\n",
     230            ret, str_error(ret));
    224231
    225232        instance->rh_fun = ddf_fun_create(device, fun_inner, "uhci-rh");
    226233        ret = (instance->rh_fun == NULL) ? ENOMEM : EOK;
    227234        CHECK_RET_FINI_RETURN(ret,
    228             "Failed(%d) to create root hub function.\n", ret);
     235            "Failed(%d) to create root hub function: %s.\n",
     236            ret, str_error(ret));
    229237
    230238        ret = rh_init(&instance->rh, instance->rh_fun,
    231239            (uintptr_t)instance->hc.registers + 0x10, 4);
    232240        CHECK_RET_FINI_RETURN(ret,
    233             "Failed(%d) to setup UHCI root hub.\n", ret);
     241            "Failed(%d) to setup UHCI root hub: %s.\n", ret, str_error(ret));
    234242
    235243        instance->rh_fun->ops = &rh_ops;
     
    237245        ret = ddf_fun_bind(instance->rh_fun);
    238246        CHECK_RET_FINI_RETURN(ret,
    239             "Failed(%d) to register UHCI root hub.\n", ret);
     247            "Failed(%d) to register UHCI root hub: %s.\n", ret, str_error(ret));
    240248
    241249        return EOK;
Note: See TracChangeset for help on using the changeset viewer.