Changeset 62f4212 in mainline for uspace/drv/uhci-hcd/hc.c


Ignore:
Timestamp:
2011-03-22T10:07:53Z (14 years ago)
Author:
Lubos Slovak <lubos.slovak@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f8e4cb6
Parents:
18b3cfd (diff), b01995b (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:

Merged changes from development

File:
1 moved

Legend:

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

    r18b3cfd r62f4212  
    4242#include <usb_iface.h>
    4343
    44 #include "uhci_hc.h"
     44#include "hc.h"
    4545
    4646static irq_cmd_t uhci_cmds[] = {
     
    6060};
    6161/*----------------------------------------------------------------------------*/
    62 static int uhci_hc_init_transfer_lists(uhci_hc_t *instance);
    63 static int uhci_hc_init_mem_structures(uhci_hc_t *instance);
    64 static void uhci_hc_init_hw(uhci_hc_t *instance);
    65 
    66 static int uhci_hc_interrupt_emulator(void *arg);
    67 static int uhci_hc_debug_checker(void *arg);
     62static int hc_init_transfer_lists(hc_t *instance);
     63static int hc_init_mem_structures(hc_t *instance);
     64static void hc_init_hw(hc_t *instance);
     65
     66static int hc_interrupt_emulator(void *arg);
     67static int hc_debug_checker(void *arg);
    6868
    6969static bool allowed_usb_packet(
     
    8282 * interrupt fibrils.
    8383 */
    84 int uhci_hc_init(uhci_hc_t *instance, ddf_fun_t *fun,
     84int hc_init(hc_t *instance, ddf_fun_t *fun,
    8585    void *regs, size_t reg_size, bool interrupts)
    8686{
     
    112112            io, reg_size);
    113113
    114         ret = uhci_hc_init_mem_structures(instance);
     114        ret = hc_init_mem_structures(instance);
    115115        CHECK_RET_DEST_FUN_RETURN(ret,
    116116            "Failed to initialize UHCI memory structures.\n");
    117117
    118         uhci_hc_init_hw(instance);
     118        hc_init_hw(instance);
    119119        if (!interrupts) {
    120120                instance->cleaner =
    121                     fibril_create(uhci_hc_interrupt_emulator, instance);
     121                    fibril_create(hc_interrupt_emulator, instance);
    122122                fibril_add_ready(instance->cleaner);
    123         }
    124 
    125         instance->debug_checker = fibril_create(uhci_hc_debug_checker, instance);
    126         fibril_add_ready(instance->debug_checker);
    127 
    128         usb_log_info("Started UHCI driver.\n");
     123        } else {
     124                /* TODO: enable interrupts here */
     125        }
     126
     127        instance->debug_checker =
     128            fibril_create(hc_debug_checker, instance);
     129//      fibril_add_ready(instance->debug_checker);
     130
    129131        return EOK;
    130132#undef CHECK_RET_DEST_FUN_RETURN
     
    136138 * For magic values see UHCI Design Guide
    137139 */
    138 void uhci_hc_init_hw(uhci_hc_t *instance)
     140void hc_init_hw(hc_t *instance)
    139141{
    140142        assert(instance);
     
    184186 *  - frame list page (needs to be one UHCI hw accessible 4K page)
    185187 */
    186 int uhci_hc_init_mem_structures(uhci_hc_t *instance)
     188int hc_init_mem_structures(hc_t *instance)
    187189{
    188190        assert(instance);
     
    213215
    214216        /* Init transfer lists */
    215         ret = uhci_hc_init_transfer_lists(instance);
     217        ret = hc_init_transfer_lists(instance);
    216218        CHECK_RET_DEST_CMDS_RETURN(ret, "Failed to init transfer lists.\n");
    217219        usb_log_debug("Initialized transfer lists.\n");
     
    234236
    235237        /* Init device keeper*/
    236         device_keeper_init(&instance->device_manager);
     238        usb_device_keeper_init(&instance->manager);
    237239        usb_log_debug("Initialized device manager.\n");
    238240
     
    250252 * USB scheduling. Sets pointer table for quick access.
    251253 */
    252 int uhci_hc_init_transfer_lists(uhci_hc_t *instance)
     254int hc_init_transfer_lists(hc_t *instance)
    253255{
    254256        assert(instance);
     
    316318 * Checks for bandwidth availability and appends the batch to the proper queue.
    317319 */
    318 int uhci_hc_schedule(uhci_hc_t *instance, batch_t *batch)
     320int hc_schedule(hc_t *instance, usb_transfer_batch_t *batch)
    319321{
    320322        assert(instance);
     
    349351 * - resume from suspend state (not implemented)
    350352 */
    351 void uhci_hc_interrupt(uhci_hc_t *instance, uint16_t status)
     353void hc_interrupt(hc_t *instance, uint16_t status)
    352354{
    353355        assert(instance);
     
    371373                if (instance->hw_failures < UHCI_ALLOWED_HW_FAIL) {
    372374                        /* reinitialize hw, this triggers virtual disconnect*/
    373                         uhci_hc_init_hw(instance);
     375                        hc_init_hw(instance);
    374376                } else {
    375377                        usb_log_fatal("Too many UHCI hardware failures!.\n");
    376                         uhci_hc_fini(instance);
     378                        hc_fini(instance);
    377379                }
    378380        }
     
    384386 * @return EOK (should never return)
    385387 */
    386 int uhci_hc_interrupt_emulator(void* arg)
     388int hc_interrupt_emulator(void* arg)
    387389{
    388390        usb_log_debug("Started interrupt emulator.\n");
    389         uhci_hc_t *instance = (uhci_hc_t*)arg;
     391        hc_t *instance = (hc_t*)arg;
    390392        assert(instance);
    391393
     
    396398                if (status != 0)
    397399                        usb_log_debug2("UHCI status: %x.\n", status);
    398                 uhci_hc_interrupt(instance, status);
     400                hc_interrupt(instance, status);
    399401                async_usleep(UHCI_CLEANER_TIMEOUT);
    400402        }
     
    407409 * @return EOK (should never return)
    408410 */
    409 int uhci_hc_debug_checker(void *arg)
    410 {
    411         uhci_hc_t *instance = (uhci_hc_t*)arg;
     411int hc_debug_checker(void *arg)
     412{
     413        hc_t *instance = (hc_t*)arg;
    412414        assert(instance);
    413415
Note: See TracChangeset for help on using the changeset viewer.