/* * Freescale QUICC Engine USB Host Controller Driver * * Copyright (c) Freescale Semicondutor, Inc. 2006. * Shlomi Gridish * Jerry Huang * Copyright (c) Logic Product Development, Inc. 2007 * Peter Barada * Copyright (c) MontaVista Software, Inc. 2008. * Anton Vorontsov * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ #include #include #include #include #include #include #include #include "fhci.h" static void init_td(struct td *td) { memset(td, 0, sizeof(*td)); INIT_LIST_HEAD(&td->node); INIT_LIST_HEAD(&td->frame_lh); } static void init_ed(struct ed *ed) { memset(ed, 0, sizeof(*ed)); INIT_LIST_HEAD(&ed->td_list); INIT_LIST_HEAD(&ed->node); } static struct td *get_empty_td(struct fhci_hcd *fhci) { struct td *td; if (!list_empty(&fhci->empty_tds)) { td = list_entry(fhci->empty_tds.next, struct td, node); list_del(fhci->empty_tds.next); } else { td = kmalloc(sizeof(*td), GFP_ATOMIC); if (!td) fhci_err(fhci, "No memory to allocate to TD\n"); else init_td(td); } return td; } void fhci_recycle_empty_td(struct fhci_hcd *fhci, struct td *td) { init_td(td); list_add(&td->node, &fhci->empty_tds); } struct ed *fhci_get_empty_ed(struct fhci_hcd *fhci) { struct ed *ed; if (!list_empty(&fhci->empty_eds)) { ed = list_entry(fhci->empty_eds.next, struct ed, node); list_del(fhci->empty_eds.next); } else { ed = kmalloc(sizeof(*ed), GFP_ATOMIC); if (!ed) fhci_err(fhci, "No memory to allocate to ED\n"); else init_ed(ed); } return ed; } void fhci_recycle_empty_ed(struct fhci_hcd *fhci, struct ed *ed) { init_ed(ed); list_add(&ed->node, &fhci->empty_eds); } struct td *fhci_td_fill(struct fhci_hcd *fhci, struct urb *urb, struct urb_priv *urb_priv, struct ed *ed, u16 index, enum fhci_ta_type type, int toggle, u8 *data, u32 len, u16 interval, u16 start_frame, bool ioc) { struct td *td = get_empty_td(fhci); if (!td) return NULL; td->urb = urb; td->ed = ed; td->type = type; td->toggle = toggle; td->data = data; td->len = len; td->iso_index = index; td->interval = interval; td->start_frame = start_frame; td->ioc = ioc; td->status = USB_TD_OK; urb_priv->tds[index] = td; return td; } n>
ion value='25'>25
AgeCommit message (Expand)AuthorFilesLines
space:
mode:
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>2017-01-31 00:47:30 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-01-31 00:51:06 -0800
commit05e0be7c900797e9164976a6014d534ce3035909 (patch)
tree6064ddf732b21c686c958cb9da73f6eae6de5a27 /drivers/usb/dwc3/core.h
parent3f5c34c6d4688b3b7e1dbc7bbc68a2f03a0d6b0c (diff)
Input: synaptics-rmi4 - fix reversed conditions in enable/disable_irq_wake
These tests are reversed. A warning should be displayed if an error is returned, not on success. Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/usb/dwc3/core.h')