blob: f0a547d86679792d8a21a3c9a95e320cee71f3d6 [file] [log] [blame]
Christopher Ferris25981132017-11-14 16:53:49 -08001/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
Christopher Ferrise0845012014-07-09 14:58:51 -07002#ifndef _UAPI_SOUND_FIREWIRE_H_INCLUDED
3#define _UAPI_SOUND_FIREWIRE_H_INCLUDED
4
5#include <linux/ioctl.h>
Christopher Ferris31475242014-09-02 17:43:51 -07006#include <linux/types.h>
Christopher Ferrise0845012014-07-09 14:58:51 -07007
8/* events can be read() from the hwdep device */
9
10#define SNDRV_FIREWIRE_EVENT_LOCK_STATUS 0x000010cc
11#define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
Christopher Ferris31475242014-09-02 17:43:51 -070012#define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
Christopher Ferris12e1f282016-02-04 12:35:07 -080013#define SNDRV_FIREWIRE_EVENT_DIGI00X_MESSAGE 0x746e736c
Christopher Ferris0543f742017-07-26 13:09:46 -070014#define SNDRV_FIREWIRE_EVENT_MOTU_NOTIFICATION 0x64776479
Christopher Ferrise0845012014-07-09 14:58:51 -070015
16struct snd_firewire_event_common {
17 unsigned int type; /* SNDRV_FIREWIRE_EVENT_xxx */
18};
19
20struct snd_firewire_event_lock_status {
21 unsigned int type;
22 unsigned int status; /* 0/1 = unlocked/locked */
23};
24
25struct snd_firewire_event_dice_notification {
26 unsigned int type;
27 unsigned int notification; /* DICE-specific bits */
28};
29
Christopher Ferris31475242014-09-02 17:43:51 -070030#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32)((__u16)~0) - 1)
31/* each field should be in big endian */
32struct snd_efw_transaction {
33 __be32 length;
34 __be32 version;
35 __be32 seqnum;
36 __be32 category;
37 __be32 command;
38 __be32 status;
39 __be32 params[0];
40};
41struct snd_firewire_event_efw_response {
42 unsigned int type;
43 __be32 response[0]; /* some responses */
44};
45
Christopher Ferris12e1f282016-02-04 12:35:07 -080046struct snd_firewire_event_digi00x_message {
47 unsigned int type;
48 __u32 message; /* Digi00x-specific message */
49};
50
Christopher Ferris0543f742017-07-26 13:09:46 -070051struct snd_firewire_event_motu_notification {
52 unsigned int type;
53 __u32 message; /* MOTU-specific bits. */
54};
55
Christopher Ferrise0845012014-07-09 14:58:51 -070056union snd_firewire_event {
57 struct snd_firewire_event_common common;
58 struct snd_firewire_event_lock_status lock_status;
59 struct snd_firewire_event_dice_notification dice_notification;
Christopher Ferris31475242014-09-02 17:43:51 -070060 struct snd_firewire_event_efw_response efw_response;
Christopher Ferris12e1f282016-02-04 12:35:07 -080061 struct snd_firewire_event_digi00x_message digi00x_message;
Christopher Ferris0543f742017-07-26 13:09:46 -070062 struct snd_firewire_event_motu_notification motu_notification;
Christopher Ferrise0845012014-07-09 14:58:51 -070063};
64
65
66#define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
67#define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
68#define SNDRV_FIREWIRE_IOCTL_UNLOCK _IO('H', 0xfa)
69
70#define SNDRV_FIREWIRE_TYPE_DICE 1
Christopher Ferris31475242014-09-02 17:43:51 -070071#define SNDRV_FIREWIRE_TYPE_FIREWORKS 2
72#define SNDRV_FIREWIRE_TYPE_BEBOB 3
Christopher Ferris12e1f282016-02-04 12:35:07 -080073#define SNDRV_FIREWIRE_TYPE_OXFW 4
74#define SNDRV_FIREWIRE_TYPE_DIGI00X 5
75#define SNDRV_FIREWIRE_TYPE_TASCAM 6
Christopher Ferris0543f742017-07-26 13:09:46 -070076#define SNDRV_FIREWIRE_TYPE_MOTU 7
77#define SNDRV_FIREWIRE_TYPE_FIREFACE 8
Christopher Ferrise0845012014-07-09 14:58:51 -070078
79struct snd_firewire_get_info {
80 unsigned int type; /* SNDRV_FIREWIRE_TYPE_xxx */
81 unsigned int card; /* same as fw_cdev_get_info.card */
82 unsigned char guid[8];
83 char device_name[16]; /* device node in /dev */
84};
85
86/*
87 * SNDRV_FIREWIRE_IOCTL_LOCK prevents the driver from streaming.
88 * Returns -EBUSY if the driver is already streaming.
89 */
90
91#endif /* _UAPI_SOUND_FIREWIRE_H_INCLUDED */