~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/firewire/lib.h

Version: ~ [ linux-5.3-rc1 ] ~ [ linux-5.2.2 ] ~ [ linux-5.1.19 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.60 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.134 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.186 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.186 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.70 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.39.4 ] ~ [ linux-2.6.38.8 ] ~ [ linux-2.6.37.6 ] ~ [ linux-2.6.36.4 ] ~ [ linux-2.6.35.14 ] ~ [ linux-2.6.34.15 ] ~ [ linux-2.6.33.20 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef SOUND_FIREWIRE_LIB_H_INCLUDED
  2 #define SOUND_FIREWIRE_LIB_H_INCLUDED
  3 
  4 #include <linux/firewire-constants.h>
  5 #include <linux/types.h>
  6 #include <linux/sched.h>
  7 #include <sound/rawmidi.h>
  8 
  9 struct fw_unit;
 10 
 11 #define FW_GENERATION_MASK      0x00ff
 12 #define FW_FIXED_GENERATION     0x0100
 13 #define FW_QUIET                0x0200
 14 
 15 int snd_fw_transaction(struct fw_unit *unit, int tcode,
 16                        u64 offset, void *buffer, size_t length,
 17                        unsigned int flags);
 18 
 19 /* returns true if retrying the transaction would not make sense */
 20 static inline bool rcode_is_permanent_error(int rcode)
 21 {
 22         return rcode == RCODE_TYPE_ERROR || rcode == RCODE_ADDRESS_ERROR;
 23 }
 24 
 25 void snd_fw_schedule_registration(struct fw_unit *unit,
 26                                   struct delayed_work *dwork);
 27 
 28 struct snd_fw_async_midi_port;
 29 typedef int (*snd_fw_async_midi_port_fill)(
 30                                 struct snd_rawmidi_substream *substream,
 31                                 u8 *buf);
 32 
 33 struct snd_fw_async_midi_port {
 34         struct fw_device *parent;
 35         struct work_struct work;
 36         bool idling;
 37         ktime_t next_ktime;
 38         bool error;
 39 
 40         u64 addr;
 41         struct fw_transaction transaction;
 42 
 43         u8 *buf;
 44         unsigned int len;
 45 
 46         struct snd_rawmidi_substream *substream;
 47         snd_fw_async_midi_port_fill fill;
 48         int consume_bytes;
 49 };
 50 
 51 int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
 52                 struct fw_unit *unit, u64 addr, unsigned int len,
 53                 snd_fw_async_midi_port_fill fill);
 54 void snd_fw_async_midi_port_destroy(struct snd_fw_async_midi_port *port);
 55 
 56 /**
 57  * snd_fw_async_midi_port_run - run transactions for the async MIDI port
 58  * @port: the asynchronous MIDI port
 59  * @substream: the MIDI substream
 60  */
 61 static inline void
 62 snd_fw_async_midi_port_run(struct snd_fw_async_midi_port *port,
 63                            struct snd_rawmidi_substream *substream)
 64 {
 65         if (!port->error) {
 66                 port->substream = substream;
 67                 schedule_work(&port->work);
 68         }
 69 }
 70 
 71 /**
 72  * snd_fw_async_midi_port_finish - finish the asynchronous MIDI port
 73  * @port: the asynchronous MIDI port
 74  */
 75 static inline void
 76 snd_fw_async_midi_port_finish(struct snd_fw_async_midi_port *port)
 77 {
 78         port->substream = NULL;
 79         port->error = false;
 80 }
 81 
 82 #endif
 83 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp