Loading drivers/gpu/drm/gma500/gma_display.c +41 −0 Original line number Diff line number Diff line Loading @@ -519,6 +519,47 @@ void gma_crtc_destroy(struct drm_crtc *crtc) kfree(psb_intel_crtc); } void gma_encoder_prepare(struct drm_encoder *encoder) { struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; /* lvds has its own version of prepare see psb_intel_lvds_prepare */ encoder_funcs->dpms(encoder, DRM_MODE_DPMS_OFF); } void gma_encoder_commit(struct drm_encoder *encoder) { struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; /* lvds has its own version of commit see psb_intel_lvds_commit */ encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON); } void gma_encoder_destroy(struct drm_encoder *encoder) { struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); drm_encoder_cleanup(encoder); kfree(intel_encoder); } /* Currently there is only a 1:1 mapping of encoders and connectors */ struct drm_encoder *gma_best_encoder(struct drm_connector *connector) { struct psb_intel_encoder *psb_intel_encoder = psb_intel_attached_encoder(connector); return &psb_intel_encoder->base; } void gma_connector_attach_encoder(struct psb_intel_connector *connector, struct psb_intel_encoder *encoder) { connector->encoder = encoder; drm_mode_connector_attach_encoder(&connector->base, &encoder->base); } #define GMA_PLL_INVALID(s) { /* DRM_ERROR(s); */ return false; } bool gma_pll_is_valid(struct drm_crtc *crtc, Loading drivers/gpu/drm/gma500/gma_display.h +4 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,10 @@ extern void gma_crtc_commit(struct drm_crtc *crtc); extern void gma_crtc_disable(struct drm_crtc *crtc); extern void gma_crtc_destroy(struct drm_crtc *crtc); extern void gma_encoder_prepare(struct drm_encoder *encoder); extern void gma_encoder_commit(struct drm_encoder *encoder); extern void gma_encoder_destroy(struct drm_encoder *encoder); /* Common clock related functions */ extern const struct gma_limit_t *gma_limit(struct drm_crtc *crtc, int refclk); extern void gma_clock(int refclk, struct gma_clock_t *clock); Loading drivers/gpu/drm/gma500/psb_intel_drv.h +10 −0 Original line number Diff line number Diff line Loading @@ -230,12 +230,22 @@ extern void psb_intel_encoder_prepare(struct drm_encoder *encoder); extern void psb_intel_encoder_commit(struct drm_encoder *encoder); extern void psb_intel_encoder_destroy(struct drm_encoder *encoder); extern struct drm_encoder *gma_best_encoder(struct drm_connector *connector); extern void gma_connector_attach_encoder(struct psb_intel_connector *connector, struct psb_intel_encoder *encoder); static inline struct psb_intel_encoder *psb_intel_attached_encoder( struct drm_connector *connector) { return to_psb_intel_connector(connector)->encoder; } static inline struct psb_intel_encoder *gma_attached_encoder( struct drm_connector *connector) { return to_psb_intel_connector(connector)->encoder; } extern void psb_intel_connector_attach_encoder( struct psb_intel_connector *connector, struct psb_intel_encoder *encoder); Loading Loading
drivers/gpu/drm/gma500/gma_display.c +41 −0 Original line number Diff line number Diff line Loading @@ -519,6 +519,47 @@ void gma_crtc_destroy(struct drm_crtc *crtc) kfree(psb_intel_crtc); } void gma_encoder_prepare(struct drm_encoder *encoder) { struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; /* lvds has its own version of prepare see psb_intel_lvds_prepare */ encoder_funcs->dpms(encoder, DRM_MODE_DPMS_OFF); } void gma_encoder_commit(struct drm_encoder *encoder) { struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; /* lvds has its own version of commit see psb_intel_lvds_commit */ encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON); } void gma_encoder_destroy(struct drm_encoder *encoder) { struct psb_intel_encoder *intel_encoder = to_psb_intel_encoder(encoder); drm_encoder_cleanup(encoder); kfree(intel_encoder); } /* Currently there is only a 1:1 mapping of encoders and connectors */ struct drm_encoder *gma_best_encoder(struct drm_connector *connector) { struct psb_intel_encoder *psb_intel_encoder = psb_intel_attached_encoder(connector); return &psb_intel_encoder->base; } void gma_connector_attach_encoder(struct psb_intel_connector *connector, struct psb_intel_encoder *encoder) { connector->encoder = encoder; drm_mode_connector_attach_encoder(&connector->base, &encoder->base); } #define GMA_PLL_INVALID(s) { /* DRM_ERROR(s); */ return false; } bool gma_pll_is_valid(struct drm_crtc *crtc, Loading
drivers/gpu/drm/gma500/gma_display.h +4 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,10 @@ extern void gma_crtc_commit(struct drm_crtc *crtc); extern void gma_crtc_disable(struct drm_crtc *crtc); extern void gma_crtc_destroy(struct drm_crtc *crtc); extern void gma_encoder_prepare(struct drm_encoder *encoder); extern void gma_encoder_commit(struct drm_encoder *encoder); extern void gma_encoder_destroy(struct drm_encoder *encoder); /* Common clock related functions */ extern const struct gma_limit_t *gma_limit(struct drm_crtc *crtc, int refclk); extern void gma_clock(int refclk, struct gma_clock_t *clock); Loading
drivers/gpu/drm/gma500/psb_intel_drv.h +10 −0 Original line number Diff line number Diff line Loading @@ -230,12 +230,22 @@ extern void psb_intel_encoder_prepare(struct drm_encoder *encoder); extern void psb_intel_encoder_commit(struct drm_encoder *encoder); extern void psb_intel_encoder_destroy(struct drm_encoder *encoder); extern struct drm_encoder *gma_best_encoder(struct drm_connector *connector); extern void gma_connector_attach_encoder(struct psb_intel_connector *connector, struct psb_intel_encoder *encoder); static inline struct psb_intel_encoder *psb_intel_attached_encoder( struct drm_connector *connector) { return to_psb_intel_connector(connector)->encoder; } static inline struct psb_intel_encoder *gma_attached_encoder( struct drm_connector *connector) { return to_psb_intel_connector(connector)->encoder; } extern void psb_intel_connector_attach_encoder( struct psb_intel_connector *connector, struct psb_intel_encoder *encoder); Loading