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

Commit 837d0cad authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/dp: fix audio notification path for boot up use case"

parents f95bc909 dee24ac1
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -561,7 +561,10 @@
		vdda-1p2-supply = <&pm660_l1>;
		vdda-0p9-supply = <&pm660l_l1>;

		reg =	<0xae90000 0xa84>,
		reg =	<0xae90000 0x0dc>,
			<0xae90200 0x0c0>,
			<0xae90400 0x508>,
			<0xae90a00 0x094>,
			<0x88eaa00 0x200>,
			<0x88ea200 0x200>,
			<0x88ea600 0x200>,
@@ -570,7 +573,9 @@
			<0x88ea030 0x10>,
			<0x88e8000 0x20>,
			<0x0aee1000 0x034>;
		reg-names = "dp_ctrl", "dp_phy", "dp_ln_tx0", "dp_ln_tx1",
		/* dp_ctrl: dp_ahb, dp_aux, dp_link, dp_p0 */
		reg-names = "dp_ahb", "dp_aux", "dp_link",
			"dp_p0", "dp_phy", "dp_ln_tx0", "dp_ln_tx1",
			"dp_mmss_cc", "qfprom_physical", "dp_pll",
			"usb3_dp_com", "hdcp_physical";

+7 −2
Original line number Diff line number Diff line
@@ -578,7 +578,10 @@
		vdda-1p2-supply = <&pm8998_l26>;
		vdda-0p9-supply = <&pm8998_l1>;

		reg =	<0xae90000 0xa84>,
		reg =	<0xae90000 0x0dc>,
			<0xae90200 0x0c0>,
			<0xae90400 0x508>,
			<0xae90a00 0x094>,
			<0x88eaa00 0x200>,
			<0x88ea200 0x200>,
			<0x88ea600 0x200>,
@@ -587,7 +590,9 @@
			<0x88ea030 0x10>,
			<0x88e8000 0x20>,
			<0x0aee1000 0x034>;
		reg-names = "dp_ctrl", "dp_phy", "dp_ln_tx0", "dp_ln_tx1",
		/* dp_ctrl: dp_ahb, dp_aux, dp_link, dp_p0 */
		reg-names = "dp_ahb", "dp_aux", "dp_link",
			"dp_p0", "dp_phy", "dp_ln_tx0", "dp_ln_tx1",
			"dp_mmss_cc", "qfprom_physical", "dp_pll",
			"usb3_dp_com", "hdcp_physical";

+108 −31
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ struct dp_audio_private {
	u32 channels;

	struct completion hpd_comp;
	struct workqueue_struct *notify_workqueue;
	struct delayed_work notify_delayed_work;

	struct dp_audio dp_audio;
};
@@ -465,12 +467,16 @@ static int dp_audio_info_setup(struct platform_device *pdev,
		goto end;
	}

	mutex_lock(&audio->dp_audio.ops_lock);

	audio->channels = params->num_of_channels;

	dp_audio_setup_sdp(audio);
	dp_audio_setup_acr(audio);
	dp_audio_safe_to_exit_level(audio);
	dp_audio_enable(audio, true);

	mutex_unlock(&audio->dp_audio.ops_lock);
end:
	return rc;
}
@@ -545,7 +551,9 @@ static void dp_audio_teardown_done(struct platform_device *pdev)
	if (IS_ERR(audio))
		return;

	mutex_lock(&audio->dp_audio.ops_lock);
	dp_audio_enable(audio, false);
	mutex_unlock(&audio->dp_audio.ops_lock);

	complete_all(&audio->hpd_comp);

@@ -585,6 +593,24 @@ static int dp_audio_ack_done(struct platform_device *pdev, u32 ack)
	return rc;
}

static int dp_audio_codec_ready(struct platform_device *pdev)
{
	int rc = 0;
	struct dp_audio_private *audio;

	audio = dp_audio_get_data(pdev);
	if (IS_ERR(audio)) {
		pr_err("invalid input\n");
		rc = PTR_ERR(audio);
		goto end;
	}

	queue_delayed_work(audio->notify_workqueue,
			&audio->notify_delayed_work, HZ/4);
end:
	return rc;
}

