Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ohci/main.c

    r920d0fc ra25d893  
    3333 * Main routines of OHCI driver.
    3434 */
     35
     36#include <assert.h>
    3537#include <ddf/driver.h>
    3638#include <errno.h>
     39#include <io/log.h>
    3740#include <str_error.h>
    3841
    3942#include <usb/debug.h>
     43#include <usb/host/ddf_helpers.h>
    4044
    41 #include "ohci.h"
     45#include "hc.h"
    4246
    4347#define NAME "ohci"
     48
     49static int ohci_driver_init(hcd_t *hcd, const hw_res_list_parsed_t *res, bool irq)
     50{
     51        assert(hcd);
     52        assert(hcd->driver.data == NULL);
     53
     54        hc_t *instance = malloc(sizeof(hc_t));
     55        if (!instance)
     56                return ENOMEM;
     57
     58        const int ret = hc_init(instance, res, irq);
     59        if (ret == EOK)
     60                hcd_set_implementation(hcd, instance, ohci_hc_schedule,
     61                    ohci_endpoint_init, ohci_endpoint_fini, ohci_hc_interrupt,
     62                    ohci_hc_status);
     63        return ret;
     64}
     65
     66static void ohci_driver_fini(hcd_t *hcd)
     67{
     68        assert(hcd);
     69        if (hcd->driver.data)
     70                hc_fini(hcd->driver.data);
     71
     72        free(hcd->driver.data);
     73        hcd_set_implementation(hcd, NULL, NULL, NULL, NULL, NULL, NULL);
     74}
    4475
    4576/** Initializes a new ddf driver instance of OHCI hcd.
     
    5384        assert(device);
    5485
    55         int ret = device_setup_ohci(device);
     86        const int ret = ddf_hcd_device_setup_all(device, USB_SPEED_FULL,
     87            BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11,
     88            ddf_hcd_gen_irq_handler, ohci_hc_gen_irq_code,
     89            ohci_driver_init, ohci_driver_fini);
    5690        if (ret != EOK) {
    5791                usb_log_error("Failed to initialize OHCI driver: %s.\n",
    5892                    str_error(ret));
    59                 return ret;
    6093        }
    61         usb_log_info("Controlling new OHCI device '%s'.\n", ddf_dev_get_name(device));
     94        usb_log_info("Controlling new OHCI device '%s'.\n",
     95            ddf_dev_get_name(device));
    6296
    63         return EOK;
     97        return ret;
    6498}
    6599
    66 static driver_ops_t ohci_driver_ops = {
     100static const driver_ops_t ohci_driver_ops = {
    67101        .dev_add = ohci_dev_add,
    68102};
    69103
    70 static driver_t ohci_driver = {
     104static const driver_t ohci_driver = {
    71105        .name = NAME,
    72106        .driver_ops = &ohci_driver_ops
Note: See TracChangeset for help on using the changeset viewer.