Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1288038pxk; Fri, 4 Sep 2020 05:59:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKB37szDGzbdtzuucyjvzJvatttJR9CBHr3t4OJBZuv7Gab0S5BXvTW7dpu8UjNO5oL86/ X-Received: by 2002:a17:906:6406:: with SMTP id d6mr7086660ejm.30.1599224342945; Fri, 04 Sep 2020 05:59:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599224342; cv=none; d=google.com; s=arc-20160816; b=tj9J7RhWgbSUhoPbiPzm5kBZ/TWE/RJn2zIghRRrDvtICEhSGz6m29Arp/iqT3K90k n7zpMHSPugtY8vO21xqD5g/veETtA2SscoUQA/DzhHBf8BUy+2TVTBcpMDkYG2AolGKU xDd6kux0ZZRn3aoSQlJcwPo1lyoU2GdSNnYETLo8T+tdmhl6I+RQ8SrgxX8V+2R44cA9 BzTCzEeRGT4M/AgtpSCUffhLdiOWYuzagCdDuUL48hJl0gNtiDEqvFz1oHJtKlOo9en8 BTA0pziZV6MSv4I/8Sukh/b1/kANRKScRWDrlLSUsCiVVAXnEqICVcx8RgM95mFUUDRG zp9A== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=8GlQkjXHe55LHZB2lHiYIu853ibpNGCiL6ph4EkjLC0=; b=yRjn5O3nmAs7a9hnjjuAJl5aUrbJ1xa3cs73jbf4Hy4lhzilv75DESpoYCrG+4yzAA xn4Ui/JKJKXht+XRf1qtqoX0stD6q5RAOjQCWjMz4I3UOSZvBPLIWWWkodqfjbY8RzD5 VnFFwfIsCehy1Wsu2hcV5A/iWPptWF2oJ9wLsDQ7CD64Y/CsSn4sT7zMB/2jkgNFQR4U dRlcaW0NRaZrQmkxWocSSk21oOpIUAShq5fyp4/p/EKJ1JfuU6JTaTktYsoJ6TtiamRm KP9HS9MT/FEN/IFrX3KfVZ1YL0x0D/SlnV1Wr0ZbVuUc7odYMB8G3ZYNnwch9rp5/oGW Rr0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PvzH0SIA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gu21si3812414ejb.127.2020.09.04.05.58.39; Fri, 04 Sep 2020 05:59:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PvzH0SIA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730206AbgIDM52 (ORCPT + 99 others); Fri, 4 Sep 2020 08:57:28 -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-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