From patchwork Mon Aug 13 21:30:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564831 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8434D13B4 for ; Mon, 13 Aug 2018 21:31:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7864F29676 for ; Mon, 13 Aug 2018 21:31:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6C87429790; Mon, 13 Aug 2018 21:31:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 311EC294E7 for ; Mon, 13 Aug 2018 21:31:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3763C89FDB; Mon, 13 Aug 2018 21:31:08 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc41.google.com (mail-yw1-xc41.google.com [IPv6:2607:f8b0:4864:20::c41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7199189FDB for ; Mon, 13 Aug 2018 21:31:06 +0000 (UTC) Received: by mail-yw1-xc41.google.com with SMTP id w76-v6so14710698ywg.4 for ; Mon, 13 Aug 2018 14:31:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5ltqEzpTV3NBACiThx9bTziizWLXHrHKXSYad3aSsdE=; b=et4KZrvPAYPnvG2JjzXdNFV49f7BjLWiD8JjIzveYq3ILZY6CpTh9Qhh/+Y3GxEY5r u+NzOdkiRnxWUlw4zWNOPyi4NzZ6Y5Np7ZXPhRjXhHJrtumo+HXfSWXo8bKbJPOn6NFS 6YSCnEdNsdbxsemYHV0bDcRlcSywrf9zTsQTLA4+YhGXY+L29mH08XFjdm2StthvCR+9 x53sHEP6PQWcWaqtij5VkHBrSWGxE3BuG5mZjXnRGtT5WNQiLTp1AcBfDyI9C9cHLhGZ tXX7MmG/TEIzClLtBKr95MK//36zdfRIXdXJYNvYIUk0OsNKBy0l8u1PGEdgsXkPZR3t X2yw== X-Gm-Message-State: AOUpUlEjZaxMVWzNRZEaiX6uL0nTj/5uLnN7Hmmg8qcCupuRkcDXFMQ0 /1tsEQ06WthGlyw1eZgQMqpkV971OI8= X-Google-Smtp-Source: AA+uWPzgxl/fEAqCRsd++u8BVF7EMME4S9B73G9kkXmtP6+FeRpke39wNVUTVF1nYEKLKga7wLRPIg== X-Received: by 2002:a25:d98f:: with SMTP id q137-v6mr10705862ybg.262.1534195865562; Mon, 13 Aug 2018 14:31:05 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:05 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 1/7] drm/panel: simple: tv123wam: Add unprepare delay Date: Mon, 13 Aug 2018 17:30:40 -0400 Message-Id: <20180813213058.184821-2-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thierry Reding , Sandeep Panda Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul The panel datasheet specifies a 500ms delay after power-down before re-enabling. Changes in v2: - None Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/panel/panel-simple.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 5b5d0a24e713e..97964f7f2acee 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -1385,6 +1385,9 @@ static const struct panel_desc innolux_tv123wam = { .width = 259, .height = 173, }, + .delay = { + .unprepare = 500, + }, }; static const struct drm_display_mode innolux_zj070na_01p_mode = { From patchwork Mon Aug 13 21:30:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564833 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 35F4213B4 for ; Mon, 13 Aug 2018 21:31:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 279EE29775 for ; Mon, 13 Aug 2018 21:31:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1B907295DE; Mon, 13 Aug 2018 21:31:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 937422976A for ; Mon, 13 Aug 2018 21:31:16 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B73FF89D73; Mon, 13 Aug 2018 21:31:15 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc44.google.com (mail-yw1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 512A089D73 for ; Mon, 13 Aug 2018 21:31:14 +0000 (UTC) Received: by mail-yw1-xc44.google.com with SMTP id l9-v6so14703427ywc.11 for ; Mon, 13 Aug 2018 14:31:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=E+PjBNC27UAF3mGAF8feAjFmWIjSSBoUdpCAa54WMRs=; b=pvr6aq7N4j31rUYU4UKTQ+G0T9lywng38068RTzHZ4nMjQiwrPBxMwjuTILQfHor3y q24tL+zu46o/oRGfhecFKXC26qlxIJ6c0sLqO7QbKNyM5RXk75YBcpGvOjCujA8hAqdI zRh8WuSNaVVyBihQ1irwTDEAVhfFmP5HPdaYWm7zHi5qEzrJwC8PIQJ1S1amO4hlnSrx Zxgv5FaKvn7L9Py/QPFUnK8nyjZZvmz1NHOrkfaebFllQ7tTko4uudJjSbmEZb9jFC5K fUjSrzPrtaXTAyEeMApCxjLOBIQ6hBCzGhlzGjY6lzlFoLsVzwQjs3HO25fGXAmcReAv kqBA== X-Gm-Message-State: AOUpUlE5Hurrr7YnpEAp4MtEXQExS+eGFpVz07hLppdfMnn6riRXalPc qn4vRrxBb+KLVUrEO25cu2OPo0qMsKQ= X-Google-Smtp-Source: AA+uWPxb0nSBKe6hCK1+N59ynkPLaFldy2EuHBQwNdvSdD2YvMkIZ6a9YmeendeLCzvgnt1lkr4iag== X-Received: by 2002:a81:2e95:: with SMTP id u143-v6mr10134589ywu.430.1534195873445; Mon, 13 Aug 2018 14:31:13 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:13 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 2/7] drm/bridge: ti-sn65dsi86: Fixup register names Date: Mon, 13 Aug 2018 17:30:41 -0400 Message-Id: <20180813213058.184821-3-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul Order registers by offset and rename bits & masks to match the datasheet. This makes the driver a bit easier to grok and cross-reference with the datasheet. Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 92 +++++++++++++-------------- 1 file changed, 45 insertions(+), 47 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 1b6e8b72be584..587d4e4f5674c 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -18,36 +18,51 @@ #include #include -/* Link Training specific registers */ #define SN_DEVICE_REV_REG 0x08 -#define SN_HPD_DISABLE_REG 0x5C #define SN_DPPLL_SRC_REG 0x0A +#define DPPLL_CLK_SRC_DSICLK BIT(0) +#define REFCLK_FREQ_MASK GENMASK(3, 1) +#define REFCLK_FREQ(x) ((x) << 1) +#define DPPLL_SRC_DP_PLL_LOCK BIT(7) +#define SN_PLL_ENABLE_REG 0x0D #define SN_DSI_LANES_REG 0x10 +#define CHA_DSI_LANES_MASK GENMASK(4, 3) +#define CHA_DSI_LANES(x) ((x) << 3) #define SN_DSIA_CLK_FREQ_REG 0x12 -#define SN_ENH_FRAME_REG 0x5A -#define SN_SSC_CONFIG_REG 0x93 -#define SN_DATARATE_CONFIG_REG 0x94 -#define SN_PLL_ENABLE_REG 0x0D -#define SN_SCRAMBLE_CONFIG_REG 0x95 -#define SN_AUX_WDATA0_REG 0x64 -#define SN_AUX_ADDR_19_16_REG 0x74 -#define SN_AUX_ADDR_15_8_REG 0x75 -#define SN_AUX_ADDR_7_0_REG 0x76 -#define SN_AUX_LENGTH_REG 0x77 -#define SN_AUX_CMD_REG 0x78 -#define SN_ML_TX_MODE_REG 0x96 -/* video config specific registers */ #define SN_CHA_ACTIVE_LINE_LENGTH_LOW_REG 0x20 #define SN_CHA_VERTICAL_DISPLAY_SIZE_LOW_REG 0x24 #define SN_CHA_HSYNC_PULSE_WIDTH_LOW_REG 0x2C #define SN_CHA_HSYNC_PULSE_WIDTH_HIGH_REG 0x2D +#define CHA_HSYNC_POLARITY BIT(7) #define SN_CHA_VSYNC_PULSE_WIDTH_LOW_REG 0x30 #define SN_CHA_VSYNC_PULSE_WIDTH_HIGH_REG 0x31 +#define CHA_VSYNC_POLARITY BIT(7) #define SN_CHA_HORIZONTAL_BACK_PORCH_REG 0x34 #define SN_CHA_VERTICAL_BACK_PORCH_REG 0x36 #define SN_CHA_HORIZONTAL_FRONT_PORCH_REG 0x38 #define SN_CHA_VERTICAL_FRONT_PORCH_REG 0x3A +#define SN_ENH_FRAME_REG 0x5A +#define VSTREAM_ENABLE BIT(3) #define SN_DATA_FORMAT_REG 0x5B +#define SN_HPD_DISABLE_REG 0x5C +#define HPD_DISABLE BIT(0) +#define SN_AUX_WDATA0_REG 0x64 +#define SN_AUX_ADDR_19_16_REG 0x74 +#define SN_AUX_ADDR_15_8_REG 0x75 +#define SN_AUX_ADDR_7_0_REG 0x76 +#define SN_AUX_LENGTH_REG 0x77 +#define SN_AUX_CMD_REG 0x78 +#define AUX_CMD_SEND BIT(1) +#define AUX_CMD_REQ(x) ((x) << 4) +#define SN_SSC_CONFIG_REG 0x93 +#define DP_NUM_LANES_MASK GENMASK(5, 4) +#define DP_NUM_LANES(x) ((x) << 4) +#define SN_DATARATE_CONFIG_REG 0x94 +#define DP_DATARATE_MASK GENMASK(7, 5) +#define DP_DATARATE(x) ((x) << 5) +#define SN_ML_TX_MODE_REG 0x96 +#define ML_TX_MAIN_LINK_OFF 0 +#define ML_TX_NORMAL_MODE BIT(0) #define MIN_DSI_CLK_FREQ_MHZ 40 @@ -55,22 +70,6 @@ #define DP_CLK_FUDGE_NUM 10 #define DP_CLK_FUDGE_DEN 8 -#define DPPLL_CLK_SRC_REFCLK 0 -#define DPPLL_CLK_SRC_DSICLK 1 - -#define SN_REFCLK_FREQ_OFFSET 1 -#define SN_DSIA_LANE_OFFSET 3 -#define SN_DP_LANE_OFFSET 4 -#define SN_DP_DATA_RATE_OFFSET 5 -#define SN_SYNC_POLARITY_OFFSET 7 - -#define SN_ENABLE_VID_STREAM_BIT BIT(3) -#define SN_REFCLK_FREQ_BITS GENMASK(3, 1) -#define SN_DSIA_NUM_LANES_BITS GENMASK(4, 3) -#define SN_DP_NUM_LANES_BITS GENMASK(5, 4) -#define SN_DP_DATA_RATE_BITS GENMASK(7, 5) -#define SN_HPD_DISABLE_BIT BIT(0) - #define SN_REGULATOR_SUPPLY_NUM 4 struct ti_sn_bridge { @@ -299,8 +298,7 @@ static void ti_sn_bridge_disable(struct drm_bridge *bridge) drm_panel_disable(pdata->panel); /* disable video stream */ - regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, - SN_ENABLE_VID_STREAM_BIT, 0); + regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, 0); /* semi auto link training mode OFF */ regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0); /* disable DP PLL */ @@ -363,8 +361,8 @@ static void ti_sn_bridge_set_refclk_freq(struct ti_sn_bridge *pdata) if (refclk_lut[i] == refclk_rate) break; - regmap_update_bits(pdata->regmap, SN_DPPLL_SRC_REG, - SN_REFCLK_FREQ_BITS, i << SN_REFCLK_FREQ_OFFSET); + regmap_update_bits(pdata->regmap, SN_DPPLL_SRC_REG, REFCLK_FREQ_MASK, + REFCLK_FREQ(i)); } /** @@ -401,7 +399,7 @@ static void ti_sn_bridge_set_dsi_dp_rate(struct ti_sn_bridge *pdata) break; regmap_update_bits(pdata->regmap, SN_DATARATE_CONFIG_REG, - SN_DP_DATA_RATE_BITS, i << SN_DP_DATA_RATE_OFFSET); + DP_DATARATE_MASK, DP_DATARATE(i)); } static void ti_sn_bridge_set_video_timings(struct ti_sn_bridge *pdata) @@ -411,9 +409,9 @@ static void ti_sn_bridge_set_video_timings(struct ti_sn_bridge *pdata) u8 hsync_polarity = 0, vsync_polarity = 0; if (mode->flags & DRM_MODE_FLAG_PHSYNC) - hsync_polarity = BIT(SN_SYNC_POLARITY_OFFSET); + hsync_polarity = CHA_HSYNC_POLARITY; if (mode->flags & DRM_MODE_FLAG_PVSYNC) - vsync_polarity = BIT(SN_SYNC_POLARITY_OFFSET); + vsync_polarity = CHA_VSYNC_POLARITY; ti_sn_bridge_write_u16(pdata, SN_CHA_ACTIVE_LINE_LENGTH_LOW_REG, mode->hdisplay); @@ -451,14 +449,14 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) drm_panel_prepare(pdata->panel); /* DSI_A lane config */ - val = (4 - pdata->dsi->lanes) << SN_DSIA_LANE_OFFSET; + val = CHA_DSI_LANES(4 - pdata->dsi->lanes); regmap_update_bits(pdata->regmap, SN_DSI_LANES_REG, - SN_DSIA_NUM_LANES_BITS, val); + CHA_DSI_LANES_MASK, val); /* DP lane config */ - val = (pdata->dsi->lanes - 1) << SN_DP_LANE_OFFSET; - regmap_update_bits(pdata->regmap, SN_SSC_CONFIG_REG, - SN_DP_NUM_LANES_BITS, val); + val = DP_NUM_LANES(pdata->dsi->lanes - 1); + regmap_update_bits(pdata->regmap, SN_SSC_CONFIG_REG, DP_NUM_LANES_MASK, + val); /* set dsi/dp clk frequency value */ ti_sn_bridge_set_dsi_dp_rate(pdata); @@ -489,8 +487,8 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) ti_sn_bridge_set_video_timings(pdata); /* enable video stream */ - regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, - SN_ENABLE_VID_STREAM_BIT, SN_ENABLE_VID_STREAM_BIT); + regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, + VSTREAM_ENABLE); drm_panel_enable(pdata->panel); } @@ -505,8 +503,8 @@ static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge) ti_sn_bridge_set_refclk_freq(pdata); /* in case drm_panel is connected then HPD is not supported */ - regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, - SN_HPD_DISABLE_BIT, SN_HPD_DISABLE_BIT); + regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, HPD_DISABLE, + HPD_DISABLE); } static void ti_sn_bridge_post_disable(struct drm_bridge *bridge) From patchwork Mon Aug 13 21:30:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564835 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AF1E714E2 for ; Mon, 13 Aug 2018 21:31:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1538296FA for ; Mon, 13 Aug 2018 21:31:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 95E462971E; Mon, 13 Aug 2018 21:31:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 163D42975C for ; Mon, 13 Aug 2018 21:31:24 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C7C3B6E0E7; Mon, 13 Aug 2018 21:31:22 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc42.google.com (mail-yw1-xc42.google.com [IPv6:2607:f8b0:4864:20::c42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E6FE6E0CA for ; Mon, 13 Aug 2018 21:31:21 +0000 (UTC) Received: by mail-yw1-xc42.google.com with SMTP id r184-v6so14712598ywg.6 for ; Mon, 13 Aug 2018 14:31:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7eoyClLUiP2axDepjoBWre2B096a5wehZrvXxKtO8o4=; b=QiOjISNQLydtV/fczONPknjLWtdEmQL6XEHi3fJX+lA4ARgyjOopyn5kmnpBcmGQQo CvN3mXVpgVAOXJJOVwnIiNcmDMDiv+qFwP/k165MB5XrzQeQehmP/ZwruMas7xggJXTE 5GTKgz8MYIOz6pDGMj7/jlr4FD84QFa3jyMIUQNLZua+N9pF8dLggP41aId1ioxYt5xg qSwU393BPTdkjP51IiNaPvDbYyed1UsERvUpDhEY8986bV0hAxLBqlerrW+fJ58oaA+T TMwyJgGWa05Aa1kUsjWmUUXltMiNejB6Pqcsko5Sqj3O9dQm4/HeJx5B/XBZbt127wY6 b/Sg== X-Gm-Message-State: AOUpUlEiuOTKv6FHThpReLLxXH/0evZMsfPFJB6ypXL64PD0CdpSRfdS MBHRQMZhbgJsZzgGmgYGPFwmv2Kkjb0= X-Google-Smtp-Source: AA+uWPyQ693yINPEF6fvb1VhrBOJLN9LY6G84m/VW4R4GpgE3OCXu/W+IOxRXrImVhtn9xbBC/Yzig== X-Received: by 2002:a0d:e846:: with SMTP id r67-v6mr11018370ywe.19.1534195880677; Mon, 13 Aug 2018 14:31:20 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:20 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 3/7] drm/bridge: ti-sn65dsi86: Implement AUX channel Date: Mon, 13 Aug 2018 17:30:42 -0400 Message-Id: <20180813213058.184821-4-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul This was hand-rolled in the first version, and will surely be useful as we expand the driver to support more varied use cases. Changes in v2: - Change subject prefix s/panel/bridge/ - Downgrade warning in poll function to error message - Fix DP_EDP_CONFIGURATION_SET write value (Sandeep) - Mask upper 8 bits of msg->address (Sandeep) - Check aux cmd status for errors after completing the send (Sandeep) - Remove length check since it's covered in the aux status - Flip the READ check in transfer to WRITE check + early exit Changes in v3: - Added to the set - Wrapped (x) in WDATA/RDATA #defines - Replace readx_poll* with regmap_read_poll* Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 103 ++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 587d4e4f5674c..501f4a81ea5ab 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -7,12 +7,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -46,7 +48,7 @@ #define SN_DATA_FORMAT_REG 0x5B #define SN_HPD_DISABLE_REG 0x5C #define HPD_DISABLE BIT(0) -#define SN_AUX_WDATA0_REG 0x64 +#define SN_AUX_WDATA_REG(x) (0x64 + (x)) #define SN_AUX_ADDR_19_16_REG 0x74 #define SN_AUX_ADDR_15_8_REG 0x75 #define SN_AUX_ADDR_7_0_REG 0x76 @@ -54,6 +56,7 @@ #define SN_AUX_CMD_REG 0x78 #define AUX_CMD_SEND BIT(1) #define AUX_CMD_REQ(x) ((x) << 4) +#define SN_AUX_RDATA_REG(x) (0x79 + (x)) #define SN_SSC_CONFIG_REG 0x93 #define DP_NUM_LANES_MASK GENMASK(5, 4) #define DP_NUM_LANES(x) ((x) << 4) @@ -63,6 +66,10 @@ #define SN_ML_TX_MODE_REG 0x96 #define ML_TX_MAIN_LINK_OFF 0 #define ML_TX_NORMAL_MODE BIT(0) +#define SN_AUX_CMD_STATUS_REG 0xF4 +#define AUX_IRQ_STATUS_AUX_RPLY_TOUT BIT(3) +#define AUX_IRQ_STATUS_AUX_SHORT BIT(5) +#define AUX_IRQ_STATUS_NAT_I2C_FAIL BIT(6) #define MIN_DSI_CLK_FREQ_MHZ 40 @@ -70,11 +77,15 @@ #define DP_CLK_FUDGE_NUM 10 #define DP_CLK_FUDGE_DEN 8 +/* Matches DP_AUX_MAX_PAYLOAD_BYTES (for now) */ +#define SN_AUX_MAX_PAYLOAD_BYTES 16 + #define SN_REGULATOR_SUPPLY_NUM 4 struct ti_sn_bridge { struct device *dev; struct regmap *regmap; + struct drm_dp_aux aux; struct drm_bridge bridge; struct drm_connector connector; struct device_node *host_node; @@ -471,13 +482,8 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) * authentication method. We need to enable this method in the eDP panel * at DisplayPort address 0x0010A prior to link training. */ - regmap_write(pdata->regmap, SN_AUX_WDATA0_REG, 0x01); - regmap_write(pdata->regmap, SN_AUX_ADDR_19_16_REG, 0x00); - regmap_write(pdata->regmap, SN_AUX_ADDR_15_8_REG, 0x01); - regmap_write(pdata->regmap, SN_AUX_ADDR_7_0_REG, 0x0A); - regmap_write(pdata->regmap, SN_AUX_LENGTH_REG, 0x01); - regmap_write(pdata->regmap, SN_AUX_CMD_REG, 0x81); - usleep_range(10000, 10500); /* 10ms delay recommended by spec */ + drm_dp_dpcd_writeb(&pdata->aux, DP_EDP_CONFIGURATION_SET, + DP_ALTERNATE_SCRAMBLER_RESET_ENABLE); /* Semi auto link training mode */ regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0x0A); @@ -525,6 +531,82 @@ static const struct drm_bridge_funcs ti_sn_bridge_funcs = { .post_disable = ti_sn_bridge_post_disable, }; +static struct ti_sn_bridge *aux_to_ti_sn_bridge(struct drm_dp_aux *aux) +{ + return container_of(aux, struct ti_sn_bridge, aux); +} + +static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux, + struct drm_dp_aux_msg *msg) +{ + struct ti_sn_bridge *pdata = aux_to_ti_sn_bridge(aux); + u32 request = msg->request & ~DP_AUX_I2C_MOT; + u32 request_val = AUX_CMD_REQ(msg->request); + u8 *buf = (u8 *)msg->buffer; + unsigned int val; + int ret, i; + + if (msg->size > SN_AUX_MAX_PAYLOAD_BYTES) + return -EINVAL; + + switch (request) { + case DP_AUX_NATIVE_WRITE: + case DP_AUX_I2C_WRITE: + case DP_AUX_NATIVE_READ: + case DP_AUX_I2C_READ: + regmap_write(pdata->regmap, SN_AUX_CMD_REG, request_val); + break; + default: + return -EINVAL; + } + + regmap_write(pdata->regmap, SN_AUX_ADDR_19_16_REG, + (msg->address >> 16) & 0xF); + regmap_write(pdata->regmap, SN_AUX_ADDR_15_8_REG, + (msg->address >> 8) & 0xFF); + regmap_write(pdata->regmap, SN_AUX_ADDR_7_0_REG, msg->address & 0xFF); + + regmap_write(pdata->regmap, SN_AUX_LENGTH_REG, msg->size); + + if (request == DP_AUX_NATIVE_WRITE || request == DP_AUX_I2C_WRITE) { + for (i = 0; i < msg->size; i++) + regmap_write(pdata->regmap, SN_AUX_WDATA_REG(i), + buf[i]); + } + + regmap_write(pdata->regmap, SN_AUX_CMD_REG, request_val | AUX_CMD_SEND); + + ret = regmap_read_poll_timeout(pdata->regmap, SN_AUX_CMD_REG, val, + !(val & AUX_CMD_SEND), 200, + 50 * 1000); + if (ret) + return ret; + + ret = regmap_read(pdata->regmap, SN_AUX_CMD_STATUS_REG, &val); + if (ret) + return ret; + else if ((val & AUX_IRQ_STATUS_NAT_I2C_FAIL) + || (val & AUX_IRQ_STATUS_AUX_RPLY_TOUT) + || (val & AUX_IRQ_STATUS_AUX_SHORT)) + return -ENXIO; + + if (request == DP_AUX_NATIVE_WRITE || request == DP_AUX_I2C_WRITE) + return msg->size; + + for (i = 0; i < msg->size; i++) { + unsigned int val; + ret = regmap_read(pdata->regmap, SN_AUX_RDATA_REG(i), + &val); + if (ret) + return ret; + + WARN_ON(val & ~0xFF); + buf[i] = (u8)(val & 0xFF); + } + + return msg->size; +} + static int ti_sn_bridge_parse_dsi_host(struct ti_sn_bridge *pdata) { struct device_node *np = pdata->dev->of_node; @@ -604,6 +686,11 @@ static int ti_sn_bridge_probe(struct i2c_client *client, i2c_set_clientdata(client, pdata); + pdata->aux.name = "ti-sn65dsi86-aux"; + pdata->aux.dev = pdata->dev; + pdata->aux.transfer = ti_sn_aux_transfer; + drm_dp_aux_register(&pdata->aux); + pdata->bridge.funcs = &ti_sn_bridge_funcs; pdata->bridge.of_node = client->dev.of_node; From patchwork Mon Aug 13 21:30:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564837 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 365BC14E2 for ; Mon, 13 Aug 2018 21:31:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D2CBC297B5 for ; Mon, 13 Aug 2018 21:31:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C45C5297AD; Mon, 13 Aug 2018 21:31:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 73B7B297B5 for ; Mon, 13 Aug 2018 21:31:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7EC906E0F6; Mon, 13 Aug 2018 21:31:29 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc44.google.com (mail-yw1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCB296E0F6 for ; Mon, 13 Aug 2018 21:31:27 +0000 (UTC) Received: by mail-yw1-xc44.google.com with SMTP id q129-v6so14705483ywg.8 for ; Mon, 13 Aug 2018 14:31:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8PT/JJ+NjxPI/HRe8gI/q36iuXytoo66i8xydny+No4=; b=DhuosFPz4JjfUrQf2EvjQBv8WY3HTtA+b7tZLKgp/fAz5A/PKg8vYNbHvV+mGjYX2a e9XWBerhGPK/2Y6kSlFV/i+ZBZCUtwHcv3Wn5y4l+GUEzLcIo60oIOQD1odbXTITThvq 4VojW8IjoPVzmPAPsr3Xqhy/NoEbdiSRl3pgp28rmAIAN7sf2v/d316BDMZpRBYdQz6F NEi3A/tpV2I1CIWwk+rK/IdXpVh3qGgkd2GX51QHafQoXlxw5g+eY3PCuuvHYBQD5/jE hgyFrfkLQKcvl3KoUeA0Bf3y8H+0Or9Xs1lo3R8ZyzECn6OCaDnJsCTfBzLRiLTPS1jK x92w== X-Gm-Message-State: AOUpUlGglwCKJfzXBb9RTl2HYZYp8eV+LRXnMyV1ZMESvTO7pGPAp8+l AvCQYCeTP0XwpEt3DM8V5jLhunoQqs4= X-Google-Smtp-Source: AA+uWPw+TxyBW99CdX6/5Y8Z28R37WNcJDbfKTazUJButAbMcTZyWxGFqH/BGyytHu49CLHgEq9qAw== X-Received: by 2002:a25:e44:: with SMTP id 65-v6mr10021212ybo.491.1534195887078; Mon, 13 Aug 2018 14:31:27 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:26 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 4/7] drm/bridge: ti-sn65dsi86: Move panel_prepare() to pre_enable() Date: Mon, 13 Aug 2018 17:30:43 -0400 Message-Id: <20180813213058.184821-5-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul prepare() is the old-timey way to say pre_enable(). It should be called before modeset. This fixes an issue where the panel on cheza must have the regulator always-on/boot-on for it to work. Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index 501f4a81ea5ab..d2119ab546147 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -457,8 +457,6 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) struct ti_sn_bridge *pdata = bridge_to_ti_sn_bridge(bridge); unsigned int val; - drm_panel_prepare(pdata->panel); - /* DSI_A lane config */ val = CHA_DSI_LANES(4 - pdata->dsi->lanes); regmap_update_bits(pdata->regmap, SN_DSI_LANES_REG, @@ -511,6 +509,8 @@ static void ti_sn_bridge_pre_enable(struct drm_bridge *bridge) /* in case drm_panel is connected then HPD is not supported */ regmap_update_bits(pdata->regmap, SN_HPD_DISABLE_REG, HPD_DISABLE, HPD_DISABLE); + + drm_panel_prepare(pdata->panel); } static void ti_sn_bridge_post_disable(struct drm_bridge *bridge) From patchwork Mon Aug 13 21:30:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564839 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7BB4313B4 for ; Mon, 13 Aug 2018 21:31:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6E230295DE for ; Mon, 13 Aug 2018 21:31:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 625EF29676; Mon, 13 Aug 2018 21:31:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 20C8B295DE for ; Mon, 13 Aug 2018 21:31:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4663989F8E; Mon, 13 Aug 2018 21:31:36 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc42.google.com (mail-yw1-xc42.google.com [IPv6:2607:f8b0:4864:20::c42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2ABAB6E0F7 for ; Mon, 13 Aug 2018 21:31:34 +0000 (UTC) Received: by mail-yw1-xc42.google.com with SMTP id c135-v6so14727836ywa.0 for ; Mon, 13 Aug 2018 14:31:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=E+vhpvecOJ7VcV21WSJwNJ7/CfFHI2R69sCNjbs+Szg=; b=WRhbbAV8HBlsIAaAMtBA82TssPd3KDNNBY9BMO18KDwiLgcAqW+JWUcMk6xUUkP5uq xpgRZRxRh7ouhL0X30HWNfA2uBRVO7W0me+hyT2npsRJrdWUcOAHYnFw8wPclVdHq5dO youm5Pl2pBscWTyFO/G2Qjho/pviVW/e5IBRIt02b4KR0+HK8DSg6jCf30oIS08qya6N eikutmlOshkz5RgfzvamKRIt6AHOcUdN+VcKVYGLuiij8A16K/A3JGpUjrLP6O04d5uE AlPLTUxy6q1P7UaYgn5b0yDcoggwFmHI/1U+JC+JkHPJ0IQvL+3WCcZiB/AMhS2BX+Az qDsg== X-Gm-Message-State: AOUpUlFOQMEXxYkxy6n/b0D4tDBWYyPp2vwaIWjWFP7SoQsP+QBN19ja kiBNsgTFwDtGI4Rg2GrjFKQndfuJddM= X-Google-Smtp-Source: AA+uWPzZpiaq5ZsbAk29MmDOBp2GO7qz0nuShC/PK04wjlHjkGecEg8iC4Jq8cbRw7uz3AzTRSYt9Q== X-Received: by 2002:a81:ad12:: with SMTP id l18-v6mr10166664ywh.505.1534195893234; Mon, 13 Aug 2018 14:31:33 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:32 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 5/7] drm/bridge: ti-sn65dsi86: Poll for DP PLL Lock Date: Mon, 13 Aug 2018 17:30:44 -0400 Message-Id: <20180813213058.184821-6-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul Instead of just waiting and hoping, actually poll for the pll lock to be acquired. As a bonus, this should be significantly faster than the sleep. Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index d2119ab546147..f02bdedae1e5e 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -456,6 +456,7 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) { struct ti_sn_bridge *pdata = bridge_to_ti_sn_bridge(bridge); unsigned int val; + int ret; /* DSI_A lane config */ val = CHA_DSI_LANES(4 - pdata->dsi->lanes); @@ -472,7 +473,14 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) /* enable DP PLL */ regmap_write(pdata->regmap, SN_PLL_ENABLE_REG, 1); - usleep_range(10000, 10500); /* 10ms delay recommended by spec */ + + ret = regmap_read_poll_timeout(pdata->regmap, SN_DPPLL_SRC_REG, val, + val & DPPLL_SRC_DP_PLL_LOCK, 1000, + 50 * 1000); + if (ret) { + DRM_ERROR("DP_PLL_LOCK polling failed (%d)\n", ret); + return; + } /** * The SN65DSI86 only supports ASSR Display Authentication method and From patchwork Mon Aug 13 21:30:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564841 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B1DAB14E2 for ; Mon, 13 Aug 2018 21:31:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1ECE29605 for ; Mon, 13 Aug 2018 21:31:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9332F295DE; Mon, 13 Aug 2018 21:31:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 523F0295DE for ; Mon, 13 Aug 2018 21:31:42 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5CCD26E016; Mon, 13 Aug 2018 21:31:41 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc43.google.com (mail-yw1-xc43.google.com [IPv6:2607:f8b0:4864:20::c43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 196876E016 for ; Mon, 13 Aug 2018 21:31:40 +0000 (UTC) Received: by mail-yw1-xc43.google.com with SMTP id q129-v6so14705958ywg.8 for ; Mon, 13 Aug 2018 14:31:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=a5ap4OcKMqzRv4qf1uIfZsbbpxP1U75fXn2L32E+GHg=; b=X/UkVmTxgbGBJOJm1kz2fe9cyDJVOA91n/nUnPaGW1lM974nj323WuO+qo53RyHXLH bnxLeLWvJ7iKa5TCoGWU08t3ZUwxKUN21nOHI10toqWZxQ9PBraiy4BCJ/7YdFuhRbyN dlE9GHB1zKv16Q4WC135D28koM4ZGBacNnLoUSeDy8y1c/pGF4/BymL2b9iv9EnVgq7x GKycHtoBGwQUiP7GBI7V1D/eWrZOvm4K0g3YTheqGyrkeT9v7bYf02eAHr3LIbo+dIXM A9jrUS9mGFj3+Y5y38LcPBvJ8/WsH06ETIKK9oel7upU8zLkOHrKeGZtAdhRPihXkdoX JCeQ== X-Gm-Message-State: AOUpUlFVMxao8y6cT5hFJMZdPJPAGOCicDT1kOeJqQX7W5yJUnRZmYvf Zs7iv1NJI/eX+y0Z28wgWWPJKLdGYoA= X-Google-Smtp-Source: AA+uWPxHZZ9XgGkyrCqgnOmWv+rZZEEpQ62OJRV/CGDucM/N1EH5AlI6vpKwX1abrjr1dU07knc4vg== X-Received: by 2002:a81:9b8b:: with SMTP id s133-v6mr9864134ywg.90.1534195899234; Mon, 13 Aug 2018 14:31:39 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:38 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 6/7] drm/bridge: ti-sn65dsi86: Poll for training complete Date: Mon, 13 Aug 2018 17:30:45 -0400 Message-Id: <20180813213058.184821-7-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul Instead of just waiting 20ms for training to complete, actually poll the status to ensure training is finished. Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index f02bdedae1e5e..d3e27e52ea759 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -493,7 +493,17 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) /* Semi auto link training mode */ regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0x0A); - msleep(20); /* 20ms delay recommended by spec */ + ret = regmap_read_poll_timeout(pdata->regmap, SN_ML_TX_MODE_REG, val, + val == ML_TX_MAIN_LINK_OFF || + val == ML_TX_NORMAL_MODE, 1000, + 500 * 1000); + if (ret) { + DRM_ERROR("Training complete polling failed (%d)\n", ret); + return; + } else if (val == ML_TX_MAIN_LINK_OFF) { + DRM_ERROR("Link training failed, link is off\n"); + return; + } /* config video parameters */ ti_sn_bridge_set_video_timings(pdata); From patchwork Mon Aug 13 21:30:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Paul X-Patchwork-Id: 10564843 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AD9E414E2 for ; Mon, 13 Aug 2018 21:31:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9E0F2296D3 for ; Mon, 13 Aug 2018 21:31:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 90DC6296FA; Mon, 13 Aug 2018 21:31:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4C313296D3 for ; Mon, 13 Aug 2018 21:31:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4AEAE6E080; Mon, 13 Aug 2018 21:31:47 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-yw1-xc44.google.com (mail-yw1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7192D6E0F7 for ; Mon, 13 Aug 2018 21:31:45 +0000 (UTC) Received: by mail-yw1-xc44.google.com with SMTP id w76-v6so14712081ywg.4 for ; Mon, 13 Aug 2018 14:31:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ys8SW3GC1L+75WhEiQDh4VTBjEQaoUqZQQXkF3DbMH8=; b=rWo1XUn6/nUp2Kx/YlYT99eCGNkXfroQlI9U36YFGdZyDpgjeuf5PUgon/+PDkjR0d lnGFwK+A5ZEgYt72pk3fYjJWnyn2qG/wdkazWKNB+K8iy2l947sFw19AA1GQWA0Y0pSy PGrsWFZ3ywHFeRZhGBAJp6MnJr8PJ44YRzK83L8dPnh0NbZiCDmTVZDlwwHzQOYVIPuP DAX9HTNgSXJTOqDsb/V66TtUJJJgceGGC3VWiqfBqVJRGKJM+dT0wMDh2NwMtQdmLSS/ wQguBzPdaJKWxdLLA9O2fupT160Skr17WchKZ302oX3hMuC3Y/B/5btGArbKQo0tfqC/ F+Ig== X-Gm-Message-State: AOUpUlGLwbkoB3ERHFTMZUdeC4t/vm2fc64inJWAjgubX7Tfb9NSzj9S mDOV341tlzvkSot7/ILAANu0/v8+JbM= X-Google-Smtp-Source: AA+uWPwPoA6WHhd8G1pRB4NRqql1C6tcZ094EUbLnzJmcZKD0vNb9MbWpo6V5gk2dNW1fLGSRf58Uw== X-Received: by 2002:a81:7404:: with SMTP id p4-v6mr10263246ywc.407.1534195904643; Mon, 13 Aug 2018 14:31:44 -0700 (PDT) Received: from rosewood.cam.corp.google.com ([2620:0:1013:11:ad55:b1db:adfe:3b9f]) by smtp.gmail.com with ESMTPSA id m82-v6sm26715319ywm.19.2018.08.13.14.31.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Aug 2018 14:31:44 -0700 (PDT) From: Sean Paul To: dri-devel@lists.freedesktop.org Subject: [PATCH v3 7/7] drm/bridge: ti-sn65dsi86: Add mystery delay to enable() Date: Mon, 13 Aug 2018 17:30:46 -0400 Message-Id: <20180813213058.184821-8-sean@poorly.run> X-Mailer: git-send-email 2.18.0.597.ga71716f1ad-goog In-Reply-To: <20180813213058.184821-1-sean@poorly.run> References: <20180813213058.184821-1-sean@poorly.run> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sandeep Panda , Laurent Pinchart Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Sean Paul This patch adds a 70ms mystery delay to the bridge driver in enable. By experimentation, it seems like it can go anywhere up until we initiate semi-auto link training. If we don't have the delay, link training fails. I tried to root cause this as best I could, but neither the datasheet for the panel nor the bridge mention a delay of this magnitude in their timing requirements. So for now, add the mystery delay until someone figures out a better fix. Changes in v3: - Added to the set Cc: Sandeep Panda Signed-off-by: Sean Paul Reviewed-by: Sandeep Panda --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index d3e27e52ea759..f8a931cf3665e 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -458,6 +458,18 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) unsigned int val; int ret; + /* + * FIXME: + * This 70ms was found necessary by experimentation. If it's not + * present, link training fails. It seems like it can go anywhere from + * pre_enable() up to semi-auto link training initiation below. + * + * Neither the datasheet for the bridge nor the panel tested mention a + * delay of this magnitude in the timing requirements. So for now, add + * the mystery delay until someone figures out a better fix. + */ + msleep(70); + /* DSI_A lane config */ val = CHA_DSI_LANES(4 - pdata->dsi->lanes); regmap_update_bits(pdata->regmap, SN_DSI_LANES_REG,