* [PATCH 0/2] drm/i915 DP MST audio support in i915 @ 2015-11-06 8:34 libin.yang 2015-11-06 8:34 ` [PATCH 1/2] dp/mst: add SDP stream support libin.yang 2015-11-06 8:34 ` [PATCH 2/2] drm/i915: start adding dp mst audio libin.yang 0 siblings, 2 replies; 4+ messages in thread From: libin.yang @ 2015-11-06 8:34 UTC (permalink / raw) To: intel-gfx, jani.nikula, daniel.vetter, ville.syrjala; +Cc: Libin Yang From: Libin Yang <libin.yang@linux.intel.com> These patches add support for DP MST audio in i915 driver. Patches have been tested on BDW and the result show it won't impact the DP SST and HDMI audio. These patches are ported from Dave's patches. Please check Dave's git tree for original patches: git://people.freedesktop.org/~airlied/linux Libin Yang (2): dp/mst: add SDP stream support drm/i915: start adding dp mst audio drivers/gpu/drm/drm_dp_mst_topology.c | 32 +++++++++++++++++++++++++++++--- drivers/gpu/drm/i915/i915_debugfs.c | 13 +++++++++++++ drivers/gpu/drm/i915/intel_audio.c | 9 ++++++--- drivers/gpu/drm/i915/intel_dp_mst.c | 25 +++++++++++++++++++++++++ include/drm/drm_dp_mst_helper.h | 6 ++++-- 5 files changed, 77 insertions(+), 8 deletions(-) -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] dp/mst: add SDP stream support 2015-11-06 8:34 [PATCH 0/2] drm/i915 DP MST audio support in i915 libin.yang @ 2015-11-06 8:34 ` libin.yang 2015-11-06 9:26 ` kbuild test robot 2015-11-06 8:34 ` [PATCH 2/2] drm/i915: start adding dp mst audio libin.yang 1 sibling, 1 reply; 4+ messages in thread From: libin.yang @ 2015-11-06 8:34 UTC (permalink / raw) To: intel-gfx, jani.nikula, daniel.vetter, ville.syrjala Cc: Dave Airlie, Libin Yang From: Libin Yang <libin.yang@linux.intel.com> This adds code to initialise the SDP streams for a sink in the simplest ordering. I've no idea how you'd want to control the ordering at this level, so don't bother until someone comes up with a use case. Signed-off-by: Libin Yang <libin.yang@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com> --- drivers/gpu/drm/drm_dp_mst_topology.c | 34 +++++++++++++++++++++++++++++++--- include/drm/drm_dp_mst_helper.h | 7 +++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c index 809959d..20d4d2a 100644 --- a/drivers/gpu/drm/drm_dp_mst_topology.c +++ b/drivers/gpu/drm/drm_dp_mst_topology.c @@ -666,7 +666,9 @@ static int build_enum_path_resources(struct drm_dp_sideband_msg_tx *msg, int por } static int build_allocate_payload(struct drm_dp_sideband_msg_tx *msg, int port_num, - u8 vcpi, uint16_t pbn) + u8 vcpi, uint16_t pbn, + u8 number_sdp_streams, + u8 *sdp_stream_sink) { struct drm_dp_sideband_msg_req_body req; memset(&req, 0, sizeof(req)); @@ -674,6 +676,9 @@ static int build_allocate_payload(struct drm_dp_sideband_msg_tx *msg, int port_n req.u.allocate_payload.port_number = port_num; req.u.allocate_payload.vcpi = vcpi; req.u.allocate_payload.pbn = pbn; + req.u.allocate_payload.number_sdp_streams = number_sdp_streams; + memcpy(req.u.allocate_payload.sdp_stream_sink, sdp_stream_sink, + number_sdp_streams); drm_dp_encode_sideband_req(&req, msg); msg->path_msg = true; return 0; @@ -1562,6 +1567,8 @@ static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_sideband_msg_tx *txmsg; struct drm_dp_mst_branch *mstb; int len, ret; + u8 sinks[DRM_DP_MAX_SDP_STREAMS]; + int i; mstb = drm_dp_get_validated_mstb_ref(mgr, port->parent); if (!mstb) @@ -1573,10 +1580,13 @@ static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr, goto fail_put; } + for (i = 0; i < port->num_sdp_streams; i++) + sinks[i] = i; + txmsg->dst = mstb; len = build_allocate_payload(txmsg, port->port_num, id, - pbn); + pbn, port->num_sdp_streams, sinks); drm_dp_queue_down_tx(mgr, txmsg); @@ -2259,6 +2269,23 @@ out: EXPORT_SYMBOL(drm_dp_mst_detect_port); /** + * drm_dp_mst_port_has_audio() + */ +bool drm_dp_mst_port_has_audio(struct drm_dp_mst_topology_mgr *mgr, + struct drm_dp_mst_port *port) +{ + bool ret = false; + + port = drm_dp_get_validated_port_ref(mgr, port); + if (!port) + return ret; + ret = port->has_audio; + drm_dp_put_port(port); + return ret; +} +EXPORT_SYMBOL(drm_dp_mst_port_has_audio); + +/** * drm_dp_mst_get_edid() - get EDID for an MST port * @connector: toplevel connector to get EDID for * @mgr: manager for this port @@ -2283,6 +2310,7 @@ struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_ edid = drm_get_edid(connector, &port->aux.ddc); drm_mode_connector_set_tile_property(connector); } + port->has_audio = drm_detect_monitor_audio(edid); drm_dp_put_port(port); return edid; } @@ -2566,7 +2594,7 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m, seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports); list_for_each_entry(port, &mstb->ports, next) { - seq_printf(m, "%sport: %d: ddps: %d ldps: %d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port, port->connector); + seq_printf(m, "%sport: %d: ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector); if (port->mstb) drm_dp_mst_dump_mstb(m, port->mstb); } diff --git a/include/drm/drm_dp_mst_helper.h b/include/drm/drm_dp_mst_helper.h index 5340099..74b5888 100644 --- a/include/drm/drm_dp_mst_helper.h +++ b/include/drm/drm_dp_mst_helper.h @@ -94,6 +94,7 @@ struct drm_dp_mst_port { struct drm_dp_mst_topology_mgr *mgr; struct edid *cached_edid; /* for DP logical ports - make tiling work */ + bool has_audio; }; /** @@ -215,13 +216,13 @@ struct drm_dp_sideband_msg_rx { struct drm_dp_sideband_msg_hdr initial_hdr; }; - +#define DRM_DP_MAX_SDP_STREAMS 16 struct drm_dp_allocate_payload { u8 port_number; u8 number_sdp_streams; u8 vcpi; u16 pbn; - u8 sdp_stream_sink[8]; + u8 sdp_stream_sink[DRM_DP_MAX_SDP_STREAMS]; }; struct drm_dp_allocate_payload_ack_reply { @@ -484,6 +485,8 @@ int drm_dp_mst_hpd_irq(struct drm_dp_mst_topology_mgr *mgr, u8 *esi, bool *handl enum drm_connector_status drm_dp_mst_detect_port(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port); +bool drm_dp_mst_port_has_audio(struct drm_dp_mst_topology_mgr *mgr, + struct drm_dp_mst_port *port); struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port); -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] dp/mst: add SDP stream support 2015-11-06 8:34 ` [PATCH 1/2] dp/mst: add SDP stream support libin.yang @ 2015-11-06 9:26 ` kbuild test robot 0 siblings, 0 replies; 4+ messages in thread From: kbuild test robot @ 2015-11-06 9:26 UTC (permalink / raw) Cc: intel-gfx, kbuild-all, Dave Airlie, daniel.vetter, Libin Yang [-- Attachment #1: Type: text/plain, Size: 19832 bytes --] Hi Libin, [auto build test WARNING on drm/drm-next] [also build test WARNING on v4.3 next-20151106] [cannot apply to drm-intel/for-linux-next] url: https://github.com/0day-ci/linux/commits/libin-yang-linux-intel-com/drm-i915-DP-MST-audio-support-in-i915/20151106-163857 base: git://people.freedesktop.org/~airlied/linux.git drm-next reproduce: make htmldocs All warnings (new ones prefixed by >>): drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt' include/drm/drm_crtc.h:310: warning: No description found for parameter 'mode_blob' include/drm/drm_crtc.h:737: warning: No description found for parameter 'tile_blob_ptr' include/drm/drm_crtc.h:776: warning: No description found for parameter 'rotation' include/drm/drm_crtc.h:872: warning: No description found for parameter 'mutex' include/drm/drm_crtc.h:872: warning: No description found for parameter 'helper_private' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tile_idr' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'delayed_event' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'edid_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dpms_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'path_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tile_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'plane_type_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'rotation_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_x' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_y' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_w' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_src_h' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_x' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_y' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_w' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_h' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_fb_id' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_crtc_id' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_active' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'prop_mode_id' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dvi_i_subconnector_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dvi_i_select_subconnector_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_subconnector_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_select_subconnector_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_mode_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_left_margin_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_right_margin_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_top_margin_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_bottom_margin_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_brightness_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_contrast_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_flicker_reduction_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_overscan_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_saturation_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'tv_hue_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'scaling_mode_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'aspect_ratio_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'dirty_info_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'suggested_x_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'suggested_y_property' include/drm/drm_crtc.h:1157: warning: No description found for parameter 'allow_fb_modifiers' include/drm/drm_fb_helper.h:148: warning: No description found for parameter 'connector_info' include/drm/drm_dp_helper.h:713: warning: No description found for parameter 'i2c_nack_count' include/drm/drm_dp_helper.h:713: warning: No description found for parameter 'i2c_defer_count' drivers/gpu/drm/drm_dp_mst_topology.c:2237: warning: No description found for parameter 'connector' >> drivers/gpu/drm/drm_dp_mst_topology.c:2276: warning: No description found for parameter 'mgr' >> drivers/gpu/drm/drm_dp_mst_topology.c:2276: warning: No description found for parameter 'port' include/drm/drm_dp_mst_helper.h:98: warning: No description found for parameter 'cached_edid' >> include/drm/drm_dp_mst_helper.h:98: warning: No description found for parameter 'has_audio' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'max_dpcd_transaction_bytes' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'sink_count' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'total_slots' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'avail_slots' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'total_pbn' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'qlock' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_msg_downq' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_msg_upq' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_down_in_progress' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_up_in_progress' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payload_lock' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'proposed_vcpis' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payloads' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'payload_mask' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'vcpi_mask' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_waitq' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'work' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'tx_work' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_list' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_lock' include/drm/drm_dp_mst_helper.h:472: warning: No description found for parameter 'destroy_connector_work' drivers/gpu/drm/drm_dp_mst_topology.c:2237: warning: No description found for parameter 'connector' >> drivers/gpu/drm/drm_dp_mst_topology.c:2276: warning: No description found for parameter 'mgr' >> drivers/gpu/drm/drm_dp_mst_topology.c:2276: warning: No description found for parameter 'port' drivers/gpu/drm/drm_irq.c:173: warning: No description found for parameter 'flags' include/drm/drmP.h:168: warning: No description found for parameter 'fmt' include/drm/drmP.h:184: warning: No description found for parameter 'fmt' include/drm/drmP.h:202: warning: No description found for parameter 'fmt' include/drm/drmP.h:247: warning: No description found for parameter 'dev' include/drm/drmP.h:247: warning: No description found for parameter 'data' include/drm/drmP.h:247: warning: No description found for parameter 'file_priv' include/drm/drmP.h:280: warning: No description found for parameter 'ioctl' include/drm/drmP.h:280: warning: No description found for parameter '_func' include/drm/drmP.h:280: warning: No description found for parameter '_flags' include/drm/drmP.h:353: warning: cannot understand function prototype: 'struct drm_lock_data ' include/drm/drmP.h:406: warning: cannot understand function prototype: 'struct drm_driver ' include/drm/drmP.h:656: warning: cannot understand function prototype: 'struct drm_info_list ' include/drm/drmP.h:666: warning: cannot understand function prototype: 'struct drm_info_node ' include/drm/drmP.h:676: warning: cannot understand function prototype: 'struct drm_minor ' include/drm/drmP.h:724: warning: cannot understand function prototype: 'struct drm_device ' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'wedged' drivers/gpu/drm/i915/i915_irq.c:2584: warning: No description found for parameter 'fmt' drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:421: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:686: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'args' drivers/gpu/drm/i915/i915_gem.c:767: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:1029: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:1194: warning: No description found for parameter 'rps' drivers/gpu/drm/i915/i915_gem.c:1400: warning: No description found for parameter 'req' drivers/gpu/drm/i915/i915_gem.c:1435: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:1435: warning: No description found for parameter 'readonly' drivers/gpu/drm/i915/i915_gem.c:1558: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:1558: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:1558: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:1621: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:1621: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:1621: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:1666: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:1666: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:1666: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:1954: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:1954: warning: No description found for parameter 'size' drivers/gpu/drm/i915/i915_gem.c:1954: warning: No description found for parameter 'tiling_mode' drivers/gpu/drm/i915/i915_gem.c:1954: warning: No description found for parameter 'fenced' drivers/gpu/drm/i915/i915_gem.c:1954: warning: Excess function parameter 'obj' description in 'i915_gem_get_gtt_alignment' drivers/gpu/drm/i915/i915_gem.c:2817: warning: No description found for parameter 'ring' drivers/gpu/drm/i915/i915_gem.c:2946: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:2996: warning: No description found for parameter 'dev' drivers/gpu/drm/i915/i915_gem.c:2996: warning: No description found for parameter 'data' drivers/gpu/drm/i915/i915_gem.c:2996: warning: No description found for parameter 'file' drivers/gpu/drm/i915/i915_gem.c:2996: warning: Excess function parameter 'DRM_IOCTL_ARGS' description in 'i915_gem_wait_ioctl' drivers/gpu/drm/i915/i915_gem.c:3365: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:3365: warning: No description found for parameter 'vm' drivers/gpu/drm/i915/i915_gem.c:3365: warning: No description found for parameter 'ggtt_view' drivers/gpu/drm/i915/i915_gem.c:3365: warning: No description found for parameter 'alignment' drivers/gpu/drm/i915/i915_gem.c:3365: warning: No description found for parameter 'flags' drivers/gpu/drm/i915/i915_gem.c:3600: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:3600: warning: No description found for parameter 'write' drivers/gpu/drm/i915/i915_gem.c:3675: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:3675: warning: No description found for parameter 'cache_level' drivers/gpu/drm/i915/i915_gem.c:3949: warning: No description found for parameter 'obj' drivers/gpu/drm/i915/i915_gem.c:3949: warning: No description found for parameter 'write' drivers/gpu/drm/i915/intel_lrc.c:871: warning: No description found for parameter 'params' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'dev' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'file' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'ring' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'ctx' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'batch_obj' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'exec_start' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'dispatch_flags' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: No description found for parameter 'params' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'dev' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'file' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'ring' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'ctx' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'batch_obj' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'exec_start' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_lrc.c:871: warning: Excess function parameter 'dispatch_flags' description in 'intel_execlists_submission' drivers/gpu/drm/i915/intel_guc_loader.c:1: warning: no structured comments found Was looking for 'GuC-specific firmware loader'. drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: No description found for parameter 'rq' drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: Excess function parameter 'ctx' description in 'i915_guc_submit' drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: Excess function parameter 'ring' description in 'i915_guc_submit' drivers/gpu/drm/i915/i915_guc_submission.c:741: warning: No description found for parameter 'ctx' drivers/gpu/drm/i915/i915_guc_submission.c:1: warning: no structured comments found Was looking for 'GuC-based command submissison'. drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: No description found for parameter 'rq' drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: Excess function parameter 'ctx' description in 'i915_guc_submit' drivers/gpu/drm/i915/i915_guc_submission.c:598: warning: Excess function parameter 'ring' description in 'i915_guc_submit' drivers/gpu/drm/i915/i915_guc_submission.c:741: warning: No description found for parameter 'ctx' vim +/mgr +2276 drivers/gpu/drm/drm_dp_mst_topology.c 2231 * 2232 * This returns the current connection state for a port. It validates the 2233 * port pointer still exists so the caller doesn't require a reference 2234 */ 2235 enum drm_connector_status drm_dp_mst_detect_port(struct drm_connector *connector, 2236 struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port) > 2237 { 2238 enum drm_connector_status status = connector_status_disconnected; 2239 2240 /* we need to search for the port in the mgr in case its gone */ 2241 port = drm_dp_get_validated_port_ref(mgr, port); 2242 if (!port) 2243 return connector_status_disconnected; 2244 2245 if (!port->ddps) 2246 goto out; 2247 2248 switch (port->pdt) { 2249 case DP_PEER_DEVICE_NONE: 2250 case DP_PEER_DEVICE_MST_BRANCHING: 2251 break; 2252 2253 case DP_PEER_DEVICE_SST_SINK: 2254 status = connector_status_connected; 2255 /* for logical ports - cache the EDID */ 2256 if (port->port_num >= 8 && !port->cached_edid) { 2257 port->cached_edid = drm_get_edid(connector, &port->aux.ddc); 2258 } 2259 break; 2260 case DP_PEER_DEVICE_DP_LEGACY_CONV: 2261 if (port->ldps) 2262 status = connector_status_connected; 2263 break; 2264 } 2265 out: 2266 drm_dp_put_port(port); 2267 return status; 2268 } 2269 EXPORT_SYMBOL(drm_dp_mst_detect_port); 2270 2271 /** 2272 * drm_dp_mst_port_has_audio() 2273 */ 2274 bool drm_dp_mst_port_has_audio(struct drm_dp_mst_topology_mgr *mgr, 2275 struct drm_dp_mst_port *port) > 2276 { 2277 bool ret = false; 2278 2279 port = drm_dp_get_validated_port_ref(mgr, port); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/octet-stream, Size: 6062 bytes --] [-- Attachment #3: Type: text/plain, Size: 159 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] drm/i915: start adding dp mst audio 2015-11-06 8:34 [PATCH 0/2] drm/i915 DP MST audio support in i915 libin.yang 2015-11-06 8:34 ` [PATCH 1/2] dp/mst: add SDP stream support libin.yang @ 2015-11-06 8:34 ` libin.yang 1 sibling, 0 replies; 4+ messages in thread From: libin.yang @ 2015-11-06 8:34 UTC (permalink / raw) To: intel-gfx, jani.nikula, daniel.vetter, ville.syrjala Cc: Dave Airlie, Libin Yang From: Libin Yang <libin.yang@linux.intel.com> This patch adds support for DP MST audio in i915. Enable audio codec when DP MST is enabled if has_audio flag is set. Disable audio codec when DP MST is disabled if has_audio flag is set. Signed-off-by: Libin Yang <libin.yang@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com> --- drivers/gpu/drm/i915/i915_debugfs.c | 14 ++++++++++++++ drivers/gpu/drm/i915/intel_audio.c | 9 ++++++--- drivers/gpu/drm/i915/intel_dp_mst.c | 25 +++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 5659d4c..38c7a5d 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c @@ -2873,6 +2873,18 @@ static void intel_dp_info(struct seq_file *m, intel_panel_info(m, &intel_connector->panel); } +static void intel_dp_mst_info(struct seq_file *m, + struct intel_connector *intel_connector) +{ + struct intel_encoder *intel_encoder = intel_connector->encoder; + struct intel_dp_mst_encoder *intel_mst = + enc_to_mst(&intel_encoder->base); + struct intel_digital_port *intel_dig_port = intel_mst->primary; + struct intel_dp *intel_dp = &intel_dig_port->dp; + + seq_printf(m, "\taudio support: %s\n", drm_dp_mst_port_has_audio(&intel_dp->mst_mgr, intel_connector->port) ? "yes" : "no"); +} + static void intel_hdmi_info(struct seq_file *m, struct intel_connector *intel_connector) { @@ -2916,6 +2928,8 @@ static void intel_connector_info(struct seq_file *m, intel_hdmi_info(m, intel_connector); else if (intel_encoder->type == INTEL_OUTPUT_LVDS) intel_lvds_info(m, intel_connector); + else if (intel_encoder->type == INTEL_OUTPUT_DP_MST) + intel_dp_mst_info(m, intel_connector); } seq_printf(m, "\tmodes:\n"); diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c index 63d4706..07b2aa6 100644 --- a/drivers/gpu/drm/i915/intel_audio.c +++ b/drivers/gpu/drm/i915/intel_audio.c @@ -262,7 +262,8 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder) tmp |= AUD_CONFIG_N_PROG_ENABLE; tmp &= ~AUD_CONFIG_UPPER_N_MASK; tmp &= ~AUD_CONFIG_LOWER_N_MASK; - if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) + if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DP_MST)) tmp |= AUD_CONFIG_N_VALUE_INDEX; I915_WRITE(HSW_AUD_CFG(pipe), tmp); @@ -478,7 +479,8 @@ static void ilk_audio_codec_enable(struct drm_connector *connector, tmp &= ~AUD_CONFIG_N_VALUE_INDEX; tmp &= ~AUD_CONFIG_N_PROG_ENABLE; tmp &= ~AUD_CONFIG_PIXEL_CLOCK_HDMI_MASK; - if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) + if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DP_MST)) tmp |= AUD_CONFIG_N_VALUE_INDEX; else tmp |= audio_config_hdmi_pixel_clock(adjusted_mode); @@ -516,7 +518,8 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder) /* ELD Conn_Type */ connector->eld[5] &= ~(3 << 2); - if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_DP_MST)) connector->eld[5] |= (1 << 2); connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2; diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 0639275..4ded0fb 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -78,6 +78,8 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, return false; } + if (drm_dp_mst_port_has_audio(&intel_dp->mst_mgr, found->port)) + pipe_config->has_audio = true; mst_pbn = drm_dp_calc_pbn_mode(adjusted_mode->crtc_clock, bpp); pipe_config->pbn = mst_pbn; @@ -102,6 +104,11 @@ static void intel_mst_disable_dp(struct intel_encoder *encoder) struct intel_dp_mst_encoder *intel_mst = enc_to_mst(&encoder->base); struct intel_digital_port *intel_dig_port = intel_mst->primary; struct intel_dp *intel_dp = &intel_dig_port->dp; + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = encoder->base.crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int ret; DRM_DEBUG_KMS("%d\n", intel_dp->active_mst_links); @@ -112,6 +119,10 @@ static void intel_mst_disable_dp(struct intel_encoder *encoder) if (ret) { DRM_ERROR("failed to update payload %d\n", ret); } + if (intel_crtc->config->has_audio) { + intel_audio_codec_disable(encoder); + intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO); + } } static void intel_mst_post_disable_dp(struct intel_encoder *encoder) @@ -214,6 +225,7 @@ static void intel_mst_enable_dp(struct intel_encoder *encoder) struct intel_dp *intel_dp = &intel_dig_port->dp; struct drm_device *dev = intel_dig_port->base.base.dev; struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); enum port port = intel_dig_port->port; int ret; @@ -226,6 +238,13 @@ static void intel_mst_enable_dp(struct intel_encoder *encoder) ret = drm_dp_check_act_status(&intel_dp->mst_mgr); ret = drm_dp_update_payload_part2(&intel_dp->mst_mgr); + + if (crtc->config->has_audio) { + DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", + pipe_name(crtc->pipe)); + intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO); + intel_audio_codec_enable(encoder); + } } static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder, @@ -251,6 +270,12 @@ static void intel_dp_mst_enc_get_config(struct intel_encoder *encoder, pipe_config->has_dp_encoder = true; + if (intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_AUDIO)) { + temp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD); + if (temp & AUDIO_OUTPUT_ENABLE(crtc->pipe)) + pipe_config->has_audio = true; + } + temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); if (temp & TRANS_DDI_PHSYNC) flags |= DRM_MODE_FLAG_PHSYNC; -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-11-06 9:29 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-11-06 8:34 [PATCH 0/2] drm/i915 DP MST audio support in i915 libin.yang 2015-11-06 8:34 ` [PATCH 1/2] dp/mst: add SDP stream support libin.yang 2015-11-06 9:26 ` kbuild test robot 2015-11-06 8:34 ` [PATCH 2/2] drm/i915: start adding dp mst audio libin.yang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox