#ifndef SOUND_FIREWIRE_LIB_H_INCLUDED #define SOUND_FIREWIRE_LIB_H_INCLUDED #include #include #include #include struct fw_unit; #define FW_GENERATION_MASK 0x00ff #define FW_FIXED_GENERATION 0x0100 #define FW_QUIET 0x0200 int snd_fw_transaction(struct fw_unit *unit, int tcode, u64 offset, void *buffer, size_t length, unsigned int flags); /* returns true if retrying the transaction would not make sense */ static inline bool rcode_is_permanent_error(int rcode) { return rcode == RCODE_TYPE_ERROR || rcode == RCODE_ADDRESS_ERROR; } void snd_fw_schedule_registration(struct fw_unit *unit, struct delayed_work *dwork); struct snd_fw_async_midi_port; typedef int (*snd_fw_async_midi_port_fill)( struct snd_rawmidi_substream *substream, u8 *buf); struct snd_fw_async_midi_port { struct fw_device *parent; struct work_struct work; bool idling; ktime_t next_ktime; bool error; u64 addr; struct fw_transaction transaction; u8 *buf; unsigned int len; struct snd_rawmidi_substream *substream; snd_fw_async_midi_port_fill fill; unsigned int consume_bytes; }; int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port, struct fw_unit *unit, u64 addr, unsigned int len, snd_fw_async_midi_port_fill fill); void snd_fw_async_midi_port_destroy(struct snd_fw_async_midi_port *port); /** * snd_fw_async_midi_port_run - run transactions for the async MIDI port * @port: the asynchronous MIDI port * @substream: the MIDI substream */ static inline void snd_fw_async_midi_port_run(struct snd_fw_async_midi_port *port, struct snd_rawmidi_substream *substream) { if (!port->error) { port->substream = substream; schedule_work(&port->work); } } /** * snd_fw_async_midi_port_finish - finish the asynchronous MIDI port * @port: the asynchronous MIDI port */ static inline void snd_fw_async_midi_port_finish(struct snd_fw_async_midi_port *port) { port->substream = NULL; port->error = false; } #endif it/diff/sound/pci/ymfpci/ymfpci.h?id=883af14e67e8b8702b5560aa64c888c0cd0bd66c'>diff
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 /sound/pci/ymfpci/ymfpci.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 'sound/pci/ymfpci/ymfpci.h')