lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 18 May 2019 17:56:15 +0800 From: Jitao Shi <jitao.shi@...iatek.com> To: Rob Herring <robh+dt@...nel.org>, Pawel Moll <pawel.moll@....com>, Mark Rutland <mark.rutland@....com>, Ian Campbell <ijc+devicetree@...lion.org.uk>, Kumar Gala <galak@...eaurora.org>, <linux-pwm@...r.kernel.org>, David Airlie <airlied@...ux.ie>, Matthias Brugger <matthias.bgg@...il.com> CC: Jitao Shi <jitao.shi@...iatek.com>, Thierry Reding <treding@...dia.com>, Ajay Kumar <ajaykumar.rs@...sung.com>, Inki Dae <inki.dae@...sung.com>, Rahul Sharma <rahul.sharma@...sung.com>, Sean Paul <seanpaul@...omium.org>, Vincent Palatin <vpalatin@...omium.org>, Andy Yan <andy.yan@...k-chips.com>, Philipp Zabel <p.zabel@...gutronix.de>, Russell King <rmk+kernel@....linux.org.uk>, <devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>, <dri-devel@...ts.freedesktop.org>, <linux-arm-kernel@...ts.infradead.org>, <linux-mediatek@...ts.infradead.org>, <srv_heupstream@...iatek.com>, Sascha Hauer <kernel@...gutronix.de>, <yingjoe.chen@...iatek.com>, <eddie.huang@...iatek.com>, <cawa.cheng@...iatek.com>, <bibby.hsieh@...iatek.com>, <ck.hu@...iatek.com>, <stonea168@....com> Subject: [v4 2/5] drm/mediatek: dpi dual edge support DPI sample the data both rising and falling edge. It can reduce half data io pins. Signed-off-by: Jitao Shi <jitao.shi@...iatek.com> --- drivers/gpu/drm/mediatek/mtk_dpi.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c index 22e68a100e7b..ccef3ac1c560 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) { @@ -444,7 +452,8 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi, pll_rate = clk_get_rate(dpi->tvd_clk); vm.pixelclock = pll_rate / factor; - clk_set_rate(dpi->pixel_clk, vm.pixelclock); + clk_set_rate(dpi->pixel_clk, + vm.pixelclock * (dpi->conf->dual_edge ? 2 : 1)); vm.pixelclock = clk_get_rate(dpi->pixel_clk); dev_dbg(dpi->dev, "Got PLL %lu Hz, pixel clock %lu Hz\n", @@ -509,6 +518,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; -- 2.21.0
Powered by blists - more mailing lists