Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1874323pxp; Thu, 10 Mar 2022 14:00:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJyJxC9r9mgW/+nD66O48AgYDadwPb4ZG79WrfBUoYMIMtq+yooYepgRwxLsrDVfUWdUUDOd X-Received: by 2002:a17:907:6d1d:b0:6d8:9fc8:b1e1 with SMTP id sa29-20020a1709076d1d00b006d89fc8b1e1mr5879968ejc.466.1646949641150; Thu, 10 Mar 2022 14:00:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646949641; cv=none; d=google.com; s=arc-20160816; b=DchZEV8LA28UoM9Atpa+V5YfsVaHMyOOpsaB3xdBz7lwZa6Gn6YnrZQ6KtOiJYX1Qg FN6GAd+Sd5hyOKbBpnYdiF3FBKuLwG35CfKG2EdZSeSJgju0/8u9STWQKrvSEmwKEguH ks28GPznyrMB5mdZmQIlXwrnMAu+5jsaZ14ir1mZRNRlfXrlf8V9N4IXDDWNMpyY1qEy i6uZR/zQgyUII/eUD8ciDv3Rqe3eGFzsUpldbVKpFE3kDkx/xn6H6S2bPwztmKb5frFH DtHV4vcFftQ614eXoavWhWUkKFxumJzionxL8T+uPfLOf8OTPMj1nmtPtmblk/Mei263 EcQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=F4G6NimroFsTsEvngFetfsctst1mBwe8dpxilMfG7Vk=; b=OIC/FOJC+ZH12lH4aThnkt6Lrb63KVlsYvyaojrPg9tgsLbAv6SzLtvPwsoGMlzktD 73qcy0QLNqcb04ti10bRxaHbMLmy1QxU8KQfRHvDHuliIc1gy8eLgIdlcMsCAjAXtM1p UYkscwI5O1xVMg09h0gyMHVLZ07K+1jhfVygN/Rf1QZi794cC6nHqVpGm6q1kuL1SFe+ QaYKY0Rb0a6VA6D34DYypSK7vDIpN+6/0BceAomiKUYh3e3D8hp6qK/15Njhw0H5ZcdY WvzbZJNCqxapOEPRAgnSuzAZCo+Fl/O7YptbeIvY7QTWNQt37wElM4nzwAImHZCGvgAz gqhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Qq0OVorj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y6-20020a50e606000000b00410dedefc1asi4498558edm.606.2022.03.10.14.00.16; Thu, 10 Mar 2022 14:00:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Qq0OVorj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239632AbiCJPYP (ORCPT + 99 others); Thu, 10 Mar 2022 10:24:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244067AbiCJPXh (ORCPT ); Thu, 10 Mar 2022 10:23:37 -0500 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D13B911C02; Thu, 10 Mar 2022 07:22:33 -0800 (PST) Received: from Monstersaurus.ksquared.org.uk.beta.tailscale.net (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2586849C; Thu, 10 Mar 2022 16:22:31 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1646925751; bh=GX9DF1GQDDjkp7nriwsE+xCH1bYZFnXMRuBLvN0kors=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qq0OVorjn4RqyQXzvLwTCbvOWrG/b2ijbHeYM2dHBNruwSt+KafdEzx129m/cjpAk rx/ZwNCvrBq/RGybx45n+mGW46pyfGMlsuzGbGg2kxjvne2pSTFOx1EI1v8nsd7kKv xCPvS/P9PXviMOEico1QmIS5eGqgHDXPa/tgFG1Q= From: Kieran Bingham To: dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Sam Ravnborg , Douglas Anderson , linux-kernel@vger.kernel.org Cc: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Laurent Pinchart , Kieran Bingham Subject: [PATCH v3 1/3] drm/bridge: ti-sn65dsi86: Support DisplayPort (non-eDP) mode Date: Thu, 10 Mar 2022 15:22:25 +0000 Message-Id: <20220310152227.2122960-2-kieran.bingham+renesas@ideasonboard.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220310152227.2122960-1-kieran.bingham+renesas@ideasonboard.com> References: <20220310152227.2122960-1-kieran.bingham+renesas@ideasonboard.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Laurent Pinchart Despite the SN65DSI86 being an eDP bridge, on some systems its output is routed to a DisplayPort connector. Enable DisplayPort mode when the next component in the display pipeline is detected as a DisplayPort connector, and disable eDP features in that case. Signed-off-by: Laurent Pinchart Reworked to set bridge type based on the next bridge/connector. Signed-off-by: Kieran Bingham -- Changes since v1/RFC: - Rebased on top of "drm/bridge: ti-sn65dsi86: switch to devm_drm_of_get_bridge" - eDP/DP mode determined from the next bridge connector type. Changes since v2: - Remove setting of Standard DP Scrambler Seed. (It's read-only). - Prevent setting DP_EDP_CONFIGURATION_SET in ti_sn_bridge_atomic_enable() - Use Doug's suggested text for disabling ASSR on DP mode. drivers/gpu/drm/bridge/ti-sn65dsi86.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index c892ecba91c7..93b54fcba8ba 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -62,6 +62,7 @@ #define SN_LN_ASSIGN_REG 0x59 #define LN_ASSIGN_WIDTH 2 #define SN_ENH_FRAME_REG 0x5A +#define ASSR_CONTROL BIT(0) #define VSTREAM_ENABLE BIT(3) #define LN_POLRS_OFFSET 4 #define LN_POLRS_MASK 0xf0 @@ -93,6 +94,8 @@ #define SN_DATARATE_CONFIG_REG 0x94 #define DP_DATARATE_MASK GENMASK(7, 5) #define DP_DATARATE(x) ((x) << 5) +#define SN_TRAINING_SETTING_REG 0x95 +#define SCRAMBLE_DISABLE BIT(4) #define SN_ML_TX_MODE_REG 0x96 #define ML_TX_MAIN_LINK_OFF 0 #define ML_TX_NORMAL_MODE BIT(0) @@ -982,6 +985,17 @@ static int ti_sn_link_training(struct ti_sn65dsi86 *pdata, int dp_rate_idx, goto exit; } + /* + * eDP panels use an Alternate Scrambler Seed compared to displays + * hooked up via a full DisplayPort connector. SN65DSI86 only supports + * the alternate scrambler seed, not the normal one, so the only way we + * can support full DisplayPort displays is by fully turning off the + * scrambler. + */ + if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) + regmap_update_bits(pdata->regmap, SN_TRAINING_SETTING_REG, + SCRAMBLE_DISABLE, SCRAMBLE_DISABLE); + /* * We'll try to link train several times. As part of link training * the bridge chip will write DP_SET_POWER_D0 to DP_SET_POWER. If @@ -1046,12 +1060,13 @@ static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge, /* * The SN65DSI86 only supports ASSR Display Authentication method and - * this method is enabled by default. An eDP panel must support this + * this method is enabled for eDP panels. An eDP panel must support this * authentication method. We need to enable this method in the eDP panel * at DisplayPort address 0x0010A prior to link training. */ - drm_dp_dpcd_writeb(&pdata->aux, DP_EDP_CONFIGURATION_SET, - DP_ALTERNATE_SCRAMBLER_RESET_ENABLE); + if (pdata->bridge.type == DRM_MODE_CONNECTOR_eDP) + drm_dp_dpcd_writeb(&pdata->aux, DP_EDP_CONFIGURATION_SET, + DP_ALTERNATE_SCRAMBLER_RESET_ENABLE); /* Set the DP output format (18 bpp or 24 bpp) */ val = (ti_sn_bridge_get_bpp(old_bridge_state) == 18) ? BPP_18_RGB : 0; @@ -1215,6 +1230,8 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, pdata->bridge.funcs = &ti_sn_bridge_funcs; pdata->bridge.of_node = np; + pdata->bridge.type = pdata->next_bridge->type == DRM_MODE_CONNECTOR_DisplayPort + ? DRM_MODE_CONNECTOR_DisplayPort : DRM_MODE_CONNECTOR_eDP; drm_bridge_add(&pdata->bridge); -- 2.32.0