diff options
| author | Hemant Kumar <hemantk@codeaurora.org> | 2017-08-17 17:34:05 -0700 |
|---|---|---|
| committer | Ajay Agarwal <ajaya@codeaurora.org> | 2017-11-24 14:50:24 +0530 |
| commit | 9730f9cdc0874d372a3eb10680ed8622e26db2bb (patch) | |
| tree | 8b330173b0449970940195fe7909c7633a7b6386 | |
| parent | 97618148cec392dd81aedbef03504c90b5ddaf26 (diff) | |
sound: usb: Provide controller number in QMI response
In order to support tunnel mode on multiple usb conttollers
qmi service needs to provide the controller number in
enable audio stream QMI response so that remote entity
programs appropriate usb controller to initiate data transfer
with USB audio device. Also, update QMI response message data
structure with optional speed_info.
Change-Id: I1d4968c19601a3984bf60e7754a6d88473540166
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
| -rw-r--r-- | sound/usb/usb_audio_qmi_svc.c | 7 | ||||
| -rw-r--r-- | sound/usb/usb_audio_qmi_v01.c | 42 | ||||
| -rw-r--r-- | sound/usb/usb_audio_qmi_v01.h | 18 |
3 files changed, 64 insertions, 3 deletions
diff --git a/sound/usb/usb_audio_qmi_svc.c b/sound/usb/usb_audio_qmi_svc.c index 28c5a3736a9c..3b41e552afb2 100644 --- a/sound/usb/usb_audio_qmi_svc.c +++ b/sound/usb/usb_audio_qmi_svc.c @@ -555,6 +555,13 @@ skip_sync_ep: resp->interrupter_num = uaudio_qdev->intr_num; resp->interrupter_num_valid = 1; + ret = usb_get_controller_id(subs->dev); + if (ret < 0) + goto err; + + resp->controller_num = ret; + resp->controller_num_valid = 1; + /* map xhci data structures PA memory to iova */ /* event ring */ diff --git a/sound/usb/usb_audio_qmi_v01.c b/sound/usb/usb_audio_qmi_v01.c index 6f6f194e89fb..a93665cb7b25 100644 --- a/sound/usb/usb_audio_qmi_v01.c +++ b/sound/usb/usb_audio_qmi_v01.c @@ -1,4 +1,4 @@ - /* Copyright (c) 2016, The Linux Foundation. All rights reserved. + /* Copyright (c) 2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -633,6 +633,46 @@ struct elem_info qmi_uaudio_stream_resp_msg_v01_ei[] = { interrupter_num), }, { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(uint8_t), + .is_array = NO_ARRAY, + .tlv_type = 0x1C, + .offset = offsetof( + struct qmi_uaudio_stream_resp_msg_v01, + speed_info_valid), + }, + { + .data_type = QMI_SIGNED_4_BYTE_ENUM, + .elem_len = 1, + .elem_size = sizeof(enum usb_audio_device_speed_enum_v01), + .is_array = NO_ARRAY, + .tlv_type = 0x1C, + .offset = offsetof( + struct qmi_uaudio_stream_resp_msg_v01, + speed_info), + }, + { + .data_type = QMI_OPT_FLAG, + .elem_len = 1, + .elem_size = sizeof(uint8_t), + .is_array = NO_ARRAY, + .tlv_type = 0x1D, + .offset = offsetof( + struct qmi_uaudio_stream_resp_msg_v01, + controller_num_valid), + }, + { + .data_type = QMI_UNSIGNED_1_BYTE, + .elem_len = 1, + .elem_size = sizeof(uint8_t), + .is_array = NO_ARRAY, + .tlv_type = 0x1D, + .offset = offsetof( + struct qmi_uaudio_stream_resp_msg_v01, + controller_num), + }, + { .data_type = QMI_EOTI, .is_array = NO_ARRAY, .is_array = QMI_COMMON_TLV_TYPE, diff --git a/sound/usb/usb_audio_qmi_v01.h b/sound/usb/usb_audio_qmi_v01.h index aa1018a22105..9900764bf76f 100644 --- a/sound/usb/usb_audio_qmi_v01.h +++ b/sound/usb/usb_audio_qmi_v01.h @@ -1,4 +1,4 @@ - /* Copyright (c) 2016, The Linux Foundation. All rights reserved. + /* Copyright (c) 2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -77,6 +77,16 @@ enum usb_audio_device_indication_enum_v01 { USB_AUDIO_DEVICE_INDICATION_ENUM_MAX_VAL_V01 = INT_MAX, }; +enum usb_audio_device_speed_enum_v01 { + USB_AUDIO_DEVICE_SPEED_ENUM_MIN_VAL_V01 = INT_MIN, + USB_AUDIO_DEVICE_SPEED_INVALID_V01 = 0, + USB_AUDIO_DEVICE_SPEED_LOW_V01 = 1, + USB_AUDIO_DEVICE_SPEED_FULL_V01 = 2, + USB_AUDIO_DEVICE_SPEED_HIGH_V01 = 3, + USB_AUDIO_DEVICE_SPEED_SUPER_V01 = 4, + USB_AUDIO_DEVICE_SPEED_ENUM_MAX_VAL_V01 = INT_MAX, +}; + struct qmi_uaudio_stream_req_msg_v01 { uint8_t enable; uint32_t usb_token; @@ -118,8 +128,12 @@ struct qmi_uaudio_stream_resp_msg_v01 { struct apps_mem_info_v01 xhci_mem_info; uint8_t interrupter_num_valid; uint8_t interrupter_num; + uint8_t speed_info_valid; + enum usb_audio_device_speed_enum_v01 speed_info; + uint8_t controller_num_valid; + uint8_t controller_num; }; -#define QMI_UAUDIO_STREAM_RESP_MSG_V01_MAX_MSG_LEN 191 +#define QMI_UAUDIO_STREAM_RESP_MSG_V01_MAX_MSG_LEN 202 extern struct elem_info qmi_uaudio_stream_resp_msg_v01_ei[]; struct qmi_uaudio_stream_ind_msg_v01 { |
