static int __maybe_unused xylon_drm_pm_suspend(struct device *dev) { struct xylon_drm_device *xdev = dev_get_drvdata(dev); drm_kms_helper_poll_disable(xdev->dev); drm_helper_connector_dpms(xdev->connector, DRM_MODE_DPMS_SUSPEND); return 0; }
static int __maybe_unused xylon_drm_pm_resume(struct device *dev) { struct xylon_drm_device *xdev = dev_get_drvdata(dev); drm_helper_connector_dpms(xdev->connector, DRM_MODE_DPMS_ON); drm_kms_helper_poll_enable(xdev->dev); return 0; }
static void omap_connector_dpms(struct drm_connector *connector, int mode) { struct omap_connector *omap_connector = to_omap_connector(connector); struct omap_dss_device *dssdev = omap_connector->dssdev; int old_dpms; DBG("%s: %d", dssdev->name, mode); old_dpms = connector->dpms; if (mode < old_dpms) drm_helper_connector_dpms(connector, mode); if (mode == DRM_MODE_DPMS_ON) { switch (dssdev->state) { case OMAP_DSS_DISPLAY_SUSPENDED: dssdev->activate_after_resume = true; break; case OMAP_DSS_DISPLAY_DISABLED: { int ret = dssdev->driver->enable(dssdev); if (ret) { DBG("%s: failed to enable: %d", dssdev->name, ret); dssdev->driver->disable(dssdev); } break; } default: break; } } else { } if (mode > old_dpms) drm_helper_connector_dpms(connector, mode); }
static void exynos_drm_connector_dpms(struct drm_connector *connector, int mode) { /* * in case that drm_crtc_helper_set_mode() is called, * encoder/crtc->funcs->dpms() will be just returned * because they already were DRM_MODE_DPMS_ON so only * exynos_drm_display_power() will be called. */ drm_helper_connector_dpms(connector, mode); exynos_drm_display_power(connector, mode); }
int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu, struct rcar_du_encoder *renc, /* TODO const */ struct device_node *np) { struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(renc); struct rcar_du_lvds_connector *lvdscon; struct drm_connector *connector; struct display_timing timing; int ret; lvdscon = devm_kzalloc(rcdu->dev, sizeof(*lvdscon), GFP_KERNEL); if (lvdscon == NULL) return -ENOMEM; ret = of_get_display_timing(np, "panel-timing", &timing); if (ret < 0) return ret; videomode_from_timing(&timing, &lvdscon->panel.mode); of_property_read_u32(np, "width-mm", &lvdscon->panel.width_mm); of_property_read_u32(np, "height-mm", &lvdscon->panel.height_mm); connector = &lvdscon->connector.connector; connector->display_info.width_mm = lvdscon->panel.width_mm; connector->display_info.height_mm = lvdscon->panel.height_mm; ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, DRM_MODE_CONNECTOR_LVDS); if (ret < 0) return ret; drm_connector_helper_add(connector, &connector_helper_funcs); ret = drm_connector_register(connector); if (ret < 0) return ret; drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); drm_object_property_set_value(&connector->base, rcdu->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); ret = drm_mode_connector_attach_encoder(connector, encoder); if (ret < 0) return ret; connector->encoder = encoder; lvdscon->connector.encoder = renc; return 0; }
int shmob_drm_connector_create(struct shmob_drm_device *sdev, struct drm_encoder *encoder) { struct drm_connector *connector = &sdev->connector.connector; int ret; sdev->connector.encoder = encoder; connector->display_info.width_mm = sdev->pdata->panel.width_mm; connector->display_info.height_mm = sdev->pdata->panel.height_mm; ret = drm_connector_init(sdev->ddev, connector, &connector_funcs, DRM_MODE_CONNECTOR_LVDS); if (ret < 0) return ret; drm_connector_helper_add(connector, &connector_helper_funcs); ret = drm_connector_register(connector); if (ret < 0) goto err_cleanup; ret = shmob_drm_backlight_init(&sdev->connector); if (ret < 0) goto err_sysfs; ret = drm_mode_connector_attach_encoder(connector, encoder); if (ret < 0) goto err_backlight; drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); drm_object_property_set_value(&connector->base, sdev->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); return 0; err_backlight: shmob_drm_backlight_exit(&sdev->connector); err_sysfs: drm_connector_unregister(connector); err_cleanup: drm_connector_cleanup(connector); return ret; }
int rcar_du_hdmi_connector_init(struct rcar_du_device *rcdu, struct rcar_du_encoder *renc) { struct rcar_du_connector *rcon; struct drm_connector *connector; int ret; rcon = devm_kzalloc(rcdu->dev, sizeof(*rcon), GFP_KERNEL); if (rcon == NULL) return -ENOMEM; connector = &rcon->connector; connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; connector->interlace_allowed = true; ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, DRM_MODE_CONNECTOR_HDMIA); if (ret < 0) return ret; drm_connector_helper_add(connector, &connector_helper_funcs); ret = drm_sysfs_connector_add(connector); if (ret < 0) return ret; drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); drm_object_property_set_value(&connector->base, rcdu->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); ret = drm_mode_connector_attach_encoder(connector, renc->encoder); if (ret < 0) return ret; connector->encoder = renc->encoder; rcon->encoder = renc; return 0; }
int rcar_du_hdmi_connector_init(struct rcar_du_device *rcdu, struct rcar_du_encoder *renc) { struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(renc); struct rcar_du_connector *rcon; struct drm_connector *connector; int ret; rcon = devm_kzalloc(rcdu->dev, sizeof(*rcon), GFP_KERNEL); if (rcon == NULL) return -ENOMEM; connector = &rcon->connector; connector->display_info.width_mm = 0; connector->display_info.height_mm = 0; ret = drm_connector_init(rcdu->ddev, connector, &connector_funcs, DRM_MODE_CONNECTOR_HDMIA); if (ret < 0) return ret; drm_connector_helper_add(connector, &connector_helper_funcs); ret = drm_connector_register(connector); if (ret < 0) return ret; drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); drm_object_property_set_value(&connector->base, rcdu->ddev->mode_config.dpms_property, DRM_MODE_DPMS_OFF); ret = drm_mode_connector_attach_encoder(connector, encoder); if (ret < 0) return ret; connector->encoder = encoder; rcon->encoder = renc; return 0; }
static void jzdrm_connector_dpms(struct drm_connector *connector, int mode) { jzdrm_connector_power(connector, mode); drm_helper_connector_dpms(connector, mode); }