1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2018 Khamba Staring <k.staring@quickdecay.com>
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  */
28 
29 #ifndef PIN_PATCH_REALTEK_H
30 #define PIN_PATCH_REALTEK_H
31 
32 #include "hdac.h"
33 #include "pin_patch.h"
34 
35 /*
36  * Pin patches
37  */
38 static struct pin_patch_t pin_patches_lg_lw20[] = {
39 	{
40 		.nid = 26,
41 		.type = PIN_PATCH_TYPE_MASK,
42 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
43 					HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN }
44 	}, {
45 		.nid = 27,
46 		.type = PIN_PATCH_TYPE_MASK,
47 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
48 					HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT }
49 	}, { }
50 };
51 
52 static struct pin_patch_t pin_patches_clevo_d900t_asus_m5200[] = {
53 	{
54 		.nid = 24,
55 		.type = PIN_PATCH_TYPE_MASK,
56 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
57 					HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN }
58 	}, {
59 		.nid = 25,
60 		.type = PIN_PATCH_TYPE_MASK,
61 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
62 					HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN }
63 	}, {
64 		.nid = 26,
65 		.type = PIN_PATCH_TYPE_MASK,
66 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
67 					HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN }
68 	}, {
69 		.nid = 27,
70 		.type = PIN_PATCH_TYPE_MASK,
71 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
72 					HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN }
73 	}, {
74 		.nid = 28,
75 		.type = PIN_PATCH_TYPE_MASK,
76 		.patch.mask = {	HDA_CONFIG_DEFAULTCONF_DEVICE_MASK,
77 					HDA_CONFIG_DEFAULTCONF_DEVICE_CD }
78 	}, { }
79 };
80 
81 static struct pin_patch_t pin_patches_msi_ms034a[] = {
82 	{
83 		.nid = 25,
84 		.type = PIN_PATCH_TYPE_MASK,
85 		.patch.mask = {
86 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
87 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
88 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
89 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
90 	}, {
91 		.nid = 28,
92 		.type = PIN_PATCH_TYPE_MASK,
93 		.patch.mask = {
94 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
95 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
96 			HDA_CONFIG_DEFAULTCONF_DEVICE_CD |
97 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
98 	}, { }
99 };
100 
101 static struct pin_patch_t pin_patches_asus_w6f[] = {
102 	{
103 		.nid = 11,
104 		.type = PIN_PATCH_TYPE_MASK,
105 		.patch.mask = {
106 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
107 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
108 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
109 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
110 	}, {
111 		.nid = 12,
112 		.type = PIN_PATCH_TYPE_MASK,
113 		.patch.mask = {
114 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
115 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
116 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
117 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
118 	}, {
119 		.nid = 14,
120 		.type = PIN_PATCH_TYPE_MASK,
121 		.patch.mask = {
122 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
123 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
124 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
125 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
126 	}, {
127 		.nid = 15,
128 		.type = PIN_PATCH_TYPE_MASK,
129 		.patch.mask = {
130 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
131 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
132 			HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT |
133 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_JACK }
134 	}, {
135 		.nid = 16,
136 		.type = PIN_PATCH_TYPE_MASK,
137 		.patch.mask = {
138 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
139 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
140 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
141 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
142 	}, {
143 		.nid = 31,
144 		.type = PIN_PATCH_TYPE_MASK,
145 		.patch.mask = {
146 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
147 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
148 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
149 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
150 	}, {
151 		.nid = 32,
152 		.type = PIN_PATCH_TYPE_MASK,
153 		.patch.mask = {
154 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
155 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
156 			HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN |
157 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED }
158 	}, { }
159 };
160 
161 static struct pin_patch_t pin_patches_uniwill_9075[] = {
162 	{
163 		.nid = 15,
164 		.type = PIN_PATCH_TYPE_MASK,
165 		.patch.mask = {
166 			HDA_CONFIG_DEFAULTCONF_DEVICE_MASK |
167 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK,
168 			HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT |
169 			HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_JACK }
170 	}, { }
171 };
172 
173 static struct pin_patch_t pin_patches_dell_xps_jack[] = {
174 	PIN_PATCH_JACK_WO_DETECT(24),
175 	PIN_PATCH_HPMIC_WO_DETECT(26),
176 	{ }
177 };
178 
179 /*
180  * List of models and patches
181  */
182 static struct hdaa_model_pin_patch_t realtek_model_pin_patches[] = {
183 	{ /**** CODEC: HDA_CODEC_ALC255 ****/
184 		.id = HDA_CODEC_ALC255,
185 		.patches = (struct model_pin_patch_t[]){
186 			{
187 				.models = (struct pin_machine_model_t[]){
188 					PIN_SUBVENDOR(ASUS_X556UR_SUBVENDOR),
189 					PIN_SUBVENDOR(ASUS_X540LA_SUBVENDOR),
190 					PIN_SUBVENDOR(ASUS_Z550MA_SUBVENDOR),
191 					{ }
192 				},
193 				.pin_patches = (struct pin_patch_t[]){
194 					PIN_PATCH_JACK_WO_DETECT(25),
195 					{ }
196 				}
197 			}, {
198 				.models = (struct pin_machine_model_t[]){
199 					PIN_SUBVENDOR(DELL_9020M_SUBVENDOR),
200 					{ }
201 				},
202 				.pin_patches = (struct pin_patch_t[]){
203 					PIN_PATCH_JACK_WO_DETECT(25),
204 					PIN_PATCH_HPMIC_WO_DETECT(26),
205 					{ }
206 				}
207 			}, { }
208 		}
209 	}, { /**** CODEC: HDA_CODEC_ALC256 ****/
210 		.id = HDA_CODEC_ALC256,
211 		.patches = (struct model_pin_patch_t[]){
212 			{
213 				.models = (struct pin_machine_model_t[]){
214 					PIN_SUBVENDOR(DELL_9020M_SUBVENDOR),
215 					PIN_SUBVENDOR(DELL_7000_SUBVENDOR),
216 					{ }
217 				},
218 				.pin_patches = (struct pin_patch_t[]){
219 					PIN_PATCH_STRING(27, "seq=1 as=5 misc=1 ctype=Analog device=Speaker loc=Internal conn=Fixed"),
220 					{ }
221 				}
222 			}, {
223 				.models = (struct pin_machine_model_t[]){
224 					PIN_SUBVENDOR(ASUS_X540A_SUBVENDOR),
225 					PIN_SUBVENDOR(ASUS_X540SA_SUBVENDOR),
226 					PIN_SUBVENDOR(ASUS_X541SA_SUBVENDOR),
227 					PIN_SUBVENDOR(ASUS_X541UV_SUBVENDOR),
228 					PIN_SUBVENDOR(ASUS_Z550SA_SUBVENDOR),
229 					PIN_SUBVENDOR(ASUS_X705UD_SUBVENDOR),
230 					PIN_SUBVENDOR(ASUS_X555UB_SUBVENDOR),
231 					{ }
232 				},
233 				.pin_patches = (struct pin_patch_t[]){
234 					PIN_PATCH_MIC_INTERNAL(19),
235 					PIN_PATCH_STRING(25, "as=2 misc=1 color=Black ctype=1/8 device=Mic loc=Right"),
236 					{ }
237 				}
238 			}, { }
239 		}
240 	}, { /**** CODEC: HDA_CODEC_ALC260 ****/
241 		.id = HDA_CODEC_ALC260,
242 		.patches = (struct model_pin_patch_t[]){
243 			{
244 				.models = (struct pin_machine_model_t[]){
245 					PIN_SUBVENDOR(SONY_S5_SUBVENDOR),
246 					{ }
247 				},
248 				.pin_patches = (struct pin_patch_t[]){
249 					PIN_PATCH_STRING(16, "seq=15 device=Headphones"),
250 					{ }
251 				}
252 			}, {
253 				.models = (struct pin_machine_model_t[]){
254 					PIN_SUBVENDOR(HP_DC5750_SUBVENDOR),
255 					{ }
256 				},
257 				.pin_patches = (struct pin_patch_t[]){
258 					PIN_PATCH_STRING(17, "as=1 misc=1 ctype=ATAPI device=Speaker loc=Internal conn=Fixed"),
259 					{ }
260 				}
261 			}, {
262 				.models = (struct pin_machine_model_t[]){
263 					PIN_SUBVENDOR(SONY_VAIO_TX_SUBVENDOR),
264 					{ }
265 				},
266 				.pin_patches = (struct pin_patch_t[]){
267 					PIN_PATCH_STRING(15, "color=Green ctype=1/8 device=Headphones loc=Rear"),
268 					{ }
269 				}
270 			}, {
271 				.models = (struct pin_machine_model_t[]){
272 					PIN_SUBVENDOR(SONY_81BBID_SUBVENDOR),
273 					{ }
274 				},
275 				.pin_patches = (struct pin_patch_t[]){
276 					PIN_PATCH_STRING(15,  "as=2 color=Black ctype=1/8 device=Headphones loc=Rear"),
277 					PIN_PATCH_STRING(16, "seq=15 as=3 ctype=1/8"),
278 					PIN_PATCH_NOT_APPLICABLE(17),
279 					PIN_PATCH_STRING(18, "as=3 misc=9 color=Red ctype=1/8 device=Mic loc=Rear"),
280 					PIN_PATCH_NOT_APPLICABLE(19),
281 					PIN_PATCH_NOT_APPLICABLE(20),
282 					PIN_PATCH_NOT_APPLICABLE(21),
283 					PIN_PATCH_NOT_APPLICABLE(22),
284 					PIN_PATCH_NOT_APPLICABLE(23),
285 					PIN_PATCH_NOT_APPLICABLE(24),
286 					PIN_PATCH_NOT_APPLICABLE(25),
287 					{ }
288 				}
289 			}, { }
290 		}
291 	}, { /**** CODEC: HDA_CODEC_ALC262 ****/
292 		.id = HDA_CODEC_ALC262,
293 		.patches = (struct model_pin_patch_t[]){
294 			{
295 				.models = (struct pin_machine_model_t[]){
296 					PIN_SUBVENDOR(FS_H270_SUBVENDOR),
297 					{ }
298 				},
299 				.pin_patches = (struct pin_patch_t[]){
300 					PIN_PATCH_STRING(20, "as=1 misc=1 ctype=ATAPI device=Speaker loc=Onboard conn=Fixed"),
301 					PIN_PATCH_STRING(21, "seq=15 as=2 misc=4 color=Black ctype=1/8 device=Headphones loc=Front"),
302 					PIN_PATCH_STRING(22, "seq=15 as=1 misc=4 color=Black ctype=1/8 device=Headphones loc=Rear"),
303 					{ }
304 				}
305 			}, {
306 				.models = (struct pin_machine_model_t[]){
307 					PIN_SUBVENDOR(FL_LB_S7110_SUBVENDOR),
308 					{ }
309 				},
310 				.pin_patches = (struct pin_patch_t[]){
311 					PIN_PATCH_STRING(21, "as=1 misc=1 ctype=Analog device=Speaker loc=Internal conn=Fixed"),
312 					{ }
313 				}
314 			}, {
315 				.models = (struct pin_machine_model_t[]){
316 					PIN_SUBVENDOR(HP_Z200_SUBVENDOR),
317 					{ }
318 				},
319 				.pin_patches = (struct pin_patch_t[]){
320 					PIN_PATCH_STRING(22, "as=2 misc=1 ctype=ATAPI device=Speaker loc=Onboard conn=Fixed"),
321 					{ }
322 				}
323 			}, {
324 				.models = (struct pin_machine_model_t[]){
325 					PIN_SUBVENDOR(TYAN_N6650W_SUBVENDOR),
326 					{ }
327 				},
328 				.pin_patches = (struct pin_patch_t[]){
329 					PIN_PATCH_STRING(22, "as=15 misc=1 color=White ctype=ATAPI device=AUX loc=Onboard"),
330 					{ }
331 				}
332 			}, {
333 				.models = (struct pin_machine_model_t[]){
334 					PIN_SUBVENDOR(LENOVO_3000_SUBVENDOR),
335 					{ }
336 				},
337 				.pin_patches = (struct pin_patch_t[]){
338 					PIN_PATCH_STRING(22, "seq=1 as=2"),
339 					{ }
340 				}
341 			}, { }
342 		}
343 	}, { /**** CODEC: HDA_CODEC_ALC268 ****/
344 		.id = HDA_CODEC_ALC268,
345 		.patches = (struct model_pin_patch_t[]){
346 			{
347 				.models = (struct pin_machine_model_t[]){
348 					PIN_SUBVENDOR(ACER_T5320_SUBVENDOR),
349 					{ }
350 				},
351 				.pin_patches = (struct pin_patch_t[]){
352 					PIN_PATCH_STRING(20, "as=1 seq=15"),
353 					{ }
354 				}
355 			}, {
356 				.models = (struct pin_machine_model_t[]){
357 					PIN_SUBVENDOR(ACER_TM_6293_SUBVENDOR),
358 					{ }
359 				},
360 				.pin_patches = (struct pin_patch_t[]){
361 					PIN_PATCH_STRING(30, "as=8 misc=1 color=Black ctype=Combo device=SPDIF-out loc=Rear"),
362 					{ }
363 				}
364 			}, { }
365 		}
366 	}, { /**** CODEC: HDA_CODEC_ALC269 ****/
367 		.id = HDA_CODEC_ALC269,
368 		.patches = (struct model_pin_patch_t[]){
369 			{
370 				.models = (struct pin_machine_model_t[]){
371 					PIN_SUBVENDOR(LENOVO_X1CRBN_SUBVENDOR),
372 					{ }
373 				},
374 				.pin_patches = (struct pin_patch_t[]){
375 					PIN_PATCH_STRING(21, "as=1 seq=15"),
376 					{ }
377 				}
378 			}, {
379 				.models = (struct pin_machine_model_t[]){
380 					PIN_SUBVENDOR(LENOVO_T430_SUBVENDOR),
381 					PIN_SUBVENDOR(LENOVO_T430S_SUBVENDOR),
382 					PIN_SUBVENDOR(LENOVO_X230_SUBVENDOR),
383 					PIN_SUBVENDOR(LENOVO_X230T_SUBVENDOR),
384 					PIN_SUBVENDOR(LENOVO_T431S_SUBVENDOR),
385 					{ }
386 				},
387 				.pin_patches = (struct pin_patch_t[]){
388 					PIN_PATCH_DOCK_MIC_IN(25),
389 					PIN_PATCH_DOCK_HP(27),
390 					{ }
391 				}
392 			}, {
393 				.models = (struct pin_machine_model_t[]){
394 					PIN_SUBVENDOR(ASUS_UX31A_SUBVENDOR),
395 					{ }
396 				},
397 				.pin_patches = (struct pin_patch_t[]){
398 					PIN_PATCH_STRING(33, "as=1 seq=15"),
399 					{ }
400 				}
401 			}, {
402 				.models = (struct pin_machine_model_t[]){
403 					PIN_SUBVENDOR(ASUS_G73JW_SUBVENDOR),
404 					{ }
405 				},
406 				.pin_patches = (struct pin_patch_t[]){
407 					PIN_PATCH_SUBWOOFER(23),
408 					{ }
409 				}
410 			}, {
411 				.models = (struct pin_machine_model_t[]){
412 					PIN_SUBVENDOR(FL_1475ID_SUBVENDOR),
413 					{ }
414 				},
415 				.pin_patches = (struct pin_patch_t[]){
416 					PIN_PATCH_DOCK_LINE_OUT(26),
417 					PIN_PATCH_DOCK_MIC_IN(27),
418 					{ }
419 				}
420 			}, {
421 				.models = (struct pin_machine_model_t[]){
422 					PIN_SUBVENDOR(FL_LB_U904_SUBVENDOR),
423 					{ }
424 				},
425 				.pin_patches = (struct pin_patch_t[]){
426 					PIN_PATCH_HPMIC_WITH_DETECT(25),
427 					{ }
428 				}
429 			}, {
430 				.models = (struct pin_machine_model_t[]){
431 					PIN_SUBVENDOR(FL_LB_T731_SUBVENDOR),
432 					PIN_SUBVENDOR(FL_LB_E725_SUBVENDOR),
433 					{ }
434 				},
435 				.pin_patches = (struct pin_patch_t[]){
436 					PIN_PATCH_STRING(33, "seq=15 as=2 color=Black ctype=1/8 device=Headphones loc=Front"),
437 					{ }
438 				}
439 			}, {
440 				.models = (struct pin_machine_model_t[]){
441 					PIN_SUBVENDOR(DELL_05F4ID_SUBVENDOR),
442 					PIN_SUBVENDOR(DELL_05F5ID_SUBVENDOR),
443 					PIN_SUBVENDOR(DELL_05F6ID_SUBVENDOR),
444 					{ }
445 				},
446 				.pin_patches = (struct pin_patch_t[]){
447 					PIN_PATCH_JACK_WO_DETECT(25),
448 					PIN_PATCH_HPMIC_WO_DETECT(26),
449 					{ }
450 				}
451 			}, {
452 				.models = (struct pin_machine_model_t[]){
453 					PIN_SUBVENDOR(ACER_V5_571G_SUBVENDOR),
454 					PIN_SUBVENDOR(ACER_V5_122P_SUBVENDOR),
455 					{ }
456 				},
457 				.pin_patches = (struct pin_patch_t[]){
458 					PIN_PATCH_JACK_WO_DETECT(25),
459 					{ }
460 				}
461 			}, {
462 				.models = (struct pin_machine_model_t[]){
463 					PIN_SUBVENDOR(ASUS_X101CH_SUBVENDOR),
464 					{ }
465 				},
466 				.pin_patches = (struct pin_patch_t[]){
467 					PIN_PATCH_STRING(24, "seq=12 as=2 misc=8 color=Black ctype=1/8 device=Mic loc=Right"),
468 					{ }
469 				}
470 			}, {
471 				.models = (struct pin_machine_model_t[]){
472 					PIN_SUBVENDOR(ACER_AC700_SUBVENDOR),
473 					{ }
474 				},
475 				.pin_patches = (struct pin_patch_t[]){
476 					PIN_PATCH_STRING(18, "seq=15 as=2 misc=9 ctype=ATAPI device=Mic loc=Onboard conn=Fixed"),
477 					PIN_PATCH_STRING(20,  "as=1 misc=1 ctype=ATAPI device=Speaker loc=Onboard conn=Fixed"),
478 					PIN_PATCH_STRING(24, "as=1 misc=1 ctype=ATAPI device=Speaker loc=Onboard conn=Fixed"),
479 					PIN_PATCH_STRING(30, "seq=14 as=1 color=Black ctype=Digital device=SPDIF-out loc=Left"),
480 					PIN_PATCH_STRING(33, "seq=15 as=1 color=Black ctype=1/8 device=Headphones loc=Left"),
481 					{ }
482 				}
483 			}, {
484 				.models = (struct pin_machine_model_t[]){
485 					PIN_SUBVENDOR(HP_225AID_SUBVENDOR),
486 					{ }
487 				},
488 				.pin_patches = (struct pin_patch_t[]){
489 					PIN_PATCH_STRING(24, "seq=15 as=3 color=Black ctype=1/8 device=Line-in loc=Ext-Rear"),
490 					PIN_PATCH_STRING(27, "as=2 color=Black ctype=1/8 loc=Ext-Rear"),
491 					{ }
492 				}
493 			}, { }
494 		}
495 	}, { /**** CODEC: HDA_CODEC_ALC271 ****/
496 		.id = HDA_CODEC_ALC271,
497 		.patches = (struct model_pin_patch_t[]){
498 			{
499 				.models = (struct pin_machine_model_t[]){
500 					PIN_SUBVENDOR(ACER_AO725_SUBVENDOR),
501 					PIN_SUBVENDOR(ACER_AO756_SUBVENDOR),
502 					PIN_SUBVENDOR(ACER_E1_472_SUBVENDOR),
503 					PIN_SUBVENDOR(ACER_E1_572_SUBVENDOR),
504 					{ }
505 				},
506 				.pin_patches = (struct pin_patch_t[]){
507 					PIN_PATCH_STRING(20, "as=1 misc=1 ctype=ATAPI device=Speaker loc=Onboard conn=Fixed"),
508 					PIN_PATCH_STRING(25, "as=2 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
509 					PIN_PATCH_STRING(27, "seq=15 as=2 misc=1 ctype=Analog device=Mic loc=Onboard conn=Fixed"),
510 					PIN_PATCH_HP_OUT(33),
511 					{ }
512 				}
513 			}, { }
514 		}
515 	}, { /**** CODEC: HDA_CODEC_ALC280 ****/
516 		.id = HDA_CODEC_ALC280,
517 		.patches = (struct model_pin_patch_t[]){
518 			{
519 				.models = (struct pin_machine_model_t[]){
520 					PIN_SUBVENDOR(HP_2272ID_SUBVENDOR),
521 					PIN_SUBVENDOR(HP_2273ID_SUBVENDOR),
522 					{ }
523 				},
524 				.pin_patches = (struct pin_patch_t[]){
525 					PIN_PATCH_STRING(27, "as=2 color=Black ctype=1/8 loc=Ext-Rear"),
526 					PIN_PATCH_HPMIC_WITH_DETECT(26),
527 					PIN_PATCH_STRING(24, "seq=15 as=3 color=Black ctype=1/8 device=Line-in loc=Ext-Rear"),
528 					{ }
529 				}
530 			}, { }
531 		}
532 	}, { /**** CODEC: HDA_CODEC_ALC282 ****/
533 		.id = HDA_CODEC_ALC282,
534 		.patches = (struct model_pin_patch_t[]){
535 			{
536 				.models = (struct pin_machine_model_t[]){
537 					PIN_SUBVENDOR(ACER_V5_573G_SUBVENDOR),
538 					{ }
539 				},
540 				.pin_patches = (struct pin_patch_t[]){
541 					PIN_PATCH_STRING(18, "as=3 misc=1 ctype=Digital device=Mic loc=Internal conn=Fixed"),
542 					PIN_PATCH_STRING(20, "as=1 misc=1 ctype=Analog device=Speaker loc=Internal conn=Fixed"),
543 					PIN_PATCH_STRING(23, "seq=8 conn=None"),
544 					PIN_PATCH_NOT_APPLICABLE(24),
545 					PIN_PATCH_JACK_WO_DETECT(25),
546 					PIN_PATCH_NOT_APPLICABLE(26),
547 					PIN_PATCH_NOT_APPLICABLE(27),
548 					PIN_PATCH_STRING(29, "seq=13 as=2 misc=11 color=Pink ctype=DIN device=Other conn=None"),
549 					PIN_PATCH_NOT_APPLICABLE(30),
550 					PIN_PATCH_STRING(33, "seq=15 as=1 color=Black ctype=1/8 device=Headphones loc=Left"),
551 					{ }
552 				}
553 			}, { }
554 		}
555 	}, { /**** CODEC: HDA_CODEC_ALC285 ****/
556 		.id = HDA_CODEC_ALC285,
557 		.patches = (struct model_pin_patch_t[]){
558 			{
559 				.models = (struct pin_machine_model_t[]){
560 					PIN_SUBVENDOR(LENOVO_X120KH_SUBVENDOR),
561 					PIN_SUBVENDOR(LENOVO_X120QD_SUBVENDOR),
562 					{ }
563 				},
564 				.pin_patches = (struct pin_patch_t[]){
565 					PIN_PATCH_STRING(33, "seq=15 as=1 color=Black ctype=1/8 device=Headphones loc=Left"),
566 					{ }
567 				}
568 			}, { }
569 		}
570 	}, { /**** CODEC: HDA_CODEC_ALC286 ****/
571 		.id = HDA_CODEC_ALC286,
572 		.patches = (struct model_pin_patch_t[]){
573 			{
574 				.models = (struct pin_machine_model_t[]){
575 					PIN_SUBVENDOR(SONY_VAIO_P11_SUBVENDOR),
576 					PIN_SUBVENDOR(SONY_VAIO_P13_SUBVENDOR),
577 					{ }
578 				},
579 				.pin_patches = (struct pin_patch_t[]){
580 					PIN_PATCH_JACK_WO_DETECT(25),
581 					{ }
582 				}
583 			}, { }
584 		}
585 	}, { /**** CODEC: HDA_CODEC_ALC288 ****/
586 		.id = HDA_CODEC_ALC288,
587 		.patches = (struct model_pin_patch_t[]){
588 			{
589 				.models = (struct pin_machine_model_t[]){
590 					PIN_SUBVENDOR(DELL_E7240_SUBVENDOR),
591 					{ }
592 				},
593 				.pin_patches = pin_patches_dell_xps_jack
594 			}, { }
595 		}
596 	}, { /**** CODEC: HDA_CODEC_ALC290 ****/
597 		.id = HDA_CODEC_ALC290,
598 		.patches = (struct model_pin_patch_t[]){
599 			{
600 				.models = (struct pin_machine_model_t[]){
601 					PIN_SUBVENDOR(DELL_V5470_SUBVENDOR),
602 					PIN_SUBVENDOR(DELL_V5470_1_SUBVENDOR),
603 					PIN_SUBVENDOR(DELL_V5480_SUBVENDOR),
604 					{ }
605 				},
606 				.pin_patches = (struct pin_patch_t[]){
607 					PIN_PATCH_STRING(18, "as=4 misc=1 ctype=Digital device=Mic loc=Internal conn=Fixed"),
608 					PIN_PATCH_STRING(20, "as=1 misc=1 ctype=Analog device=Speaker loc=Internal conn=Fixed"),
609 					PIN_PATCH_STRING(21, "seq=15 as=1 color=Green ctype=1/8 device=Headphones loc=Front"),
610 					PIN_PATCH_STRING(23, "seq=2 as=1 misc=1 ctype=Analog device=Speaker loc=Internal conn=Fixed"),
611 					PIN_PATCH_JACK_WO_DETECT(26),
612 					{ }
613 				}
614 			}, { }
615 		}
616 	}, { /**** CODEC: HDA_CODEC_ALC292 ****/
617 		.id = HDA_CODEC_ALC292,
618 		.patches = (struct model_pin_patch_t[]){
619 			{
620 				.models = (struct pin_machine_model_t[]){
621 					PIN_SUBVENDOR(LENOVO_X120BS_SUBVENDOR),
622 					{ }
623 				},
624 				.pin_patches = (struct pin_patch_t[]){
625 					PIN_PATCH_STRING(21, "as=1 seq=15"),
626 					{ }
627 				}
628 			}, { }
629 		}
630 	}, { /**** CODEC: HDA_CODEC_ALC293 ****/
631 		.id = HDA_CODEC_ALC293,
632 		.patches = (struct model_pin_patch_t[]){
633 			{
634 				.models = (struct pin_machine_model_t[]){
635 					PIN_SUBVENDOR(DELL_064AID_SUBVENDOR),
636 					PIN_SUBVENDOR(DELL_064BID_SUBVENDOR),
637 					PIN_SUBVENDOR(DELL_06D9ID_SUBVENDOR),
638 					PIN_SUBVENDOR(DELL_06DAID_SUBVENDOR),
639 					PIN_SUBVENDOR(DELL_06DBID_SUBVENDOR),
640 					PIN_SUBVENDOR(DELL_06DDID_SUBVENDOR),
641 					PIN_SUBVENDOR(DELL_06DEID_SUBVENDOR),
642 					PIN_SUBVENDOR(DELL_06DFID_SUBVENDOR),
643 					PIN_SUBVENDOR(DELL_06E0ID_SUBVENDOR),
644 					PIN_SUBVENDOR(DELL_164AID_SUBVENDOR),
645 					PIN_SUBVENDOR(DELL_164BID_SUBVENDOR),
646 					{ }
647 				},
648 				.pin_patches = (struct pin_patch_t[]){
649 					PIN_PATCH_HPMIC_WO_DETECT(24),
650 					PIN_PATCH_JACK_WO_DETECT(26),
651 					{ }
652 				}
653 			}, { }
654 		}
655 	}, { /**** CODEC: HDA_CODEC_ALC298 ****/
656 		.id = HDA_CODEC_ALC298,
657 		.patches = (struct model_pin_patch_t[]){
658 			{
659 				.models = (struct pin_machine_model_t[]){
660 					PIN_SUBVENDOR(DELL_XPS9560_SUBVENDOR),
661 					{ }
662 				},
663 				.pin_patches = pin_patches_dell_xps_jack
664 			},
665 			{
666 				.models = (struct pin_machine_model_t[]){
667 					PIN_SUBVENDOR(LENOVO_ALL_SUBVENDOR),
668 					{ }
669 				},
670 				.pin_patches = (struct pin_patch_t[]){
671 					PIN_PATCH_DOCK_LINE_OUT(23),
672 					PIN_PATCH_HP_OUT(33),
673 					{ }
674 				},
675 			}, { }
676 		}
677 	}, { /**** CODEC: HDA_CODEC_ALC861 ****/
678 		.id = HDA_CODEC_ALC861,
679 		.patches = (struct model_pin_patch_t[]){
680 			{
681 				.models = (struct pin_machine_model_t[]){
682 					PIN_SUBVENDOR(ASUS_W6F_SUBVENDOR),
683 					{ }
684 				},
685 				.pin_patches = pin_patches_asus_w6f
686 			}, {
687 				.models = (struct pin_machine_model_t[]){
688 					PIN_SUBVENDOR(UNIWILL_9075_SUBVENDOR),
689 					{ }
690 				},
691 				.pin_patches = pin_patches_uniwill_9075
692 			}, { }
693 		}
694 	}, { /**** CODEC: HDA_CODEC_ALC880 ****/
695 		.id = HDA_CODEC_ALC880,
696 		.patches = (struct model_pin_patch_t[]){
697 			{ // old patch
698 				.models = (struct pin_machine_model_t[]){
699 					PIN_SUBVENDOR(LG_LW20_SUBVENDOR),
700 					{ }
701 				},
702 				.pin_patches = pin_patches_lg_lw20
703 			}, { // old patch
704 				.models = (struct pin_machine_model_t[]){
705 					PIN_SUBVENDOR(CLEVO_D900T_SUBVENDOR),
706 					PIN_SUBVENDOR(ASUS_M5200_SUBVENDOR),
707 					{ }
708 				},
709 				.pin_patches = pin_patches_clevo_d900t_asus_m5200
710 			}, {
711 				.models = (struct pin_machine_model_t[]){
712 					PIN_SUBVENDOR(LG_M1_SUBVENDOR),
713 					PIN_SUBVENDOR(LG_P1_SUBVENDOR),
714 					PIN_SUBVENDOR(LG_W1_SUBVENDOR),
715 					{ }
716 				},
717 				.pin_patches = (struct pin_patch_t[]){
718 					PIN_PATCH_NOT_APPLICABLE(22),
719 					PIN_PATCH_NOT_APPLICABLE(24),
720 					PIN_PATCH_NOT_APPLICABLE(26),
721 					{ }
722 				}
723 			}, {
724 				.models = (struct pin_machine_model_t[]){
725 					PIN_SUBVENDOR(COEUS_G610P_SUBVENDOR),
726 					PIN_SUBVENDOR(ARIMA_W810_SUBVENDOR),
727 					{ }
728 				},
729 				.pin_patches = (struct pin_patch_t[]){
730 					PIN_PATCH_NOT_APPLICABLE(23),
731 					{ }
732 				}
733 			}, {
734 				.models = (struct pin_machine_model_t[]){
735 					PIN_SUBVENDOR(FS_AMILO_M1437_SUBVENDOR),
736 					PIN_SUBVENDOR(FS_AMILO_M1451G_SUBVENDOR),
737 					PIN_SUBVENDOR(FS_AMILO_PI1556_SUBVENDOR),
738 					{ }
739 				},
740 				.pin_patches = (struct pin_patch_t[]){
741 					PIN_PATCH_HP_OUT(20),
742 					PIN_PATCH_SPEAKER(21),
743 					PIN_PATCH_BASS_SPEAKER(22),
744 					PIN_PATCH_NOT_APPLICABLE(23),
745 					PIN_PATCH_NOT_APPLICABLE(24),
746 					PIN_PATCH_MIC_IN(25),
747 					PIN_PATCH_NOT_APPLICABLE(26),
748 					PIN_PATCH_NOT_APPLICABLE(27),
749 					PIN_PATCH_NOT_APPLICABLE(28),
750 					PIN_PATCH_NOT_APPLICABLE(29),
751 					PIN_PATCH_NOT_APPLICABLE(30),
752 					{ }
753 				}
754 			}, {
755 				.models = (struct pin_machine_model_t[]){
756 					PIN_SUBVENDOR(UNIWILL_9054_SUBVENDOR),
757 					PIN_SUBVENDOR(FS_AMILO_XI1526_SUBVENDOR),
758 					{ }
759 				},
760 				.pin_patches = (struct pin_patch_t[]){
761 					PIN_PATCH_HP_OUT(20),
762 					PIN_PATCH_SPEAKER(21),
763 					PIN_PATCH_NOT_APPLICABLE(22),
764 					PIN_PATCH_NOT_APPLICABLE(23),
765 					PIN_PATCH_NOT_APPLICABLE(24),
766 					PIN_PATCH_MIC_IN(25),
767 					PIN_PATCH_NOT_APPLICABLE(26),
768 					PIN_PATCH_NOT_APPLICABLE(27),
769 					PIN_PATCH_NOT_APPLICABLE(28),
770 					PIN_PATCH_NOT_APPLICABLE(29),
771 					PIN_PATCH_SPDIF_OUT(30),
772 					{ }
773 				}
774 			}, {
775 				.models = (struct pin_machine_model_t[]){
776 					PIN_SUBVENDOR(LG_LW25_SUBVENDOR),
777 					{ }
778 				},
779 				.pin_patches = (struct pin_patch_t[]){
780 					PIN_PATCH_STRING(26, "seq=15 as=4 misc=4 color=Blue ctype=1/8 device=Line-in loc=Rear"),
781 					PIN_PATCH_STRING(27, "seq=15 as=3 color=Green ctype=1/8 device=Headphones loc=Left"),
782 					{ }
783 				}
784 			}, {
785 				.models = (struct pin_machine_model_t[]){
786 					PIN_SUBVENDOR(UNIWILL_9070_SUBVENDOR),
787 					{ }
788 				},
789 				.pin_patches = (struct pin_patch_t[]){
790 					PIN_PATCH_HP(20),
791 					PIN_PATCH_SPEAKER(21),
792 					PIN_PATCH_BASS_SPEAKER(22),
793 					{ }
794 				}
795 			}, {
796 				.models = (struct pin_machine_model_t[]){
797 					PIN_SUBVENDOR(UNIWILL_9050_SUBVENDOR),
798 					{ }
799 				},
800 				.pin_patches = (struct pin_patch_t[]){
801 					PIN_PATCH_NOT_APPLICABLE(23),
802 					PIN_PATCH_NOT_APPLICABLE(25),
803 					PIN_PATCH_NOT_APPLICABLE(27),
804 					PIN_PATCH_NOT_APPLICABLE(31),
805 					{ }
806 				}
807 			}, {
808 				.models = (struct pin_machine_model_t[]){
809 					PIN_SUBVENDOR(ASUS_Z71V_SUBVENDOR),
810 					{ }
811 				},
812 				.pin_patches = (struct pin_patch_t[]){
813 					PIN_PATCH_SPEAKER(20),
814 					PIN_PATCH_HP(21),
815 					PIN_PATCH_NOT_APPLICABLE(22),
816 					PIN_PATCH_NOT_APPLICABLE(23),
817 					PIN_PATCH_MIC_IN(24),
818 					PIN_PATCH_NOT_APPLICABLE(25),
819 					PIN_PATCH_LINE_IN(26),
820 					{ }
821 				}
822 			}, {
823 				.models = (struct pin_machine_model_t[]){
824 					PIN_SUBVENDOR(ASUS_W5A_SUBVENDOR),
825 					{ }
826 				},
827 				.pin_patches = (struct pin_patch_t[]){
828 					PIN_PATCH_HP(20),
829 					PIN_PATCH_NOT_APPLICABLE(21),
830 					PIN_PATCH_NOT_APPLICABLE(22),
831 					PIN_PATCH_NOT_APPLICABLE(23),
832 					PIN_PATCH_MIC_INTERNAL(24),
833 					PIN_PATCH_NOT_APPLICABLE(25),
834 					PIN_PATCH_NOT_APPLICABLE(26),
835 					PIN_PATCH_NOT_APPLICABLE(27),
836 					PIN_PATCH_NOT_APPLICABLE(28),
837 					PIN_PATCH_NOT_APPLICABLE(29),
838 					PIN_PATCH_STRING(30, "seq=14 as=1 misc=1 color=Black ctype=ATAPI device=SPDIF-out loc=Lid-In conn=Fixed"),
839 					{ }
840 				}
841 			}, {
842 				.models = (struct pin_machine_model_t[]){
843 					PIN_SUBVENDOR(ACER_E310ID_SUBVENDOR),
844 					PIN_SUBVENDOR(SONY_81A0ID_SUBVENDOR),
845 					PIN_SUBVENDOR(SONY_81D6ID_SUBVENDOR),
846 					{ }
847 				},
848 				.pin_patches = (struct pin_patch_t[]){
849 					PIN_PATCH_LINE_OUT(20),
850 					PIN_PATCH_NOT_APPLICABLE(21),
851 					PIN_PATCH_NOT_APPLICABLE(22),
852 					PIN_PATCH_NOT_APPLICABLE(23),
853 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
854 					PIN_PATCH_HP(25),
855 					PIN_PATCH_LINE_IN(26),
856 					PIN_PATCH_MIC_FRONT(27),
857 					PIN_PATCH_NOT_APPLICABLE(28),
858 					PIN_PATCH_NOT_APPLICABLE(29),
859 					PIN_PATCH_NOT_APPLICABLE(30),
860 					PIN_PATCH_NOT_APPLICABLE(31),
861 					{ }
862 				}
863 			}, {
864 				.models = (struct pin_machine_model_t[]){
865 					PIN_SUBVENDOR(ACER_0070ID_SUBVENDOR),
866 					PIN_SUBVENDOR(ACER_E309ID_SUBVENDOR),
867 					PIN_SUBVENDOR(INTEL_D402ID_SUBVENDOR),
868 					PIN_SUBVENDOR(INTEL_E305ID_SUBVENDOR),
869 					PIN_SUBVENDOR(INTEL_E308ID_SUBVENDOR),
870 					{ }
871 				},
872 				.pin_patches = (struct pin_patch_t[]){
873 					PIN_PATCH_LINE_OUT(20),
874 					PIN_PATCH_NOT_APPLICABLE(21),
875 					PIN_PATCH_NOT_APPLICABLE(22),
876 					PIN_PATCH_NOT_APPLICABLE(23),
877 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
878 					PIN_PATCH_HP(25),
879 					PIN_PATCH_LINE_IN(26),
880 					PIN_PATCH_MIC_FRONT(27),
881 					PIN_PATCH_NOT_APPLICABLE(28),
882 					PIN_PATCH_NOT_APPLICABLE(29),
883 					PIN_PATCH_STRING(30, "seq=14 as=1 misc=1 color=Black ctype=RCA device=SPDIF-out loc=Rear"),
884 					PIN_PATCH_NOT_APPLICABLE(31),
885 					{ }
886 				}
887 			}, {
888 				.models = (struct pin_machine_model_t[]){
889 					PIN_SUBVENDOR(GATEWAY_3032ID_SUBVENDOR),
890 					PIN_SUBVENDOR(GATEWAY_3033ID_SUBVENDOR),
891 					PIN_SUBVENDOR(GATEWAY_4039ID_SUBVENDOR),
892 					{ }
893 				},
894 				.pin_patches = (struct pin_patch_t[]){
895 					PIN_PATCH_LINE_OUT(20),
896 					PIN_PATCH_NOT_APPLICABLE(21),
897 					PIN_PATCH_CLFE(22),
898 					PIN_PATCH_SURROUND(23),
899 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
900 					PIN_PATCH_HP(25),
901 					PIN_PATCH_LINE_IN(26),
902 					PIN_PATCH_MIC_FRONT(27),
903 					PIN_PATCH_NOT_APPLICABLE(28),
904 					PIN_PATCH_NOT_APPLICABLE(29),
905 					PIN_PATCH_NOT_APPLICABLE(30),
906 					PIN_PATCH_NOT_APPLICABLE(31),
907 					{ }
908 				}
909 			}, {
910 				.models = (struct pin_machine_model_t[]){
911 					PIN_SUBVENDOR(COEUS_A880ID_SUBVENDOR),
912 					PIN_SUBVENDOR(BIOSTAR_8202ID_SUBVENDOR),
913 					PIN_SUBVENDOR(EPOX_400DID_SUBVENDOR),
914 					PIN_SUBVENDOR(EPOX_EP5LDA_SUBVENDOR),
915 					PIN_SUBVENDOR(INTEL_A100ID_SUBVENDOR),
916 					PIN_SUBVENDOR(INTEL_D400ID_SUBVENDOR),
917 					PIN_SUBVENDOR(INTEL_D401ID_SUBVENDOR),
918 					PIN_SUBVENDOR(INTEL_E224ID_SUBVENDOR),
919 					PIN_SUBVENDOR(INTEL_E400ID_SUBVENDOR),
920 					PIN_SUBVENDOR(INTEL_E401ID_SUBVENDOR),
921 					PIN_SUBVENDOR(INTEL_E402ID_SUBVENDOR),
922 					PIN_SUBVENDOR(AOPEN_I915GMMHFS_SUBVENDOR),
923 					{ }
924 				},
925 				.pin_patches = (struct pin_patch_t[]){
926 					PIN_PATCH_LINE_OUT(20),
927 					PIN_PATCH_NOT_APPLICABLE(21),
928 					PIN_PATCH_CLFE(22),
929 					PIN_PATCH_SURROUND(23),
930 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
931 					PIN_PATCH_HP(25),
932 					PIN_PATCH_LINE_IN(26),
933 					PIN_PATCH_MIC_FRONT(27),
934 					PIN_PATCH_NOT_APPLICABLE(28),
935 					PIN_PATCH_NOT_APPLICABLE(29),
936 					PIN_PATCH_STRING(30, "seq=14 as=1 misc=1 color=Black ctype=RCA device=SPDIF-out loc=Rear"),
937 					PIN_PATCH_NOT_APPLICABLE(31),
938 					{ }
939 				}
940 			}, {
941 				.models = (struct pin_machine_model_t[]){
942 					PIN_SUBVENDOR(ACER_APFV_SUBVENDOR),
943 					{ }
944 				},
945 				.pin_patches = (struct pin_patch_t[]){
946 					PIN_PATCH_LINE_OUT(20),
947 					PIN_PATCH_SURROUND(21),
948 					PIN_PATCH_CLFE(22),
949 					PIN_PATCH_STRING(23, "seq=4 as=1 misc=4 color=Grey ctype=1/8 loc=Rear"),
950 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
951 					PIN_PATCH_MIC_FRONT(25),
952 					PIN_PATCH_LINE_IN(26),
953 					PIN_PATCH_HP(27),
954 					PIN_PATCH_NOT_APPLICABLE(28),
955 					PIN_PATCH_NOT_APPLICABLE(29),
956 					PIN_PATCH_NOT_APPLICABLE(30),
957 					PIN_PATCH_NOT_APPLICABLE(31),
958 					{ }
959 				}
960 			}, {
961 				.models = (struct pin_machine_model_t[]){
962 					PIN_SUBVENDOR(ACER_0077ID_SUBVENDOR),
963 					PIN_SUBVENDOR(ACER_0078ID_SUBVENDOR),
964 					PIN_SUBVENDOR(ACER_0087ID_SUBVENDOR),
965 					PIN_SUBVENDOR(SHUTTLE_ST20G5_SUBVENDOR),
966 					PIN_SUBVENDOR(GB_K8_SUBVENDOR),
967 					PIN_SUBVENDOR(MSI_1150ID_SUBVENDOR),
968 					PIN_SUBVENDOR(FIC_P4M_SUBVENDOR),
969 					{ }
970 				},
971 				.pin_patches = (struct pin_patch_t[]){
972 					PIN_PATCH_LINE_OUT(20),
973 					PIN_PATCH_SURROUND(21),
974 					PIN_PATCH_CLFE(22),
975 					PIN_PATCH_STRING(23, "seq=4 as=1 misc=4 color=Grey ctype=1/8 loc=Rear"),
976 					PIN_PATCH_STRING(24, "as=3 misc=12 color=Pink ctype=1/8 device=Mic loc=Rear"),
977 					PIN_PATCH_MIC_FRONT(25),
978 					PIN_PATCH_LINE_IN(26),
979 					PIN_PATCH_HP(27),
980 					PIN_PATCH_NOT_APPLICABLE(28),
981 					PIN_PATCH_NOT_APPLICABLE(29),
982 					PIN_PATCH_STRING(30, "seq=14 as=1 misc=1 color=Black ctype=RCA device=SPDIF-out loc=Rear"),
983 					PIN_PATCH_NOT_APPLICABLE(31),
984 					{ }
985 				}
986 			}, { }
987 		}
988 	}, { /**** CODEC: HDA_CODEC_ALC883 ****/
989 		.id = HDA_CODEC_ALC883,
990 		.patches = (struct model_pin_patch_t[]){
991 			{
992 				.models = (struct pin_machine_model_t[]){
993 					PIN_SUBVENDOR(MSI_MS034A_SUBVENDOR),
994 					{ }
995 				},
996 				.pin_patches = pin_patches_msi_ms034a
997 			}, { }
998 		}
999 	}, { /**** CODEC: HDA_CODEC_ALC892 ****/
1000 		.id = HDA_CODEC_ALC892,
1001 		.patches = (struct model_pin_patch_t[]){
1002 			{
1003 				.models = (struct pin_machine_model_t[]){
1004 					PIN_SUBVENDOR(INTEL_DH87RL_SUBVENDOR),
1005 					{ }
1006 				},
1007 				.pin_patches = (struct pin_patch_t[]){
1008 					PIN_PATCH_STRING(27, "as=1 seq=15"),
1009 					{ }
1010 				}
1011 			}, { }
1012 		}
1013 	}
1014 };
1015 
1016 #endif /* PIN_PATCH_REALTEK_H */
1017