Changeset 1256a0a in mainline for uspace/drv/uhci-hcd


Ignore:
Timestamp:
2011-02-01T00:08:46Z (15 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/fix-logger-deadlock, topic/msim-upgrade, topic/simplify-dev-export
Children:
993a1e1
Parents:
37ac7bb
Message:

uhci-rhd - UHCI Root hub drier as a separated process

this wil deffinitely need a lot of polishing

Location:
uspace/drv/uhci-hcd
Files:
3 added
1 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/Makefile

    r37ac7bb r1256a0a  
    3636        iface.c \
    3737        main.c \
    38         root_hub/port.c \
    39         root_hub/port_status.c \
    40         root_hub/root_hub.c \
     38        root_hub.c \
    4139        transfer_list.c \
    4240        uhci.c \
  • uspace/drv/uhci-hcd/main.c

    r37ac7bb r1256a0a  
    3434#include "iface.h"
    3535#include "name.h"
     36#include "pci.h"
     37#include "root_hub.h"
    3638#include "uhci.h"
    3739
     
    7577            io_reg_base, io_reg_size, irq);
    7678
    77         return uhci_init(device, (void*)io_reg_base, io_reg_size);
     79        int ret = uhci_init(device, (void*)io_reg_base, io_reg_size);
     80
     81        if (ret != EOK) {
     82                uhci_print_error("Failed to init uhci-hcd.\n");
     83                return ret;
     84        }
     85        device_t *rh;
     86        ret = setup_root_hub(&rh, device);
     87
     88        if (ret != EOK) {
     89                uhci_print_error("Failed to setup uhci root hub.\n");
     90                /* TODO: destroy uhci here */
     91                return ret;
     92        }
     93
     94        ret = child_device_register(rh, device);
     95        if (ret != EOK) {
     96                uhci_print_error("Failed to register root hub.\n");
     97                /* TODO: destroy uhci here */
     98                return ret;
     99        }
     100
     101        return EOK;
    78102}
    79103
  • uspace/drv/uhci-hcd/name.h

    r37ac7bb r1256a0a  
    3232 * @brief UHCI driver
    3333 */
    34 #ifndef DRV_UHCI_TD_NAME_H
    35 #define DRV_UHCI_TD_NAME_H
     34#ifndef DRV_UHCI_NAME_H
     35#define DRV_UHCI_NAME_H
    3636
    3737#define NAME "uhci-hcd"
  • uspace/drv/uhci-hcd/pci.c

    r37ac7bb r1256a0a  
    3434 * PCI related functions needed by the UHCI driver.
    3535 */
    36 #include "uhci.h"
     36#include "pci.h"
    3737#include <errno.h>
    3838#include <assert.h>
  • uspace/drv/uhci-hcd/uhci.c

    r37ac7bb r1256a0a  
    5151        uhci_print_verbose("Transfer lists initialized.\n");
    5252
    53         /* init root hub */
    54         ret = uhci_root_hub_init(&instance->root_hub, device,
    55           (char*)regs + UHCI_ROOT_HUB_PORT_REGISTERS_OFFSET);
    56         CHECK_RET_FREE_INSTANCE("Failed to initialize root hub driver.\n");
    5753
    5854        uhci_print_verbose("Initializing frame list.\n");
    5955        instance->frame_list = get_page();
    60 //        memalign32(sizeof(link_pointer_t) * UHCI_FRAME_LIST_COUNT, 4096);
    61         if (instance->frame_list == NULL) {
    62                 uhci_print_error("Failed to allocate frame list pointer.\n");
    63                 uhci_root_hub_fini(&instance->root_hub);
    64                 free(instance);
    65                 return ENOMEM;
    66         }
     56        ret = instance ? EOK : ENOMEM;
     57        CHECK_RET_FREE_INSTANCE("Failed to get frame list page.\n");
    6758
    6859        /* initialize all frames to point to the first queue head */
  • uspace/drv/uhci-hcd/uhci.h

    r37ac7bb r1256a0a  
    4141#include <usbhc_iface.h>
    4242
    43 #include "root_hub/root_hub.h"
    4443#include "transfer_list.h"
    4544
     
    7675typedef struct uhci {
    7776        usb_address_keeping_t address_manager;
    78         uhci_root_hub_t root_hub;
    7977        volatile regs_t *registers;
    8078
     
    8785
    8886/* init uhci specifics in device.driver_data */
    89 int uhci_init( device_t *device, void *regs, size_t reg_size );
     87int uhci_init(device_t *device, void *regs, size_t reg_size);
    9088
    91 int uhci_destroy( device_t *device );
     89int uhci_destroy(device_t *device);
    9290
    9391int uhci_transfer(
     
    102100  void *arg );
    103101
    104 int pci_get_my_registers(device_t *, uintptr_t *, size_t *, int *);
    105 
    106102#endif
    107103/**
Note: See TracChangeset for help on using the changeset viewer.