Print this page
10619 audiohd ignores digital output pins such as HDMI/DP

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h
          +++ new/usr/src/uts/common/io/audio/drv/audiohd/audiohd.h
↓ open down ↓ 124 lines elided ↑ open up ↑
 125  125  #define AUDIOHD_PIN_SEQ_MASK    0x0000000f
 126  126  #define AUDIOHD_PIN_ASO_MASK    0x000000f0
 127  127  #define AUDIOHD_PIN_ASO_OFF     0x4
 128  128  #define AUDIOHD_PIN_DEV_MASK    0x00f00000
 129  129  #define AUDIOHD_PIN_DEV_OFF     20
 130  130  #define AUDIOHD_PIN_NUMS        6
 131  131  #define AUDIOHD_PIN_NO_CONN     0x40000000
 132  132  #define AUDIOHD_PIN_IN_ENABLE   0x20
 133  133  #define AUDIOHD_PIN_OUT_ENABLE  0x40
 134  134  #define AUDIOHD_PIN_PRES_MASK   0x80000000
      135 +#define AUDIOHD_PIN_ELDV_MASK   0x40000000
 135  136  #define AUDIOHD_PIN_CONTP_OFF   0x1e
 136  137  #define AUDIOHD_PIN_CON_JACK    0
 137  138  #define AUDIOHD_PIN_CON_FIXED   0x2
 138  139  #define AUDIOHD_PIN_CONTP_MASK  0x3
 139  140  #define AUDIOHD_PIN_VREF_L1     0x20
 140  141  #define AUDIOHD_PIN_VREF_L2     0x10
 141  142  #define AUDIOHD_PIN_VREF_L3     0x04
 142  143  #define AUDIOHD_PIN_VREF_L4     0x02
 143  144  #define AUDIOHD_PIN_VREF_OFF    8
 144  145  #define AUDIOHD_PIN_VREF_MASK   0xff
↓ open down ↓ 190 lines elided ↑ open up ↑
 335  336  #define AUDIOHDC_VERB_GET_STREAM_CHANN          0xf06
 336  337  #define AUDIOHDC_VERB_SET_STREAM_CHANN          0x706
 337  338  
 338  339  #define AUDIOHDC_VERB_GET_PIN_CTRL              0xf07
 339  340  #define AUDIOHDC_VERB_SET_PIN_CTRL              0x707
 340  341  
 341  342  #define AUDIOHDC_VERB_GET_UNS_ENABLE            0xf08
 342  343  #define AUDIOHDC_VERB_SET_UNS_ENABLE            0x708
 343  344  
 344  345  #define AUDIOHDC_VERB_GET_PIN_SENSE             0xf09
 345      -#define AUDIOHDC_VERB_GET_PIN_SENSE             0xf09
 346  346  #define AUDIOHDC_VERB_EXEC_PIN_SENSE            0x709
 347  347  
 348  348  #define AUDIOHDC_VERB_GET_BEEP_GEN              0xf0a
 349  349  #define AUDIOHDC_VERB_SET_BEEP_GEN              0x70a
 350  350  
 351  351  #define AUDIOHDC_VERB_GET_EAPD                  0xf0c
 352  352  #define AUDIOHDC_VERB_SET_EAPD                  0x70c
 353  353  
 354  354  #define AUDIOHDC_VERB_GET_DEFAULT_CONF          0xf1c
 355  355  #define AUDIOHDC_VERB_GET_SPDIF_CTL             0xf0d
↓ open down ↓ 7 lines elided ↑ open up ↑
 363  363  
 364  364  #define AUDIOHDC_VERB_GET_GPIO_DIREC            0xf17
 365  365  #define AUDIOHDC_VERB_SET_GPIO_DIREC            0x717
 366  366  
 367  367  #define AUDIOHDC_VERB_GET_GPIO_DATA             0xf15
 368  368  #define AUDIOHDC_VERB_SET_GPIO_DATA             0x715
 369  369  
 370  370  #define AUDIOHDC_VERB_GET_GPIO_STCK             0xf1a
 371  371  #define AUDIOHDC_VERB_SET_GPIO_STCK             0x71a
 372  372  
      373 +#define AUDIOHDC_VERB_GET_DIP_SIZE              0xf2e
      374 +#define AUDIOHDC_VERB_GET_ELD                   0xf2f
      375 +
      376 +#define AUDIOHDC_VERB_SET_DIP_INDEX             0x730
      377 +#define AUDIOHDC_VERB_SET_DIP_DATA              0x731
      378 +#define AUDIOHDC_VERB_SET_DIP_XMIT              0x732
      379 +
      380 +#define AUDIOHDC_VERB_SET_ASP_CHMAP             0x734
      381 +
 373  382  #define AUDIOHDC_GPIO_ENABLE                    0xff
 374  383  #define AUDIOHDC_GPIO_DIRECT                    0xf1
 375  384  
 376  385  #define AUDIOHDC_GPIO_DATA_CTRL                 0xff
 377  386  #define AUDIOHDC_GPIO_STCK_CTRL                 0xff
 378  387  /*
 379  388   * 4-bit verbs
 380  389   */
 381  390  #define AUDIOHDC_VERB_GET_CONV_FMT              0xa
 382  391  #define AUDIOHDC_VERB_SET_CONV_FMT              0x2
