Changes in uspace/drv/bus/usb/uhci/uhci.c [795448f:56fd7cf] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/uhci.c
r795448f r56fd7cf 33 33 * @brief UHCI driver 34 34 */ 35 36 /* XXX Fix this */ 37 #define _DDF_DATA_IMPLANT 38 35 39 #include <errno.h> 36 40 #include <str_error.h> … … 60 64 } uhci_t; 61 65 62 static inline uhci_t * dev_to_uhci(const ddf_dev_t *dev) 63 { 64 assert(dev); 65 return dev->driver_data; 66 } 67 /*----------------------------------------------------------------------------*/ 66 static inline uhci_t *dev_to_uhci(ddf_dev_t *dev) 67 { 68 return ddf_dev_data_get(dev); 69 } 70 68 71 /** IRQ handling callback, forward status from call to diver structure. 69 72 * … … 83 86 hc_interrupt(&uhci->hc, status); 84 87 } 85 /*----------------------------------------------------------------------------*/ 88 86 89 /** Operations supported by the HC driver */ 87 90 static ddf_dev_ops_t hc_ops = { 88 91 .interfaces[USBHC_DEV_IFACE] = &hcd_iface, /* see iface.h/c */ 89 92 }; 90 /*----------------------------------------------------------------------------*/ 93 91 94 /** Gets handle of the respective hc. 92 95 * … … 97 100 static int usb_iface_get_hc_handle(ddf_fun_t *fun, devman_handle_t *handle) 98 101 { 99 assert(fun); 100 ddf_fun_t *hc_fun = dev_to_uhci(fun->dev)->hc_fun; 102 ddf_fun_t *hc_fun = dev_to_uhci(ddf_fun_get_dev(fun))->hc_fun; 101 103 assert(hc_fun); 102 104 103 105 if (handle != NULL) 104 *handle = hc_fun->handle;106 *handle = ddf_fun_get_handle(hc_fun); 105 107 return EOK; 106 108 } 107 /*----------------------------------------------------------------------------*/ 109 108 110 /** USB interface implementation used by RH */ 109 111 static usb_iface_t usb_iface = { 110 112 .get_hc_handle = usb_iface_get_hc_handle, 111 113 }; 112 /*----------------------------------------------------------------------------*/ 114 113 115 /** Get root hub hw resources (I/O registers). 114 116 * … … 118 120 static hw_resource_list_t *get_resource_list(ddf_fun_t *fun) 119 121 { 120 assert(fun); 121 rh_t *rh = fun->driver_data; 122 rh_t *rh = ddf_fun_data_get(fun); 122 123 assert(rh); 123 124 return &rh->resource_list; 124 125 } 125 /*----------------------------------------------------------------------------*/ 126 126 127 /** Interface to provide the root hub driver with hw info */ 127 128 static hw_res_ops_t hw_res_iface = { … … 129 130 .enable_interrupt = NULL, 130 131 }; 131 /*----------------------------------------------------------------------------*/ 132 132 133 /** RH function support for uhci_rhd */ 133 134 static ddf_dev_ops_t rh_ops = { … … 135 136 .interfaces[HW_RES_DEV_IFACE] = &hw_res_iface 136 137 }; 137 /*----------------------------------------------------------------------------*/ 138 138 139 /** Initialize hc and rh DDF structures and their respective drivers. 139 140 * … … 160 161 if (ret != EOK) { \ 161 162 if (instance->hc_fun) \ 162 instance->hc_fun->driver_data = NULL; \163 163 ddf_fun_destroy(instance->hc_fun); \ 164 164 if (instance->rh_fun) {\ 165 instance->rh_fun->driver_data = NULL; \166 165 ddf_fun_destroy(instance->rh_fun); \ 167 166 } \ … … 174 173 int ret = (instance->hc_fun == NULL) ? ENOMEM : EOK; 175 174 CHECK_RET_DEST_FREE_RETURN(ret, "Failed to create UHCI HC function.\n"); 176 instance->hc_fun->ops = &hc_ops;177 instance->hc_fun->driver_data = &instance->hc.generic;175 ddf_fun_set_ops(instance->hc_fun, &hc_ops); 176 ddf_fun_data_implant(instance->hc_fun, &instance->hc.generic); 178 177 179 178 instance->rh_fun = ddf_fun_create(device, fun_inner, "uhci_rh"); 180 179 ret = (instance->rh_fun == NULL) ? ENOMEM : EOK; 181 180 CHECK_RET_DEST_FREE_RETURN(ret, "Failed to create UHCI RH function.\n"); 182 instance->rh_fun->ops = &rh_ops;183 instance->rh_fun->driver_data = &instance->rh;181 ddf_fun_set_ops(instance->rh_fun, &rh_ops); 182 ddf_fun_data_implant(instance->rh_fun, &instance->rh); 184 183 185 184 uintptr_t reg_base = 0; … … 190 189 CHECK_RET_DEST_FREE_RETURN(ret, 191 190 "Failed to get I/O addresses for %" PRIun ": %s.\n", 192 d evice->handle, str_error(ret));191 ddf_dev_get_handle(device), str_error(ret)); 193 192 usb_log_debug("I/O regs at 0x%p (size %zu), IRQ %d.\n", 194 193 (void *) reg_base, reg_size, irq);
Note:
See TracChangeset
for help on using the changeset viewer.