On Wed, 03 Aug 2016 04:14:30 +0200, Dhinakaran Pandiyan wrote: > > DP MST provides the capability to send multiple video and audio streams via > one single port. This requires the API's between i915 and audio drivers to > distinguish between audio capable displays connected to a port. This patch > adds this support via an additional parameter 'int dev_id'. The existing > parameter 'port' does not change it's meaning. > > dev_id = > MST : pipe that the stream originates from > Non-MST : -1 > > Affected APIs: > struct i915_audio_component_ops > - int (*sync_audio_rate)(struct device *, int port, int rate); > + int (*sync_audio_rate)(struct device *, int port, int dev_id, > + int rate); > > - int (*get_eld)(struct device *, int port, bool *enabled, > - unsigned char *buf, int max_bytes); > + int (*get_eld)(struct device *, int port, int dev_id, > + bool *enabled, unsigned char *buf, int max_bytes); > > struct i915_audio_component_audio_ops > - void (*pin_eld_notify)(void *audio_ptr, int port); > + void (*pin_eld_notify)(void *audio_ptr, int port, int dev_id); > > This patch makes dummy changes in the audio drivers for build to succeed. OK, so the explicit dev_id will be passed in future change in the audio side, right? It'd be good to write up the grand plan. > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 2 +- > drivers/gpu/drm/i915/intel_audio.c | 82 +++++++++++++++++++++++++++++--------- > include/drm/i915_component.h | 6 +-- > include/sound/hda_i915.h | 11 ++--- > sound/hda/hdac_i915.c | 9 +++-- > sound/pci/hda/patch_hdmi.c | 7 ++-- > 6 files changed, 82 insertions(+), 35 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 65ada5d..8e4c8c8 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2054,7 +2054,7 @@ struct drm_i915_private { > /* perform PHY state sanity checks? */ > bool chv_phy_assert[2]; > > - struct intel_encoder *dig_port_map[I915_MAX_PORTS]; > + struct intel_encoder *av_enc_map[I915_MAX_PIPES]; Better to have a comment for this field. > -static int i915_audio_component_sync_audio_rate(struct device *dev, > - int port, int rate) > +static struct intel_encoder *get_saved_encoder(struct intel_encoder *av_enc_map[], > + int port, int dev_id) > +{ > + > + enum pipe pipe; > + struct drm_encoder *encoder; > + > + if (dev_id >= 0 && dev_id < I915_MAX_PIPES) > + return av_enc_map[dev_id]; Actually dev_id >= I915_MAX_PIPES is an invalid call, and worth to catch with WARN_ON() and bail out. thanks, Takashi _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx