Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp3072793imj; Mon, 18 Feb 2019 19:08:18 -0800 (PST) X-Google-Smtp-Source: AHgI3IbOLRMiWq02lyOl3Ndn7EmQlw8BoQnuvXJ46f+9pDOoRWu8c8HzCdPJOE31dVr1eHEHnxJx X-Received: by 2002:a63:200e:: with SMTP id g14mr21976303pgg.235.1550545698553; Mon, 18 Feb 2019 19:08:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550545698; cv=none; d=google.com; s=arc-20160816; b=EcgVFlBJI4MTYD3MShfjloo7eE3MNYvvX8t79t5x7bxFWfVqppRxPy3YqlsHaCLU3u DEtmOUc+rn7lw0GPl5lmAqj31e+3IEmvFtTwexoCRfCd+dbhpeBikAXR+yToVTKnZsum lHrbNhiQmnqelkTh3T8/VfQA/OMu9DsIM2wetmOzStbzMP82zSfz85Og4oUMLH7sxoKz 44nMVEaYDKA0n2BgDWL4pCzvOB+1nrJ53YI4nIX26yl0KCE5x16SjWHZ/YITIoV0BpRL v65MR3UgQI8/pMzKUzDfzk5DHxgJBPo4xYFk1+Al4nlAHb51Ozc6OZNLr86j5OH+XYhE r2Tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=Vt71RWijkHoKAGzY1rcWt7k6UxI+Ql3DDJ31fdt7nns=; b=xU7GY3UpWfCkY6YNF92P0F2ox7IfPTdXpL8e/sS/qdbe8q4TSmlbEH6QSZFeoSw7l7 9yIPYKCwSReA5pZMFZ+RK6Znz+vjjtwZXdlQnCVvoGHWWzvMJYglrr68NFL1t9R1hxj8 VOzsGQSu1o+Zrv92rPEcV+q8qMuN5OLtXftKovkHl9bDCTFZJcdMZ2ZhkAQux62lcXvY nugaPzOOrcMPoJNNfXFHpbNVzxKoCHaTfw0IBAGx492oaswUAmj9kaDPcxS+ImYpL3pY 86kDnrvQ3NS8jCK49zn2YDx+ANAa/RSWP9qJnaDEujztCXzGxnHS9Mz5Nc3YziSPDoEU BJ2A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 33si15756580plu.169.2019.02.18.19.08.03; Mon, 18 Feb 2019 19:08:18 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726203AbfBSDG5 (ORCPT + 99 others); Mon, 18 Feb 2019 22:06:57 -0500 Received: from Mailgw01.mediatek.com ([1.203.163.78]:21177 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725308AbfBSDG4 (ORCPT ); Mon, 18 Feb 2019 22:06:56 -0500 X-UUID: 8a26ea3193fa4ef4a498722abadd69a1-20190219 X-UUID: 8a26ea3193fa4ef4a498722abadd69a1-20190219 Received: from mtkcas32.mediatek.inc [(172.27.4.250)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 1761673275; Tue, 19 Feb 2019 11:06:50 +0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by MTKMBS33N2.mediatek.inc (172.27.4.76) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 19 Feb 2019 11:06:49 +0800 Received: from mszsdclx1018.gcn.mediatek.inc (10.16.6.18) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 19 Feb 2019 11:06:47 +0800 From: Jitao Shi To: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , , David Airlie , Matthias Brugger CC: Jitao Shi , Thierry Reding , Ajay Kumar , Inki Dae , Rahul Sharma , Sean Paul , Vincent Palatin , Andy Yan , Philipp Zabel , Russell King , , , , , , , Sascha Hauer , , , , , , Subject: [v2 1/1] drm/mediatek: add mt8183 dpi support Date: Tue, 19 Feb 2019 11:06:45 +0800 Message-ID: <20190219030645.68321-1-jitao.shi@mediatek.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org MT8183 samples on rising and falling edge. It can reduce half data io. MT8173 also has those registers. But the hw function is removed. So MT8173 doesn't support DPI dual edge sample and can't use the same setting to mt8183. Signed-off-by: Jitao Shi --- drivers/gpu/drm/mediatek/mtk_dpi.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c index 62a9d47df948..610c23334047 100644 --- a/drivers/gpu/drm/mediatek/mtk_dpi.c +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c @@ -117,6 +117,7 @@ struct mtk_dpi_conf { unsigned int (*cal_factor)(int clock); u32 reg_h_fre_con; bool edge_sel_en; + bool dual_edge; }; static void mtk_dpi_mask(struct mtk_dpi *dpi, u32 offset, u32 val, u32 mask) @@ -353,6 +354,13 @@ static void mtk_dpi_config_disable_edge(struct mtk_dpi *dpi) mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, 0, EDGE_SEL_EN); } +static void mtk_dpi_enable_dual_edge(struct mtk_dpi *dpi) +{ + mtk_dpi_mask(dpi, DPI_DDR_SETTING, DDR_EN | DDR_4PHASE, + DDR_EN | DDR_4PHASE); + mtk_dpi_mask(dpi, DPI_OUTPUT_SETTING, EDGE_SEL, EDGE_SEL); +} + static void mtk_dpi_config_color_format(struct mtk_dpi *dpi, enum mtk_dpi_out_color_format format) { @@ -509,6 +517,8 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi, mtk_dpi_config_color_format(dpi, dpi->color_format); mtk_dpi_config_2n_h_fre(dpi); mtk_dpi_config_disable_edge(dpi); + if (dpi->conf->dual_edge) + mtk_dpi_enable_dual_edge(dpi); mtk_dpi_sw_reset(dpi, false); return 0; @@ -671,6 +681,16 @@ static unsigned int mt2701_calculate_factor(int clock) return 2; } +static unsigned int mt8183_calculate_factor(int clock) +{ + if (clock <= 27000) + return 8; + else if (clock <= 167000) + return 4; + else + return 2; +} + static const struct mtk_dpi_conf mt8173_conf = { .cal_factor = mt8173_calculate_factor, .reg_h_fre_con = 0xe0, @@ -682,6 +702,12 @@ static const struct mtk_dpi_conf mt2701_conf = { .edge_sel_en = true, }; +static const struct mtk_dpi_conf mt8183_conf = { + .cal_factor = mt8183_calculate_factor, + .reg_h_fre_con = 0xe0, + .dual_edge = true, +}; + static int mtk_dpi_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -777,6 +803,9 @@ static const struct of_device_id mtk_dpi_of_ids[] = { { .compatible = "mediatek,mt8173-dpi", .data = &mt8173_conf, }, + { .compatible = "mediatek,mt8183-dpi", + .data = &mt8183_conf, + }, { }, }; -- 2.20.1