Home | History | Annotate | Download | only in fastbootd

Lines Matching refs:usb_transport

57 struct usb_transport {
161 static int init_functionfs(struct usb_transport *usb_transport)
166 usb_transport->control = open(USB_FFS_FASTBOOT_EP0, O_RDWR);
167 if (usb_transport->control < 0) {
172 ret = write(usb_transport->control, &descriptors, sizeof(descriptors));
178 ret = write(usb_transport->control, &strings, sizeof(strings));
184 usb_transport->bulk_out = open(USB_FFS_FASTBOOT_OUT, O_RDWR);
185 if (usb_transport->bulk_out < 0) {
190 usb_transport->bulk_in = open(USB_FFS_FASTBOOT_IN, O_RDWR);
191 if (usb_transport->bulk_in < 0) {
199 if (usb_transport->bulk_in > 0) {
200 close(usb_transport->bulk_in);
201 usb_transport->bulk_in = -1;
203 if (usb_transport->bulk_out > 0) {
204 close(usb_transport->bulk_out);
205 usb_transport->bulk_out = -1;
207 if (usb_transport->control > 0) {
208 close(usb_transport->control);
209 usb_transport->control = -1;
218 struct usb_transport *usb_transport = container_of(t, struct usb_transport, transport);
220 D(DEBUG, "about to write (fd=%d, len=%zu)", usb_transport->bulk_in, len);
221 ret = bulk_write(usb_transport->bulk_in, data, len);
223 D(ERR, "ERROR: fd = %d, ret = %zd", usb_transport->bulk_in, ret);
226 D(DEBUG, "[ usb_write done fd=%d ]", usb_transport->bulk_in);
234 struct usb_transport *usb_transport = container_of(t, struct usb_transport, transport);
236 D(DEBUG, "about to read (fd=%d, len=%zu)", usb_transport->bulk_out, len);
237 ret = bulk_read(usb_transport->bulk_out, data, len);
239 D(ERR, "ERROR: fd = %d, ret = %zd", usb_transport->bulk_out, ret);
242 D(DEBUG, "[ usb_read done fd=%d ret=%zd]", usb_transport->bulk_out, ret);
250 struct usb_transport *usb_transport = container_of(t, struct usb_transport, transport);
252 err = ioctl(usb_transport->bulk_in, FUNCTIONFS_CLEAR_HALT);
254 D(WARN, "[ kick: source (fd=%d) clear halt failed (%d) ]", usb_transport->bulk_in, errno);
256 err = ioctl(usb_transport->bulk_out, FUNCTIONFS_CLEAR_HALT);
258 D(WARN, "[ kick: sink (fd=%d) clear halt failed (%d) ]", usb_transport->bulk_out, errno);
260 pthread_mutex_lock(&usb_transport->lock);
261 close(usb_transport->control);
262 close(usb_transport->bulk_out);
263 close(usb_transport->bulk_in);
264 usb_transport->control = usb_transport->bulk_out = usb_transport->bulk_in = -1;
266 pthread_cond_signal(&usb_transport->notify);
267 pthread_mutex_unlock(&usb_transport->lock);
274 struct usb_transport *usb_transport = container_of(transport, struct usb_transport, transport);
276 pthread_mutex_lock(&usb_transport->lock);
277 while (usb_transport->control != -1)
278 pthread_cond_wait(&usb_transport->notify, &usb_transport->lock);
279 pthread_mutex_unlock(&usb_transport->lock);
281 ret = init_functionfs(usb_transport);
293 struct usb_transport *usb_transport = calloc(1, sizeof(struct usb_transport));
295 usb_transport->transport.connect = usb_connect;
296 usb_transport->transport.close = usb_close;
297 usb_transport->transport.read = usb_read;
298 usb_transport->transport.write = usb_write;
299 usb_transport->control = -1;
300 usb_transport->bulk_out = -1;
301 usb_transport->bulk_out = -1;
303 pthread_cond_init(&usb_transport->notify, NULL);
304 pthread_mutex_init(&usb_transport->lock, NULL);
306 transport_register(&usb_transport->transport);