static int dp_audio_init_ext_disp(struct dp_audio_private *audio)
{
	int rc = 0;
@@ -606,6 +632,7 @@ static int dp_audio_init_ext_disp(struct dp_audio_private *audio)
	ops->get_intf_id        = dp_audio_get_intf_id;
	ops->teardown_done      = dp_audio_teardown_done;
	ops->acknowledge        = dp_audio_ack_done;
	ops->ready              = dp_audio_codec_ready;

	if (!audio->pdev->dev.of_node) {
		pr_err("cannot find audio dev.of_node\n");
@@ -637,6 +664,31 @@ static int dp_audio_init_ext_disp(struct dp_audio_private *audio)
	return rc;
}

static int dp_audio_notify(struct dp_audio_private *audio, u32 state)
{
	int rc = 0;
	struct msm_ext_disp_init_data *ext = &audio->ext_audio_data;

	rc = ext->intf_ops.audio_notify(audio->ext_pdev,
			EXT_DISPLAY_TYPE_DP, state);
	if (rc) {
		pr_err("failed to notify audio. state=%d err=%d\n", state, rc);
		goto end;
	}

	reinit_completion(&audio->hpd_comp);
	rc = wait_for_completion_timeout(&audio->hpd_comp, HZ * 5);
	if (!rc) {
		pr_err("timeout. state=%d err=%d\n", state, rc);
		rc = -ETIMEDOUT;
		goto end;
	}

	pr_debug("success\n");
end:
	return rc;
}

static int dp_audio_on(struct dp_audio *dp_audio)
{
	int rc = 0;
@@ -645,11 +697,14 @@ static int dp_audio_on(struct dp_audio *dp_audio)

	if (!dp_audio) {
		pr_err("invalid input\n");
		rc = -EINVAL;
		goto end;
		return -EINVAL;
	}

	audio = container_of(dp_audio, struct dp_audio_private, dp_audio);
	if (IS_ERR(audio)) {
		pr_err("invalid input\n");
		return -EINVAL;
	}

	ext = &audio->ext_audio_data;

@@ -663,21 +718,9 @@ static int dp_audio_on(struct dp_audio *dp_audio)
		goto end;
	}

	rc = ext->intf_ops.audio_notify(audio->ext_pdev,
			EXT_DISPLAY_TYPE_DP,
			EXT_DISPLAY_CABLE_CONNECT);
	if (rc) {
		pr_err("failed to notify audio, err=%d\n", rc);
		goto end;
	}

	reinit_completion(&audio->hpd_comp);
	rc = wait_for_completion_timeout(&audio->hpd_comp, HZ * 5);
	if (!rc) {
		pr_err("timeout\n");
		rc = -ETIMEDOUT;
	rc = dp_audio_notify(audio, EXT_DISPLAY_CABLE_CONNECT);
	if (rc)
		goto end;
	}

	pr_debug("success\n");
end:
@@ -689,6 +732,7 @@ static int dp_audio_off(struct dp_audio *dp_audio)
	int rc = 0;
	struct dp_audio_private *audio;
	struct msm_ext_disp_init_data *ext;
	bool work_pending = false;

	if (!dp_audio) {
		pr_err("invalid input\n");
@@ -698,21 +742,13 @@ static int dp_audio_off(struct dp_audio *dp_audio)
	audio = container_of(dp_audio, struct dp_audio_private, dp_audio);
	ext = &audio->ext_audio_data;

	rc = ext->intf_ops.audio_notify(audio->ext_pdev,
			EXT_DISPLAY_TYPE_DP,
			EXT_DISPLAY_CABLE_DISCONNECT);
	if (rc) {
		pr_err("failed to notify audio, err=%d\n", rc);
		goto end;
	}
	work_pending = cancel_delayed_work_sync(&audio->notify_delayed_work);
	if (work_pending)
		pr_debug("pending notification work completed\n");

	reinit_completion(&audio->hpd_comp);
	rc = wait_for_completion_timeout(&audio->hpd_comp, HZ * 5);
	if (!rc) {
		pr_err("timeout\n");
		rc = -ETIMEDOUT;
	rc = dp_audio_notify(audio, EXT_DISPLAY_CABLE_DISCONNECT);
	if (rc)
		goto end;
	}

	pr_debug("success\n");
end:
@@ -728,6 +764,35 @@ static int dp_audio_off(struct dp_audio *dp_audio)
	return rc;
}

static void dp_audio_notify_work_fn(struct work_struct *work)
{
	struct dp_audio_private *audio;
	struct delayed_work *dw = to_delayed_work(work);

	audio = container_of(dw, struct dp_audio_private, notify_delayed_work);

	dp_audio_notify(audio, EXT_DISPLAY_CABLE_CONNECT);
}

static int dp_audio_create_notify_workqueue(struct dp_audio_private *audio)
{
	audio->notify_workqueue = create_workqueue("sdm_dp_audio_notify");
	if (IS_ERR_OR_NULL(audio->notify_workqueue)) {
		pr_err("Error creating notify_workqueue\n");
		return -EPERM;
	}

	INIT_DELAYED_WORK(&audio->notify_delayed_work, dp_audio_notify_work_fn);

	return 0;
}

static void dp_audio_destroy_notify_workqueue(struct dp_audio_private *audio)
{
	if (audio->notify_workqueue)
		destroy_workqueue(audio->notify_workqueue);
}

struct dp_audio *dp_audio_get(struct platform_device *pdev,
			struct dp_panel *panel,
			struct dp_catalog_audio *catalog)
@@ -748,6 +813,10 @@ struct dp_audio *dp_audio_get(struct platform_device *pdev,
		goto error;
	}

	rc = dp_audio_create_notify_workqueue(audio);
	if (rc)
		goto error_notify_workqueue;

	init_completion(&audio->hpd_comp);

	audio->pdev = pdev;
@@ -756,18 +825,23 @@ struct dp_audio *dp_audio_get(struct platform_device *pdev,

	dp_audio = &audio->dp_audio;

	mutex_init(&dp_audio->ops_lock);

	dp_audio->on  = dp_audio_on;
	dp_audio->off = dp_audio_off;

	rc = dp_audio_init_ext_disp(audio);
	if (rc) {
		devm_kfree(&pdev->dev, audio);
		goto error;
		goto error_ext_disp;
	}

	catalog->init(catalog);

	return dp_audio;
error_ext_disp:
	dp_audio_destroy_notify_workqueue(audio);
error_notify_workqueue:
	devm_kfree(&pdev->dev, audio);
error:
	return ERR_PTR(rc);
}
@@ -780,6 +854,9 @@ void dp_audio_put(struct dp_audio *dp_audio)
		return;

	audio = container_of(dp_audio, struct dp_audio_private, dp_audio);
	mutex_destroy(&dp_audio->ops_lock);

	dp_audio_destroy_notify_workqueue(audio);

	devm_kfree(&audio->pdev->dev, audio);
}
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ struct dp_audio {
	u32 lane_count;
	u32 bw_code;

	struct mutex ops_lock;

	/**
	 * on()
	 *
+91 −40
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ static u32 dp_catalog_aux_read_data(struct dp_catalog_aux *aux)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	return dp_read(base + DP_AUX_DATA);
end:
@@ -104,7 +104,7 @@ static int dp_catalog_aux_write_data(struct dp_catalog_aux *aux)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	dp_write(base + DP_AUX_DATA, aux->data);
end:
@@ -124,7 +124,7 @@ static int dp_catalog_aux_write_trans(struct dp_catalog_aux *aux)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	dp_write(base + DP_AUX_TRANS_CTRL, aux->data);
end:
@@ -145,7 +145,7 @@ static int dp_catalog_aux_clear_trans(struct dp_catalog_aux *aux, bool read)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	if (read) {
		data = dp_read(base + DP_AUX_TRANS_CTRL);
@@ -195,7 +195,7 @@ static void dp_catalog_aux_reset(struct dp_catalog_aux *aux)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	aux_ctrl = dp_read(base + DP_AUX_CTRL);

@@ -220,7 +220,7 @@ static void dp_catalog_aux_enable(struct dp_catalog_aux *aux, bool enable)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	aux_ctrl = dp_read(base + DP_AUX_CTRL);

@@ -297,7 +297,7 @@ static void dp_catalog_aux_get_irq(struct dp_catalog_aux *aux, bool cmd_busy)
{
	u32 ack;
	struct dp_catalog_private *catalog;
	void __iomem *base;
	void __iomem *ahb_base;

	if (!aux) {
		pr_err("invalid input\n");
@@ -305,14 +305,14 @@ static void dp_catalog_aux_get_irq(struct dp_catalog_aux *aux, bool cmd_busy)
	}

	dp_catalog_get_priv(aux);
	base = catalog->io->ctrl_io.base;
	ahb_base = catalog->io->dp_ahb.base;

	aux->isr = dp_read(base + DP_INTR_STATUS);
	aux->isr = dp_read(ahb_base + DP_INTR_STATUS);
	aux->isr &= ~DP_INTR_MASK1;
	ack = aux->isr & DP_INTERRUPT_STATUS1;
	ack <<= 1;
	ack |= DP_INTR_MASK1;
	dp_write(base + DP_INTR_STATUS, ack);
	dp_write(ahb_base + DP_INTR_STATUS, ack);
}

/* controller related catalog functions */
@@ -327,7 +327,7 @@ static u32 dp_catalog_ctrl_read_hdcp_status(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_ahb.base;

	return dp_read(base + DP_HDCP_STATUS);
}
@@ -345,8 +345,8 @@ static void dp_catalog_panel_setup_infoframe_sdp(struct dp_catalog_panel *panel)
	}

	dp_catalog_get_priv(panel);
	base = catalog->io->ctrl_io.base;
	hdr = &panel->hdr_data.hdr_meta;
	base = catalog->io->dp_link.base;

	header = dp_read(base + MMSS_DP_VSCEXT_0);
	header |= panel->hdr_data.vscext_header_byte1;
