From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH v3 6/7] drm/i2c: adv7511: Change number of DSI lanes dynamically Date: Wed, 9 Mar 2016 16:27:17 +0530 Message-ID: <1457521038-5906-7-git-send-email-architt@codeaurora.org> References: <1441625800-1858-1-git-send-email-architt@codeaurora.org> <1457521038-5906-1-git-send-email-architt@codeaurora.org> Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]:59880 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753402AbcCIK5x (ORCPT ); Wed, 9 Mar 2016 05:57:53 -0500 In-Reply-To: <1457521038-5906-1-git-send-email-architt@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org To: dri-devel@lists.freedesktop.org Cc: airlied@linux.ie, daniel@ffwll.ch, treding@nvidia.com, linux-arm-msm@vger.kernel.org, srinivas.kandagatla@linaro.org, andy.green@linaro.org, laurent.pinchart@ideasonboard.com, lars@metafoo.de, xinliang.liu@linaro.org, amit.kucheria@linaro.org, robdclark@gmail.com, Archit Taneja Lower modes on ADV7533 require lower number of DSI lanes for correct operation. If ADV7533 is being used with 4 DSI lanes, then switch the lanes to 3 when the target mode's pixel clock is less than 80 Mhz. Based on patch by Andy Green Signed-off-by: Archit Taneja --- drivers/gpu/drm/i2c/adv7511.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/i2c/adv7511.c b/drivers/gpu/drm/i2c/adv7511.c index 88918ae..ca9e862 100644 --- a/drivers/gpu/drm/i2c/adv7511.c +++ b/drivers/gpu/drm/i2c/adv7511.c @@ -863,6 +863,26 @@ static void adv7511_mode_set(struct adv7511 *adv7511, regmap_update_bits(adv7511->regmap, 0x17, 0x60, (vsync_polarity << 6) | (hsync_polarity << 5)); + if (adv7511->type == ADV7533 && adv7511->num_dsi_lanes == 4) { + struct mipi_dsi_device *dsi = adv7511->dsi; + int lanes, ret; + + if (adj_mode->clock > 80000) + lanes = 4; + else + lanes = 3; + + if (lanes != dsi->lanes) { + mipi_dsi_detach(dsi); + dsi->lanes = lanes; + ret = mipi_dsi_attach(dsi); + if (ret) { + DRM_ERROR("Failed to change host lanes\n"); + return; + } + } + } + drm_mode_copy(&adv7511->curr_mode, adj_mode); /* -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation