Changes in uspace/drv/uhci-hcd/iface.c [a7e2f0d:1ae51ae] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/iface.c
ra7e2f0d r1ae51ae 43 43 #include "utils/device_keeper.h" 44 44 45 /** Reserve default address interface function46 *47 * @param[in] fun DDF function that was called.48 * @param[in] speed Speed to associate with the new default address.49 * @return Error code.50 */51 45 /*----------------------------------------------------------------------------*/ 52 46 static int reserve_default_address(ddf_fun_t *fun, usb_speed_t speed) … … 60 54 } 61 55 /*----------------------------------------------------------------------------*/ 62 /** Release default address interface function63 *64 * @param[in] fun DDF function that was called.65 * @return Error code.66 */67 56 static int release_default_address(ddf_fun_t *fun) 68 57 { … … 75 64 } 76 65 /*----------------------------------------------------------------------------*/ 77 /** Request address interface function78 *79 * @param[in] fun DDF function that was called.80 * @param[in] speed Speed to associate with the new default address.81 * @param[out] address Place to write a new address.82 * @return Error code.83 */84 66 static int request_address(ddf_fun_t *fun, usb_speed_t speed, 85 67 usb_address_t *address) … … 98 80 } 99 81 /*----------------------------------------------------------------------------*/ 100 /** Bind address interface function101 *102 * @param[in] fun DDF function that was called.103 * @param[in] address Address of the device104 * @param[in] handle Devman handle of the device driver.105 * @return Error code.106 */107 82 static int bind_address( 108 83 ddf_fun_t *fun, usb_address_t address, devman_handle_t handle) … … 116 91 } 117 92 /*----------------------------------------------------------------------------*/ 118 /** Release address interface function119 *120 * @param[in] fun DDF function that was called.121 * @param[in] address USB address to be released.122 * @return Error code.123 */124 93 static int release_address(ddf_fun_t *fun, usb_address_t address) 125 94 { … … 132 101 } 133 102 /*----------------------------------------------------------------------------*/ 134 /** Interrupt out transaction interface function135 *136 * @param[in] fun DDF function that was called.137 * @param[in] target USB device to write to.138 * @param[in] max_packet_size maximum size of data packet the device accepts139 * @param[in] data Source of data.140 * @param[in] size Size of data source.141 * @param[in] callback Function to call on transaction completion142 * @param[in] arg Additional for callback function.143 * @return Error code.144 */145 103 static int interrupt_out(ddf_fun_t *fun, usb_target_t target, 146 104 size_t max_packet_size, void *data, size_t size, … … 156 114 157 115 batch_t *batch = batch_get(fun, target, USB_TRANSFER_INTERRUPT, 158 max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg, 159 &hc->device_manager); 116 max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg); 160 117 if (!batch) 161 118 return ENOMEM; … … 164 121 } 165 122 /*----------------------------------------------------------------------------*/ 166 /** Interrupt in transaction interface function167 *168 * @param[in] fun DDF function that was called.169 * @param[in] target USB device to write to.170 * @param[in] max_packet_size maximum size of data packet the device accepts171 * @param[out] data Data destination.172 * @param[in] size Size of data source.173 * @param[in] callback Function to call on transaction completion174 * @param[in] arg Additional for callback function.175 * @return Error code.176 */177 123 static int interrupt_in(ddf_fun_t *fun, usb_target_t target, 178 124 size_t max_packet_size, void *data, size_t size, … … 187 133 188 134 batch_t *batch = batch_get(fun, target, USB_TRANSFER_INTERRUPT, 189 max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg, 190 &hc->device_manager); 135 max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg); 191 136 if (!batch) 192 137 return ENOMEM; … … 195 140 } 196 141 /*----------------------------------------------------------------------------*/ 197 /** Bulk out transaction interface function198 *199 * @param[in] fun DDF function that was called.200 * @param[in] target USB device to write to.201 * @param[in] max_packet_size maximum size of data packet the device accepts202 * @param[in] data Source of data.203 * @param[in] size Size of data source.204 * @param[in] callback Function to call on transaction completion205 * @param[in] arg Additional for callback function.206 * @return Error code.207 */208 static int bulk_out(ddf_fun_t *fun, usb_target_t target,209 size_t max_packet_size, void *data, size_t size,210 usbhc_iface_transfer_out_callback_t callback, void *arg)211 {212 assert(fun);213 uhci_t *hc = fun_to_uhci(fun);214 assert(hc);215 usb_speed_t speed = device_keeper_speed(&hc->device_manager, target.address);216 217 usb_log_debug("Bulk OUT %d:%d %zu(%zu).\n",218 target.address, target.endpoint, size, max_packet_size);219 220 batch_t *batch = batch_get(fun, target, USB_TRANSFER_BULK,221 max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg,222 &hc->device_manager);223 if (!batch)224 return ENOMEM;225 batch_bulk_out(batch);226 return EOK;227 }228 /*----------------------------------------------------------------------------*/229 /** Bulk in transaction interface function230 *231 * @param[in] fun DDF function that was called.232 * @param[in] target USB device to write to.233 * @param[in] max_packet_size maximum size of data packet the device accepts234 * @param[out] data Data destination.235 * @param[in] size Size of data source.236 * @param[in] callback Function to call on transaction completion237 * @param[in] arg Additional for callback function.238 * @return Error code.239 */240 static int bulk_in(ddf_fun_t *fun, usb_target_t target,241 size_t max_packet_size, void *data, size_t size,242 usbhc_iface_transfer_in_callback_t callback, void *arg)243 {244 assert(fun);245 uhci_t *hc = fun_to_uhci(fun);246 assert(hc);247 usb_speed_t speed = device_keeper_speed(&hc->device_manager, target.address);248 usb_log_debug("Bulk IN %d:%d %zu(%zu).\n",249 target.address, target.endpoint, size, max_packet_size);250 251 batch_t *batch = batch_get(fun, target, USB_TRANSFER_BULK,252 max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg,253 &hc->device_manager);254 if (!batch)255 return ENOMEM;256 batch_bulk_in(batch);257 return EOK;258 }259 /*----------------------------------------------------------------------------*/260 /** Control write transaction interface function261 *262 * @param[in] fun DDF function that was called.263 * @param[in] target USB device to write to.264 * @param[in] max_packet_size maximum size of data packet the device accepts.265 * @param[in] setup_data Data to send with SETUP packet.266 * @param[in] setup_size Size of data to send with SETUP packet (should be 8B).267 * @param[in] data Source of data.268 * @param[in] size Size of data source.269 * @param[in] callback Function to call on transaction completion.270 * @param[in] arg Additional for callback function.271 * @return Error code.272 */273 142 static int control_write(ddf_fun_t *fun, usb_target_t target, 274 143 size_t max_packet_size, … … 283 152 target.address, target.endpoint, size, max_packet_size); 284 153 285 if (setup_size != 8)286 return EINVAL;287 288 154 batch_t *batch = batch_get(fun, target, USB_TRANSFER_CONTROL, 289 155 max_packet_size, speed, data, size, setup_data, setup_size, 290 NULL, callback, arg, &hc->device_manager); 291 if (!batch) 292 return ENOMEM; 293 device_keeper_reset_if_need(&hc->device_manager, target, setup_data); 156 NULL, callback, arg); 157 if (!batch) 158 return ENOMEM; 294 159 batch_control_write(batch); 295 160 return EOK; 296 161 } 297 162 /*----------------------------------------------------------------------------*/ 298 /** Control read transaction interface function299 *300 * @param[in] fun DDF function that was called.301 * @param[in] target USB device to write to.302 * @param[in] max_packet_size maximum size of data packet the device accepts.303 * @param[in] setup_data Data to send with SETUP packet.304 * @param[in] setup_size Size of data to send with SETUP packet (should be 8B).305 * @param[out] data Source of data.306 * @param[in] size Size of data source.307 * @param[in] callback Function to call on transaction completion.308 * @param[in] arg Additional for callback function.309 * @return Error code.310 */311 163 static int control_read(ddf_fun_t *fun, usb_target_t target, 312 164 size_t max_packet_size, … … 323 175 batch_t *batch = batch_get(fun, target, USB_TRANSFER_CONTROL, 324 176 max_packet_size, speed, data, size, setup_data, setup_size, callback, 325 NULL, arg , &hc->device_manager);177 NULL, arg); 326 178 if (!batch) 327 179 return ENOMEM; … … 329 181 return EOK; 330 182 } 183 184 331 185 /*----------------------------------------------------------------------------*/ 332 186 usbhc_iface_t uhci_iface = { … … 340 194 .interrupt_in = interrupt_in, 341 195 342 .bulk_in = bulk_in,343 .bulk_out = bulk_out,344 345 196 .control_read = control_read, 346 197 .control_write = control_write,
Note:
See TracChangeset
for help on using the changeset viewer.