On Wed, May 09, 2012 at 03:37:30PM -0300, Eugeni Dodonov wrote: > Move intel_hdmi data structure and support functions to a shared location, > to allow their usage from intel_ddi module. > > Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org> > Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com> > --- > drivers/gpu/drm/i915/intel_drv.h | 19 ++++++++++++++++++- > drivers/gpu/drm/i915/intel_hdmi.c | 19 +++---------------- > 2 files changed, 21 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index fd96ffb..afdd74f 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -290,6 +290,19 @@ struct dip_infoframe { > } __attribute__ ((packed)) body; > } __attribute__((packed)); > > +struct intel_hdmi { > + struct intel_encoder base; > + u32 sdvox_reg; > + int ddc_bus; > + int ddi_port; > + uint32_t color_range; > + bool has_hdmi_sink; > + bool has_audio; > + enum hdmi_force_audio force_audio; > + void (*write_infoframe)(struct drm_encoder *encoder, > + struct dip_infoframe *frame); > +}; I do wonder whether we shouldn't create an intel_digital_encoder struct to control all this funny infoframe writing, many of the flags in there (like has_hdmi_sink, has_audio) and similar stuff. But I guess that can wait until we have working infoframe support on display ports and working display port on ddi links. When that all landed we should see much clearer how to best structure the code. -Daniel > + > static inline struct drm_crtc * > intel_get_crtc_for_pipe(struct drm_device *dev, int pipe) > { > @@ -329,7 +342,11 @@ extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector) > > extern void intel_crt_init(struct drm_device *dev); > extern void intel_hdmi_init(struct drm_device *dev, int sdvox_reg); > -void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); > +extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); > +extern void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, > + struct drm_display_mode *adjusted_mode); > +extern void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder); > +extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); > extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, > bool is_sdvob); > extern void intel_dvo_init(struct drm_device *dev); > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index 251ed22..77c92fb 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -37,20 +37,7 @@ > #include "i915_drm.h" > #include "i915_drv.h" > > -struct intel_hdmi { > - struct intel_encoder base; > - u32 sdvox_reg; > - int ddc_bus; > - int ddi_port; > - uint32_t color_range; > - bool has_hdmi_sink; > - bool has_audio; > - enum hdmi_force_audio force_audio; > - void (*write_infoframe)(struct drm_encoder *encoder, > - struct dip_infoframe *frame); > -}; > - > -static struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder) > +struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder) > { > return container_of(encoder, struct intel_hdmi, base.base); > } > @@ -354,7 +341,7 @@ static void intel_set_infoframe(struct drm_encoder *encoder, > intel_hdmi->write_infoframe(encoder, frame); > } > > -static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, > +void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, > struct drm_display_mode *adjusted_mode) > { > struct dip_infoframe avi_if = { > @@ -369,7 +356,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, > intel_set_infoframe(encoder, &avi_if); > } > > -static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder) > +void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder) > { > struct dip_infoframe spd_if; > > -- > 1.7.10 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Mail: daniel at ffwll.ch Mobile: +41 (0)79 365 57 48