Changeset b5111c46 in mainline for uspace/drv/bus/usb/uhci
- Timestamp:
- 2014-07-23T21:38:25Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ffa96c2
- Parents:
- 87a3df7f
- Location:
- uspace/drv/bus/usb/uhci
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/hc.c
r87a3df7f rb5111c46 230 230 * 231 231 * @param[in] instance Memory place to initialize. 232 * @param[in] HC function node 232 233 * @param[in] regs Range of device's I/O control registers. 233 234 * @param[in] interrupts True if hw interrupts should be used. … … 238 239 * interrupt fibrils. 239 240 */ 240 int hc_init(hc_t *instance, addr_range_t *regs, bool interrupts)241 int hc_init(hc_t *instance, ddf_fun_t *fun, addr_range_t *regs, bool interrupts) 241 242 { 242 243 assert(regs->size >= sizeof(uhci_regs_t)); … … 266 267 } 267 268 268 hcd_init(&instance->generic, USB_SPEED_FULL, 269 instance->generic = ddf_fun_data_alloc(fun, sizeof(hcd_t)); 270 if (instance->generic == NULL) { 271 usb_log_error("Out of memory.\n"); 272 return ENOMEM; 273 } 274 275 hcd_init(instance->generic, USB_SPEED_FULL, 269 276 BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11); 270 277 271 instance->generic .private_data = instance;272 instance->generic .schedule = hc_schedule;273 instance->generic .ep_add_hook = NULL;278 instance->generic->private_data = instance; 279 instance->generic->schedule = hc_schedule; 280 instance->generic->ep_add_hook = NULL; 274 281 275 282 hc_init_hw(instance); -
uspace/drv/bus/usb/uhci/hc.h
r87a3df7f rb5111c46 36 36 #define DRV_UHCI_HC_H 37 37 38 #include <ddf/driver.h> 38 39 #include <ddf/interrupt.h> 39 40 #include <device/hw_res_parsed.h> … … 93 94 typedef struct hc { 94 95 /** Generic HCD driver structure */ 95 hcd_t generic;96 hcd_t *generic; 96 97 97 98 /** Addresses of I/O registers */ … … 126 127 addr_range_t *); 127 128 void hc_interrupt(hc_t *instance, uint16_t status); 128 int hc_init(hc_t * instance, addr_range_t *regs, bool interupts);129 int hc_init(hc_t *, ddf_fun_t *, addr_range_t *, bool); 129 130 130 131 /** Safely dispose host controller internal structures -
uspace/drv/bus/usb/uhci/uhci.c
r87a3df7f rb5111c46 34 34 */ 35 35 36 /* XXX Fix this */37 #define _DDF_DATA_IMPLANT38 39 36 #include <errno.h> 40 37 #include <stdbool.h> … … 62 59 hc_t hc; 63 60 /** Internal driver's representation of UHCI root hub */ 64 rh_t rh;61 rh_t *rh; 65 62 } uhci_t; 66 63 … … 186 183 187 184 ddf_fun_set_ops(instance->hc_fun, &hc_ops); 188 ddf_fun_data_implant(instance->hc_fun, &instance->hc.generic);189 185 190 186 instance->rh_fun = ddf_fun_create(device, fun_inner, "uhci_rh"); … … 196 192 197 193 ddf_fun_set_ops(instance->rh_fun, &rh_ops); 198 ddf_fun_data_implant(instance->rh_fun, &instance->rh);194 instance->rh = ddf_fun_data_alloc(instance->rh_fun, sizeof(rh_t)); 199 195 200 196 addr_range_t regs; … … 236 232 } 237 233 238 rc = hc_init(&instance->hc, ®s, interrupts);234 rc = hc_init(&instance->hc, instance->hc_fun, ®s, interrupts); 239 235 if (rc != EOK) { 240 236 usb_log_error("Failed to init uhci_hcd: %s.\n", str_error(rc)); … … 260 256 } 261 257 262 rc = rh_init( &instance->rh, instance->rh_fun, ®s, 0x10, 4);258 rc = rh_init(instance->rh, instance->rh_fun, ®s, 0x10, 4); 263 259 if (rc != EOK) { 264 260 usb_log_error("Failed to setup UHCI root hub: %s.\n",
Note:
See TracChangeset
for help on using the changeset viewer.
