From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1916C433E2 for ; Fri, 4 Sep 2020 12:57:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BD5F42074A for ; Fri, 4 Sep 2020 12:57:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="PvzH0SIA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730280AbgIDM5b (ORCPT ); Fri, 4 Sep 2020 08:57:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45972 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729297AbgIDM50 (ORCPT ); Fri, 4 Sep 2020 08:57:26 -0400 Received: from mail-lf1-x141.google.com (mail-lf1-x141.google.com [IPv6:2a00:1450:4864:20::141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48958C061244 for ; Fri, 4 Sep 2020 05:57:24 -0700 (PDT) Received: by mail-lf1-x141.google.com with SMTP id m5so2899489lfp.7 for ; Fri, 04 Sep 2020 05:57:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=8GlQkjXHe55LHZB2lHiYIu853ibpNGCiL6ph4EkjLC0=; b=PvzH0SIAklhtrU2bxnDv4DBvhoX5lQIH06mHJozoCeS/DbVrVoTQujCfZuoT7VKUVD eMe37vXZ9n3+fHtnbgpfft9T9TdrlVWU+yid1Hsy5e2VzlH+P6UXOOuEcilS+SQG47KI 6a3OjvzyZkQLtV9lFHglPtEOkeAS11L2qJx1uCX8EAfnR6SLE7RO1mGfeXuHEHWJltgt eV/BTAG4EyM/Vn7aSpHYr0Mmt/dmo3mi0wKMFoeHATDrdJL725zjXxwgZYx2UBi5oFw2 0foAZX13ZN3ujvmsznV7ZPKnoCgTTA/n5Z7Z1gu5jUP669/ZL1Ao2bRYrRBwgyAM0Rvg GJdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=8GlQkjXHe55LHZB2lHiYIu853ibpNGCiL6ph4EkjLC0=; b=iYSd/m6dvk7/gr9frj5I7oIAD2Wzrv6EAwOTCIfiysY/E4tR6Z5dRyvVqAT0KoOaey osfxfMVms1uIfw6iEJAZcslb93LbUx2xEA9XIYPTKU29Ef+oElhfeN2T6CNcxqiZY0H9 eEgRdr3lwZHz7b8YX/b0PQhbZNsBFPHWa6KQkEtpcrsxiX94CoAKSnypX77+tOvWeVjZ Hesy18PpgPBTUTamefLd5/kSL3ciDAbe2PAcPMdwBTxY3iwhbZ1UFr40wu7nDmhThZLH hwvB23NZQ0Phevm/B1gbFQmywth+nqcfFmwk6dKDshyWtIq8GaDrkTKFtQflFX3+vBf0 A8Tw== X-Gm-Message-State: AOAM532JlpMtDbvsQdfjpsIq75Rk2h2LLImeGohejy7acWgJ94GDfP5r LJKG2kd5hQTmNE/WzChKbbr/0w== X-Google-Smtp-Source: ABdhPJy6PvardLC1xge4MYT8+GmbaFkYE9Ni9x/dQ5tN07+HlVQ5IBLFCJlABr7P9PTxCwGg8zVy5A== X-Received: by 2002:a05:6512:10d1:: with SMTP id k17mr3836894lfg.179.1599224242629; Fri, 04 Sep 2020 05:57:22 -0700 (PDT) Received: from [192.168.1.211] ([188.162.64.166]) by smtp.gmail.com with ESMTPSA id j28sm1288148lfk.97.2020.09.04.05.57.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Sep 2020 05:57:21 -0700 (PDT) Subject: Re: [PATCH v2 07/10] phy: qcom-qmp: Add support for DP in USB3+DP combo phy To: Jonathan Marek , Stephen Boyd , Kishon Vijay Abraham I , Vinod Koul Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Jeykumar Sankaran , Chandan Uddaraju , Vara Reddy , Tanmay Shah , Bjorn Andersson , Manu Gautam , Sandeep Maheswaram , Douglas Anderson , Sean Paul , Stephen Boyd , Rob Clark References: <20200902230215.3452712-1-swboyd@chromium.org> <20200902230215.3452712-8-swboyd@chromium.org> <9f99cc8b-2cfd-280f-e52a-23d098934a11@linaro.org> <4c0f59f8-b7fa-432f-2255-8d253f434a59@marek.ca> From: Dmitry Baryshkov Message-ID: Date: Fri, 4 Sep 2020 15:57:21 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 MIME-Version: 1.0 In-Reply-To: <4c0f59f8-b7fa-432f-2255-8d253f434a59@marek.ca> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/09/2020 15:44, Jonathan Marek wrote: > On 9/4/20 8:29 AM, Dmitry Baryshkov wrote: >> On 03/09/2020 23:43, Jonathan Marek wrote: >>> On 9/2/20 7:02 PM, Stephen Boyd wrote: >>>> Add support for the USB3 + DisplayPort (DP) "combo" phy to the qmp phy >>>> driver. We already have support for the USB3 part of the combo phy, so >>>> most additions are for the DP phy. >>>> >>>> Split up the qcom_qmp_phy{enable,disable}() functions into the phy >>>> init, >>>> power on, power off, and exit functions that the common phy framework >>>> expects so that the DP phy can add even more phy ops like >>>> phy_calibrate() and phy_configure(). This allows us to initialize >>>> the DP >>>> PHY and configure the AUX channel before powering on the PHY at the >>>> link >>>> rate that was negotiated during link training. >>>> >>>> The general design is as follows: >>>> >>>>    1) DP controller calls phy_init() to initialize the PHY and >>>> configure >>>>    the dp_com register region. >>>> >>>>    2) DP controller calls phy_configure() to tune the link rate and >>>>    voltage swing and pre-emphasis settings. >>>> >>>>    3) DP controller calls phy_power_on() to enable the PLL and power on >>>>    the phy. >>>> >>>>    4) DP controller calls phy_configure() again to tune the voltage >>>> swing >>>>    and pre-emphasis settings determind during link training. >>>> >>>>    5) DP controller calls phy_calibrate() some number of times to >>>> change >>>>    the aux settings if the aux channel times out during link training. >>>> >>>>    6) DP controller calls phy_power_off() if the link rate is to be >>>>    changed and goes back to step 2 to try again at a different link >>>> rate. >>>> >>>>    5) DP controller calls phy_power_off() and then phy_exit() to power >>>>    down the PHY when it is done. >>>> >>>> The DP PHY contains a PLL that is different from the one used for the >>>> USB3 PHY. Instead of a pipe clk there is a link clk and a pixel clk >>>> output from the DP PLL after going through various dividers. Introduce >>>> clk ops for these two clks that just tell the child clks what the >>>> frequency of the pixel and link are. When the phy link rate is >>>> configured we call clk_set_rate() to update the child clks in the >>>> display clk controller on what rate is in use. The clk frequencies >>>> always differ based on the link rate (i.e. 1.6Gb/s 2.7Gb/s, 5.4Gb/s, or >>>> 8.1Gb/s corresponding to various transmission modes like HBR1, HBR2 or >>>> HBR3) so we simply store the link rate and use that to calculate the >>>> clk >>>> frequencies. >>>> >>>> The PLL enable sequence is a little different from other QMP phy >>>> PLLs so >>>> we power on the PLL in qcom_qmp_phy_configure_dp_phy() that gets called >>>> from phy_power_on(). This should probably be split out better so that >>>> each phy has a way to run the final PLL/PHY enable sequence. >>>> >>>> This code is based on a submission of this phy and PLL in the drm >>>> subsystem. >>> >>> I updated my upstream-based sm8150/sm8250 displayport stack [1] to >>> use these patches. >> >> I have tried your branch on my RB5 with two different dongles. Both >> dongles provide the same behaviour: >>   - on first plug I see VDM Tx errors, >>   - after I unplug and replug the dongle, PD phy seems to be stuck on >> sending capabilities. >> >> See attached logs. >> >> Also I had to add typec_unregister_port(port->typec_port); to >> IS_ERR(alt) in your tcpm.c hack. >> >> I'm currently finishing the driver for the mux/redriver, will retry >> testing afterwards. >> > > As I mentioned the TCPM driver has a lot of issues. The "hard reset" > isn't implemented correctly so going into that mode gets it stuck in a > bad state. Note I am using this dongle [1], and it only works correctly > in sink mode (with the dongle providing power), in source mode it does > negotiate the alt mode, but never gets the HPD event that DP driver is > waiting for. > > https://www.amazon.ca/Cable-Matters-Multiport-DisplayPort-Ethernet/dp/B06Y5N3YCD I'll take a look for dongles that work in source mode (with RB5 being the sink). Reset being not fully implemented would answer on questions about replug. Any idea about VDM Tx errors? -- With best wishes Dmitry