Linux 5.6-rc2
[sfrench/cifs-2.6.git] / sound / firewire / lib.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef SOUND_FIREWIRE_LIB_H_INCLUDED
3 #define SOUND_FIREWIRE_LIB_H_INCLUDED
4
5 #include <linux/firewire-constants.h>
6 #include <linux/types.h>
7 #include <linux/sched.h>
8 #include <sound/rawmidi.h>
9
10 struct fw_unit;
11
12 #define FW_GENERATION_MASK      0x00ff
13 #define FW_FIXED_GENERATION     0x0100
14 #define FW_QUIET                0x0200
15
16 int snd_fw_transaction(struct fw_unit *unit, int tcode,
17                        u64 offset, void *buffer, size_t length,
18                        unsigned int flags);
19
20 /* returns true if retrying the transaction would not make sense */
21 static inline bool rcode_is_permanent_error(int rcode)
22 {
23         return rcode == RCODE_TYPE_ERROR || rcode == RCODE_ADDRESS_ERROR;
24 }
25
26 void snd_fw_schedule_registration(struct fw_unit *unit,
27                                   struct delayed_work *dwork);
28
29 #endif