.. | .. |
---|
17 | 17 | |
---|
18 | 18 | USB_GADGET_COMPOSITE_OPTIONS(); |
---|
19 | 19 | |
---|
20 | | -#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) |
---|
21 | | -#include "u_uac.h" |
---|
| 20 | +#ifndef CONFIG_GADGET_UAC1 |
---|
| 21 | +#include "u_uac2.h" |
---|
22 | 22 | |
---|
23 | 23 | /* Playback(USB-IN) Default Stereo - Fl/Fr */ |
---|
24 | | -static int p_chmask = UAC_DEF_PCHMASK; |
---|
25 | | -module_param(p_chmask, uint, S_IRUGO); |
---|
| 24 | +static int p_chmask = UAC2_DEF_PCHMASK; |
---|
| 25 | +module_param(p_chmask, uint, 0444); |
---|
26 | 26 | MODULE_PARM_DESC(p_chmask, "Playback Channel Mask"); |
---|
27 | 27 | |
---|
28 | 28 | /* Playback Default 48 KHz */ |
---|
29 | | -static int p_srate = UAC_DEF_PSRATE; |
---|
30 | | -module_param(p_srate, uint, S_IRUGO); |
---|
31 | | -MODULE_PARM_DESC(p_srate, "Playback Sampling Rate"); |
---|
| 29 | +static int p_srates[UAC_MAX_RATES] = {UAC2_DEF_PSRATE}; |
---|
| 30 | +static int p_srates_cnt = 1; |
---|
| 31 | +module_param_array_named(p_srate, p_srates, uint, &p_srates_cnt, 0444); |
---|
| 32 | +MODULE_PARM_DESC(p_srate, "Playback Sampling Rates (array)"); |
---|
32 | 33 | |
---|
33 | 34 | /* Playback Default 16bits/sample */ |
---|
34 | | -static int p_ssize = UAC_DEF_PSSIZE; |
---|
35 | | -module_param(p_ssize, uint, S_IRUGO); |
---|
| 35 | +static int p_ssize = UAC2_DEF_PSSIZE; |
---|
| 36 | +module_param(p_ssize, uint, 0444); |
---|
36 | 37 | MODULE_PARM_DESC(p_ssize, "Playback Sample Size(bytes)"); |
---|
37 | 38 | |
---|
38 | 39 | /* Capture(USB-OUT) Default Stereo - Fl/Fr */ |
---|
39 | | -static int c_chmask = UAC_DEF_CCHMASK; |
---|
40 | | -module_param(c_chmask, uint, S_IRUGO); |
---|
| 40 | +static int c_chmask = UAC2_DEF_CCHMASK; |
---|
| 41 | +module_param(c_chmask, uint, 0444); |
---|
41 | 42 | MODULE_PARM_DESC(c_chmask, "Capture Channel Mask"); |
---|
42 | 43 | |
---|
43 | 44 | /* Capture Default 64 KHz */ |
---|
44 | | -static int c_srate = UAC_DEF_CSRATE; |
---|
45 | | -module_param(c_srate, uint, S_IRUGO); |
---|
46 | | -MODULE_PARM_DESC(c_srate, "Capture Sampling Rate"); |
---|
| 45 | +static int c_srates[UAC_MAX_RATES] = {UAC2_DEF_CSRATE}; |
---|
| 46 | +static int c_srates_cnt = 1; |
---|
| 47 | +module_param_array_named(c_srate, c_srates, uint, &c_srates_cnt, 0444); |
---|
| 48 | +MODULE_PARM_DESC(c_srate, "Capture Sampling Rates (array)"); |
---|
47 | 49 | |
---|
48 | 50 | /* Capture Default 16bits/sample */ |
---|
49 | | -static int c_ssize = UAC_DEF_CSSIZE; |
---|
50 | | -module_param(c_ssize, uint, S_IRUGO); |
---|
| 51 | +static int c_ssize = UAC2_DEF_CSSIZE; |
---|
| 52 | +module_param(c_ssize, uint, 0444); |
---|
| 53 | +MODULE_PARM_DESC(c_ssize, "Capture Sample Size(bytes)"); |
---|
| 54 | +#else |
---|
| 55 | +#ifndef CONFIG_GADGET_UAC1_LEGACY |
---|
| 56 | +#include "u_uac1.h" |
---|
| 57 | + |
---|
| 58 | +/* Playback(USB-IN) Default Stereo - Fl/Fr */ |
---|
| 59 | +static int p_chmask = UAC1_DEF_PCHMASK; |
---|
| 60 | +module_param(p_chmask, uint, 0444); |
---|
| 61 | +MODULE_PARM_DESC(p_chmask, "Playback Channel Mask"); |
---|
| 62 | + |
---|
| 63 | +/* Playback Default 48 KHz */ |
---|
| 64 | +static int p_srates[UAC_MAX_RATES] = {UAC1_DEF_PSRATE}; |
---|
| 65 | +static int p_srates_cnt = 1; |
---|
| 66 | +module_param_array_named(p_srate, p_srates, uint, &p_srates_cnt, 0444); |
---|
| 67 | +MODULE_PARM_DESC(p_srate, "Playback Sampling Rates (array)"); |
---|
| 68 | + |
---|
| 69 | +/* Playback Default 16bits/sample */ |
---|
| 70 | +static int p_ssize = UAC1_DEF_PSSIZE; |
---|
| 71 | +module_param(p_ssize, uint, 0444); |
---|
| 72 | +MODULE_PARM_DESC(p_ssize, "Playback Sample Size(bytes)"); |
---|
| 73 | + |
---|
| 74 | +/* Capture(USB-OUT) Default Stereo - Fl/Fr */ |
---|
| 75 | +static int c_chmask = UAC1_DEF_CCHMASK; |
---|
| 76 | +module_param(c_chmask, uint, 0444); |
---|
| 77 | +MODULE_PARM_DESC(c_chmask, "Capture Channel Mask"); |
---|
| 78 | + |
---|
| 79 | +/* Capture Default 48 KHz */ |
---|
| 80 | +static int c_srates[UAC_MAX_RATES] = {UAC1_DEF_CSRATE}; |
---|
| 81 | +static int c_srates_cnt = 1; |
---|
| 82 | +module_param_array_named(c_srate, c_srates, uint, &c_srates_cnt, 0444); |
---|
| 83 | +MODULE_PARM_DESC(c_srate, "Capture Sampling Rates (array)"); |
---|
| 84 | + |
---|
| 85 | +/* Capture Default 16bits/sample */ |
---|
| 86 | +static int c_ssize = UAC1_DEF_CSSIZE; |
---|
| 87 | +module_param(c_ssize, uint, 0444); |
---|
51 | 88 | MODULE_PARM_DESC(c_ssize, "Capture Sample Size(bytes)"); |
---|
52 | 89 | #else /* CONFIG_GADGET_UAC1_LEGACY */ |
---|
53 | 90 | #include "u_uac1_legacy.h" |
---|
54 | 91 | |
---|
55 | 92 | static char *fn_play = FILE_PCM_PLAYBACK; |
---|
56 | | -module_param(fn_play, charp, S_IRUGO); |
---|
| 93 | +module_param(fn_play, charp, 0444); |
---|
57 | 94 | MODULE_PARM_DESC(fn_play, "Playback PCM device file name"); |
---|
58 | 95 | |
---|
59 | 96 | static char *fn_cap = FILE_PCM_CAPTURE; |
---|
60 | | -module_param(fn_cap, charp, S_IRUGO); |
---|
| 97 | +module_param(fn_cap, charp, 0444); |
---|
61 | 98 | MODULE_PARM_DESC(fn_cap, "Capture PCM device file name"); |
---|
62 | 99 | |
---|
63 | 100 | static char *fn_cntl = FILE_CONTROL; |
---|
64 | | -module_param(fn_cntl, charp, S_IRUGO); |
---|
| 101 | +module_param(fn_cntl, charp, 0444); |
---|
65 | 102 | MODULE_PARM_DESC(fn_cntl, "Control device file name"); |
---|
66 | 103 | |
---|
67 | 104 | static int req_buf_size = UAC1_OUT_EP_MAX_PACKET_SIZE; |
---|
68 | | -module_param(req_buf_size, int, S_IRUGO); |
---|
| 105 | +module_param(req_buf_size, int, 0444); |
---|
69 | 106 | MODULE_PARM_DESC(req_buf_size, "ISO OUT endpoint request buffer size"); |
---|
70 | 107 | |
---|
71 | 108 | static int req_count = UAC1_REQ_COUNT; |
---|
72 | | -module_param(req_count, int, S_IRUGO); |
---|
| 109 | +module_param(req_count, int, 0444); |
---|
73 | 110 | MODULE_PARM_DESC(req_count, "ISO OUT endpoint request count"); |
---|
74 | 111 | |
---|
75 | 112 | static int audio_buf_size = UAC1_AUDIO_BUF_SIZE; |
---|
76 | | -module_param(audio_buf_size, int, S_IRUGO); |
---|
| 113 | +module_param(audio_buf_size, int, 0444); |
---|
77 | 114 | MODULE_PARM_DESC(audio_buf_size, "Audio buffer size"); |
---|
78 | 115 | #endif /* CONFIG_GADGET_UAC1_LEGACY */ |
---|
| 116 | +#endif |
---|
79 | 117 | |
---|
80 | 118 | /* string IDs are assigned dynamically */ |
---|
81 | 119 | |
---|
.. | .. |
---|
201 | 239 | |
---|
202 | 240 | static int audio_bind(struct usb_composite_dev *cdev) |
---|
203 | 241 | { |
---|
204 | | -#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) |
---|
205 | | - struct f_uac_opts *uac_opts; |
---|
| 242 | +#ifndef CONFIG_GADGET_UAC1 |
---|
| 243 | + struct f_uac2_opts *uac2_opts; |
---|
| 244 | + int i; |
---|
| 245 | +#else |
---|
| 246 | +#ifndef CONFIG_GADGET_UAC1_LEGACY |
---|
| 247 | + struct f_uac1_opts *uac1_opts; |
---|
| 248 | + int i; |
---|
206 | 249 | #else |
---|
207 | 250 | struct f_uac1_legacy_opts *uac1_opts; |
---|
| 251 | +#endif |
---|
208 | 252 | #endif |
---|
209 | 253 | int status; |
---|
210 | 254 | |
---|
.. | .. |
---|
212 | 256 | fi_uac2 = usb_get_function_instance("uac2"); |
---|
213 | 257 | if (IS_ERR(fi_uac2)) |
---|
214 | 258 | return PTR_ERR(fi_uac2); |
---|
215 | | - uac_opts = container_of(fi_uac2, struct f_uac_opts, func_inst); |
---|
216 | 259 | #else |
---|
217 | 260 | #ifndef CONFIG_GADGET_UAC1_LEGACY |
---|
218 | 261 | fi_uac1 = usb_get_function_instance("uac1"); |
---|
219 | | - uac_opts = container_of(fi_uac1, struct f_uac_opts, func_inst); |
---|
220 | 262 | #else |
---|
221 | 263 | fi_uac1 = usb_get_function_instance("uac1_legacy"); |
---|
222 | 264 | #endif |
---|
.. | .. |
---|
224 | 266 | return PTR_ERR(fi_uac1); |
---|
225 | 267 | #endif |
---|
226 | 268 | |
---|
227 | | -#if !defined(CONFIG_GADGET_UAC1) || !defined(CONFIG_GADGET_UAC1_LEGACY) |
---|
228 | | - memset(uac_opts, 0x0, sizeof(*uac_opts)); |
---|
229 | | - uac_opts->p_chmask = p_chmask; |
---|
230 | | - uac_opts->p_srate[0] = p_srate; |
---|
231 | | - uac_opts->p_srate_active = p_srate; |
---|
232 | | - uac_opts->p_ssize = p_ssize; |
---|
233 | | - uac_opts->c_chmask = c_chmask; |
---|
234 | | - uac_opts->c_srate[0] = c_srate; |
---|
235 | | - uac_opts->c_srate_active = c_srate; |
---|
236 | | - uac_opts->c_ssize = c_ssize; |
---|
237 | | - uac_opts->req_number = UAC_DEF_REQ_NUM; |
---|
| 269 | +#ifndef CONFIG_GADGET_UAC1 |
---|
| 270 | + uac2_opts = container_of(fi_uac2, struct f_uac2_opts, func_inst); |
---|
| 271 | + uac2_opts->p_chmask = p_chmask; |
---|
| 272 | + |
---|
| 273 | + for (i = 0; i < p_srates_cnt; ++i) |
---|
| 274 | + uac2_opts->p_srates[i] = p_srates[i]; |
---|
| 275 | + |
---|
| 276 | + uac2_opts->p_ssize = p_ssize; |
---|
| 277 | + uac2_opts->c_chmask = c_chmask; |
---|
| 278 | + |
---|
| 279 | + for (i = 0; i < c_srates_cnt; ++i) |
---|
| 280 | + uac2_opts->c_srates[i] = c_srates[i]; |
---|
| 281 | + |
---|
| 282 | + uac2_opts->c_ssize = c_ssize; |
---|
| 283 | + uac2_opts->req_number = UAC2_DEF_REQ_NUM; |
---|
| 284 | +#else |
---|
| 285 | +#ifndef CONFIG_GADGET_UAC1_LEGACY |
---|
| 286 | + uac1_opts = container_of(fi_uac1, struct f_uac1_opts, func_inst); |
---|
| 287 | + uac1_opts->p_chmask = p_chmask; |
---|
| 288 | + |
---|
| 289 | + for (i = 0; i < p_srates_cnt; ++i) |
---|
| 290 | + uac1_opts->p_srates[i] = p_srates[i]; |
---|
| 291 | + |
---|
| 292 | + uac1_opts->p_ssize = p_ssize; |
---|
| 293 | + uac1_opts->c_chmask = c_chmask; |
---|
| 294 | + |
---|
| 295 | + for (i = 0; i < c_srates_cnt; ++i) |
---|
| 296 | + uac1_opts->c_srates[i] = c_srates[i]; |
---|
| 297 | + |
---|
| 298 | + uac1_opts->c_ssize = c_ssize; |
---|
| 299 | + uac1_opts->req_number = UAC1_DEF_REQ_NUM; |
---|
238 | 300 | #else /* CONFIG_GADGET_UAC1_LEGACY */ |
---|
239 | 301 | uac1_opts = container_of(fi_uac1, struct f_uac1_legacy_opts, func_inst); |
---|
240 | 302 | uac1_opts->fn_play = fn_play; |
---|
.. | .. |
---|
244 | 306 | uac1_opts->req_count = req_count; |
---|
245 | 307 | uac1_opts->audio_buf_size = audio_buf_size; |
---|
246 | 308 | #endif /* CONFIG_GADGET_UAC1_LEGACY */ |
---|
| 309 | +#endif |
---|
247 | 310 | |
---|
248 | 311 | status = usb_string_ids_tab(cdev, strings_dev); |
---|
249 | 312 | if (status < 0) |
---|