Subversion Repositories Kolibri OS

Rev

Rev 3083 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ; Universal Interface for Intel High Definition Audio Codec
  2.  
  3. ; nodes
  4. AC_NODE_ROOT            equ 0x00
  5.  
  6. ; function group types
  7. AC_GRP_AUDIO_FUNCTION   equ 0x01
  8. AC_GRP_MODEM_FUNCTION   equ 0x02
  9.  
  10. ; widget types
  11. AC_WID_AUD_OUT          equ 0x0 ; Audio Out
  12. AC_WID_AUD_IN           equ 0x1 ; Audio In
  13. AC_WID_AUD_MIX          equ 0x2 ; Audio Mixer
  14. AC_WID_AUD_SEL          equ 0x3 ; Audio Selector
  15. AC_WID_PIN              equ 0x4 ; Pin Complex
  16. AC_WID_POWER            equ 0x5 ; Power
  17. AC_WID_VOL_KNB          equ 0x6 ; Volume Knob
  18. AC_WID_BEEP             equ 0x7 ; Beep Generator
  19. AC_WID_VENDOR           equ 0x0F    ; Vendor specific
  20.  
  21. ; GET verbs
  22. AC_VERB_GET_STREAM_FORMAT               equ 0x0A00
  23. AC_VERB_GET_AMP_GAIN_MUTE               equ 0x0B00
  24. AC_VERB_GET_PROC_COEF                   equ 0x0C00
  25. AC_VERB_GET_COEF_INDEX                  equ 0x0D00
  26. AC_VERB_PARAMETERS                      equ 0x0F00
  27. AC_VERB_GET_CONNECT_SEL                 equ 0x0F01
  28. AC_VERB_GET_CONNECT_LIST                equ 0x0F02
  29. AC_VERB_GET_PROC_STATE                  equ 0x0F03
  30. AC_VERB_GET_SDI_SELECT                  equ 0x0F04
  31. AC_VERB_GET_POWER_STATE                 equ 0x0F05
  32. AC_VERB_GET_CONV                        equ 0x0F06
  33. AC_VERB_GET_PIN_WIDGET_CONTROL          equ 0x0F07
  34. AC_VERB_GET_UNSOLICITED_RESPONSE        equ 0x0F08
  35. AC_VERB_GET_PIN_SENSE                   equ 0x0F09
  36. AC_VERB_GET_BEEP_CONTROL                equ 0x0F0A
  37. AC_VERB_GET_EAPD_BTLENABLE              equ 0x0F0C
  38. AC_VERB_GET_DIGI_CONVERT_1              equ 0x0F0D
  39. AC_VERB_GET_DIGI_CONVERT_2              equ 0x0F0E ; unused
  40. AC_VERB_GET_VOLUME_KNOB_CONTROL         equ 0x0F0F
  41. ; f10-f1a: GPIO
  42. AC_VERB_GET_GPIO_DATA                   equ 0x0F15
  43. AC_VERB_GET_GPIO_MASK                   equ 0x0F16
  44. AC_VERB_GET_GPIO_DIRECTION              equ 0x0F17
  45. AC_VERB_GET_GPIO_WAKE_MASK              equ 0x0F18
  46. AC_VERB_GET_GPIO_UNSOLICITED_RSP_MASK   equ 0x0F19
  47. AC_VERB_GET_GPIO_STICKY_MASK            equ 0x0F1A
  48. AC_VERB_GET_CONFIG_DEFAULT              equ 0x0F1C
  49. ; f20: AFG/MFG
  50. AC_VERB_GET_SUBSYSTEM_ID                equ 0x0F20
  51. AC_VERB_GET_CVT_CHAN_COUNT              equ 0x0F2D
  52. AC_VERB_GET_HDMI_DIP_SIZE               equ 0x0F2E
  53. AC_VERB_GET_HDMI_ELDD                   equ 0x0F2F
  54. AC_VERB_GET_HDMI_DIP_INDEX              equ 0x0F30
  55. AC_VERB_GET_HDMI_DIP_DATA               equ 0x0F31
  56. AC_VERB_GET_HDMI_DIP_XMIT               equ 0x0F32
  57. AC_VERB_GET_HDMI_CP_CTRL                equ 0x0F33
  58. AC_VERB_GET_HDMI_CHAN_SLOT              equ 0x0F34
  59.  
  60. ; SET verbs
  61.  
  62. AC_VERB_SET_STREAM_FORMAT               equ 0x200
  63. AC_VERB_SET_AMP_GAIN_MUTE               equ 0x300
  64. AC_VERB_SET_PROC_COEF                   equ 0x400
  65. AC_VERB_SET_COEF_INDEX                  equ 0x500
  66. AC_VERB_SET_CONNECT_SEL                 equ 0x701
  67. AC_VERB_SET_PROC_STATE                  equ 0x703
  68. AC_VERB_SET_SDI_SELECT                  equ 0x704
  69. AC_VERB_SET_POWER_STATE                 equ 0x705
  70. AC_VERB_SET_CHANNEL_STREAMID            equ 0x706
  71. AC_VERB_SET_PIN_WIDGET_CONTROL          equ 0x707
  72. AC_VERB_SET_UNSOLICITED_ENABLE          equ 0x708
  73. AC_VERB_SET_PIN_SENSE                   equ 0x709
  74. AC_VERB_SET_BEEP_CONTROL                equ 0x70A
  75. AC_VERB_SET_EAPD_BTLENABLE              equ 0x70C
  76. AC_VERB_SET_DIGI_CONVERT_1              equ 0x70D
  77. AC_VERB_SET_DIGI_CONVERT_2              equ 0x70E
  78. AC_VERB_SET_VOLUME_KNOB_CONTROL         equ 0x70F
  79. AC_VERB_SET_GPIO_DATA                   equ 0x715
  80. AC_VERB_SET_GPIO_MASK                   equ 0x716
  81. AC_VERB_SET_GPIO_DIRECTION              equ 0x717
  82. AC_VERB_SET_GPIO_WAKE_MASK              equ 0x718
  83. AC_VERB_SET_GPIO_UNSOLICITED_RSP_MASK   equ 0x719
  84. AC_VERB_SET_GPIO_STICKY_MASK            equ 0x71A
  85. AC_VERB_SET_CONFIG_DEFAULT_BYTES_0      equ 0x71C
  86. AC_VERB_SET_CONFIG_DEFAULT_BYTES_1      equ 0x71D
  87. AC_VERB_SET_CONFIG_DEFAULT_BYTES_2      equ 0x71E
  88. AC_VERB_SET_CONFIG_DEFAULT_BYTES_3      equ 0x71F
  89. AC_VERB_SET_EAPD                               equ 0x788
  90. AC_VERB_SET_CODEC_RESET                 equ 0x7FF
  91. AC_VERB_SET_CVT_CHAN_COUNT              equ 0x72D
  92. AC_VERB_SET_HDMI_DIP_INDEX              equ 0x730
  93. AC_VERB_SET_HDMI_DIP_DATA               equ 0x731
  94. AC_VERB_SET_HDMI_DIP_XMIT               equ 0x732
  95. AC_VERB_SET_HDMI_CP_CTRL                equ 0x733
  96. AC_VERB_SET_HDMI_CHAN_SLOT              equ 0x734
  97.  
  98. ; Parameter IDs
  99.  
  100. AC_PAR_VENDOR_ID                equ 0x00
  101. AC_PAR_SUBSYSTEM_ID             equ 0x01
  102. AC_PAR_REV_ID                   equ 0x02
  103. AC_PAR_NODE_COUNT               equ 0x04
  104. AC_PAR_FUNCTION_TYPE            equ 0x05
  105. AC_PAR_AUDIO_FG_CAP             equ 0x08
  106. AC_PAR_AUDIO_WIDGET_CAP         equ 0x09
  107. AC_PAR_PCM                      equ 0x0A
  108. AC_PAR_STREAM                   equ 0x0B
  109. AC_PAR_PIN_CAP                  equ 0x0C
  110. AC_PAR_AMP_IN_CAP               equ 0x0D
  111. AC_PAR_CONNLIST_LEN             equ 0x0E
  112. AC_PAR_POWER_STATE              equ 0x0F
  113. AC_PAR_PROC_CAP                 equ 0x10
  114. AC_PAR_GPIO_CAP                 equ 0x11
  115. AC_PAR_AMP_OUT_CAP              equ 0x12
  116. AC_PAR_VOL_KNB_CAP              equ 0x13
  117. AC_PAR_HDMI_LPCM_CAP            equ 0x20
  118.  
  119. ; AC_VERB_PARAMETERS results (32bit)
  120.  
  121.  
  122. ; Function Group Type
  123. AC_FGT_TYPE                     equ (0xFF shl 0)
  124. AC_FGT_TYPE_SHIFT               equ 0
  125. AC_FGT_UNSOL_CAP                equ (1 shl 8)
  126.  
  127. ; Audio Function Group Capabilities
  128. AC_AFG_OUT_DELAY                equ (0xF shl 0)
  129. AC_AFG_IN_DELAY                 equ (0xF shl 8)
  130. AC_AFG_BEEP_GEN                 equ (1 shl 16)
  131.  
  132. ; Audio Widget Capabilities
  133. AC_WCAP_STEREO                  equ (1 shl 0)  ; stereo I/O
  134. AC_WCAP_IN_AMP                  equ (1 shl 1)  ; AMP-in present
  135. AC_WCAP_OUT_AMP                 equ (1 shl 2)  ; AMP-out present
  136. AC_WCAP_AMP_OVRD                equ (1 shl 3)  ; AMP-parameter override
  137. AC_WCAP_FORMAT_OVRD             equ (1 shl 4)  ; format override
  138. AC_WCAP_STRIPE                  equ (1 shl 5)  ; stripe
  139. AC_WCAP_PROC_WID                equ (1 shl 6)  ; Proc Widget
  140. AC_WCAP_UNSOL_CAP               equ (1 shl 7)  ; Unsol capable
  141. AC_WCAP_CONN_LIST               equ (1 shl 8)  ; connection list
  142. AC_WCAP_DIGITAL                 equ (1 shl 9)  ; digital I/O
  143. AC_WCAP_POWER                   equ (1 shl 10) ; power control
  144. AC_WCAP_LR_SWAP                 equ (1 shl 11) ; L/R swap
  145. AC_WCAP_CP_CAPS                 equ (1 shl 12) ; content protection
  146. AC_WCAP_CHAN_CNT_EXT            equ (7 shl 13) ; channel count ext
  147. AC_WCAP_DELAY                   equ (0xF shl 16)
  148. AC_WCAP_DELAY_SHIFT             equ 16
  149. AC_WCAP_TYPE                    equ (0xF shl 20)
  150. AC_WCAP_TYPE_SHIFT              equ 20
  151.  
  152. ; supported PCM rates and bits
  153. AC_SUPPCM_RATES                 equ (0xFFF  shl  0)
  154. AC_SUPPCM_BITS_8                equ (1 shl 16)
  155. AC_SUPPCM_BITS_16               equ (1 shl 17)
  156. AC_SUPPCM_BITS_20               equ (1 shl 18)
  157. AC_SUPPCM_BITS_24               equ (1 shl 19)
  158. AC_SUPPCM_BITS_32               equ (1 shl 20)
  159.  
  160. ; supported PCM stream format
  161. AC_SUPFMT_PCM                   equ (1 shl 0)
  162. AC_SUPFMT_FLOAT32               equ (1 shl 1)
  163. AC_SUPFMT_AC3                   equ (1 shl 2)
  164.  
  165. ; GP I/O count
  166. AC_GPIO_IO_COUNT                equ (0xFF shl 0)
  167. AC_GPIO_O_COUNT                 equ (0xFF shl 8)
  168. AC_GPIO_O_COUNT_SHIFT           equ 8
  169. AC_GPIO_I_COUNT                 equ (0xFF shl 16)
  170. AC_GPIO_I_COUNT_SHIFT           equ 16
  171. AC_GPIO_UNSOLICITED             equ (1 shl 30)
  172. AC_GPIO_WAKE                    equ (1 shl 31)
  173.  
  174. ; Converter stream, channel
  175. AC_CONV_CHANNEL                 equ (0xF shl 0)
  176. AC_CONV_STREAM                  equ (0xF shl 4)
  177. AC_CONV_STREAM_SHIFT            equ 4
  178.  
  179. ; Input converter SDI select
  180. AC_SDI_SELECT                   equ (0xF shl 0)
  181.  
  182. ; Unsolicited response control
  183. AC_UNSOL_TAG                    equ (0x3F shl 0)
  184. AC_UNSOL_ENABLED                equ (1 shl 7)
  185. AC_USRSP_EN                     equ AC_UNSOL_ENABLED
  186.  
  187. ; Unsolicited responses
  188. AC_UNSOL_RES_TAG                equ (0x3F shl 26)
  189. AC_UNSOL_RES_TAG_SHIFT          equ 26
  190. AC_UNSOL_RES_SUBTAG             equ (0x1F shl 21)
  191. AC_UNSOL_RES_SUBTAG_SHIFT       equ 21
  192. AC_UNSOL_RES_ELDV               equ (1 shl 1)  ; ELD Data valid (for HDMI)
  193. AC_UNSOL_RES_PD                 equ (1 shl 0)  ; pinsense detect
  194. AC_UNSOL_RES_CP_STATE           equ (1 shl 1)  ; content protection
  195. AC_UNSOL_RES_CP_READY           equ (1 shl 0)  ; content protection
  196.  
  197. ; Pin widget capabilies
  198. AC_PINCAP_IMP_SENSE             equ (1 shl 0)  ; impedance sense capable
  199. AC_PINCAP_TRIG_REQ              equ (1 shl 1)  ; trigger required
  200. AC_PINCAP_PRES_DETECT           equ (1 shl 2)  ; presence detect capable
  201. AC_PINCAP_HP_DRV                equ (1 shl 3)  ; headphone drive capable
  202. AC_PINCAP_OUT                   equ (1 shl 4)  ; output capable
  203. AC_PINCAP_IN                    equ (1 shl 5)  ; input capable
  204. AC_PINCAP_BALANCE               equ (1 shl 6)  ; balanced I/O capable
  205. ; Note: This LR_SWAP pincap is defined in the Realtek ALC883 specification,
  206. ;       but is marked reserved in the Intel HDA specification.
  207.  
  208. AC_PINCAP_LR_SWAP               equ (1 shl 7)  ; L/R swap
  209. ; Note: The same bit as LR_SWAP is newly defined as HDMI capability
  210. ;       in HD-audio specification
  211.  
  212. AC_PINCAP_HDMI                  equ (1 shl 7)  ; HDMI pin
  213. AC_PINCAP_DP                    equ (1 shl 24) ; DisplayPort pin, can
  214.                                                  ; coexist with AC_PINCAP_HDMI
  215.  
  216. AC_PINCAP_VREF                  equ (0x37 shl 8)
  217. AC_PINCAP_VREF_SHIFT            equ 8
  218. AC_PINCAP_EAPD                  equ (1 shl 16) ; EAPD capable
  219. AC_PINCAP_HBR                   equ (1 shl 27) ; High Bit Rate
  220. ; Vref status (used in pin cap)
  221. AC_PINCAP_VREF_HIZ              equ (1 shl 0)  ; Hi-Z
  222. AC_PINCAP_VREF_50               equ (1 shl 1)  ; 50%
  223. AC_PINCAP_VREF_GRD              equ (1 shl 2)  ; ground
  224. AC_PINCAP_VREF_80               equ (1 shl 4)  ; 80%
  225. AC_PINCAP_VREF_100              equ (1 shl 5)  ; 100%
  226.  
  227. ; Amplifier capabilities
  228. AC_AMPCAP_OFFSET                equ (0x7F shl 0)  ; 0dB offset
  229. AC_AMPCAP_OFFSET_SHIFT          equ 0
  230. AC_AMPCAP_NUM_STEPS             equ (0x7F shl 8)  ; number of steps
  231. AC_AMPCAP_NUM_STEPS_SHIFT       equ 8
  232. AC_AMPCAP_STEP_SIZE             equ (0x7F shl 16) ; step size 0-32dB
  233.                                                     ; in 0.25dB
  234. AC_AMPCAP_STEP_SIZE_SHIFT       equ 16
  235. AC_AMPCAP_MUTE                  equ (1 shl 31)    ; mute capable
  236. AC_AMPCAP_MUTE_SHIFT            equ 31
  237.  
  238. ; Connection list
  239. AC_CLIST_LENGTH                 equ (0x7F shl 0)
  240. AC_CLIST_LONG                   equ (1 shl 7)
  241.  
  242. ; Supported power status
  243. AC_PWRST_D0SUP                  equ (1 shl 0)
  244. AC_PWRST_D1SUP                  equ (1 shl 1)
  245. AC_PWRST_D2SUP                  equ (1 shl 2)
  246. AC_PWRST_D3SUP                  equ (1 shl 3)
  247. AC_PWRST_D3COLDSUP              equ (1 shl 4)
  248. AC_PWRST_S3D3COLDSUP            equ (1 shl 29)
  249. AC_PWRST_CLKSTOP                equ (1 shl 30)
  250. AC_PWRST_EPSS                   equ (1 shl 31)
  251.  
  252. ; Power state values
  253. AC_PWRST_SETTING                equ (0xF shl 0)
  254. AC_PWRST_ACTUAL                 equ (0xF shl 4)
  255. AC_PWRST_ACTUAL_SHIFT           equ 4
  256. AC_PWRST_D0                     equ 0x00
  257. AC_PWRST_D1                     equ 0x01
  258. AC_PWRST_D2                     equ 0x02
  259. AC_PWRST_D3                     equ 0x03
  260.  
  261. ; Processing capabilies
  262. AC_PCAP_BENIGN                  equ (1 shl 0)
  263. AC_PCAP_NUM_COEF                equ (0xFF shl 8)
  264. AC_PCAP_NUM_COEF_SHIFT          equ 8
  265.  
  266. ; Volume knobs capabilities
  267. AC_KNBCAP_NUM_STEPS             equ (0x7F shl 0)
  268. AC_KNBCAP_DELTA                 equ (1 shl 7)
  269.  
  270. ; HDMI LPCM capabilities
  271. AC_LPCMCAP_48K_CP_CHNS          equ (0x0F shl 0) ; max channels w/ CP-on
  272. AC_LPCMCAP_48K_NO_CHNS          equ (0x0F shl 4) ; max channels w/o CP-on
  273. AC_LPCMCAP_48K_20BIT            equ (1 shl 8)  ; 20b bitrate supported
  274. AC_LPCMCAP_48K_24BIT            equ (1 shl 9)  ; 24b bitrate supported
  275. AC_LPCMCAP_96K_CP_CHNS          equ (0x0F shl 10) ; max channels w/ CP-on
  276. AC_LPCMCAP_96K_NO_CHNS          equ (0x0F shl 14) ; max channels w/o CP-on
  277. AC_LPCMCAP_96K_20BIT            equ (1 shl 18) ; 20b bitrate supported
  278. AC_LPCMCAP_96K_24BIT            equ (1 shl 19) ; 24b bitrate supported
  279. AC_LPCMCAP_192K_CP_CHNS         equ (0x0F shl 20) ; max channels w/ CP-on
  280. AC_LPCMCAP_192K_NO_CHNS         equ (0x0F shl 24) ; max channels w/o CP-on
  281. AC_LPCMCAP_192K_20BIT           equ (1 shl 28) ; 20b bitrate supported
  282. AC_LPCMCAP_192K_24BIT           equ (1 shl 29) ; 24b bitrate supported
  283. AC_LPCMCAP_44K                  equ (1 shl 30) ; 44.1kHz support
  284. AC_LPCMCAP_44K_MS               equ (1 shl 31) ; 44.1kHz-multiplies support
  285.  
  286.  
  287. ; Control Parameters
  288.  
  289. ; Amp gain/mute
  290. AC_AMP_MUTE                     equ (1 shl 7)
  291. AC_AMP_GAIN                     equ (0x7F)
  292. AC_AMP_GET_INDEX                equ (0xF shl 0)
  293.  
  294. AC_AMP_GET_LEFT                 equ (1 shl 13)
  295. AC_AMP_GET_RIGHT                equ (0 shl 13)
  296. AC_AMP_GET_OUTPUT               equ (1 shl 15)
  297. AC_AMP_GET_INPUT                equ (0 shl 15)
  298.  
  299. AC_AMP_SET_INDEX                equ (0xF shl 8)
  300. AC_AMP_SET_INDEX_SHIFT          equ 8
  301. AC_AMP_SET_RIGHT                equ (1 shl 12)
  302. AC_AMP_SET_LEFT                 equ (1 shl 13)
  303. AC_AMP_SET_INPUT                equ (1 shl 14)
  304. AC_AMP_SET_OUTPUT               equ (1 shl 15)
  305.  
  306. ; DIGITAL1 bits
  307. AC_DIG1_ENABLE                  equ (1 shl 0)
  308. AC_DIG1_V                       equ (1 shl 1)
  309. AC_DIG1_VCFG                    equ (1 shl 2)
  310. AC_DIG1_EMPHASIS                equ (1 shl 3)
  311. AC_DIG1_COPYRIGHT               equ (1 shl 4)
  312. AC_DIG1_NONAUDIO                equ (1 shl 5)
  313. AC_DIG1_PROFESSIONAL            equ (1 shl 6)
  314. AC_DIG1_LEVEL                   equ (1 shl 7)
  315.  
  316. ; DIGITAL2 bits
  317. AC_DIG2_CC                   equ (0x7F shl 0)
  318.  
  319. ; Pin widget control - 8bit
  320. AC_PINCTL_VREFEN             equ (0x7 shl 0)
  321. AC_PINCTL_VREF_HIZ           equ 0       ; Hi-Z
  322. AC_PINCTL_VREF_50            equ 1       ; 50%
  323. AC_PINCTL_VREF_GRD           equ 2       ; ground
  324. AC_PINCTL_VREF_80            equ 4       ; 80%
  325. AC_PINCTL_VREF_100           equ 5       ; 100%
  326. AC_PINCTL_IN_EN              equ (1 shl 5)
  327. AC_PINCTL_OUT_EN             equ (1 shl 6)
  328. AC_PINCTL_HP_EN              equ (1 shl 7)
  329.  
  330. ; Pin sense - 32bit
  331. AC_PINSENSE_IMPEDANCE_MASK   equ (0x7FFFFFFF)
  332. AC_PINSENSE_PRESENCE         equ (1 shl 31)
  333. AC_PINSENSE_ELDV             equ (1 shl 30) ; ELD valid (HDMI)
  334.  
  335. ; EAPD/BTL enable - 32bit
  336. AC_EAPDBTL_BALANCED          equ (1 shl 0)
  337. AC_EAPDBTL_EAPD              equ (1 shl 1)
  338. AC_EAPDBTL_LR_SWAP           equ (1 shl 2)
  339.  
  340. ; HDMI ELD data
  341. AC_ELDD_ELD_VALID            equ (1 shl 31)
  342. AC_ELDD_ELD_DATA             equ 0xFF
  343.  
  344. ; HDMI DIP size
  345. AC_DIPSIZE_ELD_BUF           equ (1 shl 3) ; ELD buf size of packet size
  346. AC_DIPSIZE_PACK_IDX          equ (0x07 shl 0) ; packet index
  347.  
  348. ; HDMI DIP index
  349. AC_DIPIDX_PACK_IDX           equ (0x07 shl 5) ; packet idnex
  350. AC_DIPIDX_BYTE_IDX           equ (0x1F shl 0) ; byte index
  351.  
  352. ; HDMI DIP xmit (transmit) control
  353. AC_DIPXMIT_MASK              equ (0x3 shl 6)
  354. AC_DIPXMIT_DISABLE           equ (0x0 shl 6) ; disable xmit
  355. AC_DIPXMIT_ONCE              equ (0x2 shl 6) ; xmit once then disable
  356. AC_DIPXMIT_BEST              equ (0x3 shl 6) ; best effort
  357.  
  358. ; HDMI content protection (CP) control
  359. AC_CPCTRL_CES                equ (1 shl 9) ; current encryption state
  360. AC_CPCTRL_READY              equ (1 shl 8) ; ready bit
  361. AC_CPCTRL_SUBTAG             equ (0x1F shl 3) ; subtag for unsol-resp
  362. AC_CPCTRL_STATE              equ (3 shl 0) ; current CP request state
  363.  
  364. ; Converter channel <-> HDMI slot mapping
  365. AC_CVTMAP_HDMI_SLOT          equ (0xF shl 0) ; HDMI slot number
  366. AC_CVTMAP_CHAN               equ (0xF shl 4) ; converter channel number
  367.  
  368. ; configuration default - 32bit
  369. AC_DEFCFG_SEQUENCE           equ (0xF shl 0)
  370. AC_DEFCFG_DEF_ASSOC          equ (0xF shl 4)
  371. AC_DEFCFG_ASSOC_SHIFT        equ 4
  372. AC_DEFCFG_MISC               equ (0xF shl 8)
  373. AC_DEFCFG_MISC_SHIFT         equ 8
  374. AC_DEFCFG_MISC_NO_PRESENCE   equ (1   shl 0)
  375. AC_DEFCFG_COLOR              equ (0xF shl 12)
  376. AC_DEFCFG_COLOR_SHIFT        equ 12
  377. AC_DEFCFG_CONN_TYPE          equ (0xF shl 16)
  378. AC_DEFCFG_CONN_TYPE_SHIFT    equ 16
  379. AC_DEFCFG_DEVICE             equ (0xF shl 20)
  380. AC_DEFCFG_DEVICE_SHIFT       equ 20
  381. AC_DEFCFG_LOCATION           equ (0x3F shl 24)
  382. AC_DEFCFG_LOCATION_SHIFT     equ 24
  383. AC_DEFCFG_PORT_CONN          equ (0x3 shl 30)
  384. AC_DEFCFG_PORT_CONN_SHIFT    equ 30
  385.  
  386. ; device device types (0x0-0xf)
  387. AC_JACK_LINE_OUT             equ 0x0
  388. AC_JACK_SPEAKER              equ 0x1
  389. AC_JACK_HP_OUT               equ 0x2
  390. AC_JACK_CD                   equ 0x3
  391. AC_JACK_SPDIF_OUT            equ 0x4
  392. AC_JACK_DIG_OTHER_OUT        equ 0x5
  393. AC_JACK_MODEM_LINE_SIDE      equ 0x6
  394. AC_JACK_MODEM_HAND_SIDE      equ 0x7
  395. AC_JACK_LINE_IN              equ 0x8
  396. AC_JACK_AUX                  equ 0x9
  397. AC_JACK_MIC_IN               equ 0xA
  398. AC_JACK_TELEPHONY            equ 0xB
  399. AC_JACK_SPDIF_IN             equ 0xC
  400. AC_JACK_DIG_OTHER_IN         equ 0xD
  401. AC_JACK_OTHER                equ 0xF
  402.  
  403. ; jack connection types (0x0-0xf)
  404. AC_JACK_CONN_UNKNOWN         equ 0x0
  405. AC_JACK_CONN_1_8             equ 0x1
  406. AC_JACK_CONN_1_4             equ 0x2
  407. AC_JACK_CONN_ATAPI           equ 0x3
  408. AC_JACK_CONN_RCA             equ 0x4
  409. AC_JACK_CONN_OPTICAL         equ 0x5
  410. AC_JACK_CONN_OTHER_DIGITAL   equ 0x6
  411. AC_JACK_CONN_OTHER_ANALOG    equ 0x7
  412. AC_JACK_CONN_DIN             equ 0x8
  413. AC_JACK_CONN_XLR             equ 0x9
  414. AC_JACK_CONN_RJ11            equ 0xA
  415. AC_JACK_CONN_COMB            equ 0xB
  416. AC_JACK_CONN_OTHER           equ 0xF
  417.  
  418. ; jack colors (0x0-0xf)
  419. AC_JACK_COLOR_UNKNOWN   equ 0x0
  420. AC_JACK_COLOR_BLACK     equ 0x1
  421. AC_JACK_COLOR_GREY      equ 0x2
  422. AC_JACK_COLOR_BLUE      equ 0x3
  423. AC_JACK_COLOR_GREEN     equ 0x4
  424. AC_JACK_COLOR_RED       equ 0x5
  425. AC_JACK_COLOR_ORANGE    equ 0x6
  426. AC_JACK_COLOR_YELLOW    equ 0x7
  427. AC_JACK_COLOR_PURPLE    equ 0x8
  428. AC_JACK_COLOR_PINK      equ 0x9
  429. AC_JACK_COLOR_WHITE     equ 0xE
  430. AC_JACK_COLOR_OTHER     equ 0xF
  431.  
  432. ; Jack location (0x0-0x3f)
  433. ; common case
  434. AC_JACK_LOC_NONE        equ 0
  435. AC_JACK_LOC_REAR        equ 1
  436. AC_JACK_LOC_FRONT       equ 2
  437. AC_JACK_LOC_LEFT        equ 3
  438. AC_JACK_LOC_RIGHT       equ 4
  439. AC_JACK_LOC_TOP         equ 5
  440. AC_JACK_LOC_BOTTOM      equ 6
  441.  
  442. ; bits 4-5
  443. AC_JACK_LOC_EXTERNAL    equ 0x00
  444. AC_JACK_LOC_INTERNAL    equ 0x10
  445. AC_JACK_LOC_SEPARATE    equ 0x20
  446. AC_JACK_LOC_OTHER       equ 0x30
  447.  
  448. ; external on primary chasis
  449. AC_JACK_LOC_REAR_PANEL  equ 0x07
  450. AC_JACK_LOC_DRIVE_BAY   equ 0x08
  451. ; internal
  452. AC_JACK_LOC_RISER       equ 0x17
  453. AC_JACK_LOC_HDMI        equ 0x18
  454. AC_JACK_LOC_ATAPI       equ 0x19
  455. ; others
  456. AC_JACK_LOC_MOBILE_IN   equ 0x37
  457. AC_JACK_LOC_MOBILE_OUT  equ 0x38
  458.  
  459. ; Port connectivity (0-3)
  460. AC_JACK_PORT_COMPLEX    equ 0
  461. AC_JACK_PORT_NONE       equ 1
  462. AC_JACK_PORT_FIXED      equ 2
  463. AC_JACK_PORT_BOTH       equ 3
  464.  
  465. ; max. connections to a widget
  466. HDA_MAX_CONNECTIONS     equ 32
  467.  
  468. ; max. codec address
  469. HDA_MAX_CODEC_ADDRESS   equ 0x0f
  470.  
  471. ; max number of PCM devics per card
  472. HDA_MAX_PCMS            equ 10
  473.  
  474.  
  475. ; Structures
  476.  
  477. ; direction
  478. HDA_INPUT          equ 0x0
  479. HDA_OUTPUT         equ 0x1
  480.  
  481.  
  482. struc HDA_VERB
  483. {
  484.         .nid       dw ?
  485.         .verb      dd ?
  486.         .param     dd ?
  487. }
  488.  
  489. virtual at 0
  490.    HDA_VERB  HDA_VERB
  491. end virtual
  492.  
  493. ; the struct for codec->pin_configs
  494. struc HDA_PINCFG
  495. {
  496.         .nid       dw ?
  497.         .reserved  dw ? ;Asper + for align purposes
  498.         .cfg       dd ?
  499.         .sizeof:
  500. }
  501.  
  502. virtual at 0
  503.    HDA_PINCFG  HDA_PINCFG
  504. end virtual
  505.  
  506.  
  507. ;Asper [   this part is from "hda_local.h"
  508.  
  509. ;(...)
  510. ; amp value bits
  511. HDA_AMP_MUTE       equ 0x80
  512. HDA_AMP_UNMUTE     equ 0x00
  513. HDA_AMP_VOLMASK    equ 0x7F
  514. ;(...)
  515.  
  516.  
  517. ; unsolicited event handler
  518. HDA_UNSOL_QUEUE_SIZE    equ 64
  519.  
  520. ;struc  HDA_BUS_UNSOLICITED
  521. ;{
  522. ;        ; ring buffer
  523. ;        .queue:
  524. ;            times HDA_UNSOL_QUEUE_SIZE*2 dd ?
  525. ;        .rp                              dd ?
  526. ;        .wp                              dd ?
  527. ;
  528. ;        ; workqueue
  529. ;        .work                            dd ?;struct work_struct work;
  530. ;        .bus                             dd ?  ;struct hda_bus ;bus
  531. ;};
  532.  
  533. ; Helper for automatic ping configuration
  534. AUTO_PIN_MIC             equ 0
  535. AUTO_PIN_FRONT_MIC       equ 1
  536. AUTO_PIN_LINE            equ 2
  537. AUTO_PIN_FRONT_LINE      equ 3
  538. AUTO_PIN_CD              equ 4
  539. AUTO_PIN_AUX             equ 5
  540. AUTO_PIN_LAST            equ 6
  541.  
  542.  
  543. AUTO_PIN_LINE_OUT        equ 0
  544. AUTO_PIN_SPEAKER_OUT     equ 1
  545. AUTO_PIN_HP_OUT          equ 2
  546.  
  547.  
  548. ;extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST];
  549.  
  550. AUTO_CFG_MAX_OUTS        equ 5
  551.  
  552. ;struc AUTO_PIN_CFG
  553. ;{
  554. ;        .line_outs       dd ?
  555. ;        ; sorted in the order of FrontSurrCLFESide
  556. ;        .line_out_pins   times AUTO_CFG_MAX_OUTS  dw ?
  557. ;        .speaker_outs    dd ?
  558. ;        .speaker_pins    times AUTO_CFG_MAX_OUTS  dw ?
  559. ;        .hp_outs         dd ?
  560. ;        .line_out_type   dd ?   ; AUTO_PIN_XXX_OUT
  561. ;        .hp_pins         times AUTO_CFG_MAX_OUTS  dw ?
  562. ;        .input_pins      times AUTO_PIN_LAST      dw ?
  563. ;        .dig_outs        dd ?
  564. ;        .dig_out_pins    times 2 dd ?
  565. ;        .dig_in_pin      dw ?
  566. ;        .mono_out_pin    dw ?
  567. ;        .dig_out_type    times 2 dd ?  ; HDA_PCM_TYPE_XXX
  568. ;        .dig_in_type     dd ?  ; HDA_PCM_TYPE_XXX
  569. ;}
  570.  
  571. ;#define get_defcfg_connect(cfg) \
  572. ;        ((cfg & AC_DEFCFG_PORT_CONN) >> AC_DEFCFG_PORT_CONN_SHIFT)
  573. ;#define get_defcfg_association(cfg) \
  574. ;        ((cfg & AC_DEFCFG_DEF_ASSOC) >> AC_DEFCFG_ASSOC_SHIFT)
  575. ;#define get_defcfg_location(cfg) \
  576. ;        ((cfg & AC_DEFCFG_LOCATION) >> AC_DEFCFG_LOCATION_SHIFT)
  577. ;#define get_defcfg_sequence(cfg) \
  578. ;        (cfg & AC_DEFCFG_SEQUENCE)
  579. ;#define get_defcfg_device(cfg) \
  580. ;        ((cfg & AC_DEFCFG_DEVICE) >> AC_DEFCFG_DEVICE_SHIFT)
  581.  
  582. ; amp values
  583. ;AMP_IN_MUTE(idx)        (0x7080 | ((idx)<<8))
  584. ;AMP_IN_UNMUTE(idx)      (0x7000 | ((idx)<<8))
  585. AMP_OUT_MUTE            equ 0xb080
  586. AMP_OUT_UNMUTE          equ 0xb000
  587. AMP_OUT_ZERO            equ 0xb000
  588. ; pinctl values
  589. PIN_IN                  equ (AC_PINCTL_IN_EN)
  590. PIN_VREFHIZ             equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_HIZ)
  591. PIN_VREF50              equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_50)
  592. PIN_VREFGRD             equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_GRD)
  593. PIN_VREF80              equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_80)
  594. PIN_VREF100             equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_100)
  595. PIN_OUT                 equ (AC_PINCTL_OUT_EN)
  596. PIN_HP                  equ (AC_PINCTL_OUT_EN or AC_PINCTL_HP_EN)
  597. PIN_HP_AMP              equ (AC_PINCTL_HP_EN)
  598.  
  599.  
  600. ; get widget capabilities
  601. proc  get_wcaps stdcall, nid:dword
  602.         push    ebx ecx edx
  603.         xor     eax, eax
  604.         movzx   ebx, [codec.start_nid]
  605.         movzx   ecx, [codec.num_nodes]
  606.         mov     edx, [nid]
  607.  
  608.         cmp     edx, ebx
  609.         jl      .out
  610.  
  611.         add     ecx, ebx
  612.         cmp     edx, ecx
  613.         jge     .out
  614.  
  615.         sub     edx, ebx
  616.         shl     edx, 2
  617.         add     edx, [codec.wcaps]
  618.         mov     eax, [edx]
  619. .out:
  620.         pop     edx ecx ebx
  621.         ret
  622. endp
  623.  
  624. ; get the widget type from widget capability bits
  625. proc  get_wcaps_type stdcall, wcaps:dword
  626.         mov     eax, [wcaps]
  627.         and     eax, AC_WCAP_TYPE
  628.         shr     eax, AC_WCAP_TYPE_SHIFT
  629.         ret
  630. endp
  631.  
  632. ;static inline unsigned int get_wcaps_channels(u32 wcaps)
  633. proc  get_wcaps_channels stdcall, wcaps:dword
  634.         mov     eax, [wcaps]
  635.         and     eax, AC_WCAP_CHAN_CNT_EXT
  636.         shr     eax, 13
  637.         shl     eax, 1
  638.         or      eax, 1
  639.         inc     eax
  640.         ret
  641. endp
  642.  
  643. ;Asper ]
  644.