↓ open down ↓ 93 lines elided ↑ open up ↑
 476  485  #define AUDIOHD_CODEC_FAILURE   (uint32_t)(-1)
 477  486  
 478  487  /* Higher sample/bits support */
 479  488  #define AUDIOHD_BIT_DEPTH16     0x00020000
 480  489  #define AUDIOHD_BIT_DEPTH24     0x00080000
 481  490  #define AUDIOHD_SAMP_RATE48     0x00000040
 482  491  #define AUDIOHD_SAMP_RATE96     0x00000100
 483  492  #define AUDIOHD_SAMP_RATE192    0x00000400
 484  493  
 485  494  /*
      495 + * Data Island Packet - Size info
      496 + */
      497 +#define AUDIOHD_DIP_SIZE_AF             0x0
      498 +#define AUDIOHD_DIP_SIZE_ELD            0x8
      499 +#define AUDIOHD_DIP_SIZE_ELD_MASK       0xff
      500 +
      501 +/*
      502 + * Data Island Packet - Data
      503 + */
      504 +#define AUDIOHD_DIP_DATA_LEN            32
      505 +
      506 +/*
      507 + * Data Island Packet - Xmit
      508 + */
      509 +#define AUDIOHD_DIP_XMIT_STOP           0x00
      510 +#define AUDIOHD_DIP_XMIT_ONCE           0x80
      511 +#define AUDIOHD_DIP_XMIT_BEST_EFFORT    0xc0
      512 +
      513 +/*
      514 + * EDID-like data (ELD)
      515 + */
      516 +typedef struct {
      517 +        uint8_t         sad_nchan:3;
      518 +        uint8_t         sad_format:4;
      519 +        uint8_t         sad_rsvd:1;
      520 +        uint8_t         sad_freq;
      521 +        uint8_t         sad_bitr;
      522 +} audiohd_sad_t;
      523 +
      524 +#define AUDIOHD_SAD_FORMAT_LPCM         1
      525 +#define AUDIOHD_SAD_FORMAT_AC3          2
      526 +#define AUDIOHD_SAD_FORMAT_MPEG1        3
      527 +#define AUDIOHD_SAD_FORMAT_MP3          4
      528 +#define AUDIOHD_SAD_FORMAT_MPEG2        5
      529 +#define AUDIOHD_SAD_FORMAT_AAC          6
      530 +#define AUDIOHD_SAD_FORMAT_DTS          7
      531 +#define AUDIOHD_SAD_FORMAT_ATRAC        8
      532 +#define AUDIOHD_SAD_FORMAT_SACD         9
      533 +#define AUDIOHD_SAD_FORMAT_DDPLUS       10
      534 +#define AUDIOHD_SAD_FORMAT_DTSHD        11
      535 +#define AUDIOHD_SAD_FORMAT_MLP          12
      536 +#define AUDIOHD_SAD_FORMAT_DST          13
      537 +#define AUDIOHD_SAD_FORMAT_WMA          14
      538 +
      539 +#define AUDIOHD_SAD_FREQ_32             0x1
      540 +#define AUDIOHD_SAD_FREQ_44             0x2
      541 +#define AUDIOHD_SAD_FREQ_48             0x4
      542 +#define AUDIOHD_SAD_FREQ_88             0x8
      543 +#define AUDIOHD_SAD_FREQ_96             0x10
      544 +#define AUDIOHD_SAD_FREQ_176            0x20
      545 +#define AUDIOHD_SAD_FREQ_192            0x40
      546 +
      547 +#define AUDIOHD_SAD_BITRATE_16          0x1
      548 +#define AUDIOHD_SAD_BITRATE_20          0x2
      549 +#define AUDIOHD_SAD_BITRATE_24          0x4
      550 +
      551 +typedef struct {
      552 +        uint8_t         eld_rsvd1:3;
      553 +        uint8_t         eld_ver:5;
      554 +        uint8_t         eld_rsvd2;
      555 +        uint8_t         eld_baseline_size;
      556 +        uint8_t         eld_rsvd3;
      557 +        uint8_t         eld_mnl:5;
      558 +        uint8_t         eld_cea_edid_ver:3;
      559 +        uint8_t         eld_hdcp:1;
      560 +        uint8_t         eld_s_ai:1;
      561 +        uint8_t         eld_conn_type:2;
      562 +        uint8_t         eld_sad_count:4;
      563 +        uint8_t         eld_aud_synch_delay;
      564 +        uint8_t         eld_channels;
      565 +        uint64_t        eld_port_id;
      566 +        char            eld_manufacturer_name[2];
      567 +        char            eld_product_code[2];
      568 +        char            eld_monitor_name[16];
      569 +        audiohd_sad_t   eld_cea_sad[15];
      570 +        size_t          eld_size;
      571 +} audiohd_eld_t;
      572 +
      573 +#define AUDIOHD_ELD_HDR_LEN     4
      574 +
      575 +#define AUDIOHD_ELD_VER_2       0x02
      576 +#define AUDIOHD_ELD_VER_NODRV   0x1f
      577 +#define AUDIOHD_ELD_MAX_MNL     16
      578 +#define AUDIOHD_ELD_CEA_861     1
      579 +#define AUDIOHD_ELD_CEA_861_A   2
      580 +#define AUDIOHD_ELD_CEA_861_BCD 3
      581 +
      582 +#define AUDIOHD_ELD_CONN_HDMI   0
      583 +#define AUDIOHD_ELD_CONN_DP     1
      584 +
      585 +#define AUDIOHD_ELD_CHAN_FLR    0x01    /* front left/right */
      586 +#define AUDIOHD_ELD_CHAN_LFE    0x02    /* low frequency effect */
      587 +#define AUDIOHD_ELD_CHAN_FC     0x04    /* front center */
      588 +#define AUDIOHD_ELD_CHAN_RLR    0x08    /* rear left/right */
      589 +#define AUDIOHD_ELD_CHAN_RC     0x10    /* rear center */
      590 +#define AUDIOHD_ELD_CHAN_FLRC   0x20    /* front left/right of center */
      591 +#define AUDIOHD_ELD_CHAN_RLRC   0x40    /* rear left/right of center */
      592 +
      593 +
      594 +/*
 486  595   * buffer descriptor list entry of stream descriptor
 487  596   */
 488  597  typedef struct {
 489  598          uint64_t        sbde_addr;
 490  599          uint32_t        sbde_len;
 491  600          uint32_t
 492  601                  sbde_ioc: 1,
 493  602                  reserved: 31;
 494  603  }sd_bdle_t;
 495  604  
