Changes in uspace/drv/bus/usb/uhci/main.c [b7fd2a0:5a6cc679] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/main.c
rb7fd2a0 r5a6cc679 43 43 #include <str_error.h> 44 44 #include <usb/debug.h> 45 #include <usb/host/ ddf_helpers.h>45 #include <usb/host/utility.h> 46 46 47 47 #include "hc.h" … … 49 49 #define NAME "uhci" 50 50 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 *); 51 static errno_t disable_legacy(hc_device_t *); 54 52 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 }, 53 static const hc_driver_t uhci_driver = { 54 .name = NAME, 55 .hc_device_size = sizeof(hc_t), 56 .claim = disable_legacy, 57 .irq_code_gen = hc_gen_irq_code, 58 .hc_add = hc_add, 59 .start = hc_start, 60 .setup_root_hub = hc_setup_roothub, 61 .hc_gone = hc_gone, 67 62 }; 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 }97 63 98 64 /** Call the PCI driver with a request to clear legacy support register … … 101 67 * @return Error code. 102 68 */ 103 static errno_t disable_legacy( ddf_dev_t *device)69 static errno_t disable_legacy(hc_device_t *hcd) 104 70 { 105 assert( device);71 assert(hcd); 106 72 107 async_sess_t *parent_sess = ddf_dev_parent_sess_get( device);73 async_sess_t *parent_sess = ddf_dev_parent_sess_get(hcd->ddf_dev); 108 74 if (parent_sess == NULL) 109 75 return ENOMEM; … … 113 79 return pci_config_space_write_16(parent_sess, 0xc0, 0xaf00); 114 80 } 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_ops135 };136 137 81 138 82 /** Initialize global driver structures (NONE). … … 149 93 log_init(NAME); 150 94 logctl_set_log_level(NAME, LVL_NOTE); 151 return ddf_driver_main(&uhci_driver);95 return hc_driver_main(&uhci_driver); 152 96 } 153 97 /**
Note:
See TracChangeset
for help on using the changeset viewer.