include: usb: audio: specify exact endiannes of descriptors
authorRuslan Bilovol <ruslan.bilovol@gmail.com>
Sun, 25 Jun 2017 13:23:45 +0000 (16:23 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 18 Jul 2017 06:33:06 +0000 (09:33 +0300)
USB spec says that multiple byte fields are stored in
little-endian order (see chapter 8.1 of USB2.0 spec and
chapter 7.1 of USB3.0 spec), thus mark such fields as LE
for UAC1 and UAC2 headers

Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
include/linux/usb/audio-v2.h
include/uapi/linux/usb/audio.h

index c5f2158ab00e48742b0b47d6a18d5e167f50f86b..fd73bc0e902744de88104e2df7a2aaf375beaa9e 100644 (file)
@@ -115,13 +115,13 @@ struct uac2_input_terminal_descriptor {
        __u8 bDescriptorType;
        __u8 bDescriptorSubtype;
        __u8 bTerminalID;
-       __u16 wTerminalType;
+       __le16 wTerminalType;
        __u8 bAssocTerminal;
        __u8 bCSourceID;
        __u8 bNrChannels;
-       __u32 bmChannelConfig;
+       __le32 bmChannelConfig;
        __u8 iChannelNames;
-       __u16 bmControls;
+       __le16 bmControls;
        __u8 iTerminal;
 } __attribute__((packed));
 
@@ -132,11 +132,11 @@ struct uac2_output_terminal_descriptor {
        __u8 bDescriptorType;
        __u8 bDescriptorSubtype;
        __u8 bTerminalID;
-       __u16 wTerminalType;
+       __le16 wTerminalType;
        __u8 bAssocTerminal;
        __u8 bSourceID;
        __u8 bCSourceID;
-       __u16 bmControls;
+       __le16 bmControls;
        __u8 iTerminal;
 } __attribute__((packed));
 
@@ -164,9 +164,9 @@ struct uac2_as_header_descriptor {
        __u8 bTerminalLink;
        __u8 bmControls;
        __u8 bFormatType;
-       __u32 bmFormats;
+       __le32 bmFormats;
        __u8 bNrChannels;
-       __u32 bmChannelConfig;
+       __le32 bmChannelConfig;
        __u8 iChannelNames;
 } __attribute__((packed));
 
index d2314be4f0c03381c1390f0d0d3eefe4f958f4ed..a4680a5bf5dd4724aad4d16743543f3f35b52be3 100644 (file)
@@ -333,7 +333,7 @@ struct uac_processing_unit_descriptor {
        __u8 bDescriptorType;
        __u8 bDescriptorSubtype;
        __u8 bUnitID;
-       __u16 wProcessType;
+       __le16 wProcessType;
        __u8 bNrInPins;
        __u8 baSourceID[];
 } __attribute__ ((packed));
@@ -491,8 +491,8 @@ struct uac_format_type_ii_ext_descriptor {
        __u8 bDescriptorType;
        __u8 bDescriptorSubtype;
        __u8 bFormatType;
-       __u16 wMaxBitRate;
-       __u16 wSamplesPerFrame;
+       __le16 wMaxBitRate;
+       __le16 wSamplesPerFrame;
        __u8 bHeaderLength;
        __u8 bSideBandProtocol;
 } __attribute__((packed));