Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42370b82 authored by Ruslan Bilovol's avatar Ruslan Bilovol Committed by Felipe Balbi
Browse files

usb: gadget: f_uac1: endianness fixes.



As per USB spec, multiple-bytes fields are stored
in little-endian order. Use CPU<->LE helpers for
such fields.

Signed-off-by: default avatarRuslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 8bd226f9
Loading
Loading
Loading
Loading
+10 −10
Original line number Original line Diff line number Diff line
@@ -92,9 +92,9 @@ static struct uac_input_terminal_descriptor usb_out_it_desc = {
	.bDescriptorType =	USB_DT_CS_INTERFACE,
	.bDescriptorType =	USB_DT_CS_INTERFACE,
	.bDescriptorSubtype =	UAC_INPUT_TERMINAL,
	.bDescriptorSubtype =	UAC_INPUT_TERMINAL,
	.bTerminalID =		USB_OUT_IT_ID,
	.bTerminalID =		USB_OUT_IT_ID,
	.wTerminalType =	UAC_TERMINAL_STREAMING,
	.wTerminalType =	cpu_to_le16(UAC_TERMINAL_STREAMING),
	.bAssocTerminal =	0,
	.bAssocTerminal =	0,
	.wChannelConfig =	0x3,
	.wChannelConfig =	cpu_to_le16(0x3),
};
};


#define IO_OUT_OT_ID	2
#define IO_OUT_OT_ID	2
@@ -103,7 +103,7 @@ static struct uac1_output_terminal_descriptor io_out_ot_desc = {
	.bDescriptorType	= USB_DT_CS_INTERFACE,
	.bDescriptorType	= USB_DT_CS_INTERFACE,
	.bDescriptorSubtype	= UAC_OUTPUT_TERMINAL,
	.bDescriptorSubtype	= UAC_OUTPUT_TERMINAL,
	.bTerminalID		= IO_OUT_OT_ID,
	.bTerminalID		= IO_OUT_OT_ID,
	.wTerminalType		= UAC_OUTPUT_TERMINAL_SPEAKER,
	.wTerminalType		= cpu_to_le16(UAC_OUTPUT_TERMINAL_SPEAKER),
	.bAssocTerminal		= 0,
	.bAssocTerminal		= 0,
	.bSourceID		= USB_OUT_IT_ID,
	.bSourceID		= USB_OUT_IT_ID,
};
};
@@ -114,9 +114,9 @@ static struct uac_input_terminal_descriptor io_in_it_desc = {
	.bDescriptorType	= USB_DT_CS_INTERFACE,
	.bDescriptorType	= USB_DT_CS_INTERFACE,
	.bDescriptorSubtype	= UAC_INPUT_TERMINAL,
	.bDescriptorSubtype	= UAC_INPUT_TERMINAL,
	.bTerminalID		= IO_IN_IT_ID,
	.bTerminalID		= IO_IN_IT_ID,
	.wTerminalType		= UAC_INPUT_TERMINAL_MICROPHONE,
	.wTerminalType		= cpu_to_le16(UAC_INPUT_TERMINAL_MICROPHONE),
	.bAssocTerminal		= 0,
	.bAssocTerminal		= 0,
	.wChannelConfig		= 0x3,
	.wChannelConfig		= cpu_to_le16(0x3),
};
};


#define USB_IN_OT_ID	4
#define USB_IN_OT_ID	4
@@ -125,7 +125,7 @@ static struct uac1_output_terminal_descriptor usb_in_ot_desc = {
	.bDescriptorType =	USB_DT_CS_INTERFACE,
	.bDescriptorType =	USB_DT_CS_INTERFACE,
	.bDescriptorSubtype =	UAC_OUTPUT_TERMINAL,
	.bDescriptorSubtype =	UAC_OUTPUT_TERMINAL,
	.bTerminalID =		USB_IN_OT_ID,
	.bTerminalID =		USB_IN_OT_ID,
	.wTerminalType =	UAC_TERMINAL_STREAMING,
	.wTerminalType =	cpu_to_le16(UAC_TERMINAL_STREAMING),
	.bAssocTerminal =	0,
	.bAssocTerminal =	0,
	.bSourceID =		IO_IN_IT_ID,
	.bSourceID =		IO_IN_IT_ID,
};
};
@@ -174,7 +174,7 @@ static struct uac1_as_header_descriptor as_out_header_desc = {
	.bDescriptorSubtype =	UAC_AS_GENERAL,
	.bDescriptorSubtype =	UAC_AS_GENERAL,
	.bTerminalLink =	USB_OUT_IT_ID,
	.bTerminalLink =	USB_OUT_IT_ID,
	.bDelay =		1,
	.bDelay =		1,
	.wFormatTag =		UAC_FORMAT_TYPE_I_PCM,
	.wFormatTag =		cpu_to_le16(UAC_FORMAT_TYPE_I_PCM),
};
};


static struct uac1_as_header_descriptor as_in_header_desc = {
static struct uac1_as_header_descriptor as_in_header_desc = {
@@ -183,7 +183,7 @@ static struct uac1_as_header_descriptor as_in_header_desc = {
	.bDescriptorSubtype =	UAC_AS_GENERAL,
	.bDescriptorSubtype =	UAC_AS_GENERAL,
	.bTerminalLink =	USB_IN_OT_ID,
	.bTerminalLink =	USB_IN_OT_ID,
	.bDelay =		1,
	.bDelay =		1,
	.wFormatTag =		UAC_FORMAT_TYPE_I_PCM,
	.wFormatTag =		cpu_to_le16(UAC_FORMAT_TYPE_I_PCM),
};
};


DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1);
DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1);
@@ -606,8 +606,8 @@ static int f_audio_bind(struct usb_configuration *c, struct usb_function *f)
	if (status)
	if (status)
		goto fail;
		goto fail;


	audio->out_ep_maxpsize = as_out_ep_desc.wMaxPacketSize;
	audio->out_ep_maxpsize = le16_to_cpu(as_out_ep_desc.wMaxPacketSize);
	audio->in_ep_maxpsize = as_in_ep_desc.wMaxPacketSize;
	audio->in_ep_maxpsize = le16_to_cpu(as_in_ep_desc.wMaxPacketSize);
	audio->params.c_chmask = audio_opts->c_chmask;
	audio->params.c_chmask = audio_opts->c_chmask;
	audio->params.c_srate = audio_opts->c_srate;
	audio->params.c_srate = audio_opts->c_srate;
	audio->params.c_ssize = audio_opts->c_ssize;
	audio->params.c_ssize = audio_opts->c_ssize;