Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gma500: Initial support for our encoder and connector structs

First step towards adding i915 alike encoder and connector abstractions. This
will make life easier when adding i915 output code into our driver. It also
removes the old psb_intel_output struct.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by

Patrik Jakobsson and committed by
Dave Airlie
75e9d019 9e38a661

+32 -15
+7
drivers/gpu/drm/gma500/psb_intel_display.c
··· 1429 1429 return &psb_intel_output->enc; 1430 1430 } 1431 1431 1432 + void psb_intel_connector_attach_encoder(struct psb_intel_connector *connector, 1433 + struct psb_intel_encoder *encoder) 1434 + { 1435 + connector->encoder = encoder; 1436 + drm_mode_connector_attach_encoder(&connector->base, 1437 + &encoder->base); 1438 + }
+25 -15
drivers/gpu/drm/gma500/psb_intel_drv.h
··· 93 93 u8 slave_addr; 94 94 }; 95 95 96 - struct psb_intel_output { 97 - struct drm_connector base; 98 - 99 - struct drm_encoder enc; 96 + struct psb_intel_encoder { 97 + struct drm_encoder base; 100 98 int type; 99 + bool needs_tv_clock; 100 + void (*hot_plug)(struct psb_intel_encoder *); 101 + int crtc_mask; 102 + int clone_mask; 103 + void *dev_priv; /* For sdvo_priv, lvds_priv, etc... */ 104 + }; 101 105 102 - struct psb_intel_i2c_chan *i2c_bus; /* for control functions */ 103 - struct psb_intel_i2c_chan *ddc_bus; /* for DDC only stuff */ 104 - bool load_detect_temp; 105 - void *dev_priv; 106 - 107 - struct psb_intel_mode_device *mode_dev; 108 - struct i2c_adapter *hdmi_i2c_adapter; /* for control functions */ 106 + struct psb_intel_connector { 107 + struct drm_connector base; 108 + struct psb_intel_encoder *encoder; 109 109 }; 110 110 111 111 struct psb_intel_crtc_state { ··· 156 156 157 157 #define to_psb_intel_crtc(x) \ 158 158 container_of(x, struct psb_intel_crtc, base) 159 - #define to_psb_intel_output(x) \ 160 - container_of(x, struct psb_intel_output, base) 161 - #define enc_to_psb_intel_output(x) \ 162 - container_of(x, struct psb_intel_output, enc) 159 + #define to_psb_intel_connector(x) \ 160 + container_of(x, struct psb_intel_connector, base) 161 + #define to_psb_intel_encoder(x) \ 162 + container_of(x, struct psb_intel_encoder, base) 163 163 #define to_psb_intel_framebuffer(x) \ 164 164 container_of(x, struct psb_intel_framebuffer, base) 165 165 ··· 189 189 extern void psb_intel_crtc_load_lut(struct drm_crtc *crtc); 190 190 extern void psb_intel_encoder_prepare(struct drm_encoder *encoder); 191 191 extern void psb_intel_encoder_commit(struct drm_encoder *encoder); 192 + 193 + static inline struct psb_intel_encoder *psb_intel_attached_encoder( 194 + struct drm_connector *connector) 195 + { 196 + return to_psb_intel_connector(connector)->encoder; 197 + } 198 + 199 + extern void psb_intel_connector_attach_encoder( 200 + struct psb_intel_connector *connector, 201 + struct psb_intel_encoder *encoder); 192 202 193 203 extern struct drm_encoder *psb_intel_best_encoder(struct drm_connector 194 204 *connector);