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