Changes in uspace/drv/bus/usb/uhci/main.c [e0a5d4c:b7fd2a0] in mainline
- File:
-
- 1 edited
-
uspace/drv/bus/usb/uhci/main.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/main.c
re0a5d4c rb7fd2a0 1 1 /* 2 2 * Copyright (c) 2011 Vojtech Horky, Jan Vesely 3 * Copyright (c) 2018 Ondrej Hlavaty, Petr Manek4 3 * All rights reserved. 5 4 * … … 44 43 #include <str_error.h> 45 44 #include <usb/debug.h> 46 #include <usb/host/ utility.h>45 #include <usb/host/ddf_helpers.h> 47 46 48 47 #include "hc.h" … … 50 49 #define NAME "uhci" 51 50 52 static errno_t disable_legacy(hc_device_t *); 51 static errno_t uhci_driver_init(hcd_t *, const hw_res_list_parsed_t *, bool); 52 static void uhci_driver_fini(hcd_t *); 53 static errno_t disable_legacy(ddf_dev_t *); 53 54 54 static const hc_driver_t uhci_driver = { 55 .name = NAME, 56 .hc_device_size = sizeof(hc_t), 57 .claim = disable_legacy, 58 .irq_code_gen = hc_gen_irq_code, 59 .hc_add = hc_add, 60 .start = hc_start, 61 .setup_root_hub = hc_setup_roothub, 62 .hc_gone = hc_gone, 55 static const ddf_hc_driver_t uhci_hc_driver = { 56 .claim = disable_legacy, 57 .hc_speed = USB_SPEED_FULL, 58 .irq_code_gen = uhci_hc_gen_irq_code, 59 .init = uhci_driver_init, 60 .fini = uhci_driver_fini, 61 .name = "UHCI", 62 .ops = { 63 .schedule = uhci_hc_schedule, 64 .irq_hook = uhci_hc_interrupt, 65 .status_hook = uhci_hc_status, 66 }, 63 67 }; 68 69 static errno_t uhci_driver_init(hcd_t *hcd, const hw_res_list_parsed_t *res, bool irq) 70 { 71 assert(hcd); 72 assert(hcd_get_driver_data(hcd) == NULL); 73 74 hc_t *instance = malloc(sizeof(hc_t)); 75 if (!instance) 76 return ENOMEM; 77 78 const errno_t ret = hc_init(instance, res, irq); 79 if (ret == EOK) { 80 hcd_set_implementation(hcd, instance, &uhci_hc_driver.ops); 81 } else { 82 free(instance); 83 } 84 return ret; 85 } 86 87 static void uhci_driver_fini(hcd_t *hcd) 88 { 89 assert(hcd); 90 hc_t *hc = hcd_get_driver_data(hcd); 91 if (hc) 92 hc_fini(hc); 93 94 hcd_set_implementation(hcd, NULL, NULL); 95 free(hc); 96 } 64 97 65 98 /** Call the PCI driver with a request to clear legacy support register … … 68 101 * @return Error code. 69 102 */ 70 static errno_t disable_legacy( hc_device_t *hcd)103 static errno_t disable_legacy(ddf_dev_t *device) 71 104 { 72 assert( hcd);105 assert(device); 73 106 74 async_sess_t *parent_sess = ddf_dev_parent_sess_get( hcd->ddf_dev);107 async_sess_t *parent_sess = ddf_dev_parent_sess_get(device); 75 108 if (parent_sess == NULL) 76 109 return ENOMEM; … … 80 113 return pci_config_space_write_16(parent_sess, 0xc0, 0xaf00); 81 114 } 115 116 /** Initialize a new ddf driver instance for uhci hc and hub. 117 * 118 * @param[in] device DDF instance of the device to initialize. 119 * @return Error code. 120 */ 121 static errno_t uhci_dev_add(ddf_dev_t *device) 122 { 123 usb_log_debug2("uhci_dev_add() called\n"); 124 assert(device); 125 return hcd_ddf_add_hc(device, &uhci_hc_driver); 126 } 127 128 static const driver_ops_t uhci_driver_ops = { 129 .dev_add = uhci_dev_add, 130 }; 131 132 static const driver_t uhci_driver = { 133 .name = NAME, 134 .driver_ops = &uhci_driver_ops 135 }; 136 82 137 83 138 /** Initialize global driver structures (NONE). … … 94 149 log_init(NAME); 95 150 logctl_set_log_level(NAME, LVL_NOTE); 96 return hc_driver_main(&uhci_driver);151 return ddf_driver_main(&uhci_driver); 97 152 } 98 153 /**
Note:
See TracChangeset
for help on using the changeset viewer.