↓ open down ↓ 16 lines elided ↑ open up ↑
 512  621  };
 513  622  
 514  623  enum audiohda_device_type {
 515  624          DTYPE_LINEOUT = 0,
 516  625          DTYPE_SPEAKER,
 517  626          DTYPE_HP_OUT,
 518  627          DTYPE_CD,
 519  628          DTYPE_SPDIF_OUT,
 520  629          DTYPE_DIGIT_OUT,
 521  630          DTYPE_MODEM_SIDE,
 522      -        DTYPE_MODEM_HNAD_SIDE,
      631 +        DTYPE_MODEM_HAND_SIDE,
 523  632          DTYPE_LINE_IN,
 524  633          DTYPE_AUX,
 525  634          DTYPE_MIC_IN,
 526  635          DTYPE_TEL,
 527  636          DTYPE_SPDIF_IN,
 528  637          DTYPE_DIGIT_IN,
 529  638          DTYPE_OTHER = 0x0f,
 530  639  };
 531  640  
 532  641  enum audiohd_pin_color {
↓ open down ↓ 219 lines elided ↑ open up ↑
 752  861          /*
 753  862           * mg_dir, mg_gain, mg_wid are used to store the monitor gain control
 754  863           * widget wid.
 755  864           */
 756  865          int             mg_dir[AUDIOHD_MAX_CONN];
 757  866          int             mg_gain[AUDIOHD_MAX_CONN];
 758  867          int             mg_wid[AUDIOHD_MAX_CONN];
 759  868          int             num;
 760  869          int             finish;
 761  870  
      871 +        /* EDID-like data for HDMI/DP */
      872 +        audiohd_eld_t   *eld;
 762  873  };
 763  874  
 764  875  typedef struct {
 765  876          ddi_dma_handle_t        ad_dmahdl;
 766  877          ddi_acc_handle_t        ad_acchdl;
 767  878          caddr_t                 ad_vaddr;       /* virtual addr */
 768  879          uint64_t                ad_paddr;       /* physical addr */
 769  880          size_t                  ad_req_sz;      /* required size of memory */
 770  881          size_t                  ad_real_sz;     /* real size of memory */
 771  882  } audiohd_dma_t;
↓ open down ↓ 225 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX