hrev44592 adds 1 changeset to branch 'master' old head: b7bb5837791de5bae2f089a579d6bd063b7dbc51 new head: 992c945afe166a71d08222f2e036a65bbe175caa ---------------------------------------------------------------------------- 992c945: hda: later specification updates [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44592 Commit: 992c945afe166a71d08222f2e036a65bbe175caa URL: http://cgit.haiku-os.org/haiku/commit/?id=992c945 Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Thu Aug 30 21:43:27 2012 UTC ---------------------------------------------------------------------------- 2 files changed, 39 insertions(+) src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp | 1 + .../kernel/drivers/audio/hda/hda_codec_defs.h | 38 ++++++++++++++++ ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp b/src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp index 2c6f85b..66fd766 100644 --- a/src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp +++ b/src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp @@ -159,6 +159,7 @@ dump_widget_audio_capabilities(uint32 capabilities) uint32 flag; const char* name; } kFlags[] = { + {AUDIO_CAP_CP_CAPS, "CP caps"}, {AUDIO_CAP_LEFT_RIGHT_SWAP, "L-R swap"}, {AUDIO_CAP_POWER_CONTROL, "Power"}, {AUDIO_CAP_DIGITAL, "Digital"}, diff --git a/src/add-ons/kernel/drivers/audio/hda/hda_codec_defs.h b/src/add-ons/kernel/drivers/audio/hda/hda_codec_defs.h index 1c4d021..94797c2 100644 --- a/src/add-ons/kernel/drivers/audio/hda/hda_codec_defs.h +++ b/src/add-ons/kernel/drivers/audio/hda/hda_codec_defs.h @@ -125,6 +125,21 @@ enum pin_dev_type { #define VID_GET_STRIPE_CONTROL 0xf2400 #define VID_SET_STRIPE_CONTROL 0x72000 #define VID_FUNCTION_RESET 0x7ff00 +/* later specification updates */ +#define VID_GET_EDID_LIKE_DATA 0xf2f00 +#define VID_GET_CONVERTER_CHANNEL_COUNT 0xf2d00 +#define VID_SET_CONVERTER_CHANNEL_COUNT 0x72d00 +#define VID_GET_DATA_ISLAND_PACKET_SIZE 0xf2e00 +#define VID_GET_DATA_ISLAND_PACKET_INDEX 0xf3000 +#define VID_SET_DATA_ISLAND_PACKET_INDEX 0x73000 +#define VID_GET_DATA_ISLAND_PACKET_DATA 0xf3100 +#define VID_SET_DATA_ISLAND_PACKET_DATA 0x73100 +#define VID_GET_DATA_ISLAND_PACKET_XMITCTRL 0xf3200 +#define VID_SET_DATA_ISLAND_PACKET_XMITCTRL 0x73200 +#define VID_GET_CONTENT_PROTECTION_CONTROL 0xf3300 +#define VID_SET_CONTENT_PROTECTION_CONTROL 0x73300 +#define VID_GET_ASP_CHANNEL_MAPPING 0xf3400 +#define VID_SET_ASP_CHANNEL_MAPPING 0x73400 /* Parameter IDs */ #define PID_VENDOR_ID 0x00 @@ -179,6 +194,8 @@ enum pin_dev_type { /* Audio widget capabilities */ +#define AUDIO_CAP_CHANNEL_COUNT_MASK 0x0000e000 +#define AUDIO_CAP_CHANNEL_COUNT_SHIFT 13 #define AUDIO_CAP_DELAY_MASK 0x000f0000 #define AUDIO_CAP_DELAY_SHIFT 16 #define AUDIO_CAP_TYPE_MASK 0x00f00000 @@ -196,6 +213,11 @@ enum pin_dev_type { #define AUDIO_CAP_DIGITAL (1L << 9) #define AUDIO_CAP_POWER_CONTROL (1L << 10) #define AUDIO_CAP_LEFT_RIGHT_SWAP (1L << 11) +#define AUDIO_CAP_CP_CAPS (1L << 12) + +#define AUDIO_CAP_CHANNEL_COUNT(c) \ + (((c & AUDIO_CAP_CHANNEL_COUNT_MASK) >> (AUDIO_CAP_CHANNEL_COUNT_SHIFT - 1)) \ + | AUDIO_CAP_STEREO) /* Amplifier capabilities */ #define AMP_CAP_MUTE 0xf0000000 @@ -219,20 +241,27 @@ enum pin_dev_type { #define PIN_CAP_OUTPUT (1L << 4) #define PIN_CAP_INPUT (1L << 5) #define PIN_CAP_BALANCE (1L << 6) +#define PIN_CAP_HDMI (1L << 7) #define PIN_CAP_VREF_CTRL_HIZ (1L << 8) #define PIN_CAP_VREF_CTRL_50 (1L << 9) #define PIN_CAP_VREF_CTRL_GROUND (1L << 10) #define PIN_CAP_VREF_CTRL_80 (1L << 12) #define PIN_CAP_VREF_CTRL_100 (1L << 13) #define PIN_CAP_EAPD_CAP (1L << 16) +#define PIN_CAP_DP (1L << 24) +#define PIN_CAP_HBR (1L << 27) #define PIN_CAP_IS_PRES_DETECT_CAP(c) ((c & PIN_CAP_PRES_DETECT) != 0) #define PIN_CAP_IS_OUTPUT(c) ((c & PIN_CAP_OUTPUT) != 0) #define PIN_CAP_IS_INPUT(c) ((c & PIN_CAP_INPUT) != 0) +#define PIN_CAP_IS_BALANCE(c) ((c & PIN_CAP_BALANCE) != 0) +#define PIN_CAP_IS_HDMI(c) ((c & PIN_CAP_HDMI) != 0) #define PIN_CAP_IS_VREF_CTRL_50_CAP(c) ((c & PIN_CAP_VREF_CTRL_50) != 0) #define PIN_CAP_IS_VREF_CTRL_80_CAP(c) ((c & PIN_CAP_VREF_CTRL_80) != 0) #define PIN_CAP_IS_VREF_CTRL_100_CAP(c) ((c & PIN_CAP_VREF_CTRL_100) != 0) #define PIN_CAP_IS_EAPD_CAP(c) ((c & PIN_CAP_EAPD_CAP) != 0) +#define PIN_CAP_IS_DP(c) ((c & PIN_CAP_DP) != 0) +#define PIN_CAP_IS_HBR(c) ((c & PIN_CAP_HBR) != 0) /* PCM support */ #define PCM_8_BIT (1L << 16) @@ -280,9 +309,18 @@ enum pin_dev_type { /* Unsolicited Response */ #define UNSOLRESP_ENABLE (1L << 7) +#define UNSOLRESP_TAG_MASK 0x0000003f +#define UNSOLRESP_TAG_SHIFT 0 /* Pin sense */ #define PIN_SENSE_PRESENCE_DETECT (1L << 31) +#define PIN_SENSE_ELD_VALID (1L << 30) +#define PIN_SENSE_IMPEDANCE_MASK 0x7fffffff +#define PIN_SENSE_IMPEDANCE_SHIFT 0 + +#define PIN_SENSE_IMPEDANCE_INVALID 0x7fffffff +#define PIN_SENSE_SET_CHANNEL_LEFT 0 +#define PIN_SENSE_SET_CHANNEL_RIGHT 1 /* Supported power states */ #define POWER_STATE_D0 (1L << 0)