static void omap_encoder_destroy(struct drm_encoder *encoder) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); DBG("%s", omap_encoder->mgr->name); drm_encoder_cleanup(encoder); kfree(omap_encoder); }
static void omap_encoder_prepare(struct drm_encoder *encoder) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; DBG("%s", omap_encoder->mgr->name); encoder_funcs->dpms(encoder, DRM_MODE_DPMS_OFF); }
static bool omap_encoder_mode_fixup(struct drm_encoder *encoder, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); DBG("%s", omap_encoder->mgr->name); return true; }
static void omap_encoder_commit(struct drm_encoder *encoder) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; DBG("%s", omap_encoder->mgr->name); omap_encoder->mgr->apply(omap_encoder->mgr); encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON); }
static void omap_encoder_dpms(struct drm_encoder *encoder, int mode) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); struct drm_device *dev = encoder->dev; struct omap_gpu_private *priv = dev->dev_private; int i; DBG("%s: %d", omap_encoder->mgr->name, mode); /* managers don't need to do anything for DPMS.. but we do * need to propagate to the connector, who is actually going * to enable/disable as needed: */ for (i = 0; i < priv->num_connectors; i++) { struct drm_connector *connector = priv->connectors[i]; if (connector->encoder == encoder) { omap_connector_dpms(connector, mode); } } }
static void omap_encoder_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); struct drm_device *dev = encoder->dev; struct omap_drm_private *priv = dev->dev_private; int i; mode = adjusted_mode; DBG("%s: set mode: %dx%d", omap_encoder->mgr->name, mode->hdisplay, mode->vdisplay); for (i = 0; i < priv->num_connectors; i++) { struct drm_connector *connector = priv->connectors[i]; if (connector->encoder == encoder) { omap_connector_mode_set(connector, mode); } } }
static void omap_encoder_dpms(struct drm_encoder *encoder, int mode) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); DBG("%s: %d", omap_encoder->mgr->name, mode); }
struct omap_overlay_manager *omap_encoder_get_manager( struct drm_encoder *encoder) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); return omap_encoder->mgr; }
/* maybe this could go away and we just use drm_vblank_wait()? */ int omap_encoder_wait_for_vsync(struct drm_encoder *encoder) { struct omap_encoder *omap_encoder = to_omap_encoder(encoder); DBG("%s", omap_encoder->mgr->name); return omap_encoder->mgr->wait_for_vsync(omap_encoder->mgr); }