Advertisement
Guest User

mixgen MCP55 High Definition Audio

a guest
Feb 11th, 2012
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.23 KB | None | 0 0
  1. $ sudo ./mixgen
  2. #define COPYING Copyright (C) 4Front Technologies 2007. All rights reserved.
  3. /* Codec index is 0 */
  4. /* Codec vendor 10ec:0888 */
  5. /* HD codec revision 1.0 (0.1) (0x00100001) */
  6. /* Subsystem ID 1458e601 */
  7. /* Default amplifier caps: in=00000000, out=00000000 */
  8. #include "oss_hdaudio_cfg.h"
  9. #include "hdaudio.h"
  10. #include "hdaudio_codec.h"
  11. #include "hdaudio_dedicated.h"
  12.  
  13. int
  14. hdaudio_subdevice1458e601_mixer_init (int dev, hdaudio_mixer_t * mixer, int cad, int top_group)
  15. {
  16. int ctl=0;
  17.  
  18. DDB(cmn_err(CE_CONT, "hdaudio_subdevice1458e601_mixer_init got called.\n"));
  19.  
  20. /* Handle PIN widgets */
  21. {
  22. int n, group, pin_group;
  23.  
  24. n=0;
  25.  
  26. HDA_GROUP(pin_group, top_group, "jack");
  27.  
  28. if (HDA_PIN_GROUP(0x14, group, pin_group, "green", n, "jack", 4)) /* Pin widget 0x14 */
  29. {
  30. /* Src 0xc=front */
  31. /* Src 0xd=rear */
  32. /* Src 0xe=center/LFE */
  33. /* Src 0xf=side */
  34. /* Src 0x26=pcm4 */
  35. if (HDA_PINSELECT(0x14, ctl, group, "mode", -1))
  36. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  37. HDA_OUTMUTE(0x14, group, "inmute", UNMUTE);
  38. HDA_INAMP(0x14, 0, group, "out", 90); /* From widget 0x0c */
  39. }
  40.  
  41. if (HDA_PIN_GROUP(0x15, group, pin_group, "black", n, "jack", 4)) /* Pin widget 0x15 */
  42. {
  43. /* Src 0xc=front */
  44. /* Src 0xd=rear */
  45. /* Src 0xe=center/LFE */
  46. /* Src 0xf=side */
  47. /* Src 0x26=pcm4 */
  48. if (HDA_PINSELECT(0x15, ctl, group, "mode", -1))
  49. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  50. HDA_OUTMUTE(0x15, group, "inmute", UNMUTE);
  51. HDA_INAMP(0x15, 0, group, "out", 90); /* From widget 0x0c */
  52. }
  53.  
  54. if (HDA_PIN_GROUP(0x16, group, pin_group, "orange", n, "jack", 4)) /* Pin widget 0x16 */
  55. {
  56. /* Src 0xc=front */
  57. /* Src 0xd=rear */
  58. /* Src 0xe=center/LFE */
  59. /* Src 0xf=side */
  60. /* Src 0x26=pcm4 */
  61. if (HDA_PINSELECT(0x16, ctl, group, "mode", -1))
  62. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  63. HDA_OUTMUTE(0x16, group, "inmute", UNMUTE);
  64. HDA_INAMP(0x16, 0, group, "out", 90); /* From widget 0x0c */
  65. }
  66.  
  67. if (HDA_PIN_GROUP(0x17, group, pin_group, "gray", n, "jack", 4)) /* Pin widget 0x17 */
  68. {
  69. /* Src 0xc=front */
  70. /* Src 0xd=rear */
  71. /* Src 0xe=center/LFE */
  72. /* Src 0xf=side */
  73. /* Src 0x26=pcm4 */
  74. if (HDA_PINSELECT(0x17, ctl, group, "mode", -1))
  75. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  76. HDA_OUTMUTE(0x17, group, "inmute", UNMUTE);
  77. HDA_INAMP(0x17, 0, group, "out", 90); /* From widget 0x0c */
  78. }
  79.  
  80. if (HDA_PIN_GROUP(0x18, group, pin_group, "pink", n, "jack", 4)) /* Pin widget 0x18 */
  81. {
  82. /* Src 0xc=front */
  83. /* Src 0xd=rear */
  84. /* Src 0xe=center/LFE */
  85. /* Src 0xf=side */
  86. /* Src 0x26=pcm4 */
  87. if (HDA_PINSELECT(0x18, ctl, group, "mode", -1))
  88. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  89. HDA_OUTMUTE(0x18, group, "inmute", UNMUTE);
  90. HDA_INAMP(0x18, 0, group, "out", 90); /* From widget 0x0c */
  91. }
  92.  
  93. if (HDA_PIN_GROUP(0x19, group, pin_group, "fp-pink", n, "jack", 4)) /* Pin widget 0x19 */
  94. {
  95. /* Src 0xc=front */
  96. /* Src 0xd=rear */
  97. /* Src 0xe=center/LFE */
  98. /* Src 0xf=side */
  99. /* Src 0x26=pcm4 */
  100. if (HDA_PINSELECT(0x19, ctl, group, "mode", -1))
  101. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  102. HDA_OUTMUTE(0x19, group, "inmute", UNMUTE);
  103. HDA_INAMP(0x19, 0, group, "out", 90); /* From widget 0x0c */
  104. }
  105.  
  106. if (HDA_PIN_GROUP(0x1a, group, pin_group, "blue", n, "jack", 4)) /* Pin widget 0x1a */
  107. {
  108. /* Src 0xc=front */
  109. /* Src 0xd=rear */
  110. /* Src 0xe=center/LFE */
  111. /* Src 0xf=side */
  112. /* Src 0x26=pcm4 */
  113. if (HDA_PINSELECT(0x1a, ctl, group, "mode", -1))
  114. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  115. HDA_OUTMUTE(0x1a, group, "inmute", UNMUTE);
  116. HDA_INAMP(0x1a, 0, group, "out", 90); /* From widget 0x0c */
  117. }
  118.  
  119. if (HDA_PIN_GROUP(0x1b, group, pin_group, "fp-green", n, "jack", 4)) /* Pin widget 0x1b */
  120. {
  121. /* Src 0xc=front */
  122. /* Src 0xd=rear */
  123. /* Src 0xe=center/LFE */
  124. /* Src 0xf=side */
  125. /* Src 0x26=pcm4 */
  126. if (HDA_PINSELECT(0x1b, ctl, group, "mode", -1))
  127. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  128. HDA_OUTMUTE(0x1b, group, "inmute", UNMUTE);
  129. HDA_INAMP(0x1b, 0, group, "out", 90); /* From widget 0x0c */
  130. }
  131.  
  132. if (HDA_PIN_GROUP(0x1c, group, pin_group, "int-cd", n, "jack", 4)) /* Pin widget 0x1c */
  133. {
  134. if (HDA_PINSELECT(0x1c, ctl, group, "mode", -1))
  135. HDA_CHOICES(ctl, "input");
  136. }
  137.  
  138. if (HDA_PIN_GROUP(0x1d, group, pin_group, "black", n, "jack", 4)) /* Pin widget 0x1d */
  139. {
  140. if (HDA_PINSELECT(0x1d, ctl, group, "mode", -1))
  141. HDA_CHOICES(ctl, "input");
  142. }
  143. }
  144. /* Handle ADC widgets */
  145. {
  146. int n, group, rec_group;
  147.  
  148. n=0;
  149.  
  150. HDA_GROUP(rec_group, top_group, "record");
  151.  
  152. if (HDA_ADC_GROUP(0x08, group, rec_group, "mix", n, "record", 4)) /* ADC widget 0x08 */
  153. {
  154. /* Src 0x23=mix */
  155. HDA_INAMP(0x08, 0, group, "mix", 90); /* From widget 0x23 */
  156.  
  157. /* Widget 0x23 (mix) */
  158. /* Src 0x18=pink */
  159. /* Src 0x19=fp-pink */
  160. /* Src 0x1a=blue */
  161. /* Src 0x1b=fp-green */
  162. /* Src 0x1c=int-cd */
  163. /* Src 0x1d=black */
  164. /* Src 0x14=green */
  165. /* Src 0x15=black */
  166. /* Src 0x16=orange */
  167. /* Src 0x17=gray */
  168. /* Src 0xb=input-mix */
  169. {
  170. int amp_group;
  171.  
  172. HDA_GROUP(amp_group, group, "mute");
  173. HDA_INMUTE(0x23, 0, amp_group, "pink", UNMUTE); /* From widget 0x18 */
  174. HDA_INMUTE(0x23, 1, amp_group, "fp-pink", UNMUTE); /* From widget 0x19 */
  175. HDA_INMUTE(0x23, 2, amp_group, "blue", UNMUTE); /* From widget 0x1a */
  176. HDA_INMUTE(0x23, 3, amp_group, "fp-green", UNMUTE); /* From widget 0x1b */
  177. HDA_INMUTE(0x23, 4, amp_group, "int-cd", UNMUTE); /* From widget 0x1c */
  178. HDA_INMUTE(0x23, 5, amp_group, "black", UNMUTE); /* From widget 0x1d */
  179. HDA_INMUTE(0x23, 6, amp_group, "green", UNMUTE); /* From widget 0x14 */
  180. HDA_INMUTE(0x23, 7, amp_group, "black", UNMUTE); /* From widget 0x15 */
  181. HDA_INMUTE(0x23, 8, amp_group, "orange", UNMUTE); /* From widget 0x16 */
  182. HDA_INMUTE(0x23, 9, amp_group, "gray", UNMUTE); /* From widget 0x17 */
  183. HDA_INMUTE(0x23, 10, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  184. }
  185. }
  186.  
  187. if (HDA_ADC_GROUP(0x09, group, rec_group, "mix", n, "record", 4)) /* ADC widget 0x09 */
  188. {
  189. /* Src 0x22=mix */
  190. HDA_INAMP(0x09, 0, group, "mix", 90); /* From widget 0x22 */
  191.  
  192. /* Widget 0x22 (mix) */
  193. /* Src 0x18=pink */
  194. /* Src 0x19=fp-pink */
  195. /* Src 0x1a=blue */
  196. /* Src 0x1b=fp-green */
  197. /* Src 0x1c=int-cd */
  198. /* Src 0x1d=black */
  199. /* Src 0x14=green */
  200. /* Src 0x15=black */
  201. /* Src 0x16=orange */
  202. /* Src 0x17=gray */
  203. /* Src 0xb=input-mix */
  204. {
  205. int amp_group;
  206.  
  207. HDA_GROUP(amp_group, group, "mute");
  208. HDA_INMUTE(0x22, 0, amp_group, "pink", UNMUTE); /* From widget 0x18 */
  209. HDA_INMUTE(0x22, 1, amp_group, "fp-pink", UNMUTE); /* From widget 0x19 */
  210. HDA_INMUTE(0x22, 2, amp_group, "blue", UNMUTE); /* From widget 0x1a */
  211. HDA_INMUTE(0x22, 3, amp_group, "fp-green", UNMUTE); /* From widget 0x1b */
  212. HDA_INMUTE(0x22, 4, amp_group, "int-cd", UNMUTE); /* From widget 0x1c */
  213. HDA_INMUTE(0x22, 5, amp_group, "black", UNMUTE); /* From widget 0x1d */
  214. HDA_INMUTE(0x22, 6, amp_group, "green", UNMUTE); /* From widget 0x14 */
  215. HDA_INMUTE(0x22, 7, amp_group, "black", UNMUTE); /* From widget 0x15 */
  216. HDA_INMUTE(0x22, 8, amp_group, "orange", UNMUTE); /* From widget 0x16 */
  217. HDA_INMUTE(0x22, 9, amp_group, "gray", UNMUTE); /* From widget 0x17 */
  218. HDA_INMUTE(0x22, 10, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  219. }
  220. }
  221.  
  222. if (HDA_ADC_GROUP(0x0a, group, rec_group, "spdifin", n, "record", 4)) /* ADC widget 0x0a */
  223. {
  224. /* Src 0x1f=spdifin */
  225. }
  226. }
  227. /* Handle misc widgets */
  228. {
  229. int n, group, misc_group;
  230.  
  231. n=0;
  232.  
  233. HDA_GROUP(misc_group, top_group, "misc");
  234.  
  235. if (HDA_MISC_GROUP(0x0b, group, misc_group, "input-mix", n, "misc", 8))/* Misc widget 0x0b */
  236. {
  237. /* Src 0x18=mic */
  238. /* Src 0x19=fp-mic */
  239. /* Src 0x1a=linein */
  240. /* Src 0x1b=fp-headphone */
  241. /* Src 0x1c=int-cd */
  242. /* Src 0x1d=speaker */
  243. /* Src 0x14=green */
  244. /* Src 0x15=black */
  245. /* Src 0x16=orange */
  246. /* Src 0x17=gray */
  247. HDA_INAMP(0x0b, 0, group, "pink", 90); /* From widget 0x18 */
  248. HDA_INAMP(0x0b, 1, group, "fp-pink", 90); /* From widget 0x19 */
  249. HDA_INAMP(0x0b, 2, group, "blue", 90); /* From widget 0x1a */
  250. HDA_INAMP(0x0b, 3, group, "fp-green", 90); /* From widget 0x1b */
  251. HDA_INAMP(0x0b, 4, group, "int-cd", 90); /* From widget 0x1c */
  252. HDA_INAMP(0x0b, 5, group, "black", 90); /* From widget 0x1d */
  253. HDA_INAMP(0x0b, 6, group, "green", 90); /* From widget 0x14 */
  254. HDA_INAMP(0x0b, 7, group, "black", 90); /* From widget 0x15 */
  255. HDA_INAMP(0x0b, 8, group, "orange", 90); /* From widget 0x16 */
  256. HDA_INAMP(0x0b, 9, group, "gray", 90); /* From widget 0x17 */
  257. }
  258.  
  259. if (HDA_MISC_GROUP(0x0c, group, misc_group, "front", n, "misc", 8)) /* Misc widget 0x0c */
  260. {
  261. /* Src 0x2=front */
  262. /* Src 0xb=input-mix */
  263. HDA_OUTAMP(0x0c, group, "-", 90);
  264. {
  265. int amp_group;
  266.  
  267. HDA_GROUP(amp_group, group, "mute");
  268. HDA_INMUTE(0x0c, 0, amp_group, "front", UNMUTE); /* From widget 0x02 */
  269. HDA_INMUTE(0x0c, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  270. }
  271. }
  272.  
  273. if (HDA_MISC_GROUP(0x0d, group, misc_group, "rear", n, "misc", 8)) /* Misc widget 0x0d */
  274. {
  275. /* Src 0x3=rear */
  276. /* Src 0xb=input-mix */
  277. HDA_OUTAMP(0x0d, group, "-", 90);
  278. {
  279. int amp_group;
  280.  
  281. HDA_GROUP(amp_group, group, "mute");
  282. HDA_INMUTE(0x0d, 0, amp_group, "rear", UNMUTE); /* From widget 0x03 */
  283. HDA_INMUTE(0x0d, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  284. }
  285. }
  286.  
  287. if (HDA_MISC_GROUP(0x0e, group, misc_group, "center/LFE", n, "misc", 8))/* Misc widget 0x0e */
  288. {
  289. /* Src 0x4=center/LFE */
  290. /* Src 0xb=input-mix */
  291. HDA_OUTAMP(0x0e, group, "-", 90);
  292. {
  293. int amp_group;
  294.  
  295. HDA_GROUP(amp_group, group, "mute");
  296. HDA_INMUTE(0x0e, 0, amp_group, "center/LFE", UNMUTE); /* From widget 0x04 */
  297. HDA_INMUTE(0x0e, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  298. }
  299. }
  300.  
  301. if (HDA_MISC_GROUP(0x0f, group, misc_group, "side", n, "misc", 8)) /* Misc widget 0x0f */
  302. {
  303. /* Src 0x5=side */
  304. /* Src 0xb=input-mix */
  305. HDA_OUTAMP(0x0f, group, "-", 90);
  306. {
  307. int amp_group;
  308.  
  309. HDA_GROUP(amp_group, group, "mute");
  310. HDA_INMUTE(0x0f, 0, amp_group, "side", UNMUTE); /* From widget 0x05 */
  311. HDA_INMUTE(0x0f, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  312. }
  313. }
  314.  
  315. if (HDA_MISC_GROUP(0x26, group, misc_group, "pcm4", n, "misc", 8)) /* Misc widget 0x26 */
  316. {
  317. /* Src 0x25=pcm4 */
  318. /* Src 0xb=input-mix */
  319. HDA_OUTAMP(0x26, group, "-", 90);
  320. {
  321. int amp_group;
  322.  
  323. HDA_GROUP(amp_group, group, "mute");
  324. HDA_INMUTE(0x26, 0, amp_group, "pcm4", UNMUTE); /* From widget 0x25 */
  325. HDA_INMUTE(0x26, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  326. }
  327. }
  328. }
  329. return 0;
  330. }
  331. $ sudo ./mixgen
  332. #define COPYING Copyright (C) 4Front Technologies 2007. All rights reserved.
  333. /* Codec index is 0 */
  334. /* Codec vendor 10ec:0888 */
  335. /* HD codec revision 1.0 (0.1) (0x00100001) */
  336. /* Subsystem ID 1458e601 */
  337. /* Default amplifier caps: in=00000000, out=00000000 */
  338. #include "oss_hdaudio_cfg.h"
  339. #include "hdaudio.h"
  340. #include "hdaudio_codec.h"
  341. #include "hdaudio_dedicated.h"
  342.  
  343. int
  344. hdaudio_subdevice1458e601_mixer_init (int dev, hdaudio_mixer_t * mixer, int cad, int top_group)
  345. {
  346. int ctl=0;
  347.  
  348. DDB(cmn_err(CE_CONT, "hdaudio_subdevice1458e601_mixer_init got called.\n"));
  349.  
  350. /* Handle PIN widgets */
  351. {
  352. int n, group, pin_group;
  353.  
  354. n=0;
  355.  
  356. HDA_GROUP(pin_group, top_group, "jack");
  357.  
  358. if (HDA_PIN_GROUP(0x14, group, pin_group, "green", n, "jack", 4)) /* Pin widget 0x14 */
  359. {
  360. /* Src 0xc=front */
  361. /* Src 0xd=rear */
  362. /* Src 0xe=center/LFE */
  363. /* Src 0xf=side */
  364. /* Src 0x26=pcm4 */
  365. if (HDA_PINSELECT(0x14, ctl, group, "mode", -1))
  366. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  367. HDA_OUTMUTE(0x14, group, "inmute", UNMUTE);
  368. HDA_INAMP(0x14, 0, group, "out", 90); /* From widget 0x0c */
  369. }
  370.  
  371. if (HDA_PIN_GROUP(0x15, group, pin_group, "black", n, "jack", 4)) /* Pin widget 0x15 */
  372. {
  373. /* Src 0xc=front */
  374. /* Src 0xd=rear */
  375. /* Src 0xe=center/LFE */
  376. /* Src 0xf=side */
  377. /* Src 0x26=pcm4 */
  378. if (HDA_PINSELECT(0x15, ctl, group, "mode", -1))
  379. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  380. HDA_OUTMUTE(0x15, group, "inmute", UNMUTE);
  381. HDA_INAMP(0x15, 0, group, "out", 90); /* From widget 0x0c */
  382. }
  383.  
  384. if (HDA_PIN_GROUP(0x16, group, pin_group, "orange", n, "jack", 4)) /* Pin widget 0x16 */
  385. {
  386. /* Src 0xc=front */
  387. /* Src 0xd=rear */
  388. /* Src 0xe=center/LFE */
  389. /* Src 0xf=side */
  390. /* Src 0x26=pcm4 */
  391. if (HDA_PINSELECT(0x16, ctl, group, "mode", -1))
  392. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  393. HDA_OUTMUTE(0x16, group, "inmute", UNMUTE);
  394. HDA_INAMP(0x16, 0, group, "out", 90); /* From widget 0x0c */
  395. }
  396.  
  397. if (HDA_PIN_GROUP(0x17, group, pin_group, "gray", n, "jack", 4)) /* Pin widget 0x17 */
  398. {
  399. /* Src 0xc=front */
  400. /* Src 0xd=rear */
  401. /* Src 0xe=center/LFE */
  402. /* Src 0xf=side */
  403. /* Src 0x26=pcm4 */
  404. if (HDA_PINSELECT(0x17, ctl, group, "mode", -1))
  405. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  406. HDA_OUTMUTE(0x17, group, "inmute", UNMUTE);
  407. HDA_INAMP(0x17, 0, group, "out", 90); /* From widget 0x0c */
  408. }
  409.  
  410. if (HDA_PIN_GROUP(0x18, group, pin_group, "pink", n, "jack", 4)) /* Pin widget 0x18 */
  411. {
  412. /* Src 0xc=front */
  413. /* Src 0xd=rear */
  414. /* Src 0xe=center/LFE */
  415. /* Src 0xf=side */
  416. /* Src 0x26=pcm4 */
  417. if (HDA_PINSELECT(0x18, ctl, group, "mode", -1))
  418. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  419. HDA_OUTMUTE(0x18, group, "inmute", UNMUTE);
  420. HDA_INAMP(0x18, 0, group, "out", 90); /* From widget 0x0c */
  421. }
  422.  
  423. if (HDA_PIN_GROUP(0x19, group, pin_group, "fp-pink", n, "jack", 4)) /* Pin widget 0x19 */
  424. {
  425. /* Src 0xc=front */
  426. /* Src 0xd=rear */
  427. /* Src 0xe=center/LFE */
  428. /* Src 0xf=side */
  429. /* Src 0x26=pcm4 */
  430. if (HDA_PINSELECT(0x19, ctl, group, "mode", -1))
  431. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  432. HDA_OUTMUTE(0x19, group, "inmute", UNMUTE);
  433. HDA_INAMP(0x19, 0, group, "out", 90); /* From widget 0x0c */
  434. }
  435.  
  436. if (HDA_PIN_GROUP(0x1a, group, pin_group, "blue", n, "jack", 4)) /* Pin widget 0x1a */
  437. {
  438. /* Src 0xc=front */
  439. /* Src 0xd=rear */
  440. /* Src 0xe=center/LFE */
  441. /* Src 0xf=side */
  442. /* Src 0x26=pcm4 */
  443. if (HDA_PINSELECT(0x1a, ctl, group, "mode", -1))
  444. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  445. HDA_OUTMUTE(0x1a, group, "inmute", UNMUTE);
  446. HDA_INAMP(0x1a, 0, group, "out", 90); /* From widget 0x0c */
  447. }
  448.  
  449. if (HDA_PIN_GROUP(0x1b, group, pin_group, "fp-green", n, "jack", 4)) /* Pin widget 0x1b */
  450. {
  451. /* Src 0xc=front */
  452. /* Src 0xd=rear */
  453. /* Src 0xe=center/LFE */
  454. /* Src 0xf=side */
  455. /* Src 0x26=pcm4 */
  456. if (HDA_PINSELECT(0x1b, ctl, group, "mode", -1))
  457. HDA_CHOICES(ctl, "front-out rear-out center/LFE-out side-out pcm4-out input");
  458. HDA_OUTMUTE(0x1b, group, "inmute", UNMUTE);
  459. HDA_INAMP(0x1b, 0, group, "out", 90); /* From widget 0x0c */
  460. }
  461.  
  462. if (HDA_PIN_GROUP(0x1c, group, pin_group, "int-cd", n, "jack", 4)) /* Pin widget 0x1c */
  463. {
  464. if (HDA_PINSELECT(0x1c, ctl, group, "mode", -1))
  465. HDA_CHOICES(ctl, "input");
  466. }
  467.  
  468. if (HDA_PIN_GROUP(0x1d, group, pin_group, "black", n, "jack", 4)) /* Pin widget 0x1d */
  469. {
  470. if (HDA_PINSELECT(0x1d, ctl, group, "mode", -1))
  471. HDA_CHOICES(ctl, "input");
  472. }
  473. }
  474. /* Handle ADC widgets */
  475. {
  476. int n, group, rec_group;
  477.  
  478. n=0;
  479.  
  480. HDA_GROUP(rec_group, top_group, "record");
  481.  
  482. if (HDA_ADC_GROUP(0x08, group, rec_group, "mix", n, "record", 4)) /* ADC widget 0x08 */
  483. {
  484. /* Src 0x23=mix */
  485. HDA_INAMP(0x08, 0, group, "mix", 90); /* From widget 0x23 */
  486.  
  487. /* Widget 0x23 (mix) */
  488. /* Src 0x18=pink */
  489. /* Src 0x19=fp-pink */
  490. /* Src 0x1a=blue */
  491. /* Src 0x1b=fp-green */
  492. /* Src 0x1c=int-cd */
  493. /* Src 0x1d=black */
  494. /* Src 0x14=green */
  495. /* Src 0x15=black */
  496. /* Src 0x16=orange */
  497. /* Src 0x17=gray */
  498. /* Src 0xb=input-mix */
  499. {
  500. int amp_group;
  501.  
  502. HDA_GROUP(amp_group, group, "mute");
  503. HDA_INMUTE(0x23, 0, amp_group, "pink", UNMUTE); /* From widget 0x18 */
  504. HDA_INMUTE(0x23, 1, amp_group, "fp-pink", UNMUTE); /* From widget 0x19 */
  505. HDA_INMUTE(0x23, 2, amp_group, "blue", UNMUTE); /* From widget 0x1a */
  506. HDA_INMUTE(0x23, 3, amp_group, "fp-green", UNMUTE); /* From widget 0x1b */
  507. HDA_INMUTE(0x23, 4, amp_group, "int-cd", UNMUTE); /* From widget 0x1c */
  508. HDA_INMUTE(0x23, 5, amp_group, "black", UNMUTE); /* From widget 0x1d */
  509. HDA_INMUTE(0x23, 6, amp_group, "green", UNMUTE); /* From widget 0x14 */
  510. HDA_INMUTE(0x23, 7, amp_group, "black", UNMUTE); /* From widget 0x15 */
  511. HDA_INMUTE(0x23, 8, amp_group, "orange", UNMUTE); /* From widget 0x16 */
  512. HDA_INMUTE(0x23, 9, amp_group, "gray", UNMUTE); /* From widget 0x17 */
  513. HDA_INMUTE(0x23, 10, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  514. }
  515. }
  516.  
  517. if (HDA_ADC_GROUP(0x09, group, rec_group, "mix", n, "record", 4)) /* ADC widget 0x09 */
  518. {
  519. /* Src 0x22=mix */
  520. HDA_INAMP(0x09, 0, group, "mix", 90); /* From widget 0x22 */
  521.  
  522. /* Widget 0x22 (mix) */
  523. /* Src 0x18=pink */
  524. /* Src 0x19=fp-pink */
  525. /* Src 0x1a=blue */
  526. /* Src 0x1b=fp-green */
  527. /* Src 0x1c=int-cd */
  528. /* Src 0x1d=black */
  529. /* Src 0x14=green */
  530. /* Src 0x15=black */
  531. /* Src 0x16=orange */
  532. /* Src 0x17=gray */
  533. /* Src 0xb=input-mix */
  534. {
  535. int amp_group;
  536.  
  537. HDA_GROUP(amp_group, group, "mute");
  538. HDA_INMUTE(0x22, 0, amp_group, "pink", UNMUTE); /* From widget 0x18 */
  539. HDA_INMUTE(0x22, 1, amp_group, "fp-pink", UNMUTE); /* From widget 0x19 */
  540. HDA_INMUTE(0x22, 2, amp_group, "blue", UNMUTE); /* From widget 0x1a */
  541. HDA_INMUTE(0x22, 3, amp_group, "fp-green", UNMUTE); /* From widget 0x1b */
  542. HDA_INMUTE(0x22, 4, amp_group, "int-cd", UNMUTE); /* From widget 0x1c */
  543. HDA_INMUTE(0x22, 5, amp_group, "black", UNMUTE); /* From widget 0x1d */
  544. HDA_INMUTE(0x22, 6, amp_group, "green", UNMUTE); /* From widget 0x14 */
  545. HDA_INMUTE(0x22, 7, amp_group, "black", UNMUTE); /* From widget 0x15 */
  546. HDA_INMUTE(0x22, 8, amp_group, "orange", UNMUTE); /* From widget 0x16 */
  547. HDA_INMUTE(0x22, 9, amp_group, "gray", UNMUTE); /* From widget 0x17 */
  548. HDA_INMUTE(0x22, 10, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  549. }
  550. }
  551.  
  552. if (HDA_ADC_GROUP(0x0a, group, rec_group, "spdifin", n, "record", 4)) /* ADC widget 0x0a */
  553. {
  554. /* Src 0x1f=spdifin */
  555. }
  556. }
  557. /* Handle misc widgets */
  558. {
  559. int n, group, misc_group;
  560.  
  561. n=0;
  562.  
  563. HDA_GROUP(misc_group, top_group, "misc");
  564.  
  565. if (HDA_MISC_GROUP(0x0b, group, misc_group, "input-mix", n, "misc", 8))/* Misc widget 0x0b */
  566. {
  567. /* Src 0x18=mic */
  568. /* Src 0x19=fp-mic */
  569. /* Src 0x1a=linein */
  570. /* Src 0x1b=fp-headphone */
  571. /* Src 0x1c=int-cd */
  572. /* Src 0x1d=speaker */
  573. /* Src 0x14=green */
  574. /* Src 0x15=black */
  575. /* Src 0x16=orange */
  576. /* Src 0x17=gray */
  577. HDA_INAMP(0x0b, 0, group, "pink", 90); /* From widget 0x18 */
  578. HDA_INAMP(0x0b, 1, group, "fp-pink", 90); /* From widget 0x19 */
  579. HDA_INAMP(0x0b, 2, group, "blue", 90); /* From widget 0x1a */
  580. HDA_INAMP(0x0b, 3, group, "fp-green", 90); /* From widget 0x1b */
  581. HDA_INAMP(0x0b, 4, group, "int-cd", 90); /* From widget 0x1c */
  582. HDA_INAMP(0x0b, 5, group, "black", 90); /* From widget 0x1d */
  583. HDA_INAMP(0x0b, 6, group, "green", 90); /* From widget 0x14 */
  584. HDA_INAMP(0x0b, 7, group, "black", 90); /* From widget 0x15 */
  585. HDA_INAMP(0x0b, 8, group, "orange", 90); /* From widget 0x16 */
  586. HDA_INAMP(0x0b, 9, group, "gray", 90); /* From widget 0x17 */
  587. }
  588.  
  589. if (HDA_MISC_GROUP(0x0c, group, misc_group, "front", n, "misc", 8)) /* Misc widget 0x0c */
  590. {
  591. /* Src 0x2=front */
  592. /* Src 0xb=input-mix */
  593. HDA_OUTAMP(0x0c, group, "-", 90);
  594. {
  595. int amp_group;
  596.  
  597. HDA_GROUP(amp_group, group, "mute");
  598. HDA_INMUTE(0x0c, 0, amp_group, "front", UNMUTE); /* From widget 0x02 */
  599. HDA_INMUTE(0x0c, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  600. }
  601. }
  602.  
  603. if (HDA_MISC_GROUP(0x0d, group, misc_group, "rear", n, "misc", 8)) /* Misc widget 0x0d */
  604. {
  605. /* Src 0x3=rear */
  606. /* Src 0xb=input-mix */
  607. HDA_OUTAMP(0x0d, group, "-", 90);
  608. {
  609. int amp_group;
  610.  
  611. HDA_GROUP(amp_group, group, "mute");
  612. HDA_INMUTE(0x0d, 0, amp_group, "rear", UNMUTE); /* From widget 0x03 */
  613. HDA_INMUTE(0x0d, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  614. }
  615. }
  616.  
  617. if (HDA_MISC_GROUP(0x0e, group, misc_group, "center/LFE", n, "misc", 8))/* Misc widget 0x0e */
  618. {
  619. /* Src 0x4=center/LFE */
  620. /* Src 0xb=input-mix */
  621. HDA_OUTAMP(0x0e, group, "-", 90);
  622. {
  623. int amp_group;
  624.  
  625. HDA_GROUP(amp_group, group, "mute");
  626. HDA_INMUTE(0x0e, 0, amp_group, "center/LFE", UNMUTE); /* From widget 0x04 */
  627. HDA_INMUTE(0x0e, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  628. }
  629. }
  630.  
  631. if (HDA_MISC_GROUP(0x0f, group, misc_group, "side", n, "misc", 8)) /* Misc widget 0x0f */
  632. {
  633. /* Src 0x5=side */
  634. /* Src 0xb=input-mix */
  635. HDA_OUTAMP(0x0f, group, "-", 90);
  636. {
  637. int amp_group;
  638.  
  639. HDA_GROUP(amp_group, group, "mute");
  640. HDA_INMUTE(0x0f, 0, amp_group, "side", UNMUTE); /* From widget 0x05 */
  641. HDA_INMUTE(0x0f, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  642. }
  643. }
  644.  
  645. if (HDA_MISC_GROUP(0x26, group, misc_group, "pcm4", n, "misc", 8)) /* Misc widget 0x26 */
  646. {
  647. /* Src 0x25=pcm4 */
  648. /* Src 0xb=input-mix */
  649. HDA_OUTAMP(0x26, group, "-", 90);
  650. {
  651. int amp_group;
  652.  
  653. HDA_GROUP(amp_group, group, "mute");
  654. HDA_INMUTE(0x26, 0, amp_group, "pcm4", UNMUTE); /* From widget 0x25 */
  655. HDA_INMUTE(0x26, 1, amp_group, "input-mix", UNMUTE); /* From widget 0x0b */
  656. }
  657. }
  658. }
  659. return 0;
  660. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement