OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [linux-headers/] [include/] [linux/] [usb/] [midi.h] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
/*
2
 * <linux/usb/midi.h> -- USB MIDI definitions.
3
 *
4
 * Copyright (C) 2006 Thumtronics Pty Ltd.
5
 * Developed for Thumtronics by Grey Innovation
6
 * Ben Williamson <ben.williamson@greyinnovation.com>
7
 *
8
 * This software is distributed under the terms of the GNU General Public
9
 * License ("GPL") version 2, as published by the Free Software Foundation.
10
 *
11
 * This file holds USB constants and structures defined
12
 * by the USB Device Class Definition for MIDI Devices.
13
 * Comments below reference relevant sections of that document:
14
 *
15
 * http://www.usb.org/developers/devclass_docs/midi10.pdf
16
 */
17
 
18
#ifndef __LINUX_USB_MIDI_H
19
#define __LINUX_USB_MIDI_H
20
 
21
#include <linux/types.h>
22
 
23
/* A.1  MS Class-Specific Interface Descriptor Subtypes */
24
#define USB_MS_HEADER           0x01
25
#define USB_MS_MIDI_IN_JACK     0x02
26
#define USB_MS_MIDI_OUT_JACK    0x03
27
#define USB_MS_ELEMENT          0x04
28
 
29
/* A.2  MS Class-Specific Endpoint Descriptor Subtypes */
30
#define USB_MS_GENERAL          0x01
31
 
32
/* A.3  MS MIDI IN and OUT Jack Types */
33
#define USB_MS_EMBEDDED         0x01
34
#define USB_MS_EXTERNAL         0x02
35
 
36
/* 6.1.2.1  Class-Specific MS Interface Header Descriptor */
37
struct usb_ms_header_descriptor {
38
        __u8  bLength;
39
        __u8  bDescriptorType;
40
        __u8  bDescriptorSubtype;
41
        __le16 bcdMSC;
42
        __le16 wTotalLength;
43
} __attribute__ ((packed));
44
 
45
#define USB_DT_MS_HEADER_SIZE   7
46
 
47
/* 6.1.2.2  MIDI IN Jack Descriptor */
48
struct usb_midi_in_jack_descriptor {
49
        __u8  bLength;
50
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
51
        __u8  bDescriptorSubtype;       /* USB_MS_MIDI_IN_JACK */
52
        __u8  bJackType;                /* USB_MS_EMBEDDED/EXTERNAL */
53
        __u8  bJackID;
54
        __u8  iJack;
55
} __attribute__ ((packed));
56
 
57
#define USB_DT_MIDI_IN_SIZE     6
58
 
59
struct usb_midi_source_pin {
60
        __u8  baSourceID;
61
        __u8  baSourcePin;
62
} __attribute__ ((packed));
63
 
64
/* 6.1.2.3  MIDI OUT Jack Descriptor */
65
struct usb_midi_out_jack_descriptor {
66
        __u8  bLength;
67
        __u8  bDescriptorType;          /* USB_DT_CS_INTERFACE */
68
        __u8  bDescriptorSubtype;       /* USB_MS_MIDI_OUT_JACK */
69
        __u8  bJackType;                /* USB_MS_EMBEDDED/EXTERNAL */
70
        __u8  bJackID;
71
        __u8  bNrInputPins;             /* p */
72
        struct usb_midi_source_pin pins[]; /* [p] */
73
        /*__u8  iJack;  -- omitted due to variable-sized pins[] */
74
} __attribute__ ((packed));
75
 
76
#define USB_DT_MIDI_OUT_SIZE(p) (7 + 2 * (p))
77
 
78
/* As above, but more useful for defining your own descriptors: */
79
#define DECLARE_USB_MIDI_OUT_JACK_DESCRIPTOR(p)                 \
80
struct usb_midi_out_jack_descriptor_##p {                       \
81
        __u8  bLength;                                          \
82
        __u8  bDescriptorType;                                  \
83
        __u8  bDescriptorSubtype;                               \
84
        __u8  bJackType;                                        \
85
        __u8  bJackID;                                          \
86
        __u8  bNrInputPins;                                     \
87
        struct usb_midi_source_pin pins[p];                     \
88
        __u8  iJack;                                            \
89
} __attribute__ ((packed))
90
 
91
/* 6.2.2  Class-Specific MS Bulk Data Endpoint Descriptor */
92
struct usb_ms_endpoint_descriptor {
93
        __u8  bLength;                  /* 4+n */
94
        __u8  bDescriptorType;          /* USB_DT_CS_ENDPOINT */
95
        __u8  bDescriptorSubtype;       /* USB_MS_GENERAL */
96
        __u8  bNumEmbMIDIJack;          /* n */
97
        __u8  baAssocJackID[];          /* [n] */
98
} __attribute__ ((packed));
99
 
100
#define USB_DT_MS_ENDPOINT_SIZE(n)      (4 + (n))
101
 
102
/* As above, but more useful for defining your own descriptors: */
103
#define DECLARE_USB_MS_ENDPOINT_DESCRIPTOR(n)                   \
104
struct usb_ms_endpoint_descriptor_##n {                         \
105
        __u8  bLength;                                          \
106
        __u8  bDescriptorType;                                  \
107
        __u8  bDescriptorSubtype;                               \
108
        __u8  bNumEmbMIDIJack;                                  \
109
        __u8  baAssocJackID[n];                                 \
110
} __attribute__ ((packed))
111
 
112
#endif /* __LINUX_USB_MIDI_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.