/* * 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; } div class='path'>path: root/include/uapi/drm/omap_drm.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-24 16:54:39 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-24 16:54:39 -0800
commit883af14e67e8b8702b5560aa64c888c0cd0bd66c (patch)
tree74e3a6b53f5fad9f7848ab1b9f6921b7012940a4 /include/uapi/drm/omap_drm.h
parent0263d4ebd94b36280608e296cba39b924b6e832b (diff)
parentaab45453ff5c77200c6da4ac909f7a4392aed17e (diff)
Merge branch 'akpm' (patches from Andrew)
Merge fixes from Andrew Morton: "26 fixes" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (26 commits) MAINTAINERS: add Dan Streetman to zbud maintainers MAINTAINERS: add Dan Streetman to zswap maintainers mm: do not export ioremap_page_range symbol for external module mn10300: fix build error of missing fpu_save() romfs: use different way to generate fsid for BLOCK or MTD frv: add missing atomic64 operations mm, page_alloc: fix premature OOM when racing with cpuset mems update mm, page_alloc: move cpuset seqcount checking to slowpath mm, page_alloc: fix fast-path race with cpuset update or removal mm, page_alloc: fix check for NULL preferred_zone kernel/panic.c: add missing \n fbdev: color map copying bounds checking frv: add atomic64_add_unless() mm/mempolicy.c: do not put mempolicy before using its nodemask radix-tree: fix private list warnings Documentation/filesystems/proc.txt: add VmPin mm, memcg: do not retry precharge charges proc: add a schedule point in proc_pid_readdir() mm: alloc_contig: re-allow CMA to compact FS pages mm/slub.c: trace free objects at KERN_INFO ...
Diffstat (limited to 'include/uapi/drm/omap_drm.h')