@@ -416,7 +416,7 @@ static void dp_catalog_panel_setup_vsc_sdp(struct dp_catalog_panel *panel)
	}

	dp_catalog_get_priv(panel);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	value = dp_read(base + MMSS_DP_GENERIC0_0);
	value |= panel->hdr_data.vsc_header_byte1;
@@ -459,7 +459,7 @@ static void dp_catalog_panel_config_hdr(struct dp_catalog_panel *panel)
	}

	dp_catalog_get_priv(panel);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	cfg = dp_read(base + MMSS_DP_SDP_CFG);
	/* VSCEXT_SDP_EN */
@@ -518,7 +518,7 @@ static void dp_catalog_ctrl_update_transfer_unit(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	dp_write(base + DP_VALID_BOUNDARY, ctrl->valid_boundary);
	dp_write(base + DP_TU, ctrl->dp_tu);
@@ -536,7 +536,7 @@ static void dp_catalog_ctrl_state_ctrl(struct dp_catalog_ctrl *ctrl, u32 state)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	dp_write(base + DP_STATE_CTRL, state);
}
@@ -544,7 +544,7 @@ static void dp_catalog_ctrl_state_ctrl(struct dp_catalog_ctrl *ctrl, u32 state)
static void dp_catalog_ctrl_config_ctrl(struct dp_catalog_ctrl *ctrl, u32 cfg)
{
	struct dp_catalog_private *catalog;
	void __iomem *base;
	void __iomem *link_base;

	if (!ctrl) {
		pr_err("invalid input\n");
@@ -552,11 +552,11 @@ static void dp_catalog_ctrl_config_ctrl(struct dp_catalog_ctrl *ctrl, u32 cfg)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	link_base = catalog->io->dp_link.base;

	pr_debug("DP_CONFIGURATION_CTRL=0x%x\n", cfg);

	dp_write(base + DP_CONFIGURATION_CTRL, cfg);
	dp_write(link_base + DP_CONFIGURATION_CTRL, cfg);
}

static void dp_catalog_ctrl_lane_mapping(struct dp_catalog_ctrl *ctrl)
@@ -570,9 +570,9 @@ static void dp_catalog_ctrl_lane_mapping(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	dp_write(base + DP_LOGICAL2PHYSCIAL_LANE_MAPPING, 0xe4);
	dp_write(base + DP_LOGICAL2PHYSICAL_LANE_MAPPING, 0xe4);
}

static void dp_catalog_ctrl_mainlink_ctrl(struct dp_catalog_ctrl *ctrl,
@@ -588,7 +588,7 @@ static void dp_catalog_ctrl_mainlink_ctrl(struct dp_catalog_ctrl *ctrl,
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	if (enable) {
		dp_write(base + DP_MAINLINK_CTRL, 0x02000000);
@@ -619,7 +619,7 @@ static void dp_catalog_ctrl_config_misc(struct dp_catalog_ctrl *ctrl,
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	misc_val |= (tb << 5);
	misc_val |= BIT(0); /* Configure clock to synchronous mode */
@@ -685,7 +685,7 @@ static void dp_catalog_ctrl_config_msa(struct dp_catalog_ctrl *ctrl,
			nvid *= 3;
	}

	base_ctrl = catalog->io->ctrl_io.base;
	base_ctrl = catalog->io->dp_link.base;
	pr_debug("mvid=0x%x, nvid=0x%x\n", mvid, nvid);
	dp_write(base_ctrl + DP_SOFTWARE_MVID, mvid);
	dp_write(base_ctrl + DP_SOFTWARE_NVID, nvid);
@@ -705,7 +705,7 @@ static void dp_catalog_ctrl_set_pattern(struct dp_catalog_ctrl *ctrl,
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	bit = 1;
	bit <<= (pattern - 1);
@@ -759,7 +759,57 @@ static void dp_catalog_ctrl_usb_reset(struct dp_catalog_ctrl *ctrl, bool flip)
	dp_write(base + USB3_DP_COM_RESET_OVRD_CTRL, 0x00);
	/* make sure phy is brought out of reset */
	wmb();
}

static void dp_catalog_panel_tpg_cfg(struct dp_catalog_panel *panel,
	bool enable)
{
	struct dp_catalog_private *catalog;
	void __iomem *base;

	if (!panel) {
		pr_err("invalid input\n");
		return;
	}

	dp_catalog_get_priv(panel);
	base = catalog->io->dp_p0.base;

	if (!enable) {
		dp_write(base + MMSS_DP_TPG_MAIN_CONTROL, 0x0);
		dp_write(base + MMSS_DP_BIST_ENABLE, 0x0);
		dp_write(base + MMSS_DP_TIMING_ENGINE_EN, 0x0);
		wmb(); /* ensure Timing generator is turned off */
		return;
	}

	dp_write(base + MMSS_DP_INTF_CONFIG, 0x0);
	dp_write(base + MMSS_DP_INTF_HSYNC_CTL, panel->hsync_ctl);
	dp_write(base + MMSS_DP_INTF_VSYNC_PERIOD_F0, panel->vsync_period *
			panel->hsync_period);
	dp_write(base + MMSS_DP_INTF_VSYNC_PULSE_WIDTH_F0, panel->v_sync_width *
			panel->hsync_period);
	dp_write(base + MMSS_DP_INTF_VSYNC_PERIOD_F1, 0);
	dp_write(base + MMSS_DP_INTF_VSYNC_PULSE_WIDTH_F1, 0);
	dp_write(base + MMSS_DP_INTF_DISPLAY_HCTL, panel->display_hctl);
	dp_write(base + MMSS_DP_INTF_ACTIVE_HCTL, 0);
	dp_write(base + MMSS_INTF_DISPLAY_V_START_F0, panel->display_v_start);
	dp_write(base + MMSS_DP_INTF_DISPLAY_V_END_F0, panel->display_v_end);
	dp_write(base + MMSS_INTF_DISPLAY_V_START_F1, 0);
	dp_write(base + MMSS_DP_INTF_DISPLAY_V_END_F1, 0);
	dp_write(base + MMSS_DP_INTF_ACTIVE_V_START_F0, 0);
	dp_write(base + MMSS_DP_INTF_ACTIVE_V_END_F0, 0);
	dp_write(base + MMSS_DP_INTF_ACTIVE_V_START_F1, 0);
	dp_write(base + MMSS_DP_INTF_ACTIVE_V_END_F1, 0);
	dp_write(base + MMSS_DP_INTF_POLARITY_CTL, 0);
	wmb(); /* ensure TPG registers are programmed */

	dp_write(base + MMSS_DP_TPG_MAIN_CONTROL, 0x100);
	dp_write(base + MMSS_DP_TPG_VIDEO_CONFIG, 0x5);
	wmb(); /* ensure TPG config is programmed */
	dp_write(base + MMSS_DP_BIST_ENABLE, 0x1);
	dp_write(base + MMSS_DP_TIMING_ENGINE_EN, 0x1);
	wmb(); /* ensure Timing generator is turned on */
}

static void dp_catalog_ctrl_reset(struct dp_catalog_ctrl *ctrl)
@@ -774,7 +824,7 @@ static void dp_catalog_ctrl_reset(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_ahb.base;

	sw_reset = dp_read(base + DP_SW_RESET);

@@ -799,7 +849,7 @@ static bool dp_catalog_ctrl_mainlink_ready(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	while (--cnt) {
		/* DP_MAINLINK_READY */
@@ -826,7 +876,7 @@ static void dp_catalog_ctrl_enable_irq(struct dp_catalog_ctrl *ctrl,
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_ahb.base;

	if (enable) {
		dp_write(base + DP_INTR_STATUS, DP_INTR_MASK1);
@@ -848,7 +898,7 @@ static void dp_catalog_ctrl_hpd_config(struct dp_catalog_ctrl *ctrl, bool en)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_aux.base;

	if (en) {
		u32 reftimer = dp_read(base + DP_DP_HPD_REFTIMER);
@@ -879,7 +929,7 @@ static void dp_catalog_ctrl_get_interrupt(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_ahb.base;

	ctrl->isr = dp_read(base + DP_INTR_STATUS2);
	ctrl->isr &= ~DP_INTR_MASK2;
@@ -900,7 +950,7 @@ static void dp_catalog_ctrl_phy_reset(struct dp_catalog_ctrl *ctrl)
	}

	dp_catalog_get_priv(ctrl);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_ahb.base;

	dp_write(base + DP_PHY_CTRL, 0x5); /* bit 0 & 2 */
	usleep_range(1000, 1010); /* h/w recommended delay */
@@ -989,7 +1039,7 @@ static void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog_ctrl *ctrl,

	dp_catalog_get_priv(ctrl);

	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	dp_write(base + DP_STATE_CTRL, 0x0);

@@ -1046,7 +1096,7 @@ static u32 dp_catalog_ctrl_read_phy_pattern(struct dp_catalog_ctrl *ctrl)

	dp_catalog_get_priv(ctrl);

	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	return dp_read(base + DP_MAINLINK_READY);
}
@@ -1063,7 +1113,7 @@ static int dp_catalog_panel_timing_cfg(struct dp_catalog_panel *panel)
	}

	dp_catalog_get_priv(panel);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	dp_write(base + DP_TOTAL_HOR_VER, panel->total);
	dp_write(base + DP_START_HOR_VER_FROM_SYNC, panel->sync_start);
@@ -1123,7 +1173,7 @@ static void dp_catalog_audio_config_sdp(struct dp_catalog_audio *audio)
		return;

	dp_catalog_get_priv(audio);
	base = catalog->io->ctrl_io.base;
	base = catalog->io->dp_link.base;

	/* AUDIO_TIMESTAMP_SDP_EN */
	sdp_cfg |= BIT(1);
@@ -1162,7 +1212,7 @@ static void dp_catalog_audio_get_header(struct dp_catalog_audio *audio)

	dp_catalog_get_priv(audio);

	base    = catalog->io->ctrl_io.base;
	base    = catalog->io->dp_link.base;
	sdp_map = catalog->audio_map;
	sdp     = audio->sdp_type;
	header  = audio->sdp_header;
@@ -1184,7 +1234,7 @@ static void dp_catalog_audio_set_header(struct dp_catalog_audio *audio)

	dp_catalog_get_priv(audio);

	base    = catalog->io->ctrl_io.base;
	base    = catalog->io->dp_link.base;
	sdp_map = catalog->audio_map;
	sdp     = audio->sdp_type;
	header  = audio->sdp_header;
@@ -1202,7 +1252,7 @@ static void dp_catalog_audio_config_acr(struct dp_catalog_audio *audio)
	dp_catalog_get_priv(audio);

	select = audio->data;
	base   = catalog->io->ctrl_io.base;
	base   = catalog->io->dp_link.base;

	acr_ctrl = select << 4 | BIT(31) | BIT(8) | BIT(14);

@@ -1219,7 +1269,7 @@ static void dp_catalog_audio_safe_to_exit_level(struct dp_catalog_audio *audio)

	dp_catalog_get_priv(audio);

	base   = catalog->io->ctrl_io.base;
	base   = catalog->io->dp_link.base;
	safe_to_exit_level = audio->data;

	mainlink_levels = dp_read(base + DP_MAINLINK_LEVELS);
@@ -1241,7 +1291,7 @@ static void dp_catalog_audio_enable(struct dp_catalog_audio *audio)

	dp_catalog_get_priv(audio);

	base   = catalog->io->ctrl_io.base;
	base   = catalog->io->dp_link.base;
	enable = !!audio->data;

	audio_ctrl = dp_read(base + MMSS_DP_AUDIO_CFG);
@@ -1309,6 +1359,7 @@ struct dp_catalog *dp_catalog_get(struct device *dev, struct dp_io *io)
	struct dp_catalog_panel panel = {
		.timing_cfg = dp_catalog_panel_timing_cfg,
		.config_hdr = dp_catalog_panel_config_hdr,
		.tpg_config = dp_catalog_panel_tpg_cfg,
	};

	if (!io) {
Loading