cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

midi.h (3434B)


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