Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69b6da1d authored by Shubham Talekar's avatar Shubham Talekar Committed by Gerrit - the friendly Code Review server
Browse files

drm: drm bootsplash enable for display port



This change contain change related to drm bootsplash on
display port. After handling HPD connection state, call
drm client register function but before framework is ready.

Change-Id: I50552a5ec2f5b69edff9d6a5c59759bcafd9e37b
Signed-off-by: default avatarShubham Talekar <stalek@codeaurora.org>
parent cb89c20c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ static int drm_bootsplash_display_probe(struct drm_bootsplash *splash)
	bool tiled = false;
	int ret;

	ret = drm_client_modeset_probe(client, 0, 0);
	ret = drm_client_modeset_probe(client, 1920, 1080);
	if (ret)
		return ret;

+15 −5
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/of_irq.h>
#include <linux/hdcp_qseecom.h>

#include <drm/drm_client.h>
#include "sde_connector.h"

#include "msm_drv.h"
@@ -98,6 +99,8 @@ static const struct of_device_id dp_dt_match[] = {
	{}
};

static void dp_display_update_hdcp_info(struct dp_display_private *dp);

static bool dp_display_framework_ready(struct dp_display_private *dp)
{
	return dp->dp_display.post_open ? false : true;
@@ -143,6 +146,13 @@ static void dp_display_hdcp_cb_work(struct work_struct *work)

	dp = container_of(dw, struct dp_display_private, hdcp_cb_work);

	dp_display_update_hdcp_info(dp);

	if (!dp_display_is_hdcp_enabled(dp))
		return;

	dp->link->hdcp_status.hdcp_state = HDCP_STATE_AUTHENTICATING;

	rc = dp->catalog->ctrl.read_hdcp_status(&dp->catalog->ctrl);
	if (rc >= 0) {
		hdcp_auth_state = (rc >> 20) & 0x3;
@@ -467,8 +477,11 @@ static int dp_display_send_hpd_notification(struct dp_display_private *dp,

	dp->dp_display.is_connected = hpd;

	if (!dp_display_framework_ready(dp))
	if (!dp_display_framework_ready(dp)) {
		pr_err("%s: dp display framework not ready\n", __func__);
		drm_client_dev_register(dp->dp_display.drm_dev);
		return ret;
	}

	dp->aux->state |= DP_STATE_NOTIFICATION_SENT;

@@ -1142,12 +1155,9 @@ static int dp_display_post_enable(struct dp_display *dp_display)
		dp->audio_status = dp->audio->on(dp->audio);
	}

	dp_display_update_hdcp_info(dp);

	if (dp_display_is_hdcp_enabled(dp)) {
	if (dp->hdcp.feature_enabled && 0) { /* bootsplash check */
		cancel_delayed_work_sync(&dp->hdcp_cb_work);

		dp->link->hdcp_status.hdcp_state = HDCP_STATE_AUTHENTICATING;
		queue_delayed_work(dp->wq, &dp->hdcp_cb_work, HZ / 2);
	}

+0 −2
Original line number Diff line number Diff line
@@ -693,8 +693,6 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)

	drm_mode_config_reset(ddev);

	drm_client_dev_register(ddev);

	if (kms && kms->funcs && kms->funcs->cont_splash_config) {
		ret = kms->funcs->cont_splash_config(kms);
		if (ret) {